diseño de filtros en matlab

7
Diseño de filtros en Matlab 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. Figura 1.1. Filtro a la media 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. Figura 1.2. Filtro a la mediana 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.

Upload: adrian-torres

Post on 07-Nov-2015

67 views

Category:

Documents


5 download

DESCRIPTION

Diseño de filtros para procesamiento de imágenes mediante Matlab, código implementado en Matlab.

TRANSCRIPT

  • Diseo de filtros en Matlab

    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.

    Figura 1.1. Filtro a la media

    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.

    Figura 1.2. Filtro a la mediana

    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.

  • Figura 1.3. Filtro Gaussiano

    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.

    Figura 1.4. Filtro Laplaciano

    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.

    Figura 1.5. Filtro Highboost

    Anexos

    %Filtro a la Media, la mascara usada es una matriz de mxm con m impar 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=ones(dim,dim); mask=(mask/(dim^2)); [r c]=size(mat); %obtenemos num de pixeles ren y col [rmask cmask]=size(mask); 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 a la Media mask

    de orden m= ',num2str(dim),]);

    %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),]);

    % Filtrado mediante Laplaciano 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 %para la matriz mascara % mask=[0 1 0;1 -4 1;0 1 0]; [r c]=size(mat); %obtenemos num de pixeles ren y col % Calculamos la imagen con laplaciano para la mascara de 3x3 for i=2:r-1 for j=2:c-1 matl(i,j)=-4*mat(i,j)+mat(i-1,j)+mat(i,j-

    1)+mat(i,j+1)+mat(i+1,j); end end %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(matl), title('Imagen con Filtro Laplaciano');

    %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');