jueves, 10 de junio de 2010

EJERCICIO (Filtro de la Mediana)

EJERCICIO (Filtro de la Mediana)


4.)


Los píxeles de la nueva imagen se generan calculando la mediana del conjunto de píxeles del entorno de vecindad del píxel correspondiente a la imagen origen. De esta forma se homogeneizan los píxeles de intensidad muy diferente con respecto a la de los vecinos. Este tipo de filtro es bastante indicado cuando se tiene ruido aleatorio.
En Matlab la instrucción empleada para realizar el filtro de la mediana es medfilt2.

B = medfilt2(A)

Donde A es la matriz de entrada a la que se le aplica el filtro de la mediana utilizando por defecto una vecindad de 3X3.

CODIGO


imc=imread('C:\MATLAB7\work\imagenes\lena.jpg');

im=rgb2gray(imc);
fg = imnoise(im,'gaussian');
fs = imnoise(im,'salt & pepper',0.1)
h1=fspecial('average');
media1=imfilter(fg,h1);
media2=imfilter(fs,h1);
mediana1=medfilt2(fg);
mediana2=medfilt2(fs);
%Representaciones de las imágenes
subplot(2,3,1),subimage(fg),title('Imagen con ruido gaussiano');
subplot(2,3,4),subimage(fs),title('Imagen con ruido aleatorio');
subplot(2,3,2),subimage(media1),title('Filtro media');
subplot(2,3,5),subimage(media2),title('Filtro media');
subplot(2,3,3),subimage(mediana1),title('Filtro mediana');
subplot(2,3,6),subimage(mediana2),title('Filtro mediana');




3 comentarios:

  1. Investigando un poco mas se puede realizar otro filtro de la mediana con otro codigo utilizando sentencias como el ford y if para aplicar en la matris de la imagen para sacar la media como un ejemplo de codigo seria el siguiente el cual puede ser aplicable para los graficos.

    function A=median004(A);
    clc;
    A2=A;
    A=double(A);
    [f c]=size(A);
    temp=0;
    H=zeros(1,9);
    for i=1:3:f
    for j=1:3:c
    n=1;
    for k=0:2
    for l=0:2
    if i+k>f || j+l>c
    break;
    else
    H(n)=A(i+k,j+l);
    n=n+1;
    end;

    end;
    end;

    for k=1:8
    for l=k+1:9
    if H(k)f || j+l>c
    break;
    else
    A(i+k,j+l)=H(5);
    end;

    end;
    end;

    end;
    end;
    figure(1)
    subplot(1,2,1)
    imshow(uint8(A2))
    title('original image')
    subplot(1,2,2)
    imshow(uint8(A))

    El cual seria de probar.

    ResponderEliminar
  2. Este codigo en evaluar el valor de los píxeles y cambiar sus valores al de aquél que tenga un valor central....

    ResponderEliminar
  3. Se puede ver como los pixeles cambian y como son alterados en su vecindad asi llegando a tener la extructura de los mismos pixeles en la imagen y sus valores obtenidos para suavisar arreglar la imagen etc.

    ResponderEliminar