miércoles, 3 de agosto de 2016

INICIACIÓN AL PROCESAMIENTO DE IMÁGENES CON MATLAB.


 INICIACIÓN AL PROCESAMIENTO DE IMÁGENES CON MATLAB.


En esta práctica se iniciará el tratamiento de imágenes digitales con Matlab. MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es un software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M). Está disponible para las plataformas de Unix, Windows y Apple. Entre sus prestaciones básicas se encuentran: la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes. Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes). Para el caso de manipulación de imágenes se emplea el toolbox “Image Processing”.

1.1          Primeras operaciones

Una vez arrancado Matlab, el comando ver indicará los toolboxes instalados y su versión correspondiente:

ver

El primer comando que se empleará será la lectura de ficheros de imágenes (imread( )):

imgEnt = imread(‘cameraman.tif’);

imgEnt representa el identificador a la imagen leída. Para cualquier ayuda sobre las funciones o
comandos se empleará el comando help:

help imread

Más información sobre las variables es obtenida observando la ventana WORKSPACE. También puede usarse el comando whos:

whos

Se puede comprobar que la imagen es de niveles de grises con 256 valores diferentes (de la clase uint8), con un tamaño de 256 x256 píxeles. La visualización de la imagen es realizada usando imshow:

imshow(imgEnt);

Repita estas operaciones con la imagen ‘mri.tif’. ¿Cuál es su tamaño?¿Cuántos niveles de grises tiene?. Si la imagen fuese en color, normalmente quedará definida por tres matrices correspondiente a los tres colores básicos (rojo, verde y azul). Vuelva a realizar las mismas operaciones de: a) lectura, b) tamaño y clase de la imagen y c) visualización sobre la imagen de color 'board.tif'.

Usando la notación de matrices de Matlab se puede visualizar las tres componentes de color. El operador : hace referencia a todos los elementos de esa dimensión, luego el nivel de gris para cada parte del espectro de la luz será definido por (:,:,i). Indica que todas las filas y las columnas para la componente i, i=1,2 ó 3 (rojo,verde,azul):

imshow([imgEnt(:,:,1),imgEnt(:,:,2),imgEnt(:,:,3)])

El operador [ ] permitirá construir una matriz de N x (3*M), siendo N el número de filas y M el número de columnas.
Emplee el comando imtool para ver el nivel de gris de la imagen de ‘cameraman.tif’ y los colores en ‘board.tif’. Utilice el inspector de valores de los píxeles:

imtool(‘cameraman.tif’);
imtool(‘board.tif’);

Otro tipo interesante de imágenes son las binarias. Normalmente se emplea el ‘0’ para indicar el fondo y ‘1’ el objeto. Se empleará una técnica de umbralización para convertir las imágenes en binarias (im2bw()):

imgEntGris = imread(‘ejemplo..png’);
figure(1); imshow(imgEntGris);
imgBW = im2bw(imgEntGris);
figure(2); imshow(imgBW);
impixelinfo;

Ejemplo es donde colocaran el nombre de la imagen.
En este apartado se tratará de realizar la primera función (*.m) de procesamiento de imágenes con Matlab. Consistirá en leer un fichero de imagen 2D, cuyo nombre es pasado por parámetro, se visualizará y se aplicará una umbralización automática, la cual es también visualizada.

1.2          Construcción de imágenes

function miPrimerScript(nombreFich)
% Lectura del fichero
imgEnt = imread(nombreFich);
%Visualización
clf;
figure(1);
imshow(imgEnt);
%Umbralización
imgBW = im2bw(imgEnt);
figure(2);
imshow(imgBW);
end

Se desea construir una imagen binaria de 120 x 200 píxeles que tenga franjas horizontales de 20 píxeles de anchura, distanciada por cada 20 píxeles:

imgBW = false([120,200]);
for i=1:40:100
imgBW (i:i+19,:)=true;
end
imshow(imgBW);

Si se desea que las franjas sean verticales sólo habría que emplear el operador traspuesta de las matrices.

imshow(imgBW’);

1.3          Ejercicio propuesto

Realizar una función que construya y visualice dos imágenes de 256x256 con variación del nivel de gris en filas y columnas. Realizar una función que construya y visualice dos imágenes de 256x256 con variación del nivel de gris en filas y columnas.



No hay comentarios: