Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Filtro a la Media
El programa est contenido en el archivo filtromedia.m adjunto a este documento. Los resultados
obtenidos para una imagen en particular, se muestran en la figura 1.1.
Filtro a la Mediana
El programa est contenido en el archivo filtromediana.m adjunto a este documento. Los resultados
obtenidos para una imagen en particular, se muestran en las figura 1.2.
Filtro a la Gaussiano
El programa est contenido en el archivo filtrogaussiano.m adjunto a este documento. Los resultados
obtenidos para una imagen en particular, se muestran en las figura 1.3.
Filtro Laplaciano
El programa est contenido en el archivo filtrolaplaciano.m adjunto a este documento. Los resultados
obtenidos para una imagen en particular, se muestran en las figura 1.4.
Filtro Highboost
El programa est contenido en el archivo Highboost.m adjunto a este documento. Los resultados
obtenidos para una imagen en particular, se muestran en las figura 1.5.
Anexos
%Filtro a la mediana
clc
clear all
close all
I=imread(input('Introduzca nombre o ubicacin de la imagen:', 's'));%G en
I
l=size(I); %checamos la dimensin por si es imagen en color
a=length(l);
if a>2
mat=rgb2gray(I);
%Convertimos a escala de grises
else
mat=I;
end
opc=0;
while(opc==0)
dim=input('La matriz filtro es de dimension mxm con m impar,Defina
m:');
if(mod(dim,2) ~= 0)
opc=1;
end
end
%generamos la matriz mascara
mask=[1:dim^2];
[r c]=size(mat);
%obtenemos num de pixeles ren y col
rmask=dim;
cmask=dim;
rcadd=fix(rmask/2);
for i=1:rcadd
for j=1:1:c
renadd(i,j)=0;
for j=1:(r+(2*rcadd))
coladd(j,i)=0;
end
end
end
%agregamos renglones y columnas a la matriz de la imagen original
mata=[coladd [renadd;mat;renadd] coladd];
%para obtener la mediana de mascara en la matriz aumentada
ren=r-1;
col=c-1;
for k=0:ren
for l=0:col
m=1;
for i=1:rmask;
for j=1:cmask;
mask(m)=mata(i+k,j+l);
m=m+1;
end
end
%mat(k+1+rcadd,l+1+rcadd)=acum
%calculamos la mediana de la mask, ordenamos y extraemos el valor
m
mask=sort(mask);
mat(k+1,l+1)=mask(round(dim^2/2));
end
end
%presentando el resultado I es la imagen original,mat contiene el
resultado
subplot(2,1,1), subimage(I), title('Imagen original');
subplot(2,1,2), subimage(mat), title(['Imagen con Filtro a la Mediana
mask de orden m= ',num2str(dim),]);
%Filtro Gaussiano
%Se crea la mascara a partir de la varianza y se hace la convolucion
clc
clear all
close all
I=imread(input('Introduzca nombre o ubicacin de la imagen:', 's'));%G en
I
l=size(I); %checamos la dimensin por si es imagen en color
a=length(l);
if a>2
mat=rgb2gray(I);
%Convertimos a escala de grises
else
mat=I;
end
opc=0;
while(opc==0)
var=input('La mascara Gaussiana se genera a partir de la varianza,
defina:');
if(var >= 0)
opc=1;
end
end
%generamos la matriz mascara Gaussiana
dim=round(6*sqrt(2*(var+(var/10))));
if(mod(dim,2)==0)
dim=dim-1;
end
mask=zeros(dim,dim);
pc= round(dim/2);
acum=0;
for i=1:dim
for j=1:dim
mask(i,j)=exp(-((((pc-i)^2)+((pc-j)^2))/(2*var)));
acum=acum+mask(i,j);
end
end
mask=mask/acum;
%aqui esta la mascara Gaussiana
[r c]=size(mat);
%obtenemos num de pixeles ren y col
rmask=dim;
cmask=dim;
rcadd=fix(rmask/2);
for i=1:rcadd
for j=1:1:c
renadd(i,j)=0;
for j=1:(r+(2*rcadd))
coladd(j,i)=0;
end
end
end
mata=[coladd [renadd;mat;renadd] coladd];
%para recorrer la mask en la matriz aumentada
ren=r-1;
col=c-1;
for k=0:ren
for l=0:col
acum=0;
for i=1:rmask;
for j=1:cmask;
acum=acum+((mata(i+k,j+l))*(mask(i,j)));
end
end
mat(k+1,l+1)=acum;
end
end
mat=round(mat);
%presentando el resultado I es la imagen original,mat contiene el
resultado
subplot(2,1,1), subimage(I), title('Imagen original');
subplot(2,1,2), subimage(mat), title(['Imagen con Filtro Gaussiano,
varianza= ',num2str(var),]);
%Unsharpening higboost
clc
clear all
close all
I=imread(input('Introduzca nombre o ubicacin de la imagen:', 's'));%G en
I
l=size(I); %checamos la dimensin por si es imagen en color
a=length(l);
if a>2
mat=rgb2gray(I);
%Convertimos a escala de grises
else
mat=I;
end
D=mat;
HB=mat;
[r c]=size(mat);
% Promediado con mascara de 3x3
for i=2:r-1
for j=2:c-1
D(i,j)=sum(sum(mat((i-1):(i+1),(j-1):(j+1))));
D(i,j)= round(D(i,j)/9);
end
end
unsharp=mat-D;
HB=round(0.5*mat)+unsharp;
%presentando el resultado I es la imagen original,mat contiene el
resultado
subplot(3,1,1), subimage(I), title('Imagen original');
subplot(3,1,2), subimage(unsharp), title('Imagen con Filtro Unsharp');
subplot(3,1,3), subimage(HB), title('Imagen con Filtro High Boost');