(2) labo4 version2 full

16
Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica Procesamiento Digital de Imágenes Página 1 Laboratorio 4 RESTAURACIÓN DE IMÁGENES Objetivos  Implementa r algoritmos de procesamiento analizados en clase sobre la función de degradación y la manipulación de ruido en las imágenes.  Analizar algoritmos de procesamiento sobre reconstrucción de imágenes.  Aplicar las funciones de degradación y atenuación de ruidos para mejorar las imágenes.  Realizar transformaciones geométricas sobre imágenes para poder visualizar detalles. Introducción En este laboratorio se desarrollaran los métodos que son utilizados para restaurar imágenes. Estos métodos son útiles para obtener una imagen después de que esta fue alterada ya sea o no de manera intencional o por una degradación que se dio a lo largo del tiempo. Así mismo, se utilizaran varios sub programas realizados en MATLAB que realizaran las funciones requeridas, para esto se debe explicar paso a paso cada instrucción utilizada y el funcionamiento general del programa.

Upload: manuel-medina

Post on 10-Apr-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 1/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 1

Laboratorio 4

RESTAURACIÓN DE IMÁGENES

Objetivos

  Implementar algoritmos de procesamiento analizados en clase sobre la función de degradación y la manipulación

de ruido en las imágenes.

  Analizar algoritmos de procesamiento sobre reconstrucción de imágenes.

  Aplicar las funciones de degradación y atenuación de ruidos para mejorar las imágenes.

  Realizar transformaciones geométricas sobre imágenes para poder visualizar detalles.

Introducción

En este laboratorio se desarrollaran los métodos que son utilizados para restaurar imágenes. Estos métodos son útiles para

obtener una imagen después de que esta fue alterada ya sea o no de manera intencional o por una degradación que se dio a lo

largo del tiempo. Así mismo, se utilizaran varios sub programas realizados en MATLAB que realizaran las funciones

requeridas, para esto se debe explicar paso a paso cada instrucción utilizada y el funcionamiento general del programa.

Page 2: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 2/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 2

Procedimiento

1.  Aplique el filtro adaptativo (adpmedian) en tres imágenes con distintos tipos de ruidos, sal y pimienta, ruido

Gaussiano y función de degradación PSF con opción de „motion‟. Comente sus resultados.  

2.  Aplique el filtro Wiener a dos imágenes con distintos tipos de ruido, imagen borrosa e imagen con PSF con opción de

„motion‟. Comente sus resultados. 

3.  En este problema se debe verificar el funcionamiento de filtros para el tratamiento de ruidos periódicos. Los filtros

más utilizados, con este propósito, son los rechaza banda y los filtros „notch‟. El siguiente listado muestra una

aplicación con un filtro ‟notch‟ Butterworth. Ejecute el programa y verifique en el espectro de Fourier las coordenadas

de los impulsos producidos por las componentes de ruido, alrededor de la frecuencia central. Ejecute este filtro para laimagen fig5.05(a).jpg, la imagen debe ser cuadrada. Obtenga las mejores coordenadas correspondientes a los impulsos

de ruido en el espectro de Fourier y colóquelas en el arreglo C (centers). Obtenga la imagen sin ruido.

4.  El siguiente programa genera una rotación de 30 grados en sentido horario, a la imagen virtual checkerboard, a esta

imagen aplique las siguientes transformaciones en forma independiente: rotación anti horaria de 45 grados, shear

horizontal, shear vertical, traslación y escalamiento.

5.  El siguiente programa rota y deforma una imagen, para luego recuperar la imagen original, aplicando inversiones en la

secuencia apropiada. Agregue un escalamiento a esta deformación y luego recupere la imagen original.

6.  El siguiente programa permite recuperar la proyección perpendicular de la imagen original del letrero, que ha sido

escaneada del texto de Faugeras, O. El proceso permite remover la distorsión de perspectiva identificando un

rectángulo en la escena y entonces aplicando la transformación que mapea (converge), el rectángulo de la escena

dentro un rectángulo hipotético. Aplique el mismo procedimiento a las arcadas de Portobelo y al contenedor.

7.  Utilizando Simulink® realice las funciones de rotación, traslación, relleno y cambio de perspectiva.

Page 3: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 3/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 3

Desarrollo del laboratorio

1.  Aplique el filtro adaptativo (adpmedian) en tres imágenes con distintos tipos de ruidos, sal y pimienta, ruido

Gaussiano y función de degradación PSF con opción de „motion‟. Comente sus resultados.

Código:

function fl = lluvia1(f)

% Funcion para mejorar imagenes borrosas 

f = im2double(rgb2gray(imread('Fig5.02.jpg')));

f1 = adpmedian (f,9);

lapmask = [1 1 1 ; 1 -8 1; 1 1 1]; % Mascara Laplaciana 

f2 = imsubtract(f1, imfilter(f1, lapmask, 'replicate'));

figure (1)

subplot(1,3,1), imshow(f); title('Imagen original');

subplot(1,3,2), imshow(f1); title('Imagen filtrada');subplot(1,3,3), imshow(f2); title('Aplicacion necesaria');

Figura 1. Imagen borrosa con sus detalles realzados

Page 4: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 4/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 4

2.  Aplique el filtro Wiener a dos imágenes con distintos tipos de ruido, imagen borrosa e imagen con PSF con opción de

„motion‟. Comente sus resultados. 

Código:

function R = wiener2(f)

f = im2double(rgb2gray(imread('Fig6.38(a).jpg')));

PSF = fspecial ('motion', 20, 45);

gb = imfilter(f, PSF, 'circular');

noise = imnoise(zeros(size(f)),'gaussian', 0, 0.001);

g = gb + noise;

fr1 = deconvwnr(g ,PSF);

sn = abs(fft2(noise)).^2;

na = sum(sn(:))/prod(size(noise));

sf = abs(fft2(f)).^2;

fa = sum(sf(:))/prod(size(f));

r=na/fa;

fr2 = deconvwnr(g, PSF, r);

ncorr = fftshift(real(ifft2(sn)));

icorr = fftshift(real(ifft2(sf)));

fr3 = deconvwnr(g, PSF, ncorr, icorr);

figure (1)

subplot(2,3,1), imshow(f); title('Imagen original');

subplot(2,3,2), imshow(g); title('Imagen contaminada');

subplot(2,3,3), imshow(fr1); title('Imagen filtrada PSF');

subplot(2,3,4), imshow(fr2); title('Imagen filtrada na/fa');

subplot(2,3,5), imshow(fr3); title('Imagen filtrada icorr');

Figura 2. Aplicación del filtro de Wiener para la recuperación de una imagen

Page 5: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 5/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 5

3.  En este problema se debe verificar el funcionamiento de filtros para el tratamiento de ruidos periódicos. Los filtros

más utilizados, con este propósito, son los rechaza banda y los filt ros „notch‟. El siguiente listado muestra una

aplicación con un filtro ‟notch‟ Butterworth. Ejecute el programa y verifique en el espectro de Fourier las coordenadas

de los impulsos producidos por las componentes de ruido, alrededor de la frecuencia central. Ejecute este filtro para la

imagen fig5.05(a).jpg, la imagen debe ser cuadrada. Obtenga las mejores coordenadas correspondientes a los impulsos

de ruido en el espectro de Fourier y colóquelas en el arreglo C (centers). Obtenga la imagen sin ruido.

Código:

function R = notchfiltering2(f)

f = im2double(rgb2gray(imread('craneo1.jpg')));

[M, N] = size(f);

figure (1)

subplot(2,3,1), imshow(f); title('Imagen original');

F = fft2(f);

subplot(2,3,2), imshow(fftshift(log(1+abs(F))), []), title('Espectro');

pixval

Hnr = notchfilter('reject', M, N, [224.303 224.581; 265 244.99; 274.154 264.417], 5, 10);

g = dftfilt(f, Hnr);

subplot(2,3,3), imshow(g, []); title('Imagen filtrada');

g = gscale(g);

subplot(2,3,4), imshow(g); title('Imagen escalada');

Hnp = 1 - Hnr;

gn = dftfilt(f, Hnp);

subplot(2,3,5), imshow(gn, []); title('Imagen con ruido');

[M, N] = size(f);

F1 = fft2(gn);

subplot(2,3,6), imshow(fftshift(log(1+abs(F1))), []), title('Espectro');

Figura 3. Resultado de la aplicación del filtrado en el dominio del espacial y en el de la frecuencia

Page 6: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 6/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 6

4.  El siguiente programa genera una rotación de 30 grados en sentido horario, a la imagen virtual checkerboard, a esta

imagen aplique las siguientes transformaciones en forma independiente: rotación anti horaria de 45 grados, shear

horizontal, shear vertical, traslación y escalamiento.

Código:

function t = transformacion(f)

f = checkerboard(50);

s = 2.8;

theta = pi()./6;

T =[s.*cos(theta) s.*sin(theta) 0

-s.*sin(theta) s.*cos(theta) 0

0 0 1];

tform = maketform('affine', T);

g = imtransform(f, tform);

g2 = imtransform(f, tform, 'nearest');

g3 = imtransform(f, tform, 'FillValue', 0.5);

T2 = [1 0 0; 0 1 0; 50 50 1];tform2 = maketform('affine', T2);

g4 = imtransform(f, tform2, 'Xdata', [1 400], 'Ydata', [1 400], 'FillValue', 0.5);

figure(1)

subplot(231), imshow(f); title('Imagen original');

subplot(232), imshow(g); title('Linear');

subplot(233), imshow(g2); title('Nearest');

subplot(234), imshow(g3); title('Fill Value');

subplot(235), imshow(g4); title('Traslacion');

Figura 4. Resultado de la aplicación de la función shear

Page 7: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 7/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 7

5.  El siguiente programa rota y deforma una imagen, para luego recuperar la imagen original, aplicando inversiones en la

secuencia apropiada. Agregue un escalamiento a esta deformación y luego recupere la imagen original.

Código:

function t = transformacion(f)

f = imread('Fig3.35(a).jpg');

Tscale = [1.5 0 0; 0 2 0; 0 0 1];

Trotation = [cos(pi()./4) -sin(pi()./4) 0

sin(pi()./4) cos(pi()./4) 0

0 0 1];

Tshear = [1 0 0; 1.5 1 0; 0 0 1];

T3 = Trotation*Tshear*Tscale;

tform3 = maketform('affine', T3);

g = imtransform(f, tform3);

T6 = inv(Tscale)*inv(Tshear)*inv(Trotation);

tform6 = maketform('affine', T6);

h = imtransform(g, tform6);

figure(1)

subplot(131), imshow(f); title('Imagen original');

subplot(132), imshow(g); title('Transformacion');

subplot(133), imshow(h); title('Transformacion inv'); 

Figura 5. Presentación de la aplicación de los filtros

Page 8: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 8/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 8

6.  El siguiente programa permite recuperar la proyección perpendicular de la imagen original del letrero, que ha sido

escaneada del texto de Faugeras, O. El proceso permite remover la distorsión de perspectiva identificando un

rectángulo en la escena y entonces aplicando la transformación que mapea (converge), el rectángulo de la escena

dentro un rectángulo hipotético. Aplique el mismo procedimiento a las arcadas de Portobelo y al contenedor.

Código:

function d = distorsion(f)

f = rgb2gray(imread('pespectiva-color3.jpg'));

h = rgb2gray(imread('20box.jpg'));

i = rgb2gray(imread('Portobelo.jpg'));

g=f;

bpoints = [177.5 500; 1172 500; 1172 1012; 177.5 1012];

ipoints = [177.5 33.5; 1083.5 651.5; 1171.5 949.5; 123.5 545.5];

tform = cp2tform(ipoints, bpoints, 'projective');

gp = imtransform(g, tform, 'Xdata', [1 1420], 'Ydata', [1 1420]);i1points = [59.56 75.55; 325.363 8.03943; 337.863 302.768; 65.6 234.161];

tform1 = cp2tform(i1points, bpoints, 'projective');

gp2 = imtransform(h, tform1, 'Xdata', [1 1420], 'Ydata', [300 1220]);

Tscale = [3 0 0; 0 3 0; 0 0 1];

tform3 = maketform('affine', Tscale);

gp22 = imtransform(gp2, tform3);

i2points = [1478.99 339.609; 2167.52 823.912;2203.74 1992.93; 1557.68 2113.44];

tform2 = cp2tform(i2points, bpoints, 'projective');

gp3 = imtransform(i, tform2, 'Xdata', [1 1420], 'Ydata', [1 1420]);

figure(1)

subplot(231), imshow(f); title('Imagen original');

subplot(234), imshow(gp); title('Imagen Rotada');

subplot(232), imshow(h); title('Imagen original');

subplot(233), imshow(i); title('Imagen Rotada');

subplot(235), imshow(gp22); title('Imagen original');subplot(236), imshow(gp3); title('Imagen Rotada');

pixval 

Figura 6. Resultado de la aplicación de varios tipos de filtros

Page 9: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 9/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 9

7.  Utilizando Simulink® realice las funciones de rotación, traslación, relleno y cambio de perspectiva.

El modelo para realizar las transformaciones geométricas se muestra a continuación.

Figura 7. Modelo en bloques de la función de trasformación geométrica

Figura 8. Visualización de la imagen original, con modificación de tamaño y de rotación

Page 10: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 10/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 10

Figura 9. Visualización de la imagen con transformación shear (modificación del cuadrilátero) y la de traslación

Para el modelo de la modificación de la perspectiva de las imágenes, inicialmente se requiere que se tomen los puntos del

elemento que se desea modificar la perspectiva, para ello inicialmente en el interfaz principal de MATLAB (prompt) se debe

escribir el comando imtool seguido de la ubicación del archivo de la imagen.

imtool('C:\Users\Documents\PDI LABS\IMAGENES\20box.jpg')

Tras la introducción de este comando con el nombre del archivo, se abrirán dos ventanas, estas se muestran a continuación.

Figura 10. Interfaz y herramientas soportadas por el comando imtool para la obtención de los valores de los pixeles

Page 11: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 11/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 11

Tras la toma de datos de los valores de los pixeles, para esta imagen en particular, estos valores fueron [75 59 8 325 302 337

234 65]. Cabe señalar que al cargar la imagen y al procesarla, la denotación del pixelaje en X y Y puede variar, es decir, por

ejemplo, en la imagen procesada en la imagen R+3, indica que hay 305 en el eje X y 600 en el eje Y, razón por la cual, al

momento de tomar los datos para el procesamiento, se deben ordenar primero las filas luego las columnas, es decir [x1 y1 x2

y2 x3 y3 x4 y4] para que el procesamiento sea el correcto.

A continuación se presenta el modelo utilizado para el procesamiento de modificación de la perspectiva.

Figura 11. Modelo en bloques para realizar la modificación de la perspectiva

Para realizar este procesamiento, es necesario configurar el bloque de transformación de perspectiva, para lo cual, inicialmente

como vamos a seleccionar un cuadrilátero de la imagen y lo queremos representar como un rectángulo, en la primera opción

seleccionamos el tipo de proyección, posteriormente, se definen los puntos para la selección de la proyección y por último se

escoge el tamaño que tendrá la imagen tras el cambio de perspectiva, la configuración se muestra a continuación.

Figura 12. Configuración del bloque de transformación de perspectiva

Page 12: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 12/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 12

Finalmente, una vez configurado el bloque, procedemos a correr la simulación, y el resultado se muestra a continuación.

Figura 13. Resultado de la modificación de perspectiva

Page 13: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 13/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 13

Comentarios y análisis

1.  A partir de la aplicación del filtro, se puede apreciar que los detalles de la imagen fueron resaltados, como se

mencionó en la teoría, estos filtros usualmente se aplican en filmaciones en tiempo real, donde están filmando bajo

lluvia o niebla, y mediante este filtro, se pueden destacar los detalles que son atenuados.

2.  La aplicación del filtro de Wiener permite mejorar la imagen que fue distorsionada. Al aplicar el algoritmo de este

filtro se puede apreciar que la imagen original fue corrida, este corrimiento provoco una distorsión en la imagen,

haciéndola borrosa, pero al aplicar las diferentes funciones se puede ver como poco a poco se va regenerando la

imagen, cabe recalcar que la reconstrucción no es 100% perfecta, pero en la obtención de la imagen se puede apreciar

en gran detalle cada parte de la imagen, que en la que quedo distorsionada no se veían o notaban debido a su

atenuación.

3.  A simple vista no parece haber diferencia de las imágenes que fueron tratadas tanto por el filtrado en el dominio

espacial y el filtrado en el dominio de la frecuencia, pero, si nos centramos en el análisis, espacialmente es un tanto

más complejo que realizándolo en el dominio de la frecuencia, si hubiese algún indicador de uso de memoria, y

tiempo de respuesta de la aplicación del filtro, es de hecho seguro que el del dominio de la frecuencia se realiza con

menor uso de la memoria y en menor tiempo, como se había mencionado, en el dominio espacial, los procedimientos

son más tediosos, mientras que en el dominio de la frecuencia estos procedimientos son más sencillos al momento de

realizar las operaciones.

4.  De inicio se utiliza la función que grafica el tablero de ajedrez, por medio de la introducción de los valores podemos

realizar un tablero con una mayor cantidad de casillas en el tablero, para efectos de visualización se decide hacer que

en la mitad del tablero las casillas blancas sean grises, a fin de que se pueda apreciar el giro.

Figura 14. Resultado del cambio de giro de la imagen

Page 14: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 14/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 14

Utilizando una matriz que nos permite realizar este giro utilizamos un ángulo que es definido en los componentes de

la matriz, es necesario indicar que el giro de esta imagen se da en el sentido horario, si se desea modificar el sentido

de giro, es necesario que el signo de los ángulos de los componentes de la matriz deben ser cambiados solo en los que

involucran la función seno, la función coseno es impar y es indiferente ante un cambio de signo.

Si se colocan valores diferentes u opuestos en los ángulos, la imagen se verá deformada, el signo puede variar tanto en

que se ponga dentro del paréntesis angular del seno, o en el mismo valor del seno, otra propiedad es la función de

FillValue el que nos da la tonalidad que adquirirá la imagen procesada, es necesario indicar que funciones como la de

traslación hacen que la imagen pierda cierta cantidad de información, así que a la hora de aplicar esta función se debe

tomar en cuenta que la información eliminada no podrá ser mostrada.

Figura 15. Resultado del cambio de giro de la imagen y su deformación.

5.  Al igual que se había mencionado antes, para poder deformar una imagen se puede utilizar la multiplicación de

mascaras definidas que nos permitirán concentrar o expandir cierta cantidad de información proveniente de la imagen

en función de las matrices. Estos valores deben ser secuenciales recordando que la multiplicación de matrices no es

resguardada bajo la propiedad conmutativa matemática, por ello cuando realizamos las multiplicaciones, se debe

tomar en cuenta que estas se deben pre multiplicar o post multiplicar. De igual forma, cuando aplicamos las funciones

requeridas se debe tener en cuenta la compatibilidad de la función con la aplicación que se hará.

Page 15: (2) Labo4 Version2 Full

8/8/2019 (2) Labo4 Version2 Full

http://slidepdf.com/reader/full/2-labo4-version2-full 15/15

Universidad Tecnológica de Panamá Facultad de Ingeniería Eléctrica

Procesamiento Digital de Imágenes Página 15

6.  Como se puede ver en la ultima parte, la aplicación de esta función permite visualizar los objetos o impresiones como

si las pudiésemos ver de frente, pero al visualizar una imagen como la que contenía unos pilares se veía la forma de la

imagen modificada pero no se veía con el mismo efecto que se veían las otras, mas bien, esta imagen se veía muy

distorsionada. Esta distorsión se da en todo tipo de imágenes, pero la distorsión era más evidente en las imágenes que

eran tridimensionales, en imágenes relativamente planas esta distorsión no era notoria.

La razón de que no se note, es que usualmente se aplican en condiciones que no hace mucho énfasis en su

profundidad, mientras que en las que si son tridimensionales puras, su resalte de la profundidad es tal que aparenta

una gran distorsión, a continuación en la imagen 16 se mostraran las particularidades de la aplicación de esta función

y como se ve afectada, el procedimiento para poder hacer esta modificación en la imagen está en que se debe tomar un

marco de referencia, y en función de este marco, expandirlos en una nueva imagen la cual tendrá un marco

rectangular que en la imagen es usualmente trapezoidal, a partir de este nuevo ajuste, la misma imagen se ve como

parcialmente rotada, al ser rotada, esta presenta la ilusión por así llamarla de la imagen que aparenta ser rotada sinalguna distorsión.

Figura 16. Resalte de la profundidad de la imagen tras su modificación

Referencias bibliográficas

Gonzalez, Woods & Eddins. “ Digital image processing using MatLab”.