1 - Componentes Básicos

1.3 - Frame

    Conceptualmente, un frame vendría a ser un conjunto de pixels, ordenados en una estructura como una matríz 2D, 3D o de mayor dimensión. La idea es usar un Frame para representar la vecindad de un pixel,
por lo tanto se ha impuesto la restricción de que que tenga igual tamaño en cada una de sus dimensiones.
Por ejemplo, en dos dimensiones, pueden ser 2 x 2, 3 x 3, etc, no pueden ser 3 x 2 o 2 x 3 , etc.

Figura 1.3.1

Lo más usual es representar una vecindad cuadrada en torno al pixel, por lo general el Frame será de tamaño impar, en 2D , 3x3 , 5x5 , etc, en 3D, 3x3x3 , 5x5x5 , etc

Figura 1.3.2

    Se han implementado una serie de clases para representar Frames en 2 y 3 dimensiones con algunas
especializaciones que aclararemos a continuación.

    Como se indica en la figura 1.3.3 la estructura jerárquica es:

        - bicotiFrame
            - bicotiFrame2D
                - bicotiFrame2DInternal
                - bicotiFrame2DExternal
            - bicotiFrame3D
                - bicotiFrame3DInternal
                - bicotiFrame3DExternal
 
 
 

Figura 1.3.3
 
 
 
 

    Hay especializaciones por dimensión y luego dos especializaciones que indican si los datos se almacenan internamente o externamente al objeto.
Es decir, los objetos del tipo bicotiFrameNDInternal almacenan un conjunto de pixels en una estructura
propia, el se encarga de reservar y liberar memoria. Por su parte, los objetos del tipo bicotiFrameNDExternal obienen los pixels de una estructura externa, al la que llamamos bicotiMatrixND,
a la que tiene referencia.

Figura 1.3.4

La ventaja de este tipo de Frames, es que la estructura que tiene los datos puede tener una tamaño muy
grande, y muy distinto al del Frame, inclusive no tiene las restricciones que mencionamos antes. Sin embargo podemos movernos sobre la matríz y obtener la vecindad de algún pixel, con la misma interfáz que tenemos para una Frame con datos internos.
Un ejemplo claro del porqué de la existencia de estos dos tipos de Frame es el algoritmo que de filtrado de
vecindad, Neighbour Filter, que se verá en detalle más adelante.

Ver la especificación detallada de la clase bicotiFrame para más detalles y ejemplos.
Para más información sobre la matríz externa, ver bicotiMatrix.