首页 > 解决方案 > 如何在极坐标中找到垂直线?

问题描述

假设我有下图中显示的线条,以极坐标格式(rho 和 theta)表示。这些行是 OpenCV 的 HoughLines 函数经过一些后期处理后的输出。(对不起,我还不允许嵌入图像。)

在此处输入图像描述

我想要做的是,给定任何一条线,找到与该线垂直的所有线,如下面的第二张图所示。

在此处输入图像描述

我了解如何使用笛卡尔线来做到这一点,但是我很难围绕 rho 和 theta 的哪些属性,这两条线必须是垂直的,尽管我至少从根本上了解极线是如何工作的。对不起,如果这是基本的东西,但我无法在任何地方在线找到任何解释。我需要先将线条转换为笛卡尔坐标,还是有一些更简单的方法可以做到这一点?任何帮助将不胜感激,谢谢!

标签: opencvmathpolar-coordinateshoughlines

解决方案


要获得极坐标中的垂直线,您只需将 theta 作为第一条线,然后找到所有 theta = 第一个 theta 的 +/- 90° 的线。

在比较它们时,您必须将角度标准化为 0°-360° 或其他范围内。

因此,如果第 1 行有一个 theta line1.Theta
,那么与另一条线的角度是a = (line2.Theta - line1.Theta)
,并且您想要 a 接近 -90°、90°、270°、-270°、...的所有线,
这取决于您如何标准化角度


推荐阅读