美文网首页
拉布拉斯算子锐化图像的空域和频域--matlab实现

拉布拉斯算子锐化图像的空域和频域--matlab实现

作者: glider312 | 来源:发表于2019-11-27 09:51 被阅读0次

    本文将用matlab实现拉布拉斯算子提取边缘,锐化图像。分别采用空域和频域两种方法。

    空域

    步骤:
    1.读取图像/(标定)
    2.生成空间滤波器(fspecial('laplacian',0))
    3.卷积(m = imfilter(f,w,'replicate'))

    clear all;
    f = imread('D:\moon.tif')
    
    %a
    figure(1)
    imshow(f,[]);
    title('a')
    % b
    w = fspecial('laplacian',0); %生成空间滤波器
    m = imfilter(f,w,'replicate');     %'replicate'通过复制外边界的值来扩展  默认相关
    figure(2)
    imshow(m,[]);
    title('b')
    %c
    f2 = im2double(f);  %标定,将负数变为0,有更好的锐化效果
    n = imfilter(f2,w,'replicate');
    figure(3)
    imshow(n,[])
    title('c')
    %d
    m1 = f - m;
    figure(4)
    imshow(m1,[]);
    title('d')
    %e
    n1 = f2 - n;
    figure(5)
    imshow(n1,[]);
    title('e')
    

    频域

    步骤:
    1.读取图像
    2.补0,使图像长、宽变为原来两倍
    3.将图像移到补零后的中心
    4.傅里叶变换
    5.在频域进行运算
    6.傅里叶逆变换取实部
    7.把图像移回原来位置并取原来size的区域

    %步骤1
    clear all;
    f = imread('D:\moon.tif')
    f=double(f);
    [m,n]=size(f);
    %a
    figure(1)
    imshow(f,[]);
    title('origin')
    
    %步骤2
    p=2*m;
    q=2*n;
    A=zeros(p,q);
    for i=1:m
        for j=1:n
            A(i,j)=f(i,j);
        end 
    end
     
    %步骤3
    for i=1:p
        for j=1:q
            A(i,j)=A(i,j)*(-1)^(i+j);
        end 
    end 
    
    %步骤4
    I2=fft2(A);
    
    %步骤5
    for i=1:p
        for j=1:q
            D(i,j)=sqrt((i-p/2)^2+(j-q/2)^2);
        end 
    end 
    
    X=zeros(p,q);
    %pi=3.14
    for i=1:p
        for j=1:q
            X(i,j)=-4*pi^2*D(i,j)^2;
            Y(i,j)=X(i,j)*I2(i,j);
        end 
    end 
    
    %步骤6
    gp3=real(ifft2(Y));
    
    %步骤7
    for i=1:p
        for j=1:q
            gp3(i,j)=gp3(i,j).*(-1).^(i+j);
        end
    end    
    figure(3);
    imshow(gp3,[]);
    %归一化,目的是让后面gs的第一项和第二项同一个数量级
    gp3max = max(gp3(:));
    g3 = gp3(1:m,1:n);
    k=10;  %k自己取,用来改变锐化项的比例
    gs = f-k*g3/gp3max;
    figure(2)
    imshow(gs,[]),title('拉普拉斯锐化图')
    

    相关文章

      网友评论

          本文标题:拉布拉斯算子锐化图像的空域和频域--matlab实现

          本文链接:https://www.haomeiwen.com/subject/lwoewctx.html