Canny算子边缘检测原理.pptx
图像边缘图像边缘是指图像中灰度有显著变化的像素点的集合,从信号研究的频域角度而言,这些像素点信息属于高频信号区域;图像边缘往往都是闭合的连线。噪声也属于高频信号,图像处理之前需要先经过去噪,去噪处理后会对图像真实的边缘信息造成一定的影响。许多经典的算法很难同时兼顾这两点:去噪同时不损坏边缘信息。第1页/共13页边缘检测平滑图像、去除噪声,主要基于导数计算,但是同时会减弱一定的边缘信息;求梯度值,梯度幅度值判定,初步确定图像边缘点,有时某些梯度幅度值较大点并不一定是边缘点,例如纹理图像;精确定位边缘位置边缘提取要求输出的是一个二值化图像,只有黑白两个灰度,一个表示边缘,另一个表示背景,最后还需要把边缘细化成只有一个像素的高度,使效果更清晰。滤波增强检测定位第2页/共13页边缘检测算法 传统的边缘检测算子:Sobel算子,Prewitt算子,Roberts算子,Krich算子等,大部分处理的效果都不很好,实际处理中不太实用,而Canny算子检测的性能较好,常被作为其他实验的标准来参考。Canny算子是John Canny在1986年发表的论文中首次提出的一种边缘检测算法,当时弥补了其他算法的不太好的缺点,因此Canny算子被认为是边缘检测领域较好的算法,并一直被引用,近几年来,随着研究的深入,性能更加完善的改性型的Canny算子也层出不穷,例如自适应Canny算子等。用一句话说,就是希望在提高对景物边缘的敏感性的同时,可以抑制噪声的方法才是好的边缘提取方法。第3页/共13页Canny算子详细原理lCanny算子检测边缘的实质是求信号函数的极大值问题来判定图像边缘像素点。l算子三大准则:好的检测性能:检测出的边缘信息的漏检率最小,误检率最小,评判参数信噪比SNR越大越好G(-x)表示图像边函数 f(x)滤波器函数 表示噪声的均方差 第4页/共13页高的定位精度:Location越大越好 边缘响应次数最少:要保证只有一个像素响应,检测算子的脉冲响应导数的零交叉点平均距离D(f)满足Canny算子详细原理第5页/共13页通过以上算式得出算子的近似实现:边缘点位于图像被高斯平滑后的梯度值的极大值点。第6页/共13页算法过程原始图像A(x,y)B(x,y)偏导(Bx,By)初步得到边缘点高斯平滑去噪求导图像边缘极大值抑制非双阈值检测连结边缘第7页/共13页详细算法过程I.高斯函数 I.偏导数:使用微分算子求出偏导数第8页/共13页非极大值抑制:沿幅角方向检测模值的极大值点,即边缘点,遍历8个方向图像像素,把每个像素偏导值与相邻像素的模值比较,取其MAX值为边缘点,置像素灰度值为0.01234567边缘方向示意图4321B12348邻域幅角方向第9页/共13页双阈值检测:由于单阈值处理时,合适的阈值选择较 困难,常常需要采用反复试验,因此采用双阈值检测算法。对经过非极大值抑制后的图像作用两个阈值th1,th2,th1=0.4th2,两个阈值作用后得到两个图像1、2,较大阈值检测出的图像2去除了大部分噪声,但是也损失了有用的边缘信息。较小阈值检测得到的图像1则保留着较多的边缘信息,以此为基础,补充图像2中的丢失的信息,连接图像边缘。第10页/共13页链接边缘的具体步骤如下:链接边缘的具体步骤如下:对图像2进行扫描,当遇到一个非零灰度的像素p(x,y)时,跟踪以p(x,y)为开始点的轮廓线,直到轮廓线的终点q(x,y)。考察图像1中与图像2中q(x,y)点位置对应的点s(x,y)的8邻近区域。如果在s(x,y)点的8邻近区域中有非零像素s(x,y)存在,则将其包括到图像2中,作为r(x,y)点。从r(x,y)开始,重复第一步,直到我们在图像1和图像2中都无法继续为止。当完成对包含p(x,y)的轮廓线的连结之后,将这条轮廓线标记为已经访问。回到第一步,寻找下一条轮廓线。重复第一步、第二步、第三步,直到图像2中找不到新轮廓线为止。至此,完成canny算子的边缘检测。第11页/共13页阈值th1-图像1阈值th2-图像2遍历图像2非零轮廓线终点在图像1中找对应非零点补充到图像2中作为新的起点继续遍历第12页/共13页感谢您的观赏!第13页/共13页