Академический Документы
Профессиональный Документы
Культура Документы
Squizzato, Fabio.
W1 , W2, , W9=1/9
Wi = 1 (que sume 1 significa que es un filtro promediado)
imA=imread('im3A.tif');
subplot(3,3,2);
subimage(imA);
maskLPF3=ones(3,3)/9
%mscara de filtro uniforme de 3x3 y sumatoria de Ws normalizados a 1
maskLPF15=ones(15,15)/ (15*15)
LPF15=imfilter(imA,maskLPF15);
subplot(3,3,3);
subimage(LPF15);
%filtro box de 15
sum(sum(maskLPF3))
%se corrobora la normalizacin Ws del FPB uniforme
LPF3imA=imfilter(imA,maskLPF3);
%convolucin de imagen con la mscara o kernel
subplot(3,3,4);
subimage(LPF3imA);
maskGAUSS3=fspecial('gaussian', [3 3], 0.5)
%se crea una mscara de 3x3 con distribucin gaussiana, SIGMA=0.5
sum(sum(maskGAUSS3))
GAUSS3imA=imfilter(imA,maskGAUSS3);
subplot(3,3,7);
subimage(GAUSS3imA);
maskGAUSS4=fspecial('gaussian',[5 5], 1)
sum(sum(maskGAUSS4))
GAUSS4imA=imfilter(imA,maskGAUSS4);
subplot(3,3,8);
Squizzato, Fabio.
subimage(GAUSS4imA);
%GAUSSIANO DE 5X5
maskGAUSS5=fspecial('gaussian',[7 7], 1.5)
sum(sum(maskGAUSS5))
GAUSS5imA=imfilter(imA,maskGAUSS5);
subplot(3,3,9);
subimage(GAUSS5imA);
%GAUSSIANO DE 7X7
maskGAUSS6=fspecial('gaussian',[15 15], 2.75)
sum(sum(maskGAUSS6))
GAUSS6imA=imfilter(imA,maskGAUSS5);
subplot(3,3,1);
subimage(GAUSS6imA);
%GAUSSIANO DE 15X15
Debe haber coherencia entre el kernel y el sigma, sino el filtro no ser tipo caja.
Usando filtros de 15, mientras mas suaviza preserva mejor los bordes.
Subiendo el sigma, cada vez se parecen mas (deja de tener en cuenta coeficientes
pesados). Estas son funciones analticas.
Squizzato, Fabio.
subimage(MED3imA);
NOIimA=imnoise(imA,'salt & pepper',0.05);
%se agrega ruido SAL Y PIMIENTA con densidad d=5 porciento
subplot(3,3,3);
subimage(NOIimA);
maskGAUSS5=fspecial('gaussian', 5, 1.0);
%se crea una mscara de 5x5 SIGMA=1.0
GAUSS5imA=imfilter(NOIimA,maskGAUSS5);
%se filtra imagen con ruido S&P con FPB Gaussiano masc 5x5
subplot(3,3,5);
subimage(GAUSS5imA);
MED5NOI=medfilt2(NOIimA, [5,5]);
%se filtra imagen con ruido S&P con filtro de MEDIANA masc 5x5
subplot(3,3,8);
subimage(MED5NOI);
Este tipo de filtro se diferencia ya que nicamente toma el valor del centro del kernel, diferente
al gaussiano que hace promedios.
Se usa cuando hay un ruido por ejemplo de ruido multiplicativo (sal y pimienta: ingresa valores
extremos que agregan fuera de contexto), estos valores ya ordenados, les saco el promedio y se
me va el promedio (ej: 3,4,5,8,500;el 500 es ruido que afecta al promedio).
Puede verse en la imagen que con el filtro gaussiano (aunque tiene mejores propiedades)
tenemos mayor prdida de informacin en los bordes, no as con el filtro de mediana.
CODIGO:
imA=imread('im3A.tif');
subplot(3,3,1);
subimage(imA);
%imagen original
MED3imA=medfilt2(imA, [3,3]);
subplot(3,3,2);
subimage(MED3imA);
NOIimA=imnoise(imA,'salt & pepper',0.05);
subplot(3,3,3);
Squizzato, Fabio.
subimage(NOIimA);
maskGAUSS5=fspecial('gaussian', 5, 1.0);
GAUSS5imA=imfilter(NOIimA,maskGAUSS5);
subplot(3,3,8);
subimage(GAUSS5imA);
MED5NOI=medfilt2(NOIimA, [5,5]);
subplot(3,3,5);
subimage(MED5NOI);
MED3imAnoise=medfilt2(NOIimA, [3,3]);
subplot(3,3,4);
subimage(MED3imAnoise);
title('3x3 filtro de mediana');
MED7imAnoise=medfilt2(NOIimA, [7,7]);
subplot(3,3,6);
subimage(MED7imAnoise);
title('7x7 filtro de mediana');
maskGAUSS7noise=fspecial('gaussian', 7, 1.5);
GAUSS7imA=imfilter(NOIimA,maskGAUSS7noise);
subplot(3,3,9);
subimage(GAUSS5imA);
title('7x7 filtro gaussiano');
maskGAUSS3noise=fspecial('gaussian', 3, 0.5);
GAUSS3imA=imfilter(NOIimA,maskGAUSS3noise);
subplot(3,3,7);
subimage(GAUSS5imA);
title('3x3 filtro gaussiano');
En imgenes sin ruido sal y pimienta, los cambios que produce el filtro son minimos.
3) Crear un filtro pasaaltos (FPA) y tambin un filtro pasabandas, probar con distintas
frecuencias de corte (Wc)
Squizzato, Fabio.
CODIGO FPA
entrada=imread('Im3A.tif');
subplot(1,2,1)
subimage(entrada)
kernell=[0 -2 0 ; -2 8 -2 ; 0 -2 0];
fpaimA=imfilter(entrada,kernell);
subplot(1,2,2);
subimage(fpaimA);
title('3x3 fpa');
Se ve que el FPA resalta los bordes, pero amplifica tambin el ruido y esto es algo no
deseado. El FPA es un filtro con garata direccional.
FILTRO PASA BANDA
En el FPB la frecuencia se determina con el tamao del kernel y por el parmetro sigma elegido.
CODIGO
Squizzato, Fabio.
a) Roberts: kernel mucho mas chicos, de 2x2, uno tiene direccionalidad de la diagonal ppal
y el otro el de la diagonal inversa.
b) Prewitt
c) Sobel: nfasis en la lnea central.
Estos son filtros de gradiente (el cual es la direccin de mayor variacin).
a)filtro de gradiente Roberts.
Cdigo:
Squizzato, Fabio.
Squizzato, Fabio.
Squizzato, Fabio.
Squizzato, Fabio.
NOIim3D=imnoise(EXPLINim3D,'gaussian',0,0.001);
%agregado de ruido gaussiano de mu=0 SIGMA=0.001
subplot(2,2,3);subimage(NOIim3D);
promt='presione cualquier tecla para continuar';
w = waitforbuttonpress;
subplot(2,2,4);imhist(NOIim3D);
promt='presione cualquier tecla para continuar';
w = waitforbuttonpress;
flap=fspecial('laplacian')
%kernel laplaciano de 3x3
NOILAPim3D=imfilter(NOIim3D,flap);
%imagen con ruido GAUSSIANO y filtrada con filtro LAPLACIANO
figure;subplot(2,2,1);subimage(NOIim3D);
promt='presione cualquier tecla para continuar';
w = waitforbuttonpress;
subplot(2,2,2);subimage(NOILAPim3D);
fgauss=fspecial('gaussian',7,1.5)
%kernel gaussiano de 7x7 SIGMA=1.5
NOIGAUim3D=imfilter(NOIim3D,fgauss);
%imagen con ruido GAUSSIANO y filtrada con filtro GAUSSIANO
promt='presione cualquier tecla para continuar';
w = waitforbuttonpress;
subplot(2,2,3);subimage(NOIGAUim3D);
GAUSLAPim3D=imfilter(NOIGAUim3D,flap);
%imagen con ruido GAUSSIANO y filtrada con filtro GAUSSIANO y luego LAPLACIANO
promt='presione cualquier tecla para continuar';
w = waitforbuttonpress;
subplot(2,2,4);subimage(GAUSLAPim3D);
promt='presione cualquier tecla para continuar';
w = waitforbuttonpress;
figure;imshow(GAUSLAPim3D);
imcontrast;
prompt='Ingrese el nivel de gris de entrada minimo:';
minentr=(input(prompt)/2^16)
prompt='Ingrese el nivel de gris de entrada MAXIMO:';
maxentr=(input(prompt)/2^16)
EXPLINgauslap=imadjust(GAUSLAPim3D,[minentr;maxentr],[0.0;1.0]);
figure;imshow(EXPLINgauslap);
Luego se grafica la sig. Imagen, donde an no se alcanza a distinguir forma alguna. Sin
embargo, luego se aplica imcontrast. Este comando nos permite ajustar el centro y la ventana
de la imagen. Haciendo modificaciones, podemos empezar a visualizar disitintos niveles de
grises.
Squizzato, Fabio.
Squizzato, Fabio.
Mediante el comando imadjust, realizamos una expansin lineal del rango dinmico. De esta
forma, llevamos la salida a 65536 niveles de grises, ante los 3071 que tenamos en la entrada.
Esto se observa en la primer fila de esta imagen.
En la segunda fila, observamos la imagen de arriba con ruido gaussiano, y su correspondiente
histograma.
Squizzato, Fabio.
Squizzato, Fabio.
Squizzato, Fabio.
La primer imgen corresponde con la imagen original con ruido gaussiano y con un filtro
laplaciano y uno gaussiano.
La segunda corresponde al imcontrast.
Luego le realizamos un imadjust para encontrar los valores correspondientes, pudiendo
visualizar con ms detalle a la imagen original.
Datos: im3A.tif y im3B.tif: 181x217x1, 8 bits
Im3D.tiff: 598x442x1, 16 bits LE
Squizzato, Fabio.