几种常用边缘检测算法的比较Word文档格式.docx
- 文档编号:20717249
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:17
- 大小:156.53KB
几种常用边缘检测算法的比较Word文档格式.docx
《几种常用边缘检测算法的比较Word文档格式.docx》由会员分享,可在线阅读,更多相关《几种常用边缘检测算法的比较Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
2.1一阶微分算子
2.1.1Roberts算子
Roberts算子是一种利用局部差分算子寻找边缘的算子,它由下式给出:
(1)
其中,
、
和
分别为4领域的坐标,且是具有整数像素坐标的输入图像。
Robert算子是
算子模板。
图2所示的2个卷积核形成了Roberts算子。
图像中的每一个点都用这2个核做卷积。
1
-1
图2Roberts算子
Roberts算子边缘定位精度较高,但容易丢失一部分边缘,同时由于没有经过图像平滑计算,因此不能抑制噪声,该算子对具有陡峭的低噪声图像响应较好。
2.1.2Sobel算子
Sobel算子是一种一阶微分算子,它利用像素临近区域的梯度值来计算1个像素的梯度,然后根据一定的阈值来取舍。
它由下式给出:
(2)
Sobel算子是
图3所示的2个卷积核
形成Sobel算子。
一个核通常的垂直边缘响应最大,而另一个核对水平边缘响应最大。
2个卷积的最大值作为该点的输出值。
运算结果是一幅边缘幅度图像。
-2
2
图3Sobel算子
2.1.3Prewitt算子
Prewitt算子由下式给出:
(3)
Prewitt算子是
图4所示的2个卷积核
形成了Prewitt算子。
与Sobel算子的方法一样,图像中的每个点都用这2个核进行卷积。
取最大值作为输出值。
Prewitt算子也产生一副边缘幅度图像。
图4Prewitt算子
2.1.4Canny算子
传统的Canny算法是通过在
邻域内求有限差分来计算梯度幅值。
Canny算子法实现的方式为:
图像先用2D高斯滤波模板进行卷积以消除噪声,再对滤波后图像中的每个像素计算其梯度的大小和方向。
计算可采用以下
大小的模板作为对
方向和
方向偏微分的一阶近似:
由此得到梯度的大小M和方向
:
通过梯度的方向,可以找到这个像素梯度方向的邻接像素:
3
x
最后通过非最大值抑制以及阈值化和边缘连接。
Canny算子有信噪比准则、定位精度准则和单边缘响应准则。
Canny算法的实质是用一个准高斯函数做平滑运算,然后以带方向的一阶微分算子定位导数最大值,它可用高斯函数的梯度来近似,在理论上很接近k个指数函数的线性组合形成的最佳边缘算子。
它是一阶传统微分中检测阶跃性边缘效果最好的算子之一,它比Prewitt算子、Sobel算子的去噪能力都要强,但它也容易平滑掉一些边缘信息,其检查方法较为复杂。
2.1.5一种改进的Sobel算子
基于Sobel算子,。
为了能够更准确地描述出图像边缘点,减少噪声对检测结果的影响,提高算子的抗噪能力,重新构造了4个5×
5大小的模板,模板中各个位置的权重是由该位置到中心点的距离以及该位置在模板中所在的方位决定的,等距离的点,具有相同的权重。
最后选择有最高输出模板所对应边缘梯度值来作为像元的边缘梯度强度。
改进Sobel算子如图5所示:
-3
4
-4
6
-6
2
(1)、x水平方向
(2)、y垂直方向
(3)、
方向(4)、
方向
图5方向模板
由一阶梯度算子得到图像的梯度图像。
一般来说,其边缘较粗。
若直接对梯度图像设定阈值进行二值化,很难找到合适的阈值,使得检测出来的边缘达到要求,这不便于边缘连接与边缘特征提取等后期处理。
因此在对图像梯度图像进行二值化前,有必要对所检测出来的梯度边缘进行细化处理。
细化处理可以通过找出像素点(m,n)某个邻域中的最大值Max(m,n),根据Max(m,n)来局部设定阈值。
按照该点梯度值与阈值的关系对该点进行取舍,这样就能达到将梯度图细化的目的。
计算式如下:
式中:
grade(m,n)为像素点(m,n)对应的梯度值;
Max(m,m)为(m,n)点8邻域最大梯度值;
a为控制因子,0<
a<
1,通过选取不同的a值.可以控制边缘的宽度。
2.2二阶微分算子
2.2.1Laplacian算子
拉普拉斯二阶零交叉(zerocross)算子是利用边缘点处二阶导函数出现零交叉原理来检测边缘。
函数
的拉普拉斯算子公式为:
使用差分方程对x和y方向上的二阶偏导数近似如下:
这一近似式是以点[i,j+1]为中心的。
用j-1替换j,得到以点[i,j]为中心的二阶偏导数的理想近似式:
类似地,可得:
把
(1)、
(2)式合并可得能用来近似表达拉普拉斯算子的模板:
当拉普拉斯算子输出出现过零点时就表明有边缘存在,其中忽略无意义的过零点(均匀零区)。
原则上,过零点的位置精度可以通过线性内插方法精确到子像素的分辨率,不过由于噪声,结果可能不会很精确。
拉普拉斯算子不具方向性,对灰度突变敏感,定位精度较高,同时,对噪声也敏感。
Laplacian算子一般不以其原始形式用于边缘检测。
2.2.2LOG算子
正如上面所提到的,利用图像强度二阶导数的零交叉点来求边缘点的算法对噪声十分敏感,所以,希望在边缘增强前滤除噪声。
将高斯滤波器和拉普拉斯零交叉算子结合在一起就形成了Log算子。
Log算子实现的方式有两种:
一种是图像先与高斯滤波器进行卷积,再求卷积的拉普拉斯变换;
另一种是先求高斯滤波器的拉普拉斯变换,再求与图像的卷积。
Log边缘检测器的基本特征是:
①平滑滤波器是高斯滤波器;
②增强步骤采用二阶导数(二维拉普拉斯函数);
③边缘检测判据是二阶导数零交叉点并对应一阶导数的较大峰值;
④使用线性内插方法在子像素分辨率水平上估计边缘的位置。
Log算子的输出可通过卷积运算得到:
根据卷积求导法有:
Log算子法既平滑了图像又降低了噪声,由于平滑会导致边缘的延展,因此边缘检测器只考虑那些具有局部梯度最大值的点为边缘点,这一点可以用二阶导数的零交叉点来实现。
为了避免检测出非显著边缘,选择一阶导数大于某一阈值的零交叉点作为边缘点。
3MATLAB仿真
MATLAB图像处理工具中有多种边缘检测算子函数,利用MATLABedge函数,得以下实验结果:
针对图片细节少的rice图片,结果如下:
针对细节较多的camera图,程序运行结果如下:
各算子的MATLAB检测函数均未带滤波器,阈值为观察到检测结果为最优的阈值。
从以上可以看出,Prewitt算子和Sobel算子具有平滑作用,但定位精度不高。
Roberts算子定位比较精确,但没有平滑作用。
Log算子具有平滑作用,但边缘有所展宽。
Canny算子检测精度较高,具有平滑作用,去噪能力强,检测效果为最好。
改进Sobel算子比经典Soble算子检测的边缘更加精细;
抗噪能力较强,克服了Sobel算子对噪声极其敏感的缺点。
具有提取的边缘精细、抗噪能力强等优点,是一种简单有效的边缘检测算法。
4结束语
根据以上实验和算法分析可得,Roberts,Sobel和Prewitt算子的算法较为简单,容易实现,运算速度较快,对噪声敏感,可用于车牌号码识别、流水线上产品检测、电视节目字幕检测等对识别速度要求较高而对精度要求不高的地方。
Log算子的算法稍微复杂一些,其检测效果好于Roberts,Sobel和Prewitt算子,可用于答卷识别、邮政分捡等对识别速度和精度都有一定要求的地方。
改进的Sobel梯度边缘检测算法,虽然运行时间较原算法多一些,但是它克服了sobel算子进行边缘检测存在边缘粗糙、对噪声敏感的缺点,具有提取的边缘精细、抗噪能力强等优点,是一种简单有效的边缘检测算法。
Canny算子算法最为复杂,但其检测效果为最好,可用于医学识别、遥测等对速度要求不高而对精度要求较高的地方。
在应用中,应根据实际情况选择不同的微分算子。
参考文献:
[1]张凯丽,刘辉.边缘检测技术的发展研究[J].昆明理工大学学报,2000,5(25).
[2]郝文化,田蕾,董秀芳,等.MATLAB图形图像处理应用教
程[M].中国水利水电出版社,2004.
[3]RafaelC.GonzalezRichardE.Woods著.阮秋琦阮宇智等译.DigitalImageProcessing[M].电子工业出版社,2003
[4]JohnCanny,Member,IEEE.AComputationalApproachtoEdgeDetection[J].PatternAnalysisandMachineIntelligence,November1986,PA-MI-8
(1):
679-697.
[5]MitraBasu,Gaussian-basededge-detectionmethods-asurvey[J].Systems,ManandCybernetics,PartC,IEEETransactionsonAug.2002,32(3):
252-260.
[6]林卉,赵长胜,舒宁.基于Canny算子的边缘检测及评价[J].黑
龙江工程学院学报,2003,2(17).
附:
matlab边缘检测程序
(rice图像):
I1=imread('
rice.tif'
);
I=rgb2gray(I1);
a=edge(I,'
roberts'
);
b=edge(I,'
sobel'
c=edge(I,'
prewitt'
d=edge(I,'
log'
e=edge(I,'
canny'
%canny用于细节较多的图像时,可以规定门限值去掉弱边缘
imwrite(a,'
roberts.tif'
imwrite(b,'
sobe1.tif'
imwrite(c,'
prewitt.tif'
imwrite(d,'
log.tif'
imwrite(e,'
canny.tif'
figure(5),imshow(a);
title('
figure(6),imshow(b);
figure(7),imshow(c);
figure(8),imshow(d);
figure(9),imshow(e);
(camera图像):
camera.tif'
[00.18]);
%带阈值范围,去掉0-0.18阈值范围边缘
改进Sobel程序(matlab):
clc
clearall%清除全局变量
closeall%关闭所有窗口
A1=imread('
camera.jpg'
%读入原图
figure
(1),imshow(A1);
%显示原图
原图:
'
A2=rgb2gray(A1);
%转为灰度图像
[m1n1]=size(A2);
%获取图像宽度和长度%%%%%%中值滤波5X5矩形窗口%%%%%
A3=A2;
a=A3;
fori=3:
m1-2
forj=3:
n1-2
A3=A2(i-2:
i+2,j-2:
j+2);
B=sort(A3(:
));
a(i,j)=B(13);
end
end
A=histeq(a);
%滤波后的直方图图像
figure
(2),imshow(A);
滤波后的直方图:
%四个方向模板
mask1=[230-3-2;
340-4-3;
660-6-6;
230-3-2];
mask2=[23632;
34643;
00000;
-3-4-6-4-3;
-2-3-6-3-2];
mask3=[0-2-3-2-6;
20-4-6-2;
2640-2;
62320];
mask4=[-6-2-3-20;
-2-6-402;
-3-4042;
-20462;
02326];
I=im2double(A1);
d1=imfilter(I,mask1);
d2=imfilter(I,mask2);
d3=imfilter(I,mask3);
d4=imfilter(I,mask4);
dd=max(abs(d1),abs(d2));
%取四种模板的最大灰度值组成图像dd
dd=max(dd,abs(d3));
dd=max(dd,abs(d4));
[m,n]=size(dd);
s=dd;
fori=2:
m-1%细化处理
forj=2:
n-1
s(i,j)=dd(i,j);
q=max(s(i-1,j-1),s(i,j-1));
%将8领域的最大灰度值赋予q
q=max(q,s(i+1,j-1));
q=max(q,s(i-1,j));
q=max(q,s(i,j));
q=max(q,s(i+1,j));
q=max(q,s(i-1,j+1));
q=max(q,s(i,j+1));
q=max(q,s(i+1,j+1));
ifs(i,j)>
(0.8*q)%
s(i,j)=q;
else
s(i,j)=0;
grad=mat2gray(dd);
%level=graythresh(grad);
BW=im2bw(grad,0.17647);
%figure,imshow(dd);
figure(3),imshow(BW);
未经细化处理的改进sobel边缘检测:
)
%figure,imshow(s);
%title('
123'
grad=mat2gray(s);
BW1=im2bw(grad,0.3);
%设定门限值为0.22
figure(4),imshow(BW1);
细化处理后改进Sobel算法边缘检测:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常用 边缘 检测 算法 比较