快速算法检测图像中线条的倾斜度

时间:2016-03-10 14:47:05

标签: algorithm image-processing signal-processing blackfin

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

image

两个主要限制:

  • 检测到的倾斜度应至少为0.1度(此图中可达到的最佳值)
  • 所用时间应小于30毫秒

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

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

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

2 个答案:

答案 0 :(得分:1)

  1. 找到边界框

    扫描所有点并找到xmin,ymin,xmax,ymax设置像素

  2. 找到差距

    将扫描线投射到边界框的一半,记住/测量间隙尺寸。为避免线路未命中(由于孔洞),您可以投射更多扫描线或使用更宽的光线进行扫描。

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

  3. 将图片细分为区域

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

    regions

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

  4. 退回/拟合

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

    我会尝试使用它:

    或使用近似搜索并使用类似

    的内容

    直接忽略曲率和拟合线方程参数而不是立方体。

    在拟合线后,您可以直接通过atan2(dy,dx)

  5. 计算其斜率

答案 1 :(得分:0)

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

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

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