Procesamiento Digital de Imagenes - Lab #5

download Procesamiento Digital de Imagenes - Lab #5

of 14

Transcript of Procesamiento Digital de Imagenes - Lab #5

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    1/14

    LABORATORIO N5

    Contents

    LecturaFiltro MediaFiltrado ImagenFiltrado de Imagen con Ruido

    Medias Horizontal Y VerticalFiltro GaussianoFiltrado de Imagen con RuidoFiltros No LinealesFiltro MinimoFiltro MaximoFiltrado Lineal y No Lineal

    Lectura

    im=imread('Lena_gray.jpg');im2=imread('circ.png');

    figure,subplot(1,2,1),imagesc(im),colormap(gray),axis imagesubplot(1,2,2),imagesc(im2),axis image

    Filtro Media

    avg_3x3=ones(3)/9;avg_10x10=ones(10)/10^2;avg_50x50=ones(50)/50^2;

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    2/14

    filt1=uint8(conv2(im2,avg_3x3,'same'));filt2=uint8(conv2(im2,avg_10x10,'same'));filt3=uint8(conv2(im2,avg_50x50,'same'));

    figure,subplot(1,3,1),imagesc(filt1),colormap(gray),axis imagesubplot(1,3,2),imagesc(filt2),axis imagesubplot(1,3,3),imagesc(filt3),axis image

    Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.

    Filtrado Imagen

    filt12=uint8(conv2(im,avg_3x3,'same'));

    filt22=uint8(conv2(im,avg_10x10,'same'));filt32=uint8(conv2(im,avg_50x50,'same'));

    figure,subplot(1,3,1),imagesc(filt12),colormap(gray),axis imagesubplot(1,3,2),imagesc(filt22),axis imagesubplot(1,3,3),imagesc(filt32),axis image

    Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.

    Warning: CONV2 on values of class UINT8 is obsolete.

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    3/14

    Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.

    Filtrado de Imagen con Ruido

    imgn=uint8(double(im)+randn(size(im))*20);

    figure,

    imagesc(imgn),colormap(gray),axis image

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    4/14

    filt13=uint8(conv2(imgn,avg_3x3,'same'));filt23=uint8(conv2(imgn,avg_10x10,'same'));filt33=uint8(conv2(imgn,avg_50x50,'same'));

    figure,subplot(2,2,1),imagesc(imgn),colormap(gray),axis imagesubplot(2,2,2),imagesc(filt13),axis imagesubplot(2,2,3),imagesc(filt23),axis image

    subplot(2,2,4),imagesc(filt33),axis image

    Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    5/14

    Medias Horizontal Y Vertical

    f=ones(1,10)/10;

    imga=uint8(conv2(im,f,'same'));

    figure,imagesc(imga),colormap(gray),axis image

    imgb=uint8(conv2(im,f','same'));

    figure,imagesc(imgb),colormap(gray),axis image

    figure,subplot(1,2,1),imagesc(imga),colormap(gray),axis imagesubplot(1,2,2),imagesc(imgb),colormap(gray),axis image

    imgc=uint8(conv2(imga,f','same'));

    figure,subplot(2,2,1),imagesc(imga),colormap(gray),axis imagesubplot(2,2,2),imagesc(imgb),colormap(gray),axis imagesubplot(2,2,3),imagesc(imgc),colormap(gray),axis imagesubplot(2,2,4),imagesc(filt22),colormap(gray),axis image

    Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    6/14

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    7/14

    Filtro Gaussiano

    gauss_3_s1=gauss_2D(3,0.05);gauss_50_s1=gauss_2D(50,0.05);gauss_100_s1=gauss_2D(100,0.05);

    gauss_100_s2=gauss_2D(100,5);

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    8/14

    gauss_100_s3=gauss_2D(100,20);gauss_100_s4=gauss_2D(100,2500);

    figure,subplot(2,3,1),surfc(gauss_3_s1)subplot(2,3,2),surfc(gauss_50_s1)subplot(2,3,3),surfc(gauss_100_s1)subplot(2,3,4),surfc(gauss_100_s2)subplot(2,3,5),surfc(gauss_100_s3)subplot(2,3,6),surfc(gauss_100_s4)

    filt1=uint8(conv2(im2,gauss_3_s1,'same'));filt2=uint8(conv2(im2,gauss_50_s1,'same'));filt3=uint8(conv2(im2,gauss_100_s1,'same'));

    figure,subplot(2,3,1),imagesc(filt1),colormap(gray),axis imagesubplot(2,3,2),imagesc(filt2),colormap(gray),axis imagesubplot(2,3,3),imagesc(filt3),colormap(gray),axis image

    filt4=uint8(conv2(im2,gauss_100_s2,'same'));

    filt5=uint8(conv2(im2,gauss_100_s3,'same'));filt6=uint8(conv2(im2,gauss_100_s4,'same'));

    subplot(2,3,4),imagesc(filt4),colormap(gray),axis imagesubplot(2,3,5),imagesc(filt5),colormap(gray),axis imagesubplot(2,3,6),imagesc(filt6),colormap(gray),axis image

    Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    9/14

    Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.

    Filtrado de Imagen con Ruido

    filt12=uint8(conv2(imgn,gauss_3_s1,'same'));filt22=uint8(conv2(imgn,gauss_50_s1,'same'));filt32=uint8(conv2(imgn,gauss_100_s1,'same'));filt42=uint8(conv2(imgn,gauss_100_s2,'same'));filt52=uint8(conv2(imgn,gauss_100_s3,'same'));filt62=uint8(conv2(imgn,gauss_100_s4,'same'));

    figure,subplot(2,3,1),imagesc(filt12),colormap(gray),axis imagesubplot(2,3,2),imagesc(filt22),colormap(gray),axis imagesubplot(2,3,3),imagesc(filt32),colormap(gray),axis imagesubplot(2,3,4),imagesc(filt42),colormap(gray),axis image

    subplot(2,3,5),imagesc(filt52),colormap(gray),axis imagesubplot(2,3,6),imagesc(filt62),colormap(gray),axis image

    Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    10/14

    Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.

    Filtros No Lineales

    imn_sp=noise_sp(im,0.2);

    figure,subplot(2,2,1),imagesc(imn_sp),colormap(gray),axis image

    fmed1=ordfilt2d(imn_sp,3,'med');subplot(2,2,2),imagesc(fmed1),axis image

    fmed2=ordfilt2d(imn_sp,25,'med');fmed3=ordfilt2d(imn_sp,50,'med');

    subplot(2,2,3),imagesc(fmed2),axis imagesubplot(2,2,4),imagesc(fmed3),axis image

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    11/14

    Filtro Minimo

    img=rgb2gray(imread('pantera.jpg'));

    figure,subplot(2,2,1),imagesc(img),colormap(gray)subplot(2,2,2),imhist(img)

    img_fmin=ordfilt2d(img,10,'min');subplot(2,2,3),imagesc(img_fmin),colormap(gray)subplot(2,2,4),imhist(img_fmin)

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    12/14

    Filtro Maximo

    img2=rgb2gray(imread('rx_c.jpg'));

    figure,subplot(2,2,1),imagesc(img2),colormap(gray)subplot(2,2,2),imhist(img2)

    img_fmax=ordfilt2d(img2,10,'max');subplot(2,2,3),imagesc(img_fmax),colormap(gray)subplot(2,2,4),imhist(img_fmax)

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    13/14

    Filtrado Lineal y No Lineal

    imf1=uint8(conv2(imn_sp,avg_3x3,'same'));imf2=ordfilt2d(imn_sp,10,'med');imf3=ordfilt2d(imn_sp,3,'max');imf4=ordfilt2d(imn_sp,3,'min');

    figure,

    subplot(2,2,1),imagesc(imf1),colormap(gray),axis imagesubplot(2,2,2),imagesc(imf2),colormap(gray),axis imagesubplot(2,2,3),imagesc(imf3),colormap(gray),axis imagesubplot(2,2,4),imagesc(imf4),colormap(gray),axis image

    Warning: CONV2 on values of class UINT8 is obsolete. Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead.

  • 7/24/2019 Procesamiento Digital de Imagenes - Lab #5

    14/14

    Publi shed with MATLAB 7.12