Procesado de Imagen Médica
Principal Docencia Temas Prácticas Herramientas Bibliografía

Prácticas

Tema 1

Práctica 0: Introducción al procesado de Imagen con MATLAB
Cargue una imagen en MATLAB:
  • Observe el resultado mediante el uso de la orden imshow.
  • Observe el resultado mediante el uso de la orden imagesc.
  • Visualícela utilizando imshow, cambie el colormap y muestre la barra de colores.
  • Calcule el histograma de la imagen con hist y con imhist.
  • Modifique la imagen y guñardela con imwrite.
  • Pruebe los cambios de formato: color a gris, RGB a indexado, mat2gray, etc.
Práctica 1: Funciones de imagen en MATLAB
Cargue una imagen en MATLAB y pruebe las siguientes funciones de imagen
  • imadjust, imcomplement, gscale y strechlim.
  • Procesado del histograma: utilice histeq y adapthisteq.
  • Generación de imágenes binarias con im2bw y graythresh.
  • Genere una función que guarde una imagen en blanco y negro con el mapa de color 'jet'.
  • Pruebe las siguientes funciones de conversión de formato de color: dither, grayslice, gray2ind, ind2gray, rgb2ind, ind2rgb, rgb2gray, rgb2ycbcr, rgb2hsv, imcomplement.
Práctica 2: Bandas de Match
Contruya un script de Matlab que cree la imagen del experimento de las Bandas de Mach. Para ello, determine un número de filas y columnas razonable (típicamente 256x256), un número de bandas a observar, y elija los niveles de gris de forma que el rango de intensidades comúnmente empleado (de 0 a 255, correspondiendo el 0 al negro y el 255 al blanco) quede barrido de forma más o menos homogénea. Dote al programa de flexibilidad para poder cambiar el número de bandas a voluntad.
  • Observe el resultado mediante el uso de la orden imshow.
  • Observe el resultado mediante el uso de la orden imagesc.
  • Considere los dos formatos de almacenamiento de imágenes empleado por Matlab: el modo double y el modo uint8. Si A es una imagen en modo double, y B lo es en modo uint8, la relación entre ellas puede ser

    A = double(B)/255;
    B = uint8(round(A*255));

    Considere, en relación con la imagen anteriormente creada, ambos formatos de imagen, observe las diferencias y compare los tamaños en memoria de la imagen en ambos casos.

Práctica 3: Imágenes en color
  • Genere una imagen degradada naranja, de tal modo que la imagen parta de negro izquierda.
  • Para una luminancia dada, dibuje una carta de colores.
  • Cargue una imagen en color y calcule su versión en blanco y negro utilizando:
    • El comando que del toolbox de imagen de MATLAB.
    • La media de las tres componentes.
    • La expresión de la luminancia.
    Compare los resultados obtenidos.
Práctica 4: Creación de una señal sinusoidal.
Se pretende ahora que cree una imagen consistente en una señal sinusoidal acorde con la expresión

I(x, y) = A(y)cos(w(x)x)

con A(y) y w(x) funciones monótonas crecientes. Para mostrar la imagen creada por pantalla puede olvidar cuestiones de normalización de rangos de intensidad empleando un segundo argumento en la orden imshow de la forma siguiente; imshow(A,[]), donde se ha considerado que la imagen se encuentra almacenada en la matriz A. Compruebe el cumplimiento de los fenómenos visuales asociados a este experimento.

Práctica 5: Creación de un phantom circular
Se pretende generar una imagen consistente en una círculo blanco sobre fondo negro. Para ello, genere una función circular (a partir de la ecuación de la circunferencia) y umbralícela.

Tema 2

Problema Tema 2 (PDF). Repaso de sistemas lineales unidimensionales. (NO ENTREGABLE en curso 2019/20)
Dibuja cada uno de los resultados del problema anterios utilizando MATLAB. (NO ENTREGABLE en curso 2019/20)
Práctica sobre filtrado espacial I: (ENTREGABLE)
Se pide crear un toolbox (o una sola función) de MATLAB que solucione el problema de bordes y/o de tamaño de señal resultante que originan las funciones filter2 y conv2. Se pide dar distintas opciones para tratar las discontinuidades surgidas en los extremos. La función ha de estar estructurada y documentada, con la cabecera apropiada y escrita en inglés.

De manera alternativa se podrá crear una función similar que sólo afecte a la media local, local_mean2v.m, que tenga en cuenta el número de puntos efectivos a la hora de calcular la media local. Por defecto deberá tomar ventanas cuadradas, aunque se pueden admitir ventanas de otro tipo (como Gaussianas).

M=local_mean2v(Imagen,[window size],'square');

Práctica sobre filtrado en tiempo y frecuencia: (ENTREGABLE)
A partir de una imagen I(x,y) calcule su media local mediante la convolución (en el dominio espacial) con una máscara 15x5:

h = ones([15,5])/75;
If = filter2(h,I);

Realice el filtrado en el dominio de Fourier (mediante una multiplicación) y compare los resultados. Concretamente:

  1. Estudie de manera teórica el problema para el caso de una señal I(x,y) continua. Defina el filtro continuo en el dominio temporal y frecuencial.
  2. Para el caso discreto, calcule su transformada de Fourier continua teórica. Represente la transformada teórica muestreada frente a la FFT.
  3. De manera práctica, para el caso discreto, estudie el problema de rellenar con zeros, las diferencias de tamaños entre la señal en espacio y en Fourier, el efecto del borde y la posición del centro en la transformada de Fourier. Estudie también el efecto de bordes al tener 2 señales limitadas.
  4. Exponga el proceso completo a realizar para que el filtrado en espacio y en frecuencia sean tomalmente equivalentes.
Práctica sobre interpolación: (ENTREGABLE)
Diseñe una función que calcule el gradiente de una señal discreta 1D de manera continua, utilizando para ello la derivada de un interpolador lineal.

Realice una expansión de la función a 2D.

Tema 3

A partir de una imagen en blanco y negro de un tamaño suficiente, simule un sumuestreo de la imagen y un cambio en los niveles empleados para su cuantificación. Evalúe la calidad visual frente al tamaño de la imagen.
A partir de una imagen en color, pásela a formato HSV. Una vez allí submuestree el espacio de color, dejando información de luminancia. Compruebe las variaciones en la percepción de la imagen. De manera análoga, en una imagen RGB submuestree uno de los canales. Compruebe cuál es el más invariante a submuestreo (en términos de percepción)
Práctica sobre enmascaramiento de componentes:
Use la información del tinte de una imagen HSV como máscara del canal de saturación para pasar una imagen en color a blanco y negro (toda la imagen menos un color determinado). Ejemplo: toda la imagen en blanco y negro menos los objetos rojos.
Práctica sobre conversión de formatos médicos:
Lea una imagen DICOM y almacénela como NNRD y como NIFTI. Compare los tamaños de los archivos.
Simulación de la visión de los insectos.
En la siguiente práctica se trabajará con un sisTema distinto de referencia de color. Se simulará un sisTema de visión de un insecto siguiendo un modelo de transferencia simple:

[R G B] = [G B UV]

donde UV es la componente ultravioleta. Para obtener las componentes se realizan dos adquisiciones: una normal, con la que se obtienen las componentes RGB y una con un filtro especial, cuyo canal B se corresponde con el canal UV de la imagen final.

(1) Muestre en RGB la imagen resultante de la combinación de canales. (2) Pruebe a escalar la componente de UV para darla más peso sobre la imagen final. (3) Suponiendo una imagen de partida de 4 componentes, [R G B UV], dé la matriz de transferencia para pasar a RGB.

Opcional: Trate de simular una visión aproximada de la visión de los instectos a partir únicamente de una imagen RGB. Para ello, ha de eliminar el canal R y deslpazar expandir los canales G y B a todo el rango visible.

Tema 4

Experimentos de realce de imágenes (con MATLAB):
  • Para una imagen en escala de grises, cree una función (desde cero) que sea capaz de variar el brillo y el contraste.
  • Cree desde cero una función que ecualice el histograma. Como parámetro de entrada deberá tener el número de bins del histograma.
  • Realice un unsharp-masking para una imagen en escala de grises
  • Realice una función de búsqueda de bordes. Compare los resultados con la que trae MATLAB.
  • Realice una función que añada distintos tipos de ruido a una imagen double.
  • Genere un sisTema que realice un Unsharp Masking de una imagen. Hágalo de tal forma que la señal de salida sea un uint8 con el mismo rango dinámico.
Procesado homomórfico:
  • Genere un esquema de realce del contraste local usando procesado homomórfico como el que aparece en la Figura 19 de los apuntes.
  • Genere una imagen sencilla: un cuadro gris sobre fondo blanco. Simule una iluminación no uniforme. Realice una descomposición en iluminación y reflectancia. Estudie los resultados, así como la influencia de los filtros utilizados.
Procesado homomórfico + thresholding: (ENTREGABLE)
A partir de la imagen xray2.png, realice una umbralización de los datos para tratar de obtener los huesos. Repita el proceso tratando de ecualizar la iluminación no uniforme por medio de un procesado homomórfico.
Thresholding de datos médicos: (ENTREGABLE)
Realice una umbralización multinivel de las radiografías de la mano y cervical (sección herramientas), de tal manera que separe el fondo, el tejido blando y el hueso. Para ello estudie los histogramas de las imágenes y aplique diversas técnicas de umbralización. Estudie el efecto de aplicar algún preprocesado previo (procesado homomórfico, filtrado, etc). Puede repetir el experimento sobre una sección de los datos de resonancia magnética y de ecografía.
Análisis de un filtro artístico (ENTREGABLE):
En la presenta practica se pide diseñar un procedimiento de análisis del comportamiento de un filtro existente, del que se conoce entrada y salida pero no su funcionamiento. Se re4comienda utilizar algún filtro de imagen de aplicaciones móviles, tales como instragram, Pixlr-o-matic, Photo illusion o Retro camera. Se pide
  • Tratar de modelar el comportamiento del filtro
  • Detectar los distintos componentes del filtrado
  • Reproducir lo más fielmente el proceso de filtrado.
Se recomienda generar una serie de imágenes de test que permitan estudiar mejor la salida. Algunos ejemplos:
  • Imágenes constantes de un solo color. (Varios colores)
  • Imágenes compuestas por un ajedrezado blanco y negro.
  • Imágenes de alta frecuencia, formadas por líneas rectas.
  • Imágenes con variación suave.

Tema 5

Estimación ML de una imagen: (ENTREGABLE)
Suponga que una imagen tiene ruido multiplicativo complejo:

I_c(x)=I(x)(N_1(0,s^2)+jN_2(0,s^2))

Al considerar el módulo de la señal:

M(x)=|I_c(x)|

la señal resultante M(x) sigue una distribución Rayleigh, siendo el parámetro "sigma" de la distribucion el parámetro original de las Gaussianas multiplicado por el valor de la señal en dicho punto. Se pide:

  • A partir de una imagen, añanada ruido multiplicativo Rayleigh.
  • Genere 50 realizaciones de la imagen (cada una con una realización de ruido diferente)
  • Deduzca el estimador ML del parámetro sigma de una Rayleigh.
  • Estima la señal original (asuma que se conoce el valor de la sigma de las Gaussianas).
Filtro de Wiener (Optativo).
Filtro de Wiener (Optativo). EL filtro de Wiener es el estimador LMMSE de una señal con ruido Gaussiano aditivo. La potencia del filtro reside en la habilidad de éste para estimar la sigma de ruido. La implementación de MATLAB asume que

s^2=mean(Var(x))

donde Var(x) es la varianza local de la imagen. Modifique la función de MATLAB utilizando algún estimador alternativo. Puede usar los propuestos aquí.

Filtro Inverso y pseudoinverso.
Calcule el filtro inverso y el pseudoinverso de un filtro pasobajo Gaussiano de sigma 1.5 y tamaño 11x11. Realice un experimento.
Estimación de ruido en GRAPPA con filtrado homomórfico (ENTREGABLE):
Se explicará en clase.

Ejercicio práctico teórico, a realizar en papel.
Ejercicio práctico experimental, a realizar con ordenador.