Canny算子
Canny算子对边缘处理的会比Sobel等算子更加细致,他的边缘细致到单个像素的层面
为什么通过比较梯度的大小就可以判断边缘:梯度往往会比周围的点更加明亮,所以在求导后即梯度较其他点大。
流程:转灰度图 —> 平滑处理(高斯滤波) —> 计算每点的梯度和梯度方向(Sobel算子等)—>非极大值抑制(筛选边缘)—>双阈值进一步筛选边缘
1.非极大值抑制
在用Sobel等算子计算出每个点的梯度后,需要筛选这些点是否可能属于边缘,放入候选

以3*3卷积核为例,如上图,一共有9个像素点,现在求得中心点C的梯度以及方向如蓝色线所示。易知梯度方向和边缘方向肯定是垂直的,如果点C的值在梯度方向上是这个3 * 3的卷积核的最大值(即局部极大值),则C可能属于边缘,放入候选进入下一步。如果C不是极大值,则置0。
一种方法是采用线性插值法,如上图所示,C所在的梯度方向并没有经过像素点,而是交于dTmp1,dTmp2两点,这时需要通过交点两边的点来按距离远近加权平均求得dTmp1,dTmp2的值,再来与C比较,具体公式如下

Canny边缘检测算子是一种细致的边缘检测方法,包括非极大值抑制和双阈值步骤。首先将图像转换为灰度,然后进行高斯滤波减少噪声,接着计算梯度和方向。非极大值抑制通过比较像素点在梯度方向上的值来筛选可能的边缘点。双阈值策略用于最后的边缘确定,强边缘直接保留,弱边缘依据连接情况决定。此过程适用于精细边缘检测。
最低0.47元/天 解锁文章
2374

被折叠的 条评论
为什么被折叠?



