Está en la página 1de 14

Gua

Facultad: Ingeniera. Escuela: Biomdica Asignatura: Imgenes Mdicas

Introduccin a MatLab y Tollbox Image Processing


Objetivos Introducir Introducir conceptos uso del bsicos de Image Processing imgenes ToolBox de digitales. MatLab.

el

Recomendaciones Tenga orden y aseo para trabajar Siempre que tenga duda del procedimiento a realizar, consltelo con el docente o instructor Todas las piezas y componentes que se quiten se deben de ir guardando en forma ordenada Siempre anote lo que haga, an lo mas irrelevante, ya que al final cuando el sistema se tiene desensamblado se vuelve complejo Siempre aplique las normas de seguridad que le explicar el docente o instructor Los circuitos elctricos dentro del equipo utilizan voltajes los cuales soncapaces de causar algn dao debido a los choques elctricos por lo que sedebe de tener en cuenta las normas de seguridad elctrica. Familiarizarse con el sistema de desconexin de la energa elctrica Los cables de alto voltaje y los capacitores de este equipo guardan energa que puede provocar algn choque elctrico, por lo que antes de manipularse se debern descargar. No aplique energa elctrica al equipo, hasta que est seguro que las desconexiones que ha realizado se han restaurado. Al finalizar el laboratorio se debe dejar en la misma condicin en que se encontr, an los accesorios y herramientas utilizadas. Equipo Computadora con MatLab y Processing Image Toolbox

Introduccin Terica FUNDAMENTOS

Gua

Una imagen digital esta compuesta de pxeles los cuales pueden definirse de alguna manera como pequeos puntos en la pantalla o imagen. Cada pxel es capaz de proporcionar informacin visual acerca de una pequea regin en particular de la imagen. A partir de esto, se puede considerar a una Imagen Digital, como un arreglo de instrucciones de cmo se encuentra coloreado cada pxel. En general se puede decir que una imagen de m por n si esta compuesta de m pxeles en la direccin vertical y n pxeles en la direccin horizontal. Es decir que tener una imagen de 512 x 1024 pxeles, significa que la imagen contiene en s informacin para 524288 pxeles, los cuales requiere mucha memoria. Por lo tanto, la compresin de las imgenes es algo esencial para el procesamiento eficiente de la imagen. El sistema de coordenadas empleado para la ubicacin de cada pxel de la imagen es como se muestra la figura

FIGURA 1.1. Sistema de coordenadas en la ubicacin de cada pxel.

Las imgenes digitales en MATLAB se representan por medio de un arreglo de nmeros reales o complejos. Dicho arreglo puede ser bidimensional o tridimensional, dependiendo del tipo de imagen de que se trate.
PROFUNDIDAD DE BITS La Profundidad de Bits viene determinada por la cantidad de bits utilizados para definir cada pxel. Mientras mayor sea la profundidad de bits, mayor ser la cantidad de tonos (escala de grises o color) que se pueden representar. Las imgenes digitales se pueden producir en blanco y negro (en forma bitonal), a escala de grises o a color.

Una imagen bitonal est representada por pxeles que constan de 1 bit cada uno, que pueden representar dos tonos (tpicamente negro y blanco), utilizando los valores 0 para el negro y 1 para el blanco o visceversa. Una imagen en escala de grises est compuesta por pxeles representados por mltiples bits de informacin, que tpicamente varan entre 2 a 8 bits o ms.

Gua

Una imagen a colores est tpicamente representada por una profundidad de bits entre 8 y 24 o superior a sta. En una imagen de 24 bits, los bits por lo general estn divididos en tres grupos: 8 para el rojo, 8 para el verde, y 8 para el azul. Para representar otros colores se utilizan combinaciones de esos bits. Una imagen de 24 bits ofrece 16,7 millones (2 24 ) de valores de color. Cada vez ms, los escneres estn capturando 10 bits o ms por canal de color y por lo general imprimen a 8 bits para compensar el "ruido" del escner y para presentar una imagen que se acerque en el mayor grado posible a la percepcin humana. Independientemente del numero de colores que el sistema pueda desplegar, MatLab puede almacenar y procesar imagenes con altas profundidades de bits : - 224 colores para imagenes RGB uint8 - 248 colores para imagenes RGB uint16 - 2159 colores para imagenes RGB double Estas imagenes se desplegan mejor en sistemas con color de 24 bits, pero usualmente lucen bien en sistemas de 16 bits. Para poder determinar la profundidad de bits de la pantalla del sistema se debe introducir el siguiente comando en el prompt de MatLab: >> get (0,'ScreenDepth') ans = 32 El entero que MatLab retorna representa el nmero de bits por cada pxel de la pantalla. Es obvio entonces, que el tamao del archivo estar definido por la profundidad de bits con la que se trabaje, dado que para calcular el tamao del archivo se ha de proceder calculando primero el rea de la imagen y luego multiplicandola por la profundidad de bits que se selecciona. FORMATO O TIPOS DE DATOS Un entero es un nmero que no tiene una parte fraccional, el cual puede ser positivo, negativo o cero. Normalmente, se utiliza un signo negativo para designar un entero negativo. Sin embargo, una computadora puede guardar informacin en bits unicamente, es decir, solamente puede hacer uso de dos valores para lograr la representacin anterior, 0 y 1. Cuando un entero es declarado como no signado (uint), el significado de ello es que el bit mas significativo en la representacin de un dato se toma como lo que s, un dato significativo y no como un signo. MatLab tiene cuatro tipos de datos enteros signados y cuatro no signados. Los del tipo signado permiten trabajar con enteros negativos as como con enteros positivos, pero no pueden representar un rango amplio de numeros como lo hacen los tipos no signados dado que un bit es utilizado para designar el signo del nmero, si es positivo o negativo. El tipo no signado permite un rango mayor de numeros, pero estos nicamente puedenestar en el rango de los enteros positivos, o el cero.

Gua

La informacin de tipo Punto Flotante, provee los medios para guardar y manipular numeros con parte fraccionaria y un amplio rango de ramaos. El standar ANSI describe tres tipos de puntos flotantes de almacenaje conocidos como: - float, - double - long double MatLab construye la informacin del tipo de precisin doble (double) de acuerdo al estandar 754 de la IEEE. Cualquier valor almacenado como double requiere 64 bits,en un formato que se detalla a continuacin:

Por defecto Matlab almacena la mayora de los datos en vectores de clase doble (double). Sin embargo, para procesamiento de imgenes, esta representacin de datos no es siempre la ideal, ya que el nmero de pxeles en una imagen puede ser muy grande. Para reducir requerimientos de memoria las versiones nuevas de Matlab puede almacenar pxeles en uint8 (enteros de 8 bits sin signo). Las operaciones permitidas en Matlab para trabajar con pxeles uint8 son: - Representacin de imgenes - Lectura de la imagen a partir de un formato (imread). - Reordenar vectores (reshape, cat). - Guardar o cargar un fichero .MAT.

Gua

- Funciones all (devuelve un 1 si todos los elementos de un vector valen 1) y any (devuelve un 1 si cualquier elemento de un vector vale 1). - Operadores lgicos y de indexacin. - Operaciones relacionales. - La funcin find se puede utilizar con vectores de datos uint8, pero devuelve un vector de dobles. Aparte de las indicadas, Matlab NO puede realizar la mayora de las funciones con datos uint8. En particular, las peraciones matemticas no estn permitidas. Sin embargo, la mayora de las funciones del Toolbox de Imagen aceptan como entradas uint8. Convertir de una a otro formato o tipo de datos es sencillo, de la siguiente manera: >> Ima=im2double(Ima); % Convierte una imagen con nombre Ima de uint8 a double. >> Ima=im2uint8(Ima); % Convierte una imagen con nombre Ima de double a uint8. FORMATOS DE IMGENES SOPORTADOS POR MATLAB MatLab soporta los siguientes formatos de imgenes: .BMP, .HDF, .JPEG, .PCX, .TIFF, .XWB La mayora de las imgenes disponibles hoy en da , se encuentran en el formato JPEG, el cual es el nombre para el standard de compresin de imgenes que ms se utiliza. Una imagen puede ser truecolor o indexada. Una imagen indexada, de altura h y anchura w, se almacena mediante dos matrices: una matriz de ndices tamao h x m y un mapa de colores. Cada celda de la matriz de ndices corresponde a un pixel de la imagen y contiene un ndice a un color concreto del mapa de colores. Por ejemplo, para una imagen en color de 8 bits hay 256 posibles colores; cada celda de la matriz de ndices tiene un valor entero entre 0 y 255 que es un ndice a uno de los 256 colores descritos en el mapa de colores. Al trabajar en MatLab se deben considerar mltiples factores como la manera en la que se carga una imagen, el formato correcto, guardar la informacin de diferentes maneras, como desplegar una imagen, conversiones entre diferentes formatos de imgenes, etc. FORMATOS DE TRABAJO EN MATLAB
- Imagen de Intensidad (Imagen en escala de grises)

Representa una imagen como una matriz, donde cada elemento tiene un valor que se corresponde a cuan brillante u oscuro debera ser coloreado el pxel en la posicin correspondiente. Existen dos formas de representar el nmero que a su vez representa la brillantez del pxel. La clase double, asigna un nmero flotante (nmero con decimales), entre 0 y 1 a cada pxel. El valor 0 corresponde al Negro y el 1 al Blanco. La otra clase es la uint8 la cual asigna un entero entre 0 y 255 para representar la brillantez de un pxel. El valor 0 corresponde al Negro y 255 al Blanco. La clase uint8 requiere aproximadamente un octavo de almacenamiento comparado con lo que requiere la clase double. Sin embargo, debe considerarse el hecho que muchas funciones matemticas pueden aplicarse nicamente con la clase double.
- Imagen Binaria

Gua

Este formato de imagen tambin guarda una imagen como una matriz pero un pxel de la misma nicamente tiene dos posibles colores Blanco o Negro (y nada entre ellos). Este formato de imagen asigna 0 para el Negro y 1 para el Blanco.
- Imagen

Indexada

Es una forma prctica de representar las imgenes a color. Una imagen indexada guarda una imagen como dos matrices. La primera matriz tiene el mismo tamao que la imagen y un numero para cada pxel. La segunda matriz se conoce como Mapa de Color (Colormap) y su tamao puede diferir del de la imagen. Los nmeros en la primera matriz indican el nmero a usar en la matriz Mapa de Color. Por ejemplo, si se considera una matriz 3 por 3: >> W=[1 2 3; 2 3 2; 3 2 1] ; y un mapa de color asociado de longitud 3: >> mapa = [1 0 0; 0 1 0; 0 0 1] ; donde la primera fila (primera tripleta) es rojo, la segunda verde y la ltima azul. Entonces, >> W=[1 2 3; 2 3 2; 3 2 1]; >> mapa = [1 0 0; 0 1 0; 0 0 1]; >> image(W) >> colormap(mapa) El mapa de colores es una matriz que tiene tres columnas, una por cada color bsico (rojo, verde y azul o RGB) y una fila por cada posible color. Para el ejemplo de 256 colores, el mapa de colores sera una matriz de tamao 256 x 3. Cada fila del mapa de colores describe un color concreto y contiene tres nmeros en punto flotante, con un valor entre 0 y 1, que dan las cantidades de rojo, verde y azul que tiene el color. As, por ejemplo, si la fila 6 contiene los valores [0.062745 0.031373 0] ello indica que, en ese mapa de colores, el color nmero 6 no contiene azul y contiene intensidades pequeas de rojo y verde. Muchas imgenes en blanco y negro se almacenan con un mapa de 256 colores (niveles de gris), pero en este caso, cada nivel contiene las mismas cantidades RGB, es decir, las tres celdas de cada fila contienen el mismo valor. La instruccin utilizada para el trabajo con el mapa de colores en mapa es colormap(m), la cual permite cambiar el mapa de colores que se utiliza en la representacin. En general, m es una matriz con tres columnas, de modo que la psima fila determina las proporciones, en la escala RGB, del i-simo color utilizado. Para ms comodidad, MATLAB dispone de una serie de mapas de colores predefinidos, que se pueden imponer mediante colormap(mapa), donde mapa puede tomar uno de los valores siguientes:

Gua

- Imagen RGB (Truecolor)

Este es otro formato para imgenes a color. Se presenta en la forma de un arreglo de mxnx3 de clases uint8, uint16, single, o double cuyos valores de pxel especifican valores de intensidad. Este representa una imagen con tres matrices de tamaos que concuerdan con el de la imagen. Cada matriz corresponde a uno de los colores bsicos Rojo, Verde o Azul y da establecen cuanto de cada uno de estos colores debe ser usado en un determinado pxel.
- Imagen Mltiples-Frames

Cuando se requiere hacer estudios de secuencias de imgenes, este formato es eindicado. Por ejemplo en imgenes mdicas donde se requiere el estudio de secuencias de cortes transversales, longitudinales, etc.. CONVERSIN ENTRE FORMATOS DE TRABAJO DE IMAGENES Para convertir imgenes entre los diferentes formatos disponibles, MatLab con su

Gua

Image Processing Toolbox cuentan con una serie de comandos que facilitan realizar tales procedimientos:

El comando mat2gray es til si se tiene una matriz que representa una imagen pero los valores que representan la escala de grises no son adecuados. El comando mat2gray automticamente re-escala todas las entradas a valores que se encuentren entre 0 y 255 (si se utiliza uint8) o 0 y 1 ( si se utiliza double). LECTURA DE ARCHIVOS Las imgenes que desean ser procesadas, normalmente se encuentran en la forma de un archivo, mientras que el trabajo en MatLab se desarrolla con una imagen vista como una matriz. Estas imgenes una vez procesadas deben ser guardadas en un formato de imagen que sea compatible con otros programas, tal como JPEG, TIFF, etc,. La funcin imread lee imgenes que se encuentren en cualquiera de los formatos de archivo de grficos de imgenes, con cualquier profundidad de bit. La mayora de las imgenes utiliza 8 bits para guardar los valores de los pxel. Como ya se explico, cuando estos son guardados MatLab los guarda como clase uint8. Para formatos de archivo que soportan informacin de 16 bits, PNG y TIFF por ejemplo, MatLab guarda las imgenes como clase uint16. Para imgenes indexadas, imread siempre lee el mapa de color dentro de una matriz de clase double, aunque el mismo arreglo de la imagen sea clase uint8 o uint16. LECTURA DE MLTIPLES IMGENES DE UN ARCHIVO GRAFICO MatLab soporta archivos grficos con diferente formato, tales como HDF y TIFF, que pueden contener mltiples imgenes. Por defecto, imread importa solo la primera imagen de un archivo de este tipo. Para importar las imgenes adicionales desde el archivo, se debe utilizar la sintaxis soportada por el formato del archivo. Por ejemplo, cuando se usan archivos TIFF, se puede utilizar un valor ndice con imread

Gua

identifica la imagen dentro del archivo que se requiere importar. As, este ejemplo lee una serie de 8 imgenes de un archivo TIFF y guarda las imgenes en un arreglo de 4 dimensiones. Se puede utilizar imfinfo para determinar cuantas imgenes han sido guardadas en el archivo: >> rm=uint8(zeros(128,128,1,8)); >> for frame = 1:8 >> [rm(:,:,:,frame),map]=imread(rm.tif,frame); >> end DESPLEGADO DE IMGENES EN MATLAB No todos los comandos para el desplegado de una imagen requieren tener Image Processing Toolbox. Tal es el cado se los siguientes comandos:

A veces la imagen no puede ser desplegada en escala de grises aunque haya sido previamente convertida a una imagen en escala de grises. Es entonces que se puede hacer uso del comando colormap(gray) para forzar a MatLab a usar una escala de grises al momento de desplegar una imagen. Si el MatLab tiene el Image Processing Toolbox instalado, es recomendable en lugar de utilizar los comandos anteriores, el comando imshow

Procedimiento

Gua

NOTA : Etiquete con explicaciones cada una de las partes de las instrucciones que utilizo en la prctica, en MatLab, luego del ; en una instruccin se coloca % y posteriormente se puede escribir sin que perjudique la ejecucin de la instruccin. Si hay un salto de lnea, se debe volver a colocar el carcter anterior. Esto le ser til como una buena tcnica de estudio para el parcial prctico.

PARTE I. Binarizacin de una imagen. >> clear >> close all >> Ima= imread('sp01.gif'); >> figure(1), imshow(Ima); >> ImaFil = Ima(100,:); >> ImaCol = Ima(:,256); >> figure(2), imshow(ImaFil); >> figure(3), imshow(ImaCol); >> max(max(Ima)) Cual es el resultado obtenido?, Un nmero aproximadamente igual a la mitad de este ser utilizado para declarar la variable x. >> syms x >> x=128; >> ImaBin1=Ima>x >> ImaBin2=Ima<x >> figure(4), imshow(ImaBin1); >> figure(5), imshow(ImaBin2); Visualice ambas figuras y establezca la diferencia entre ellas. PARTE II. Mapa de Colores, imread, imshow e imwrite. >> clear >> close all

Gua

>> imabmp1=imread('Noies.bmp'); >> imatif1=imread('Nena.tif'); >> imajpg1=imread('Castell.jpg'); >> imabmp2=imread('H_24.bmp'); >> imatif2=imread('Hombro.tif'); >> imajpg2=imread('Aneuri.jpg'); Verifique como aparece cada una de estas imgenes, como matrices o arreglos de matrices en el Workspace. Comente cada una de ellas. Proceda de la siguiente manera: >> [indimabmp1,map]=rgb2ind(imabmp1,255); En este punto verifique como ha cambiado el Workspace. Intente presentar la imagen obtenida en diferentes mapas de colores as: >> imshow (indimabmp1), colormap(cool); >> imshow (indimabmp1), colormap(spring); >> imshow (indimabmp1), colormap(pink); Ahora intntelo con el mapa de color asignado, de la siguiente manera: >> imshow (indimabmp1), colormap(map); Realice una nueva conversin: >> indimabmp1gr = ind2gray(indimabmp1,map); Muestre el resultado >> imshow (indimabmp1gr); Vuelva a realizar las pruebas intentando mostrar la imagen antes convertida con los Mapas de Colores utilizados anteriormente. Qu resultado obtuvo?. Guarde la imagen original. >> imwrite (indimabmp1gr,'Noies.bmp'); Cambie el mapa de color de las imgenes cargadas, y gurdelas en su directorio de trabajo.

PARTE III. Lectura de una imagen Multiframe.


El Toolbox de Procesamiento de Imgenes provee soporte para guardar mltiples imgenes en un mismo arreglo. Cada imagen separada es lo que se conoce como Frame. Primero se ha de crear un arreglo en cuatro dimensiones que permitir que en l sean arreglados cada uno de los Frames. >> mri = uint8(zeros(128,128,1,27)); % preallocate 4-D array

Gua

donde, 128 x 128 es la medida en pxels de cada una de las imgenes en los Frames y 27 es el nmero de Frames que la componen. >> for frame=1:27 >> [mri(:,:,:,frame),map] = imread('mri.tif',frame); >> end Con la etapa anterior, se extraen todos los Frames los cuales pueden desplegar ser desplegados individualmente de la siguiente manera: >> figure;imshow(mri(:,:,:,6),map); >> figure;imshow(mri(:,:,:,12),map); >> figure;imshow(mri(:,:,:,24),map); O si se quiere desplegar todo el conjunto a la vez, unicamente hace falta: >> montage(mri,map); PARTE IV. Histograma de una imagen. Limpiar el workspace y cerrar todas las ventanas abiertas >> clear >> close all Cargar un demo del Image Processing de MatLab >> load clown Presentar la imagen y su mapa de color asociado >> figure(1), imshow(X,map),colorbar; >> axis on ; >> title('IMAGEN ORIGINAL EN COLOR'); Presentar la imagen en blanco y negro: >> i = (1:256)'/256; >> mapbn = [i i i]; >> figure(2), imshow(X,mapbn),colorbar; >> axis on >> title('IMAGEN EN BLANCO Y NEGRO'); Mejorar el contraste de la imagen >> ColorMax = max(X(:)); >> Y = X/ColorMax*256; >> figure(3), imshow(Y,mapbn), colorbar; >> axis on, title('IMAGEN CON MEJORA DE CONTRASTE'); Presentar el histograma de las imgenes, notando las diferencias entre ambos.

Gua

>> figure(4),subplot(2,1,1),imhist(X,mapbn); >> figure(4),subplot(2,1,2),imhist(Y,mapbn); Presentar la imagen original con mltiples mapas de colores, que sirven de referencia en la misma imagen: >> figure(5), imshow(Y,flag), colorbar; >> figure(6), imshow(Y,hot), colorbar; >> figure(7), imshow(Y,autumn), colorbar; >> figure(8), imshow(Y,winter), colorbar;

Anlisis de resultados

Qu es una imagen TrueColor? Qu es un histograma y que ayuda a determinar? Defina las siguientes clases utilizadas en el Image Processing Toolbox: uint8, uint16, double, logical Cmo puede conseguirse una imagen indexada partiendo de una imagen TrueColor?. Presente un ejemplo. Desarrolle el siguiente procedimiento, e indique que diferencias encuentra entre las dos imgenes que se correspondan en color y la razn de estas diferencias.

>> [X,map] = imread('Gaudi.bmp'); >> figure(1), imshow(X,map) >> title('IMAGEN ORIGINAL CON SU PROPIO MAPA DE COLOR'); i = (1:256)'/256; >> mapred1= [i zeros(256,1) zeros(256,1)]; >> mapgre1= [zeros(256,1) i zeros(256,1)]; >> mapblu1= [zeros(256,1) zeros(256,1) i]; >> figure(2), imshow(X,mapred1) >> title('IMAGEN ROJO 1'); >> figure(3), imshow(X,mapgre1) >> title('IMAGEN VERDE 1'); >> figure(4), imshow(X,mapblu1) >> title('IMAGEN AZUL 1'); >> mapr= [ones(256,1) zeros(256,1) zeros(256,1)]; mapred2=mapr.*map ; >> mapg= [zeros(256,1) ones(256,1) zeros(256,1)];mapgre2=mapg.*map ; >> mapb= [zeros(256,1) zeros(256,1) ones(256,1)];mapblu2=mapb.*map ;

Gua

>> figure(5), imshow(X,mapred2) >> title('IMAGEN ROJO 2'); >> figure(6), imshow(X,mapgre2) >> title('IMAGEN VERDE 2'); >> figure(7), imshow(X,mapblu2) >> title('IMAGEN AZUL 2');

investigacin complementaria

Investigue la instruccin o el conjunto de estas, que permitiran obtener un conjunto de filas de una imagen y poderlo visualizar posteriormente. Investigue la instruccin o el conjunto de estas, que permitiran obtener un conjunto de columnas de una imagen y poderlo visualizar posteriormente. Investigue el comando imfinfo, identifique cada uno de los datos que proporciona y su utilidad. En que se diferencian las imgenes guardadas en diferentes modalidades en el formato .BMP, es decir, si se tienen imgenes de 16 bits, de 24 bits, de 32 bits. Que es un archivo .m y en que se diferencia de un archivo .mat.?

Informacin adicional
-

www.us.es/edan/asignaturas/ CN3/BREVES%20APUNTES%20MATLAB.pdf

- www.iit.upco.es/palacios/matlab/ -

www.mathworks.com/access/helpdesk/help/toolbox/images/images.shtml

También podría gustarte