我的要求是找到数据矩阵周围的线条(所有8条线)的倾斜度,如边缘检测图像所示:
两个主要限制:
我正在使用Blackfin DSP实现算法,并使用了Blackfin图像处理工具箱。
我尝试使用Hough变换和轮廓检测来找出线条,从而找出它们的倾向但是时间限制超过了。任何使用不同算法或优化此算法的建议都会有所帮助。
[对于我的用例,角度精度越高越好,我的目标是至少0.02 - 0.05,分辨率更高的图像]
答案 0 :(得分:1)
找到边界框
扫描所有点并找到xmin,ymin,xmax,ymax
设置像素
找到差距
将扫描线投射到边界框的一半,记住/测量间隙尺寸。为避免线路未命中(由于孔洞),您可以投射更多扫描线或使用更宽的光线进行扫描。
如果您需要一些射线投射/扫描示例,请参阅:
将图片细分为区域
只需缩小边界的一小部分(50%)......就像这样:
形成8个矩形区域,每个区域都有一条单线,边缘没有噪声。
退回/拟合
我们的想法是分别为每个区域制作一个所有设置像素的列表,并拟合一条与所有区域距离最小的线。
我会尝试使用它:
或使用近似搜索并使用类似
的内容直接忽略曲率和拟合线方程参数而不是立方体。
在拟合线后,您可以直接通过atan2(dy,dx)
答案 1 :(得分:0)
快速简便的方法是从左,右,上,下开始扫描第一个和第二个白色像素的每一行和每列。然后简单地使用一些强大的线拟合算法来获取线条。
除非您还没有尝试这样做,否则可以通过将图像裁剪为DMC尺寸来减少Hough变换或其他算法的数据。
由于没有足够的结果,无法达到所需的角度精度。即使你有你的结果也会受到任何噪音和异常值的影响。