2 - Imagen

2.1.2 - Descriptor de una Imagen.

          La idea del descriptor es definir una estructura que permita obtener cierta información de una imagen en forma estandard.
La información que se representa es muy básica, pero esencial de saber en algunos algoritmos.
El descriptor da información sobre :

La forma más usual de obtener cierta información sobre una imagen , es usar un Factory Method.
Es decir , supongase que tenemos un algoritmo que tarabaja sobre una imagen que puede tener cualquier
dimensión tipo o tamaño y con cualquier pixel ( paramétrico en el pixel ).

Nos pasan un puntero a la clase base :
        bicotiImageImplementation< PixelType > *  ptr_image;
Aunque en realidad el objeto al que apunta es una implementación concreta.

Si en algún momento necesitamos saber información sobre la dimensión o el tamaño de la imagen, no
podemos averiguarlo de ella. Tampoco podemos saber si el pixel es un tipo básico o vectorial ya que el tipo de este es un parámetro ( un template ). Pero podemos pedirle a la imagen que no devuelva un
descriptor, haciendo :

         bicotiImageDescriptor *  ptr_descriptor;
         ptr_descriptor = ptr_image->CreateImageDescriptor( );

Aqui se usa el polimorfismo para que la clase concreta cree al descriptor y le setee las variables adecuadas.

Figura 1.2.8

Es importante observar que como el descriptor no está parametrizado en el pixel ( no tiene template ) y
tiene una interfáz genérica, este mecanismo siempre funciona.

Si ahora quiero saber la dimensión de la imagen, puedo usar las funciones del descriptor.

        dimension = ptr_descriptor->GetDimension( );

        columnas = ptr_descriptor->Size( 0 );
        filas = ptr_descriptor->Size( 1 );
        profundidad = ptr_descriptor->Size( 2 );  // solo funciona si dimensión > 2

        escala = ptr_descriptor->GetScale( );
        tipo_de_pixel = ptr_descriptor->GetPixelCase( );

Ver bicotiImageDescriptor para una descripción detallada de la clase