文章目录
基于全局和局部曲率特性的角点检测器
基本步骤
- 使用 Canny 边缘检测算子检测图像的边缘,提取二值图的轮廓点;
- 计算轮廓点的曲率,并将局部的曲率极大值点作为角点的候选点;
- 移除圆角:对每个候选点,根据其ROS计算出一个自适应的阈值,舍去小于阈值的候选点;
- 移除错角:计算每个候选点的角度,舍去太大的候选点,重复多次直至候选点序列不在变化;
- 考虑轮廓的端点(这里提取的轮廓是一个曲线,只有2个端点),对于开轮廓(2个端点不相邻,若相邻称为闭轮廓)默认两个端点均是角点(除非端点靠近另外一个角点)。
运行结果
使用 python 实现基于曲率的角点检测器,代码详见 CornerDetectorBasedOnCurvature: 基于曲率特性的角点检测算法实现 (gitee.com)。运行结果如下所示,从左往右分别为原始图像、边缘二值图、提取的轮廓图(用不同颜色标记不同轮廓)和检测出的角点图。
参考
- Corner detector based on global and local curvature properties
- https://ww2.mathworks.cn/matlabcentral/fileexchange/7652-a-corner-detector-based-on-global-and-local-curvature-properties