0

我知道如何使用 OpenCV 进行基本的 Canny 边缘检测。但是,我需要丢弃所有不在预定角度 15 度范围内的边缘。

任何帮助将不胜感激。

4

1 回答 1

1

这是一个老问题,但这是您应该使用的过程。

1]首先过滤您的源图像(背景减法/颜色/等)

2]应用通用边缘检测器或可控制滤波器或(如果您想获得一些非常好的结果并且出于研究目的而这样做,请查找相位拉伸变换算法

3]将这些线保存在矢量/其他中

4]创建画圆算法(这里是主要思路)

您的圆绘制算法(进一步 CDA)将获取边缘过滤器返回的每个点。

对于每个点,它将根据您可以接受的最大/最小距离构建可变直径 [Dmin;Dmax] 的圆,因为两个点被视为在同一条线上。

如果与您的角度对应的圆形八分圆中没有下一个像素,只需将其关闭。

CDA 八分圆表示

一旦你的线条与你的角度相匹配,你就可以按长度对它们进行排序,以消除可能由于噪音而导致的线条。

您还应该注意还有其他方法,此方法作为一些好的方面:

1- 对噪声和低质量图像/视频具有鲁棒性

2- 其CUDA 兼容(即易于推动并行处理)。

3-它比大多数基本的线检测器快速且大致更准确。

于 2017-07-28T02:04:22.723 回答