2

我的要求是找到围绕数据矩阵的线(所有 8 条线)的倾斜度,如边缘检测图像所示:

图片

两个主要限制:

  • 检测到的倾角应具有至少 0.1 度的精度(此图像中可达到的最佳值)
  • 所用时间应少于 30 毫秒

我在 Blackfin DSP 上实现算法,并使用了 Blackfin 图像处理工具箱。

我尝试使用霍夫变换和轮廓检测来找出线条,从而找出它们的倾斜度,但是时间限制超过了。任何使用不同算法或优化算法的建议都会有所帮助。

[对于我的用例,角度精度越高越好,我的目标是至少 0.02 - 0.05 和更高分辨率的图像]

4

2 回答 2

1
  1. 找到边界框

    扫描所有点并找到xmin,ymin,xmax,ymax集合像素

  2. 找到差距

    通过边界框的一半投射扫描线,记住/测量间隙大小。为避免线丢失(由于孔),您可以投射更多扫描线或使用更宽的射线进行扫描。

    如果您需要一些光线投射/扫描示例,请参阅:

  3. 将图像分割成区域

    只需将边界框缩小一小部分(50%)的间隙......就像这样:

    地区

    形成 8 个矩形区域,每个区域都有单线,边缘没有噪音。

  4. 回归/拟合线

    这个想法是分别为每个区域制作一个所有设置像素的列表,并拟合一条与所有像素距离最小的线。

    我会尝试使用这个:

    或者使用近似搜索并拟合类似的东西

    只是直接忽略曲率和拟合线方程参数而不是三次。

    拟合线后,您可以直接计算它们的斜率atan2(dy,dx)

于 2016-03-10T21:38:06.543 回答
0

一种快速简便的方法是从左、右、上和下开始扫描每一行和每一列的第一个和第二个白色像素。然后只需使用一些强大的线条拟合算法来获得线条。

除非您还没有尝试这样做,否则您可以通过将图像裁剪为 DMC 大小来减少霍夫变换或其他算法的数据。

由于您没有足够的结果,因此无法达到所需的角度精度。即使你有你的结果也会受到任何噪音和异常值的影响。

于 2016-03-10T20:31:49.210 回答