我在Matlab中使用Hough变换的图像处理工具箱实现。
效果很好,但它将原点放在图像的左上角,导致不必要的大型Hough图像,并且有大量未使用的空间。
我想在原点位于图像中心的情况下进行霍夫变换,这样半径范围就会缩小。此外,我正在实现的算法需要以这种方式表示Hough空间。
我不想从头开始实现Hough变换,因为我不太了解mex以便像Matlab一样有效地重新实现它。所以我一直试图采用Matlab做的霍夫变换,并以某种方式变换霍夫图像,以便有效地移动原点。
任何人都知道我建议的更简单的方法或怎么做?
答案 0 :(得分:2)
好的,这个想法在我的脑海里并不是很精确但是我想出了几个想法:
a)您可以相对于图像中心重新校准半径和角度。这不应该太难,但你必须考虑一下。
b)您可以尝试这样的事情:
您可以拍摄图像四个象限中的每一个的hough
。如果您在“D”上执行常规hough
,则累加器应该自动正确。取{B}的hough
将需要您在flipud
之前执行hough
。之后半径将是正确的,但角度需要在水平轴上翻转。在对所有四个象限进行类似的方法并修复角度后,您可以将累加器添加到一起,然后找到线的位置。
如果我有时间,我想我可能会尝试自己实现它,看看它是如何工作的。从文档看来,你不能直接用matlab提供的hough
做到这一点,所以这两个解决方案是我能想到的最好的解决方案。也许其他人会发布更容易的东西。