Algorithm 图像中直线倾斜的快速检测算法
我的要求是找到数据矩阵周围的线(全部8条线)的倾斜度,如边缘检测图像所示: 两个主要限制:Algorithm 图像中直线倾斜的快速检测算法,algorithm,image-processing,signal-processing,blackfin,Algorithm,Image Processing,Signal Processing,Blackfin,我的要求是找到数据矩阵周围的线(全部8条线)的倾斜度,如边缘检测图像所示: 两个主要限制: 检测到的倾斜度应具有至少0.1度的精度(此图像中可达到的最佳值) 所用时间应少于30毫秒 我正在Blackfin DSP上实现该算法,并使用了Blackfin图像处理工具箱 我尝试使用Hough变换和轮廓检测来找出线条,从而找出它们的倾斜,但是时间限制超过了。任何使用不同算法或优化此算法的建议都会有所帮助 [对于我的使用案例,角度精度越高越好,我的目标至少是0.02-0.05,具有更高的分辨率图像]
- 检测到的倾斜度应具有至少0.1度的精度(此图像中可达到的最佳值)
- 所用时间应少于30毫秒
[对于我的使用案例,角度精度越高越好,我的目标至少是0.02-0.05,具有更高的分辨率图像]一种快速简便的方法是从左、右、上、下开始扫描每一行和每一列的第一个和第二个白色像素。然后简单地使用一些健壮的直线拟合算法来获得直线 除非您尚未尝试这样做,否则您可以通过将图像裁剪到DMC大小来减少用于Hough变换或其他算法的数据 由于没有足够的结果,无法达到所需的角度精度。即使你有你的结果也会受到任何噪音和异常值的影响
xmin、ymin、xmax、ymax
atan2(dy,dx)
您希望如何达到这种精度?外线的长度约为260像素。您只能在误差为±0.5 px的情况下检测线上的位置(图像不适用于亚像素方法)。仅此一项就导致不确定度至少为
弧tan(0.5/260)=0.1°
。您希望实现什么?我想不出任何应用程序需要DMC具有如此高的精度。请分享更多信息并回答我认为足够快的方法。精度问题仍然存在,在很大程度上取决于拟合的质量和输入图像的分辨率/质量。顺便说一句,看起来像是某个SMD/BGA放置应用程序,还是我错了?@NicoSchertler true,我打算1。提高图像2的分辨率。在增加的分辨率中增加输出线的大小。尽管所有这些仍然无法提高所需的精度,但我希望8条线路的存在将平均误差,并给出更好的结果。@Spektre我需要这条线路来找到AGV系统的方向,AGV系统根据数据矩阵进行定位,并根据此矩阵的方向导航到下一个这样的数据矩阵,这使得精度成为一个先决条件,否则我不会在下一个这样的标签上结束!谢谢你的建议。让我试试这个,我会让你知道它是否在时间限制内工作。如果需要,我可以确定瓶颈并迭代解决方案。