Uni fiee ci 2016 01 sesion 10 modelos deterministicos de propagacion
Utp 2015-2_pdi_lab2
1. 1
PROCESAMIENTO DE IMÁGENES Y VISION ARTIFICIAL
LABORATORIO No. 2
HISTOGRAMA, BRILLO Y CONTRASTE, CORRECCION GAMMA, OPERACIONES
MORFOLOGICAS, TRANSFORMACIONES GEOMETRICAS Y FILTRADO ESPACIAL
Prof. Mg. Ing. José C. Benítez P.
INDICACIONES:
- Si en el Informe del Laboratorio o en los scripts de Matlab se encuentra un ejercicio
copiado o parcialmente copiado la nota del Laboratorio será CERO.
- Los laboratorios presentados fuera del plazo establecido tendrán nota NS.
OBJETIVO:
Manipular el histograma de una imagen a color y escala de grises.
Ecualizar una imagen mediante el histograma.
Aplicar la corrección gamma a una imagen.
Manipular el brillo y contraste de una imagen.
Dilatar y erosionar una imagen binaria y escala de grises.
Aperturar y cerrar una imagen binaria y escala de grises.
Detectar y llenar una región de una imagen.
Aplicar transformaciones rígidas a una imagen.
Implementar transformaciones afines de una imagen.
Aplicar transformaciones proyectivas a una imagen.
Manipular diferentes tipos de ruido de una imagen.
Construir filtros lineales.
Aplicar filtros no lineales a imágenes.
RESUMEN TEORICO
1. HISTOGRAMA Y ECUALIZACION, BRILLO Y CONTRASTE, CORRECCION GAMMA.
Manipulación del histograma de una imagen, ecualización mediante el histograma,
aplicación de la corrección gamma a una imagen:
Ver Sesión de Aprendizaje 5 del Blog del curso: utppdiyva.blogspot.com.
2. TRANSFORMACIONES MORFOLOGICAS I. Dilatación y erosión de imágenes
binarias.
Ver Sesión de Aprendizaje 6 del Blog del curso: utppdiyva.blogspot.com.
3. TRANSFORMACIONES MORFOLOGICAS II. Dilatación y erosión de imágenes
binarias. Apertura y cerradura de imágenes grises y binarias. Llenado y detección de
regiones en imágenes:
Ver Sesión de Aprendizaje 7 del Blog del curso: utppdiyva.blogspot.com.
2. 2
4. TRANSFORMACIONES GEOMETRICAS. Transformaciones rígidas, afines y
proyectivas:
Ver Sesión de Aprendizaje 8 del Blog del curso: utppdiyva.blogspot.com.
5. FILTRADO ESPACIAL. Ruidos. Filtros lineales y no lineales:
Ver Sesión de Aprendizaje 9 del Blog del curso: utppdiyva.blogspot.com.
PROCEDIMIENTO
Desarrollar las funciones y/o programas en Matlab para cada uno de los procedimientos
descritos.
1. Mostrar el histograma de una imagen escala de grises de 8 bits de profundidad.
Ejemplo:
F=zeros(1, 256);
for i=1:x
for j=1:y
v=I(i,j)
F(v+1)=F(v+1)+1;
end
end
figure, stem(F);
% verificando la cantidad de pixeles de la imagen
s=0;
for z=1:256
s=s+F(z)
end
2. Ecualizar una imagen escala de grises de 8 bits de profundidad mediante su histograma:
Ejemplo:
% ECUALIZACION DE UNA IMAGEN
I=[52 55 61 66 70 61 64 73; ...
63 59 55 90 109 85 69 72; ...
62 59 68 113 144 104 66 73; ...
63 58 71 122 154 106 70 69; ...
67 61 68 104 126 88 68 70; ...
79 65 60 70 77 68 58 75; ...
85 71 64 59 55 61 65 83; ...
87 79 69 68 65 76 78 94]
[x,y]=size(I)
f=zeros(1, 255) % matriz de frecuencias
for i=1:x
for j=1:y
v=I(i,j)
f(v+1)=f(v+1)+1;
end
end
figure, stem(f);
figure, imhist(uint8(I),255);
cdf=zeros(1,255)
for m=1:255
for n=1: m
cdf(m)=cdf(m)+f(n)
end
end
cdfmin=min(cdf)
P=zeros(8,8)
for i=1:x
for j=1:y
v=I(i,j)
v1=round((cdf(v+1)-cdfmin)/(x*y-cdfmin)*255)
P(i,j)=v1
end
end
I2=imresize(I,[640 640])
P2=imresize(P,[640 640])
figure, imshow(uint8(I2))
3. 3
figure, imshow(uint8(P2))
3. Manipular el brillo y contraste de una imagen escala de grises de 8 bits de profundidad.
Ejemplo:
% Manipulacion del brillo de una imagen escala de grises
ic=imread('rostro.bmp');
figure, imshow(ic);
ig=rgb2gray(ic);
figure, imshow(ig);
ig1=ig+50;
figure, imshow(ig1);
ig2=ig-50;
figure, imshow(ig2);
ig3=ig*0.5;
figure, imshow(ig3);
ig4=ig*1.5;
figure, imshow(ig4);
4. Realizar la corrección gamma a una imagen escala de grises de 8 bits de profundidad.
Ejemplo:
function gama(g)
I=imread('animalesg.bmp');
figure, imshow(I)
[x,y]=size(I)
for i=1:x
for j=1:y
I(i,j)=uint8(255*(double(I(i,j))/255)^(1/g));
end
end
figure, imshow(I)
5. Dilatación de imágenes escala de grises de 8 bits de profundidad.
Ejemplo:
% Dilatación de imagenes escala de grises
% I imagen
I=[ 0 0 0 0 0 0 0;...
0 0 0 0 0 0 0;...
0 0 15 27 8 0 0;...
0 0 100 95 1 0 0;...
0 0 0 0 0 0 0;...
0 0 0 0 0 0 0;...
255 255 255 255 255 255 255;...
0 0 0 255 0 0 0;...
0 0 0 255 0 0 0;...
0 0 0 255 0 0 0]
figure, imshow(imresize(uint8(I),[480,480]));
% Definicion del elemento estructural
ee=strel('square', 3);
% Se aplica dilatacion
I1=imdilate(I,ee);
figure, imshow(imresize(uint8(I1),[480,480]));
I3=imread('igsg.bmp');
figure, imshow(I3);
% Definicion del elemento estructural
ee=strel('square', 30);
% Se aplica dilatacion
I4=imdilate(I3,ee);
figure, imshow(I4);
Ejemplo:
function B=dilatacion(A)
% A es la variable que contiene la imagen
figure, imshow(A);
[H W Z]=size(A);
B=zeros(H, W);
K=[1 1 1; 1 1 1; 1 1 1];
4. 4
for f=(1+1):(H-1)
for c=(1+1):(W-1)
suma=0;
for ff=-1:1
for cc=-1:1
suma=suma+K(ff+2,cc+2)*A(f+ff,c+cc)/255;
end;
end;
if suma>=1
B(f,c)=255;
else
B(f,c)=0;
end;
end;
end;
figure, imshow(uint8(B))
6. Erosión de imágenes escala de grises de 8 bits de profundidad.
Ejemplo 1:
% Erosión de imagenes escala de grises
% I imagen
I=[ 0 0 0 0 0 0 0;...
0 0 0 0 0 0 0;...
0 0 15 27 8 0 0;...
0 0 100 95 1 0 0;...
0 0 0 0 0 0 0;...
0 0 0 0 0 0 0;...
255 255 255 255 255 255 255;...
0 0 0 255 0 0 0;...
0 0 0 255 0 0 0;...
0 0 0 255 0 0 0]
figure, imshow(imresize(uint8(I),[480,480]));
% Definicion del elemento estructural
ee=strel('square', 3);
% Se aplica erosión
I1=imerode(I,ee);
figure, imshow(imresize(uint8(I1),[480,480]));
I3=imread('igsg.bmp');
figure, imshow(I3);
% Definicion del elemento estructural
ee=strel('square', 30);
% Se aplica erosión
I4=imerode(I3,ee);
figure, imshow(I4);
Ejemplo 2:
function B=erosion(A)
% A es la variable que contiene la imagen binaria
figure, imshow(A);
[H W Z]=size(A);
B=zeros(H, W);
K=[1 1 1; 1 1 1; 1 1 1];
for f=(1+1):(H-1)
for c=(1+1):(W-1)
suma=0;
for ff=-1:1
for cc=-1:1
suma=suma+K(ff+2,cc+2)*A(f+ff,c+cc)/255;
end;
end;
if suma==sum(sum(K))
B(f,c)=255;
else
B(f,c)=0;
end;
end;
end;
figure, imshow(uint8(B));
5. 5
INFORME FINAL
El Informe de Laboratorio es un documento gráfico en lo posible y es redactado en Word con
el desarrollo del laboratorio.
Niveles de Informe:
• Primer nivel: Observaciones. Imágenes con comentarios cortos. Redactar al ir
desarrollando el laboratorio. (Requiere desarrollar el laboratorio).
• Segundo nivel: Conclusiones. Redactar al terminar el laboratorio. (Requiere haber
desarrollado el laboratorio).
• Tercer Nivel: Recomendaciones. (Requiere la lectura de otras fuentes).
Dentro de su Carpeta Personal del Dropbox crear una carpeta para el Laboratorio 2 con el
siguiente formato:
PDI_PaternoM_L2
Esta carpeta debe contener el Informe de Laboratorio, los códigos, las fuentes y recursos
utilizados.
Las fuentes deben conservar el nombre original de archivo y se debe agregar en su nombre
“_L2” al final.
CUESTIONARIO
Mostrar en el Informe de Laboratorio los resultados de los ejercicios del Laboratorio, los
Procedimientos y el Cuestionario.
El Informe de Laboratorio no contiene códigos, sólo las referencias a los números de línea
de los scripts.
Los ejercicios del cuestionario deben desarrollarse mediante funciones creadas por el
alumno para cada uno de los ejercicios, salvo que se trate de comparar resultados con
funciones de Matlab; en ese caso sólo mostrar resultados y describir sus observaciones y
conclusiones.
1. Crear una función para mostrar el histograma de una imagen escala de grises de 8 bpp.
Comparar con la función de Matlab para este fin.
2. Crear una función para mostrar el histograma de una imagen a color. Comparar con la
función de Matlab para este fin.
3. Crear una función para manipular el brillo de una imagen escala de grises por dos
métodos. Comparar con la función de Matlab para este fin.
4. Crear una función para manipular el brillo de una imagen a colores por dos métodos.
Comparar con la función de Matlab para este fin.
5. Crear una función para manipular el contraste de una imagen escala de grises por cuatro
métodos de un valor umbral. Comparar con la función de Matlab para este fin.
6. Crear una función para manipular el contraste de una imagen a colores por cuatro
métodos de un valor umbral. Comparar con la función de Matlab para este fin.
6. 6
7. Crear una función para manipular el contraste de una imagen escala de grises por dos
métodos de más de un valor umbral. Comparar con la función de Matlab para este fin.
8. Crear una función para realizar la corrección gamma para varios valores de gamma de
una imagen. Comparar con la función de Matlab para este fin.
9. Crear una función para dilatar imágenes de escala de grises de 8bpp. Comparar con la
función de Matlab para este fin. Considerar tres tipos de elemento estructural:
a. Cuadrado de 3x3
b. Diamante de 3x3
c. Disco de 3x3
10. Crear una función para erosionar imágenes escala de grises de 8 bpp. Comparar con la
función de Matlab para este fin. Considerar tres tipos de elemento estructural:
a. Cuadrado de 3x3
b. Diamante de 3x3
c. Disco de 3x3
11. Crear una función para dilatar imágenes binarias. Comparar con la función de Matlab
para este fin. Considerar tres tipos de elemento estructural:
a. Cuadrado de 3x3
b. Diamante de 3x3
c. Disco de 3x3
12. Crear una función para erosionar imágenes binarias. Comparar con la función de Matlab
para este fin. Considerar tres tipos de elemento estructural:
a. Cuadrado de 3x3
b. Diamante de 3x3
c. Disco de 3x3
13. Crear una función para aperturar imágenes binarias. Comparar con la función de Matlab
para este fin.
14. Crear una función para clausurar imágenes binarias. Comparar con la función de Matlab
para este fin.
15. Crear una función para detectar fronteras (bordes). Comparar con la función de Matlab
para este fin.
16. Crear una función para rellenar regiones. Comparar con la función de Matlab para este
fin.
17. Crear una función para trasladar una imagen (binaria, escala de grises o colores).
Comparar con la función de Matlab para este fin.
18. Crear una función para rotar una imagen (binaria, escala de grises o colores). Comparar
con la función de Matlab para este fin.
19. Crear una función para reflexionar una imagen (binaria, escala de grises o colores).
Comparar con la función de Matlab para este fin.
20. Crear una función para escalar una imagen (binaria, escala de grises o colores).
Comparar con la función de Matlab para este fin.
21. Crear una función para cizallar una imagen (binaria, escala de grises o colores).
Comparar con la función de Matlab para este fin.
7. 7
22. Crear una función para similar una imagen (binaria, escala de grises o colores).
Comparar con la función de Matlab para este fin.
23. Crear una función para aplicar una transformación proyectiva a una imagen (binaria,
escala de grises o colores). Comparar con la función de Matlab para este fin.
24. Crear una función para generar ruido a una imagen (binaria, escala de grises o colores).
Comparar con la función de Matlab para este fin.
25. Crear una función para eliminar el ruido generado a una imagen (binaria, escala de
grises o colores). Comparar con la función de Matlab para este fin.
26. Utilizar los diferentes tipos de ruido de Matlab y verificar el efecto de cada uno de sus
parámetros en imágenes binarias, escala de grises y a colores.
27. Crear una función para cada uno de los filtros lineales de una imagen (binaria, escala de
grises o colores). Comparar con la función de Matlab para este fin.
a. Media con máscaras de 3, 5, 9, 15 y 35.
b. Gaussiano con máscaras de 3 y 5.
28. Crear una función para cada uno de los filtros no lineales de una imagen (binaria, escala
de grises o colores). Comparar con la función de Matlab para este fin.
a. Mínimo
b. Máximo
c. Mediana
d. Mediana ponderada del entorno de vecindad.
e. Punto medio del entorno de vecindad.
f. Alpha-media del entorno de vecindad.
g. Media geométrica del entorno de vecindad.
h. Mínimo Error Cuadrático
En cada procedimiento cuestionario y ejercicio mostrar sus observaciones, conclusiones y
recomendaciones.
Cada línea del script de la función creada debe estar comentada.
FUNCIONES DE MATLAB:
imhist, imadjust, histeq, imdilate, strel, imerode, imopen, imclose.