给定一组线,只找到那些平行的(透视图)

信息处理 Python opencv 霍夫变换
2022-02-21 06:13:19

我有一个图像,其中包含我需要检测 原来的 的直边框:边框很厚,这会导致霍夫变换为每个边框检测多条线,如下图所示:霍夫变换结果

为了找到“真”线,我想找到所有平行线(即找到会聚成消失点的线)。OpenCV(或任何其他库)是否包含这样的功能?(我使用的是 python,虽然我也可以移植 c++ 脚本)

提前致谢

1个回答

图像中的平行线确实在消失点相交。因此,简单地假设线(一个点的梯度方向就足以描述它)和投票(参见霍夫投票)就足以识别这个点。然后可以记录所有在这一点上投票的行并识别它们。必须小心,因为很难直接在消失点上投票,即空间没有边界并且会爆炸到无穷大。相反,可以使用Barnard 建议的高斯球体。

消失点提取是一个经过充分研究的主题,存在许多算法,其中一些是:

最后,当多行导致问题时,总是可以使用行参数对它们进行聚类[a,b,c]. 当行数未知时,可以使用层次聚类,例如单链接凝聚聚类