糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 数字图像matlab边缘检测(一)

数字图像matlab边缘检测(一)

时间:2020-12-08 23:02:41

相关推荐

数字图像matlab边缘检测(一)

1.图像的一阶边缘检测

图像的边缘检测,是图像分割的重要依据,一般图像的边缘可分为阶梯状,脉冲状,屋顶状

一阶微分算子主要是依据图像梯度在边缘取得最大值。

数据模板

mx=(a2+C*a5+a8)-(a0+C*a3+a6)

my=(a6+C*a7+a8)-(a0+C*C1+a2)

当C=1时,就是Prewitt算子,当C=2时,就是Sobel算子

2.图像二阶微分算子检测边缘

边缘处会出现二阶微分为零值点

接下来主要是讲高斯拉普拉斯算子(LOG)算法

function e=log_edge(a,sigma)%工能:实现log算子提取边缘点%输出:a-灰度图像, sigma-滤波器参数%输出 e--边缘图像%产生同样大小的边缘图像e 初始化为0[m,n]=size(a);e=repmat(logical(uint8(0)),m,n);rr=2:m-1;cc=2:n-1;%选择点数为奇数的滤波器尺寸,fsize>6*sigmafsize=ceil(sigma*3)*2+1;%产生log滤波器op=fspecial('log',fsize,sigma);%将滤波器的均值变为0op=op-sum(op(:))/numel(op);%利用Log算子对图像滤波b=filter2(op,a);%设置过零检测的门限%寻找滤波后的过零点,选择边缘点为负值的点thresh=.75*mean2(abs(b(rr,cc)));%[+ 0 - ]从左向右[rx,cx]=find(b(rr,cc)<0&b(rr,cc+1)>0&abs(b(rr,cc)-b(rr,cc+1))>thresh);e((rx+1)+cx*m)=1;%[- 0 +]从右到左[rx,cx]=find(b(rr,cc-1)>0&b(rr,cc)<0&abs(b(rr,cc-1)-b(rr,cc))>thresh);e((rx+1+cx*m))=1;%[- 0 +]' 从上到下[rx,cx]=find(b(rr,cc)<0&b(rr+1,cc)>0&abs(b(rr,cc)-b(rr+1,cc))>thresh);e((rx+1)+cx*m)=1;%[+ 0 -]' 从下到上[rx,cx]=find(b(rr-1,cc)>0&b(rr,cc)<0&abs(b(rr-1,cc)-b(rr,cc))>thresh);e((rx+1)+cx*m)=1;%寻找滤波后的过零点,边缘刚好在滤波值为零点上[rz,cz]=find(b(rr,cc)==0);if ~isempty(rz)%零点的线性坐标zero=(rz+1)+cz*m;%zz=b(zero-1)<0 & b(zero+1)>0 & abs(b(zero-1)-b(zero+1))>2*thresh;e(zero(zz))=1;%zz=b(zero-1)>0 & b(zero+1)<0 & abs(b(zero-1)-b(zero+1))>2*thresh;e(zero(zz))=1;%zz=b(zero-m)<0 & b(zero+m)>0 & abs(b(zero-m)-b(zero+m))>2*thresh;e(zero(zz))=1;%zz=b(zero-m)>0 & b(zero+m)<0 & abs(b(zero-m)-b(zero+m))>2*thresh;e(zero(zz))=1;end

参考《MAtlab数字图像处理详解》作者:赵小川

如果觉得《数字图像matlab边缘检测(一)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。