拉普拉斯算法实现图像边缘提取(MATLAB实现)
clear;clc;
a=imread('street.jpg');
e=a(:,:,1);
r=e;c=e;
[m,n]=size(e);
%拉普拉斯算法提取边缘
h=zeros(m-1,n-1);
for i=2:m-1
for j=2:n-1
h(i,j)=c(i,j+1)+c(i,j-1)+c(i+1,j)+c(i-1,j)-4*(c(i,j));
end
end
subplot(2,2,1),imshow(e);title('原图');
subplot(2,2,2),imshow(h);title('原图拉普拉斯边缘提取');
%图像二值化后,拉普拉斯算法提取边缘
dd=sum(sum(e)/(m*n));
for x=1:m
for y=1:n
if(r(x,y)>=dd)
r(x,y)=255;
else
r(x,y)=0;
end
end
end
subplot(2,2,3),imshow(r);title('二值化后图像');
p=zeros(m-1,n-1);
for ii=2:m-1
for jj=2:n-1
p(ii,jj)=r(ii,jj+1)+r(ii,jj-1)+r(ii+1,jj)+r(ii-1,jj)-4*(r(ii,jj));
end
end
subplot(2,2,4),imshow(p);title('二值化后拉普拉斯提取');
小白练手,敬请斧正。