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