viernes, 7 de febrero de 2014

Tipos de Imágenes y conversión entre datos e imágenes en MATLAB

MATLAB nos permite realizar la manipulación de cuatro tipos de imágenes, pero en esta publicación analizaremos las dos primeras:

  • Alta intensidad o de escala de grises
  • Imágenes binarias (dos tonos: blanco y negro)
  • Imágenes indexadas
  • Imágenes RGB
Imágenes de escala de grises:

Una imagen a escala de grises es una matriz cuyos valores han sido escalados para representar un determinado número de intervalos. Si la imágen es del tipo uint8 entonces los datos que la conforman se encuentran en el intervalo [0,255]. Si la imagen es de tipo double, los datos que la constituyen son del tipo float y se encuentran en el intervalo [0,1].

Imágenes binarias:

Una imágen binaria del tipo logical se representa en MATLAB como su arreglo que solo contiene unos y ceros. Estos ceros y unos son especiales, por que no implican valores numéricos, sino más bien banderas que indican el estado de falso (0) o verdadero (1).

CONVERSIÓN ENTRE DIFERENTES TIPOS DE DATOS Y DE IMÁGENES

La conversión de tipos de datos que constituyen a las imágenes es una tarea frecuente en el procesamiento de imágenes, debido a que no todos los tipos de datos son convenientes para realizar un tipo de operación específica.

Conversión entre tipos de datos

La conversión entre tipos de datos se realiza utilizando la siguiente sintaxis:

B=tipo_de_dato(A)

utilizando el ejemplo anterior de la imagen del circuito siendo su tipo de dato uint8, convertimos el tipo de dato de la imagen a double:

>>B=double(A);

 tenemos:


TIPOS DE DATOS EN MATLAB

El tipo de datos (también llamado clases) en MATLAB es el arreglo o matriz. Dentro del arreglo, MATLAB soporta algunos tipos diferentes de datos secundarios. Dado que MATLAB se escribió en C, muchos de estos tipos de datos son paralelos a los tipos de datos soportados por C. En general, todos los datos dentro de un arreglo deben ser del mismo tipo. Sin embargo, MATLAB también incluye funciones para convertir entre tipos de datos y tipos de arreglos, para almacenar diferentes tipos de datos en el mismo arreglo (arreglos celda y estructura).


Conversión entre diferentes tipos de imágenes

La función im2uint8 indaga el tipo de dato de la imagen de entrada y realiza a partir de éste las operaciones necesarias para convertirla al intervalo definido por uint8, el cual se encuentra entre 0 y 255.

Para ejemplificar esto, vamos a definir una variable con valores double para transformarlos a uint8.

>>A=[-0.2 0.8; 1 0.2]

Si se desempeña la conversión se escribiría:

>>B=im2unit8(A)

Resultando


Del resultado puede ser observado como se le asigna al menor número de A el menor número representable en el tipo uint8 (0) y al máximo valor de A se le asigna el máximo representable (255), los demás valores se escalan linealmente en el intervalo [0,255].

La función mat2gray escala linealmente una imagen del tipo double cuyo intervalo de valores puede ser cualquiera a otra imagen del tipo double pero con un intervalo de valores que van de 0 a 1. En el procesamiento de imágenes existen diferentes tipos de algoritmos los cuales al procesar una imagen generan una imagen resultante cuyos valores pueden variar en intervalos bastantes amplios, por lo que normalmente se dificulta su análisis y visualización, es por ello que la función mat2gray será utilizada siempre en aquellos casos donde sea necesario visualizar la información contenida, en un intervalo representable a escala de grises. Para ejemplificar esta función se considera una imagen de 2 x 2 del tipo double definida como:

>>A=[-100 20; 200 1000]

Realizamos la conversión de la siguiente manera:

>>B=mat2gray(A)

Tenemos:











0 comentarios:

Publicar un comentario

Aprende a Programar tus propias aplicaciones