0% encontró este documento útil (0 votos)
455 vistas5 páginas

Filtros Pasa Alta y Sharpen en MATLAB

Este documento describe el uso de filtros digitales como pasa bajas, pasa altas y realce (sharpen) en imágenes. Explica que los filtros pasa bajas suavizan una imagen mientras que los pasa altas y realce detectan bordes resaltando cambios en la intensidad entre píxeles vecinos. Luego presenta código MATLAB que implementa varios kernels 3x3 para aplicar diferentes filtros a una imagen en escala de grises de una mariposa, y muestra los resultados gráficamente. Concluye que estos filtros comunes permit
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
455 vistas5 páginas

Filtros Pasa Alta y Sharpen en MATLAB

Este documento describe el uso de filtros digitales como pasa bajas, pasa altas y realce (sharpen) en imágenes. Explica que los filtros pasa bajas suavizan una imagen mientras que los pasa altas y realce detectan bordes resaltando cambios en la intensidad entre píxeles vecinos. Luego presenta código MATLAB que implementa varios kernels 3x3 para aplicar diferentes filtros a una imagen en escala de grises de una mariposa, y muestra los resultados gráficamente. Concluye que estos filtros comunes permit
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Instituto Politécnico Nacional Unidad Profesional Interdisciplinarias en Ingeniería y Tecnologías

Avanzadas

Practica 9: Filtro Pasa Alta, Pasa Baja y Sharpen

Autor: Moncayo Bravo Pedro Alan

Antecedentes Teóricos:

Para el caso de un filtro pasa bajas, su efecto es de suavizar (blur-smooth) una imagen. Este
procedimiento se puede llevar a cabo mediante la utilización de filtros espaciales, llamados
máscaras, kernels, plantillas y ventanas. Existe una correspondencia 1 a 1 entre los filtros
espaciales y los del dominio de la frecuencia. Sin embargo los primeros son más versátiles.

La mayoría de los filtros usan una matriz de convolución. Con el filtro «matriz de convolución», si
tiene imaginación, puede crear filtros personalizados. Convolución es el tratamiento de una matriz
por otra que se llama “kernel”.

El filtro matriz de convolución usa una primera matriz que es la imagen que será tratada. La
imagen es una colección bidimensional de píxeles en coordenada rectangular. El kernel usado
depende del efecto deseado.

GIMP usa matrices 5x5 o 3x3. Se considerarán sólo las matrices 3x3, son las más usadas y son
suficiente para los efectos deseados. Si todos los valores del borde de un kernel se seleccionan a
cero, el sistema la considerará como una matriz 3x3.

El filtro examina, sucesivamente, cada píxel de la imagen. Para cada uno de ellos, que se
llamará “píxel inicial”, se multiplica el valor de este píxel y los valores de los 8 circundantes por el
valor correspondiente del kernel. Entonces se añade el resultado, y el píxel inicial se regula en este
valor resultante final.

Codigo en MATLAB

function pdifil9
close all; clear all; clc;
color=imread('butterfly.jpg');
figure
I=rgb2gray(color);
g=double(I);
subplot(1,1,1);
imshow(I);
title('imagen original en gris');
[x,y,z]=size(I);
ker1=zeros(size(I));%kernel
ker2=zeros(size(I));% smooth
ker3=zeros(size(I));
ker4=zeros(size(I));
ker5=zeros(size(I));
for i=2:x-1
for j=2:y-1
ker1(i,j)=(0*(g(i-1,j-1)))+((1/16)*(g(i,j-1)))+(0*(g(i+1,j-
1)))+((1/16)*(g(i-
1,j)))+(0*(g(i,j)))+((1/16)*(g(i+1,j)))+(0*(g(i+1,j+1)))+((1/16)*(g(i,j+1
)))+(0*(g(i-1,j+1)));
ker2(i,j)=((1/16)*(g(i-1,j-1)))+((2/16)*(g(i,j-
1)))+((1/16)*(g(i+1,j-1)))+((2/16)*(g(i-
1,j)))+((4/16)*(g(i,j)))+((2/16)*(g(i+1,j)))+((1/16)*(g(i+1,j+1)))+((2/16
)*(g(i,j+1)))+((1/16)*(g(i-1,j+1)));
ker3(i,j)=((1/12)*(g(i-1,j-1)))+((1/12)*(g(i,j-
1)))+((1/12)*(g(i+1,j-1)))+((1/12)*(g(i-
1,j)))+((1/12)*(g(i,j)))+((1/12)*(g(i+1,j)))+((1/12)*(g(i+1,j+1)))+((1/12
)*(g(i,j+1)))+((1/12)*(g(i-1,j+1)));
ker4(i,j)=((1/10)*(g(i-1,j-1)))+(0*(g(i,j-1)))+((1/10)*(g(i+1,j-
1)))+((1/10)*(g(i-
1,j)))+((4/10)*(g(i,j)))+((1/10)*(g(i+1,j)))+((1/10)*(g(i+1,j+1)))+(0*(g(
i,j+1)))+((1/10)*(g(i-1,j+1)));
ker5(i,j)=((1/8)*(g(i-1,j-1)))+((1/8)*(g(i,j-1)))+(0*(g(i+1,j-
1)))+((0)*(g(i-
1,j)))+((2/8)*(g(i,j)))+((0)*(g(i+1,j)))+((1/8)*(g(i+1,j+1)))+((1/8)*(g(i
,j+1)))+((1/8)*(g(i-1,j+1)));

end
end

figure
subplot(4,3,1)
imshow(uint8(ker1));
title('filtro Kernel')

subplot(4,3,2)
imshow(uint8(ker2));
title('filtro smooth')

subplot(4,3,3)
imshow(uint8(ker3));
title('filtro pasa altas')

Contor= (uint8(ker4))+(uint8(ker5));
subplot(4,3,4)
imshow(uint8(Contor));
title('filtro de contornos')

kep1=zeros(size(I));%Kernel Pasa Altas


kep2=zeros(size(I));
kep3=zeros(size(I));
kep4=zeros(size(I));
kep5=zeros(size(I));
for i=2:x-1
for j=2:y-1
kep1(i,j)=((1)*(g(i-1,j-1)))+((-2)*(g(i,j-1)))+((1)*(g(i+1,j-
1)))+((-2)*(g(i-1,j)))+((4)*(g(i,j)))+((-
2)*(g(i+1,j)))+((1)*(g(i+1,j+1)))+((-2)*(g(i,j+1)))+((1)*(g(i-1,j+1)));
kep2(i,j)=((-1)*(g(i-1,j-1)))+((-1)*(g(i,j-1)))+((-1)*(g(i+1,j-
1)))+((-1)*(g(i-1,j)))+((8)*(g(i,j)))+((-1)*(g(i+1,j)))+((-
1)*(g(i+1,j+1)))+((-1)*(g(i,j+1)))+((-1)*(g(i-1,j+1)));
kep3(i,j)=((0)*(g(i-1,j-1)))+((-1)*(g(i,j-1)))+((0)*(g(i+1,j-
1)))+((-1)*(g(i-1,j)))+((4)*(g(i,j)))+((-
1)*(g(i+1,j)))+((0)*(g(i+1,j+1)))+((-1)*(g(i,j+1)))+((0)*(g(i-1,j+1)));
kep4(i,j)=((-2)*(g(i-1,j-1)))+((0)*(g(i,j-1)))+((-2)*(g(i+1,j-
1)))+((0)*(g(i-1,j)))+((8)*(g(i,j)))+((0)*(g(i+1,j)))+((-
2)*(g(i+1,j+1)))+((0)*(g(i,j+1)))+((-2)*(g(i-1,j+1)));
kep4(i,j)=((1)*(g(i-1,j-1)))+((-2)*(g(i,j-1)))+((1)*(g(i+1,j-
1)))+((-2)*(g(i-
1,j)))+((12)*(g(i,j)))+((2)*(g(i+1,j)))+((1)*(g(i+1,j+1)))+((-
2)*(g(i,j+1)))+((1)*(g(i-1,j+1)));
end
end
subplot(4,3,5)
imshow(uint8(kep1));
title('kernel pasa altas 1')

subplot(4,3,6)
imshow(uint8(kep2));
title('kernel pasa altas 2')

subplot(4,3,7)
imshow(uint8(kep3));
title('kernel pasa altas 3')

subplot(4,3,8)
imshow(uint8(kep4));
title('kernel pasa altas 4')

subplot(4,3,9)
imshow(uint8(kep5));
title('kernel pasa altas 5')

sha1=zeros(size(I));%Sharper o realce
sha2=zeros(size(I));
sha3=zeros(size(I));

for i=2:x-1
for j=2:y-1
sha1(i,j)=((-1)*(g(i-1,j-1)))+((-2)*(g(i,j-1)))+((1)*(g(i+1,j-
1)))+((-2)*(g(i-1,j)))+((5)*(g(i,j)))+((-
2)*(g(i+1,j)))+((1)*(g(i+1,j+1)))+((-2)*(g(i,j+1)))+((1)*(g(i-1,j+1)));
sha2(i,j)=((-1)*(g(i-1,j-1)))+((-1)*(g(i,j-1)))+((-1)*(g(i+1,j-
1)))+((-1)*(g(i-1,j)))+((9)*(g(i,j)))+((-1)*(g(i+1,j)))+((-
1)*(g(i+1,j+1)))+((-1)*(g(i,j+1)))+((-1)*(g(i-1,j+1)));
sha3(i,j)=((0)*(g(i-1,j-1)))+((-1)*(g(i,j-1)))+((0)*(g(i+1,j-
1)))+((-1)*(g(i-1,j)))+((5)*(g(i,j)))+((-
1)*(g(i+1,j)))+((0)*(g(i+1,j+1)))+((-1)*(g(i,j+1)))+((0)*(g(i-1,j+1)));
end
end
subplot(4,3,10)
imshow(uint8(sha1));
title('filtro sharpen 1')
subplot(4,3,11)
imshow(uint8(sha2));
title('filtro sharpen 2')
subplot(4,3,12)
imshow(uint8(sha3));
title('filtro sharpen 3')
end

Resultados:
Conclusiones:

Existen una gran cantidad de filtros distintos en este caso usamos los de matrices de 3 x 3 que son
unos de los más usados en la convolución, lo que se quiere hacer a la imagen a traves de estos
filtros es permitir la reducción de las variaciones entre los pixeles vecinos o o detectar los pixeles
donde se producen cambios de intensidad detectando con esto los bordes.

Bibliografia:

http://atenciolpdi.blogspot.mx/2010/07/filtros-y-ruidos-unidad-2.html

https://docs.gimp.org/es/plug-in-convmatrix.html

También podría gustarte