我知道如何使用 OpenCV 进行基本的 Canny 边缘检测。但是,我需要丢弃所有不在预定角度 15 度范围内的边缘。
任何帮助将不胜感激。
我知道如何使用 OpenCV 进行基本的 Canny 边缘检测。但是,我需要丢弃所有不在预定角度 15 度范围内的边缘。
任何帮助将不胜感激。
这是一个老问题,但这是您应该使用的过程。
1]首先过滤您的源图像(背景减法/颜色/等)
2]应用通用边缘检测器或可控制滤波器或(如果您想获得一些非常好的结果并且出于研究目的而这样做,请查找相位拉伸变换算法
3]将这些线保存在矢量/其他中
4]创建画圆算法(这里是主要思路)
您的圆绘制算法(进一步 CDA)将获取边缘过滤器返回的每个点。
对于每个点,它将根据您可以接受的最大/最小距离构建可变直径 [Dmin;Dmax] 的圆,因为两个点被视为在同一条线上。
如果与您的角度对应的圆形八分圆中没有下一个像素,只需将其关闭。
一旦你的线条与你的角度相匹配,你就可以按长度对它们进行排序,以消除可能由于噪音而导致的线条。
您还应该注意还有其他方法,此方法作为一些好的方面:
1- 对噪声和低质量图像/视频具有鲁棒性
2- 其CUDA 兼容(即易于推动并行处理)。
3-它比大多数基本的线检测器快速且大致更准确。