利用拉普拉斯算子判定边缘

Posted on 2014-12-03 11:36  boycebai  阅读(1505)  评论(0)    收藏  举报

二维函数f(x,y)的拉普拉斯算子是如下定义的二阶导数:

在离散的数字中,常常用差分来表示连续函数中的求导。所以我们对拉普拉斯算子的数字近似方法如下:

对一个3*3大小的区域,在实践中经常遇到的两种形式之一是:

又包括对角邻域的数字近似方法由下式给出:

 其中,z值在下图中给出定义:

即上述两种算子模板可以分别表示为:


现在,我们想用拉普拉斯算子来判定图像的边缘。首先,我们先用拉普拉斯算子对图像滤波把图像锐化。然后,对锐化后的图像,我们有两种思路。其一,直接用拉普拉斯算子判定边缘;其二,利用类似LP算法,求出残差。

我们把图像锐化的原因是,这可以加强图像灰度突变的区域,并且减弱图像灰度区域中缓慢变化的部分。

思路其二的原因是,拉普拉斯算子滤波有低通效应,而且在数字图像中高频区域含有更多的边缘部分的信息(这是因为高频区域中图像的灰度级往往变化的很快),我们取出这个含有高频部分的残差,这就是我们想要得到的边缘。


效果如下:

原图像:

锐化图像:

思路一效果:

思路二效果:


 

代码如下:

pymain.m

%清屏
clear all; 
close all; 
clc;

%读取图像及尺寸
img=double(imread('lena.jpg'));
figure;imshow(uint8(img));
imwrite(uint8(img),'img.jpg');

%图像锐化
a=[-1,-1,-1;-1,8,-1;-1,-1,-1];
img1=imfilter(img,a,'replicate');
img2=img+img1;
figure;imshow(uint8(img2));
imwrite(uint8(img2),'img2.jpg');

%直接laplacian算子判定边缘
img3=imfilter(img2,a,'replicate');
figure;imshow(uint8(img3));
imwrite(uint8(img3),'img3.jpg');

%利用LP算法判定边缘
%滤波,向下采样
[m,n]=size(img2);
w=1/8*[0,1,0;1,4,1;0,1,0];
midimg=imfilter(img2,w,'replicate');
[a,b]=size(midimg);
midimg=midimg(1:2:a-1,1:2:b-1);

%向上采样,获取残差即锐化后图像的边缘
img4=img2-pyexpand(midimg,w);
figure;imshow(uint8(img4));
imwrite(uint8(img4),'img4.jpg');


pyexpand.m

function imgexpand=pyexpand(img,w)

    w=w*4;
    
    [m, n]=size(img);
    [M, N]=size(w);
                                      
    w_up_left=w(1:2:M,1:2:N);
    w_up_right=w(1:2:M,2:2:N); 
    w_down_left=w(2:2:M,1:2:N); 
    w_down_right=w(2:2:M,2:2:N); 

    img_up_left=imfilter(img,w_up_left,'replicate','same');
    img_up_right=imfilter(img,w_up_right,'replicate','same');   
    img_down_left=imfilter(img,w_down_left,'replicate','same');  
    img_down_right=imfilter(img,w_down_right,'replicate','same');  
  
    imgexpand=zeros(m*2,n*2);            
    imgexpand(1:2:m*2,1:2:n*2)=img_up_left;
    imgexpand(2:2:m*2,1:2:n*2)=img_up_right;
    imgexpand(1:2:m*2,2:2:n*2)=img_down_left;
    imgexpand(2:2:m*2,2:2:n*2)=img_down_right;
end


 

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3