Descargar

Anuncio
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
CARRERA DE RADIOTECNOLOGIAS E IMÁGENES
MANUAL DE LABORATORIO
Reconstrucción de imágenes
Traducido por M. Sc. Marlon Mejía
RTA Junio Silva
Junio del 2014
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
LABORATORIO DE RECONSTRUCCION DE IMÁGENES BIOMEDICAS
LABORATIO # 1
Principios de Matlab y Su Aplicación en Matrices
Objetivos:
1. familiarización de los alumnos con los conceptos y entorno de trabajo de Matlab
2. Operaciones en Matlab con matrices (tipos, sumas y restas con matrices etc)
Introducción:
Breve Historia de MatLab
MatLab significa Matrix Laboratory, una definición clara sobre MatLab es que se trata de un software de alto
nivel para cálculos numéricos y simbólicos. MatLab fue creado por Cleve Moler en los años 70, quien fuese el
creador de las rutinas LINPACK y EISPACK, las cuales dieron origen a MatLab. El reto fue que estudiantes no
programaran toda una serie de algoritmos en FORTRAN para llevar a cabo algún análisis numérico o simbólico. La
solución fue MatLab, el cual actualmente es distribuido por MathWorks, Inc desde 1984. Algunas características
importantes sobre MatLab, es relativamente lento en comparación con FORTRAN, ya que MatLab es un lenguaje
de interpretación; al programar con MatLab es más corta la estructura, existe una gran variedad de ToolBoxes, es
simple de entender y usar.
FAMILIARIZANDOSE CON MATLAB
1. icono de acceso al programa Matlab:
Indica el nombre del
programa y la version
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
2. Pantalla principal de Matlab y pantallas auxiliares de Matlab
Command Window
Workspace
(Ventana de Comandos)
Current Directory
(Estacion de Trabajo)
(Directorio Actual)
Lista de ficheros y
carpetas en el
directorio actual.
Muestra las variables creadas así
como su tipo y su valor.
Aquí se introducen los comandos y
también es posible recuperar
instrucciones ejecutadas anteriormente
con ayuda de la tecla (↑) del cursor. Esto
nos ayuda a ahorrar tiempo
Command History
(Historial de Comando)
Almacena las instrucciones
introducidas indicando fecha y hora
de la cesión.
3. Manejo de Dock y Undock:
Undock
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
4. Manejo de los Menus:
Edit
Help (Ayuda)
Deskop






Hacer pruebas con las funciones Dock y Undock para ver su funcion.
usar el menu Deskop para restablecer el Layout por defecto
usar el menu Deskop para crear un Layout Personalizado.
usar el menu Edit para Borrar la ventana de comando (Command window).
usar el menu Edit para Borrar el historial de comandos (Command history).
usar el menu Edit para borrar el espacio de trabajo (Workspace).
5. Manejo de Matrices en Matlab
instrucciones: A continuación se detallan una serie de operaciones, realizar las operaciones solicitadas
utilizando el programa Matlab.
a. introducir la siguiente Matriz en Matlab y asignarle la Variable A
A=
1 1 0
0 1 0
0 1 1
¿Qué sucede en la Ventana de Variables?
¿Qué sucede en la ventana de Historial de Comandos?
Matriz es un conjunto ordenado de elementos
formados en filas y columnas de forma
rectangular.
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
b. introducir la siguiente Matriz en Matlab y asignarle la Variable B
0 1 1
B=
0 0 1
0 1 0
¿Qué sucede en la Ventana de Variables?
¿Qué sucede en la Ventana de Historial de Comandos?
c. crear una variable C que será la suma de la matriz A con la matriz B (hacerlo de forma manual)
C= A + B
C=
1 1 0
0 1 0
0 1 1
+
0 1 1
0 0 1
0 1 0
=
¿Qué sucede en la Ventana de Variables?
¿Qué sucede en la Ventana de Historial de Comandos?
Para poder sumar o restar matrices, estas
tienen que ser de igual dimensión. Se
suma posición por posición
respectivamente.
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
d. Crear una variable D que sera la resta de la matriz A con la matriz B (hacerlo de forma manual)
D= A - B
D=
1 1 0
0 1 0
0 1 1
-
0 1 1
0 0 1
0 1 0
=
e. Transpuesta de una Matriz: Encontrar la transpuesta de las matrices A y B (hacerlo de forma manual)
A' B'
A=m*n entonces A’=n*m. las filas de
la matriz original pasan a ser columnas en
la traspuesta.
f.
multiplicación de una matriz por un escalar. Realizar las siguientes operaciones:





6*A
9*B
5*C
7*A
10*D




3*C
4*B
8*C
7*D




6*D+1*A
8*B+3*C
10*A+21*B
5*A-2
g. realizar las siguientes operaciones con matrices:




3*A+2*C
2*B+A
5*B+A
7*B+3*C
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
LABORATORIO DE RECONSTRUCCION DE IMÁGENES BIOMEDICAS
LABORATIO # 2
Procesamiento de Imágenes en MatLab
Objetivos:
6. conversión de decimal a binario y viceversa
7. Que el estudiante conozca conceptos básicos de procesamiento de imágenes
Introducción
Matlab almacena las imágenes como vectores bidimensionales (matrices), en el que cada elemento de la
matriz corresponde a un sólo pixel. Trabajar con imágenes en matlab es equivalente a trabajar con el tipo
de dato matriz.
Este laboratorio introduce algunos conceptos básicos de procesamiento de imagen. El ejemplo comienza
con la lectura de una imagen en el espacio de trabajo de MATLAB. El ejemplo a continuación, realiza algún
ajuste de contraste en la imagen. Por último, se escribe la imagen ajustada a un archivo
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Conversión de Decimal a Binario
Con la ayuda del procedimiento enseñado en clase y el comando dec2bin para convertir los siguientes
números decimales a binarios: dec2bin(#)
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Conversión de Binario a Decimal
Con la ayuda del procedimiento enseñado en clase y el comando bin2dec para convertir los siguientes
números decimales a binarios: bin2dec(‘#’)
De binario a
decimal
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
PROCEDIMIENTO:
Pasos a realizar:
Paso 1: Leer y mostrar una imagen
Paso 2: Compruebe cómo aparece la imagen en el espacio de trabajo
Paso 3: Mejora de contraste de imagen
Paso 4: Escribir la imagen en un archivo de disco
Paso 5: Compruebe el contenido del archivo recién escrita.
PASO 1: leer y mostrar una imagen
en primer lugar, limpiaremos el área de trabajo de MatLab de las variables y cerrar las ventanas abiertas.
usamos el comando close all o clear all.
para leer una imagen, utilice el comando imread. Este comando lee una de las imágenes de ejemplo
incluidos en la caja de herramientas,cráneo.jpg , y la almacenamos en una matriz denominada I.
>> l = imread ('craneo.jpg’);
visualizar la imagen
la caja de herramientas incluye dos funciones de visualización de la imagen: imshow e imtool.
imshow: es la función fundamental de la caja de herramientas de visualizacion de images. este permite
visualizar una imagen de tipo unit 8 o double.
imtool: inicia la herramienta de imagen que presenta un entorno integrado para la visualización de
imágenes y la realización de algunas tareas comunes de la imagen de proceso. la herramienta de imagen
proporciona todas las capacidades de visualización de imágenes de imshow sino que también
proporciona acceso a varias otras herramientas para la navegación y la exploración de imágenes, tales
como barras de desplazamiento, la herramienta pixeles Región, la herramienta de información de la
imagen y la herramienta de ajuste de contraste.
>> imshow (I)
muestra la imagen en escala de grises pount.tif
>>imtool (I) muestra la imagen con la herramienta pixel region.
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
PASO 2: Compruebe como parece la imagen en el espacio de trabajo
La función imread devuelve los datos de imagen en la variable I, MATLAB puede almacenar imágenes
como uint8, uint16, o matrices dobles.
También puede obtener información sobre las variables del espacio de trabajo mediante una llamada al
comando whos
>> whos
MatLab reponde con:
Name
I
Size
239x211
Bytes Class
Attributes
50429 uint8
PASO3: Mejora de contraste de imagen
pout.tif es una imagen de contraste un poco bajo, para ver la distribución de las intensidades en pout.tif,
puede crear un histograma llamando a la función imhist (preceda la llamada a imhist con el comando
figure de modo que el histograma no sobrescriba la visualización de la imagen I en la ventana de la figura
actual).
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
>> figure, imhist (I);
nótese como el rango de intensidad es bastante estrecho. no cubre el rango potencial de [0, 255], y le
faltan los valores altos y bajos que se traduciría en un buen contraste.
la caja de herramientas ofrece varias formas de mejorar el contraste de una imagen. una forma es llamar
a la función histeq para difundir los alores de intensidad en toda la gama de la imagen, un proceso
llamado ecualización de histograma.
>>I2=histeq (I);
mostrar la nueva imagen ecualizada, I2 en una ventana nueva figura.
>>figure, imshow (I2)
nos muestra la versión ecualizada de cráneo.jpg
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Llame imshit de nuevo para crear un histograma de la imagen I2 ecualizada.. si se comparan los dos
histogramas, el histograma de I2 está más extendido que el histograma de I1
>>figure, imhist (I2)
la caja de herramientas incluye muchas otras funciones que llevan a cabo el ajuste de contraste,
incluyendo las funciones imadjust adapthisteq. la caja de herramientas incluye una herramienta
interactiva, llamada la herramienta de ajuste de contraste, que se puede utilizar para ajustar el contraste
y el brillo de un imagen que aparece en la herramienta de imagen. Para utilizar esta herramienta, llame a
la función imcontrast o acceda a la herramienta de imagen.
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
>>imshow ('craneo.jpg')
>>imcontrast (gca)
PASO 4: Escribir la imagen en un archivo de disco
para escribir la imagen recién ajustada I2 a un archivo, utilice la función imwrite. si se incluye la extensión
de nombre de archivo. Png', la función imwrite escribe la imagen en un archivo portable “network”
graphisc (PNG), pero se puede especificar otros formatos.
>>imwrite (I2, 'craneo2.png');
PASO 5: Compruebe el contenido del archivo recién escrita.
para ver que imwrite escribió al archivo, utilice la función imfinfo.
>> imfinfo ('craneo2.png')
la función imfinfo devuelve información sobre la imagen en el archivo, como su formato, tamaño,
anchura y altura.
ans =
filename : ‘craneo2.png’
FileModDate: '02-jun-2014 13 :58 :20 ‘
FileSize: 52262
Formato: 'png'
ormatVersion: []
Anchura: 335
Altura: 446
Bitdepth: 8
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
ColorType: "grayscale"
FormatSignature: [137 80 78 71 13 10 26 10]
Mapa de colores: []
Histograma: []
InterlaceType: 'none'
Transparencia: 'none'
SimpleTransparencyData: []
BackgroundColor: []
RenderingIntent: []
Cromaticidades: []
Gamma: []
XResolution: []
YResolution: []
ResolutionUnit: []
XOffset: []
YOffset: []
OffsetUnit: []
SignificantBits: []
ImageModTime: '2 Jun 2014 19:58:20 +0000'
Título: []
Autor: []
Descripción: []
Copyright: []
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
CreationTime: []
Software: []
Descargo de responsabilidad: []
Advertencia: []
Fuente: []
Comentario: []
OtherText: []
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
LABORATORIO DE RECONSTRUCCION DE IMÁGENES BIOMEDICAS
LABORATORIO # 3
Procesamiento de Imágenes en MatLab
Objetivos:
1. que el estudiante identifique los planos RGB en una imagen
2. que el estudiante reconstruya imágenes monocromáticas
3. que el estudiante sea capaz de cambia o mejorar las imágenes con los diferentes comandos de
matlab.
INTRODUCCION
lo datos de una imagen digital son adquiridos y manipulados en una matriz de volumen de elementos
llamada vóxel. una imagen se reconstruye analizando cada vóxel y proyectando el resultado en una
superficie bidimensional subdividida en elementos de imagen llamados pixeles.
la reconstrucción 3D de una imagen es un campo atractivo en general, por las técnicas de procesamiento
digital de imágenes que en ella intervienen, especialmente en las imágenes biomédicas.
Este tema sido muy desarrollado y ha sido aplicado en la práctica en casi todas las modalidades modernas
aplicadas a la tomografía. Hay muchos problemas que todavía siguen sin resolverse o se puede
mejorar.
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
PROCEDIMIENTO:
1. Descomposición de una imagen RGB en sus 3 planos.
Ejecute los siguientes pasos:
>>RGB = imread('cerebro.jpg');
>>imshow(RGB)
Identifique las propiedades de la imagen con el comando
>>Whos
De que tamaño es la imagen___________________________________________
Que clase es la imagen________________________________________________
Descomponiendo los planos
Ejecutar todos los comandos:
>>Im_R=RGB(:,:,1);
>>Im_G=RGB(:,:,2);
>>Im_B=RGB(:,:,3);
Usando el comando “subplot” para mostrar las tres componentes (R G B) de una imagen RGB:
Ejecute el siguiente comando:
>>subplot(3,1,1), imshow(Im_R),subplot(3,1,2),imshow(Im_G),subplot(3,1,3), imshow(Im_B)
2. Reconstrucción de imágenes monocromáticas:
Construye la matriz vinculada a la imagen de la figura 1.
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
3. Construye la matriz vinculada a la imagen de la figura 2.
4. Extraer de la imagen de la figura 3 la región de interés mostrada en la figura 4.
5. Usar los siguientes comandos para extraer una porción de la imagen:
I=imread(‘tumor.jpg’);
Imshow(I);
J=imcrop;
Seleccionar con el ratón la región de interés
Figure,imshow(J);
__________________________
También se puede hacer fijando
[xmin ymin ancho y alto]
I=imread(‘tumor.jpg’);
I1=imcrop(I, [60 40 100 90]);
imshow(I)
figure,imshow(I1)
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
6. Operaciones aritméticas y geométricas con imágenes
a.- Realiza las siguientes operaciones con la figura (Imagen RM). Compara los diferentes tamaños de las
imágenes resultantes. ¿Qué conclusiones sacas?
Observación: El archivo de la imagen m83 se los proporcionará el Instructor.
b.- Aumenta una cierta región de la imagen siguiente para verla mejor.
Ejecutar los siguientes comandos:
>>I=imread('m83.jpg');
>>imshow(I)
>>zoom on
%Marcar la región a aumentar
%Dar clic con el mouse en el recuadro de selección
%aparecerá la imagen de la región marcada
c.- Modifica el tamaño de la imagen de la figura (Imagen RM).
>>I=imread('m83.jpg');
>>J=imresize(I,0.5,'bilinear');
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
>>imshow(J)
%Tambien se puede usar:
>>J1=imresize(I,[30 40]);
%Reduce la imagen al tamaño de 30*40; 3
%0 filas por 40 columnas
>>imshow(J1)
d.- Gira 30º la imagen anterior
>>IR=imrotate(J,30);
%Rota la imagen 30 grados
>>imshow(IR)
6. Conectividad de píxeles
Determina el objeto de la imagen de la figura “Letras”) que está en la posición (columna 43, fila 38), el
que está en la posición (185, 68) y el que está en la posición (212, 181), suponiendo que un objeto viene
dado por un conjunto de píxeles de igual tonalidad y conectados por vecindad (entornos de 8 vecinos).
Letras
Letras filtradas
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
>>BW1 = imread('text.png');
>>c = [43 185 212];
>>r = [38 68 181];
>>BW2 = bwselect(BW1,c,r,4);
>>imshow(BW1), figure, imshow(BW2)
7. Histograma de una imagen
Determina con MatLab el histograma de la imagen de la figura
Lista de ficheros y carpetas en el directorio actual.
Espina dorsal
8. Transformaciones puntuales
Aplica a la imagen de la figura 9 una transformación que ajuste los tonos de gris al rango [0 255]
La transformación más sencilla es la siguiente:
El valor de la pendiente a se determina por la condición T(63)=255, es decir, a·60=255. Por lo tanto,
a 4.05. Como la pendiente es mayor que uno la imagen aumenta su contraste en el intervalo [0 63].
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Figura Espina dorsal
También se puede realizar un ajuste de los tonos de gris del intervalo [0 60] al intervalo [0 255] mediante
el comando imadjust de MATLAB:
Programa
I=imread('spine.tif');imshow(I);
J=imadjust(I,[0 0.247],[]);
Observa que 63/255=0.247.
figure,imshow(J)
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
LABORATORIO DE RECONSTRUCCION DE IMÁGENES BIOMEDICAS
LAORATORIO # 4
Filtrado de Imágenes en MatLab
objetivos:
1. La presente guía de laboratorio tiene como objetivo la familiarización de los alumnos con los
conceptos filtrado de imágenes, Los beneficios que se obtienen con el filtrado y los comando
usados.
INTRODUCCION:
Mostrando Diferentes Tipos de Imágenes
Mostrando Imágenes Indexadas
Mostrando Imágenes en Escala de Grises
Mostrando Imágenes Binarias
Mostrando Imágenes en Color Verdadero
Si necesita ayuda, puede ver la ayuda en Image Types en el Toolbox.
Mostrando Imágenes Indexadas
Para mostrar imágenes indexadas, usando ya sea imshow ó imtool, hay que especificar ambos, la matriz
de la Imagen y el mapa de color (colormap).
En ésta guía usaremos la variable X para representar una Imagen indexada en el espacio de trabajo
(workspace), y map para representar el mapa de color (colormap).
imshow(X,map)
Ó
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
imtool(X,map)
Para cada pixel en X, estas funciones muestran el color guardado en la fila correspondiente del mapa. Si
los datos de la matriz de Imagen son de clase doublé, el valor 1 indica la primera fila en el mapa de color,
el valor 2 indica a la segunda fila, y así sucesivamente. No obstante, si los datos de la matriz de la Imagen
es de clase uint8 ó uint16, el valor 0 indica la primera fila en el mapa de color (colormap), el valor 1 indica
la segunda fila, y así sucesivamente. Este detalle es manejado automáticamente por las funciones imtool
and imshow.
Mostrando imágenes en Escala de Grises
Para mostrar una Imagen en escala de grises, usando imshow ó imtool, hay que especificar la matriz de la
Imagen como argumento.
En ésta guía usaremos la variable I para representar una Imagen en escala de grises en el espacio de
trabajo.
imshow(I)
ó
imtool(I)
Ambas funciones muestran la Imagen escalando los valores de intensidad para que funcionen como
índices en el mapa de colores de escala de grises.
Si la Imagen es tipo double, un valor de pixel de 0.0 es mostrado como negro, un valor de pixel de 1.0 es
mostrado como blanco, los valores de pixel entre 0 y 1 son mostrados como tonos de gris. Si I es uint8,
entonces un valor de pixel de 255 es mostrado como blanco. Si es de tipo Uint, entonces un valor de pixel
de 65535 es mostrado como blanco.
Imágenes en escala de grises que tienen Rangos inconvenientes:
En algunos casos, los datos de la Imagen a mostrar en escala de grises pueden tener un rango de muestra
que está afuera del rango convencional Por ejemplo:
[0,1] para single ó Arreglos double, [0,255] para Arreglos uint8, [0,65535] para Arreglos uint16, ó [32767,32768] para Arreglos uint16 ). Por ejemplo si se filtra una Imagen en escala de grises, alguno de los
datos de salida del filtro puede caer fuera del rango de los datos originales.
Para mostrar rangos de datos no convencionales como imágenes, se puede especificar el rango de
muestra directamente, usando la siguiente sintaxis para ambas funciones imshow e imtool,
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
imshow(I,'DisplayRange',[low high])
ó
imtool(I,'DisplayRange',[low high])
Si se usa una matriz vacía ([]) para mostrar el rango, estas funciones escalan los datos automáticamente,
configurando el Low y el High para el mínimo y el máximo valor dentro del arreglo.
El ejemplo siguiente filtra una Imagen en escala de grises, creando un rango no convencional de datos. El
ejemplo llama a la imtool para mostrar la Imagen , usando la opción automática de escalamiento. Note
que en el ejemplo el rango de muestra de la Imagen en la esquina inferior derecha de la ventana del
“Image Tool”.
I = imread('testpat1.png');
J = filter2([1 2;-1 -2],I);
imtool(J,'DisplayRange',[]);
Mostrando Imágenes Binarias
En MatLab, una Imagen binaria es de clase lógica. Imágenes binarias contienen solo ceros y unos. Los
pixeles con el valor cero son mostrados con color negro; Los pixeles con el valor uno son mostrados con
color blanco.
Nota Para que Matlab interprete la Imagen como binaria, debe ser de clase lógica.
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Para mostrar una Imagen binaria usando ya sea imshow o imtool, hay que especificar la matriz de la
Imagen como argumento. El ejemplo siguiente lee una Imagen binaria en MatLab y muestra la Imagen .
En ésta guía usaremos la variable BW para representar una Imagen binaria en el espacio de trabajo.
BW = imread('circles.png');
Figure,imshow(BW)
ó
imtool(BW)
Cambiando los colores de una Imagen Binaria
Se puede invertir los colores de una Imagen binaria cuando son mostrados, de tal manera que los valores
cero sean mostrados como blancos y los valores unos sean mostrados como negros. Para realizar esto se
usa el operador NOT (~).
Figure,imshow(~BW)
ó
figure,imtool(~BW)
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Se pueden mostrar también imágenes binarias usando la sintaxis del mapa de color indexado. Por
ejemplo el siguiente comando especifica un mapa de color de 2 filas que muestra los ceros como rojo y
los unos como azules.
Imshow(BW,[1 0 0; 0 0 1])
ó
imtool(BW,[1 0 0; 0 0 1])
Mostrando imágenes en Color Verdadero “Truecolor Images”
Truecolor images ó imágenes en color verdadero, también llamadas imágenes RGB, representan valores
de color directamente en lugar de hacerlo a través de un mapa de color (colormap). Una Imagen en color
verdadero es un arreglo m*n*3. Para cada pixel (r,c) en la Imagen , el color es representado por la tripleta
(r,c,1:3).
Para mostrar imágenes en color verdadero, se debe usar imshow ó imtool, especificando la matriz de
Imagen como argumento.
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Por ejemplo, el código siguiente lee imágenes de color verdadero en los espacios de trabajo de MatLab y
posteriormente las muestra en pantalla. En ésta guía usaremos la variable RGB para representar una
Imagen de color verdadero en el espacio de trabajo.
RGB = imread(`peppers.png');
imshow(RGB)
ó
imtool(RGB)
Sistemas que usan 24 bits por el pixel de la pantalla pueden desplegar las imágenes truecolor
directamente, porque ellos asignan 8 bits (256 niveles) cada uno a los planos rojo, verde y azul. En los
sistemas con menos colores, el imshow despliega la Imagen usando una combinación de aproximación
de color.
______________________________________________________________________________________
_______________________
Comprendiendo los filtros de Textura
Las funciones que vamos a trabajar operan todas de manera similar: Ellas definen una vecindad alrededor
del pixel de interés, calcula la estadística para cada vecindad y usa esos valores como los valores del pixel
de interés en la Imagen de salida.
Este ejemplo muestra como la función rangefilt opera en un arreglo (Imagen ) simple.
A = [ 1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15; 16 17 18 19 20 ]
A=
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
1
6
11
16
2
7
12
17
3 4 5
8 9 10
13 14 15
18 19 20
B = rangefilt(A)
B=
6
11
11
6
7
12
12
7
7 7 6
12 12 11
12 12 11
7 7 6
La siguiente figura muestra como el valor del elemento B(2,4) fue calculado a partir de A(2,4). Por
defecto, la función rangefilt usa una vecindad de 3*3 pero se puede especificar una vecindad de forma
diferente y de tamaños diferentes.
Determinando los Valores de los Pixeles en La Imagen filtrada de Salida
Las funciones stdfilt y entropyfilt operan similarmente, definen una vecindad alrededor del pixel de
interés y calculan la estadística para los vecinos para determinar el valor del pixel en la Imagen de salida.
La función stdfiltf calcula la desviación estándar para todos los valores en la vecindad.
La función entropyfilt calcula la entropía de las vecindades y asigna ese valor al pixel de salida. Es de hacer
notar que la función entropyfilt define por defecto una vecindad de 9*9 alrededor del pixel de interés.
Para calcular la entropía de una Imagen se usa la función ent.ropy
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Ejemplo: Usando las Funciones de Textura
El siguiente ejemplo ilustra como las funciones filtros de textura pueden detector regiones de textura en
una Imagen. En la figura de abajo el fondo es liso; Hay muy poca variación en los valores de escala de
grises. En el primer plano la superficie del contorno de las monedas presenta más textura. En ésta Imagen
, los pixeles en el primer plano tienen mayor variabilidad y por lo tanto mayor rango de valores. La
función rangefilt hace que los bordes y contornos de las monedas sean más visibles.
Ejemplo:
1. Lea la Imagen y muéstrela en pantalla
I = imread('osea.jpg');
imshow(I)
2. Filtre la Imagen con la función rangefilt y muestre los resultados.
Note que el filtro de rango realza los bordes y los contornos de las superficies de las monedas.
K = rangefilt(I);
figure, imshow(K)
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Realizando Filtrado Lineal de Imágenes Usando imfilter
El filtrado de las imágenes usando ya sea la correlación ó la convolución puede realizarse usando la
función imfilter. En éste ejemplo filtraremos una Imágen con un filtro de 5*5 conteniendo pesos iguales.
De tal manera que éste filtro es usualmente denominado filtro promediador.
I = imread('tac.png');
h = ones(5,5) / 25;
I2 = imfilter(I,h);
imshow(I), title('Original Image');
figure, imshow(I2), title('Filtered Image')
Imágen Original
Imágen Filtrada
Cuando se filtra una Imágen
Cuando se filtra una Imágen , un relleno de ceros puede resultar en una banda de color negro alrededor
de la Imágen filtrada, como se muestra en el siguiente ejemplo.
I = imread('eight.tif');
h = ones(5,5) / 25;
I2 = imfilter(I,h);
imshow(I), title('Original Image');
figure, imshow(I2), title('Imágen Filtrada con un borde negro')
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Imágen Original
Imágen Filtrada
Para eliminar el artefacto “relleno de ceros” alrededor de los bordes de las imágenes, la función imfilter
ofrece la mejor solución denominada Replicación de Bordes. En la replicación de Bordes el valor de
cualquier pixel fuera de la Imágen es determinado replicando el valor del pixel más cercano al borde.
Esto es ilustrado en la siguiente figura:
Pixeles del Borde Replicados
Para filtrar usando la replicación de bordes, hay que agregar el argumento 'replicate' a la función imfilter.
I3 = imfilter(I,h,'replicate');
figure, imshow(I3);
title('Imágen filtrada Usando Replicación de Bordes')
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
La función imfilter soporta otras opciones de rellenado en bordes, tales como 'circular' y 'symmetric'..
Filtrado Multidimensional
La función imfilter puede manejar imágenes multidimensionales y filtros multidimensionales. Una
propiedad conveniente del filtrado es filtrar imágenes tri-dimensionales con un filtro de bi-dimensiones lo
cual es equivalente a filtrar cada plano de las imágenes tridimensionales individualmente con el mismo
filtro bi-dimensional.
En el siguiente ejemplo se muestra lo fácil que es filtrar cada plano de color de una Imágen en color
verdadero (truecolor) con el mismo filtro.
1. Lea una Imágen RGB y muéstrela en pantalla.
rgb = imread('peppers.png');
imshow(rgb);
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
2. Filter the image and display it.
h = ones(5,5)/25;
rgb2 = imfilter(rgb,h);
figure, imshow(rgb2)
Filtrando Imagen es con Filtros Predefinidos
La función fspecial produce varios tipos de filtros predefinidos.
Después de crear un filtro fspecial se puede aplicar a las imágenes usando imfilter. En éste ejemplo se
ilustra la aplicación del filtro unsharp a una Imágen en escala de grises. La máscara de filtro unsharp tiene
el efecto de hacer que los bordes y los detalles finos de la Imágen sean más realzados.
I = imread('moon.tif');
h = fspecial('unsharp');
I2 = imfilter(I,h);
imshow(I), title('Imágen Original)
figure, imshow(I2), title('Imágen Filtrada')
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Imágen Original
Imágen Filtrada
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Laboratorio #5
Reconstrucción Sagital y coronal a partir de los cortes axiales
Objetivos:
1. Familiarización de los alumnos con los comandos usados por MatLab para reconstruir los cortos
coronales y sagitales a de los cortes horizontales.
Introducción:
Explorando cortes de un conjunto de datos de MRI
Este ejemplo muestra como explorar un volumen de datos extrayendo los cortes de un conjunto de datos
de IRM usando las funciones imtrasformand , tformarray.
Paso 1: cargar y ver el IRM Horizontal:
Este ejemplo usa un conjunto de datos de IRM el cual está contenido en MatLab y que es usado en los
ejemplos de ayuda.
D está comprendido por 27 128 por 128 cortes horizontales de un conjunto de datos de escaneo de IRM
de un cráneo humano. los valores en D van desde el rango o hasta 88, por lo que el mapa de color es
necesario para generar una imagen con un rango visual útil.
las primeras 2 dimensiones son espaciales, la tercera es la dimensión de color, con tamaño 1 debido a que
es indexada en el mapa de color.
en este caso la cuarta dimensión es espacial. de tal manera que tenemos 3 dimensiones espaciales en D y
podemos usar los comandos imtransfrom o tformarray para convertir los cortes horizontales en cortes
sagitales (mostrando la vista desde el lado de la cabeza) o cortes coronales (frontales, mostrando la vista
desde el frente o por detrás de la cabeza). las dimensiones espaciales de d son ordenadas de la manera
siguiente:
Dimensión1: frontal hacia detrás de la cabeza (Rsotral/anterior a caudal/posterior).
Dimensión 2: de izquierda a derecha de la cabeza.
Dimensión 3: de abajo hacia arriba de la cabeza.
Un factor importante es que los intervalos de muestreo no son los mismos a lo largo de las tres
dimensiones. Las muestras a lo largo de la dimensión vertical son espaciadas 2.5 veces más anchos que a
a lo largo de la dimensión horizontal.
Cargue el conjunto de datos de IRM y vea los 27 cortes horizontales como un montaje.
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
load mri;
montage (D,map)
title ('Cortes Horizontales');
paso2: extrayendo los cortes sagitales de los cortes horizontales usando el comando IMTRANSFORMT
el comando siguiente extrae todo los datos necesarios para un corte mediosagital
M1= D(: , 64, : , :) ; size (M1)
ans=
128 1 1 27
no obstante no podemos ver M1 todavía ya que es una matriz 128 por 1 por 1 por 27. por lo que usamos
el comando reshape (o squeeze) puede convertir M1 en una imagen 128 por 27 la cual si se puede
mostrar con el imshow
M2 = reshape (M1, [128 27 ]); size (M2)
figure, imshow (M2, map);
title ('sagital- Raw Data');
ans=
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
128 27
.
Las dimensiones de M2 son ordenadas de la manera siguiente:


dimensión 1: frontal hacia detrás de la cabeza (rostral a caudal)
dimensión 2: desde abajo hacia arriba de la cabeza (inferior a superior).
podemos obtener una vista más satisfactoria transformando M2 para cambiar su orientación e
incrementar el muestreo a lo largo de la vertical dimensión (inferior –superior) por un factor de 2.5
haciendo el intervalo de muestreo en las tres dimensiones espaciales.
T0 = maketform ('addine', [0 -2.5; 1 0; 0 0 ]);
R2=makeresampler ({'cubic','nearest'}, 'fill');
M3= imtransform (M2. T0,R2);
figure, imshow (M3, map);
title ('sagital – IMTRANSFORM')
PASO3: Extrayendo los cortes sagitales desde los cortes horizontales usando TFORMARRAY
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
en este apso obtendremos los mismos resuoltados que en el paso 2, pero usando tformarray parair de 3
dimensiones espaciales a 2 dimensiones en una sola operación.
T1=maketform ('affine',[-2.5 0; 0 1; 68.5 0]);
inverseFcn = @(X,t) [X repmat (t .tdata, [size (X,1) 1])];
T2= maketform ('custum', 3,2, [],inverseFcn, 64);
Tc = maketform ('composite',T1,T2);
R3= makeresampler ({'cubic,'nearest','nearest'},'fill');
Tformarray tranasforma las tres dimensiones espcaiales de D en una salida "D enun solo paso. nuestra
imagen de salida es de dimensiones 66 po 128.
M4 = tformarray(D,Tc,R3,[4 1 2],[1 2],[66 128],[],0);
el resultado es idéntico a la respuesta del paso anterior usando imtransform.
figure, imshow (M4,map};
title ('sagital – TFORMARRAY');
PASO4: CREANDO Y MOSTRANDO LOS CORTES SAGITALES
Creamos una matriz 4 d (la tercera dimensión es la dimensión del color) esto puede ser usado para crear
una secuencia de imágenes que va desde la izquierda hacia la derecha.
T3= maketform ('affine', [-2.5 0 0; 0 1 0; 0 0 0.5; 68.5 0 -14]);
S=tformarray (D,T3,R3,[4 1 2 ], [1 2 4],[66 128 35],[],0);
viendo los cortes sagitales como un montaje (separando cada imagen para verlos individualmente)
S2=padarray (S, [6 0 0 0],0,'both');
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
figure, montage (S2,map)
title ('Cortes Sagital');
paso 5: creando y mostrando los cortes coronales
construir los cortes coronales es similar construir los cortes sagitales
T4 =maketform('affine', [-2.5 0 0 ; 0 1 0; 0 0 -0.5; 68.5 0 61]);
C=tformarray (D,T4,R3,[4 2 1],[1 2 4], [66 128 45],[],0);
C2=padarray(C,[6 0 0 0], 0, 'both');
figure,montage (C2,map)
title('Cortes Coronal');
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Laboratorio # 6
Técnicas de visualización de datos escalares de volumen
objetivos:
Introducción
Típicamente los datos escalares de volumen están compuestos de arreglos de datos en 3D y arreglos de 3
coordenadas de las mismas dimensiones. los arreglos de coordenadas especifican las coordenadas x.y, z
para cada punto de datos.
Formas de mostrar datos de IRM








cambiando el formato de los datos
mostrando imágenes de datos IRM
Mostrando un contorno de corte en 2D
mostrando un contorno de corte en 3D
mostrando isosuperficies
agregando una isocapa para mostrar un corte superficial
definiendo la vista
agregando iluminación
Cambiando el formato de los datos
Los datos de IRM, D, son guardados como un arreglo de 128*128*1*27. la dimensión del tercer arreglo es
típicamente usado para los datos de color de la imagen. No obstante dado que estas son imágenes
indexadas (ya tienen cargado un mapa de color) por lo que no hay información adicional en la tercera
dimensión, por lo que podemos remover esta dimensión usando el comando squeeze, el resultado es un
arreglo de 128*128*27.
Paso 1: es cargar los datos y transformarlas de 4D a 3D
load mri
D=squeeze (D);
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Mostrando datos de imágenes IRM
Para mostrar una imágen IRM, se usa el comando image, indexando la en la matriz de datos para obtener
un octavo de la imagen, ajuste la escala axis, e instale el colormap IMR que está cargado junto con los
datos.
image_num=8;
image(D(:,;,image_num))
axis image
colormap (map)
guarde los limites x , y para usarlas en las siguientes partes del ejemplo
x=xlim;
y=ylim;
visualizando un contorno de corte "D
se puede trabajar estos datos de IRM comoun volumen dado que es un cojunto de cortes tomados
progresivamente de objetos 3D se usa el comando contourslice para mostrar un grafico de contorno de
los cortes del volumen. para crear un grafico de contorno con la misma orientación y tamaño dal de la
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
imagen creada en la primer aporte de esta guia, se debe ajustar la dirección del eje, configurar los limites
(xlim, ylim), y configurar la relación de aspecto de datos (daspect).
contourslice (D,[],[],image_num)
axis ij
xlim(x)
ylim(y)
daspect ([1,1,1])
colormap ('default')
este grafico de contorno usa el colormap para mapear el color a los valores de contorno.
Visualizando cortes de contorno #d
al igual que la imágenes que son objetos "d, los cortes de contorno son objetos #d que se pueden mostrar
en cualquier orientación. Por ejemplo se pueden mostrar cuatro cortes de contorno en una vista #d. para
mejorar la visibilidad de las lineas de contorno, se incrementa LineWidth a " puntos un punto es igual a
1/72 e una pulgada).
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
phandles= contourslice (D,[],[],(1,12,19,27],8);
view (3); axis tight
set (phandles,'LineWidth',2)
visualizando una iso-superficie
se puede usar iso-superficies para mostrar toda la estructura de un volumen, cuando se combina con
iso.capas, esta técnica puede mostrar información del interior de las iso-superficies.
primero, se alisan los datos con somooth3; después se usa isosurface para calcular los iso-datos (isodata).
posteriormente se usa patch para mostrar los datos como un objeto grafico.
Ds=smooth3(D);
hiso= patch(isosurface (Ds,5),…
'FaceColor',*1,.75,.65+,…
'EdgeColor','none');
Agregando una isocapa para mostrar cortes separados de superficie
Use isocaps para calcular los datos para otra rodaja que esta visualizada con el mismo iso-valor (5) como
la superficie. use el comando usnsmoothed data (D) para mostrar los detalles del interior. Se puede
observar este corte desligado de la parte superior de la cabeza en las imágenes de ilustración.
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
hcap=patch(isocaps(D,5),…
‘FaceColor’,’interp’,…
‘EdgeColor’,’none’);
Colormap (map)
Definiendo la vista
Defina la vista y configure la relación de aspecto con los comandos, view, axis, deaspect)
View(45,30)
Axis tight
Daspect ([1,1,.4])
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Agregando ilumincacion
Agregue iluminación y recalcule los normales de la superficie basándose en el gradiente de los datos de
volumen, lo cual produce una iluminación y alisado (camligth, lighting, isonormals]). Incremente la
propiedad ambientStrength de la isocapa para agregarle brillo al color sin afecta la iso-superficieconfigure specularcolorFeflectance de la isosuperficie para hacer el color de la luz especular fegrejada
más parecida al color de las iso.superficies para hacer el color de la luz especular reflejada más parecida al
colo r de la iso-superficies; después use el comando SpecularExponent para reducir el tamaño del
enfoque especular.
Lightangle(305,30);
Set (gcf, ‘Renderer’,’zbuffer’); ligthting phong
Isonormals (Ds, hiso)
Set (hcap,’AmbientStrength’,.6)
Set (hiso,’SpecularColorReflectance’, 0, ‘SpecularExponent’,50)
View (215,30);
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
La iso-cqpa usa coloreando de rostro interpolado, lo cual significa que el mapa de color determina el color
de la porción en cuestión. Este ejemplo usa el mapa de color provisto con los datos.
Para visualizar las iso.capas en otrosw valores de datos, intente cambiando, el valor de iso..superficie o
use el comando subvolume. Vea las referencias de la ayuda de matlab y los ejemplos isocaps y
subvolume.
Implay
Mostrando secuencias de fotografías, secuencias de video
Implay abre un reproductor de películas para mostrar secuencias de video e imágenes en matlab. Se usa
el archivo de menú implay para seleccionar las secuencias de video o imágenes a reproducir. Los botones
del menú de implay sirven APRA seleccionar una secuencia dentro en particular de todo el archivo, se
puede cambiar la velocidad de los cuadros mostrados para ezplorar sus alcances. Se pueden abrir
múltiples implay para ver secuencias diferentes al mismo tiempo.
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Secuencias animadas de imágenes
Load cellsequence
Implay (cellsequence,10);
Exploracion de un conjunto de imágenes IRM
Load mristack
Implay (mrstack);
Play an AVI fileImplay (‘rhinos.avi’);
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
FACULTAD DE CIENCIAS MEDICAS
Departamento de Imagenes Biomedicas
Bibliografía
Traducido del manual de ayuda de MatLAB 7.7
Algunas imagines tomadas del internet
Descargar