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.
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
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
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.
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.