Canny算子求边缘点具体算法步骤如下:
1.用高斯滤波器平滑图像.
2.用一阶偏导有限差分计算梯度幅值和方向.
3.对梯度幅值进行非极大值抑制 .
4.用双阈值算法检测和连接边缘.
在MATLAB中可以由edge函数实现各算子的边缘检测,下面是具体实现这几个算子的代码:
i=imread('crack2.bmp');
bw1=edge(i,'sobel');
bw2=edge(i,'roberts');
bw3=edge(i,'prewitt');
bw4=edge(i,'log');
bw5=edge(i,'canny');
subplot(2,3,1),imshow(bw1);
subplot(2,3,2),imshow(bw2);
subplot(2,3,3),imshow(bw3);
subplot(2,3,4),imshow(bw4);
subplot(2,3,5),imshow(bw5);
进行上述各方法的边缘检测后,结果如图3-4:
(a) sobel算子 (b) roberts算子 (c) prewitt算子
(d) log算子 (e)canny算子
图 3-4 使用各种边缘检测算子得到的边缘检测
从效果对比图中可看出Roberts算子,Sobel算子,Prewitt算子对噪声具有较好的平滑作用,减少了噪声敏感性,但提取的边缘相对较粗,连续性也差一些。LOG算子和Canny算子的边缘连续性较好,边缘较细,LOG算子的高斯函数对图像进行平滑处理,相对Canny算子对噪声有一定抑制,Canny算子可以检测出弱边缘,定位精确,不过受到噪声影响太大,需要加上理想的滤波器,但这样操作会比较复杂。就本图而言LOG算子相对简单,效果理想。
边缘的局部灰度在一定方向上快速变化,路面的裂缝由于宽度变化较多,灰度不均匀,因而使得边缘检测算子提取的裂缝呈断裂状,且有路面颗粒与其他杂物干扰,不能直接进行特征提取,还需进行后续处理,剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的曲线。
3.4.2 裂缝图像阈值分割
阈值法是一种传统的分割方法,因其实现简单,计算量小,性能稳定而成为图像分割中最基本和应用最广泛的分割技术[14]。
根据图像分割的要求,如果需要把图像中各种灰度分割成两个不同的类,那么就需要确定一个阈值,即单阈值分割;如果需要将图像按灰度分为多个不同的类,那么就需要确定一系列阈值,即多阈值分割。单阈值分割可以看作多阈值分割的一个特例,同时多阈值分割也可能转化为一系列单阈值分割的问题。单阈值分割是以一定的准则在灰度图像 中找出亿灰度值t作为阈值,以t为界限将像素分成两部分,即小于t的像素群(常视为背景)和大于t的像素群(常视为目标),从而将背景与目标分开。
灰度阈值的选择方法有很多种,下面将介绍几种最常用的方法。
(一)直方图阈值分割
若灰度图像的直方图,其灰度范围为0,1,i-1,设灰度级像素数为 ,则一副图像的总像素N为:N= ,灰度级i出现的概率为 。
当灰度图像中画面比较简单并且对象物的灰度分布比较有规律时,背景和对象物在图像的灰度直方图上各自形成一个波峰,即区域和波峰一一对应。由于每两个波峰间形成一个低谷,因而选择双峰间低谷处所对应的灰度值为阈值,可将两个区域分离。
把这种通过选取直方图阈值来分割目标和背景的方法称为直方图阈值双峰法。双峰法比较简单,在可能的情况下常常作为首选的阈值确定方法。
- 上一篇:时滞区间系统PID控制器设计研究+文献综述
- 下一篇:雷达测距信号的RAM实现+源代码
-
-
-
-
-
-
-
乳业同业并购式全产业链...
当代大学生慈善意识研究+文献综述
河岸冲刷和泥沙淤积的监测国内外研究现状
java+mysql车辆管理系统的设计+源代码
中考体育项目与体育教学合理结合的研究
大众媒体对公共政策制定的影响
十二层带中心支撑钢结构...
杂拟谷盗体内共生菌沃尔...
酸性水汽提装置总汽提塔设计+CAD图纸
电站锅炉暖风器设计任务书