Houghlines 中的笛卡尔坐标
Cartesian coordinates in Houghlines
为什么我们不能在 Houghlines 变换中使用笛卡尔坐标 (x,y) 而不是极坐标 (r,theta)?谁能解释一下?
据我了解(引用自维基百科):
霍夫变换最简单的情况就是检测直线。一般来说,直线y = mx + b
在参数space中可以表示为一个点(b, m)
。然而,垂直线会带来问题。它们会导致斜率参数 m
的无限值。因此,出于计算原因,Duda 和 Hart 提出使用 Hesse 范式 r = x*cos(theta) + y*sin(theta)
,其中 r
是原点到直线上最近点的距离,theta
是 x
轴与连接原点和最近点的直线之间的角度。
一条线可以通过找到交点的数量来检测curves.The更多的曲线相交意味着该交点所代表的线有更多的点。通常,我们可以定义检测一条线所需的最小交叉点数的阈值。
这就是霍夫线变换的作用。它跟踪图像中每个点的曲线之间的交点。如果交叉点的数量超过某个阈值,则它会将其声明为带有交叉点参数 (theta,r_(theta))
的线。 (OpenCV 文档)
为什么我们不能在 Houghlines 变换中使用笛卡尔坐标 (x,y) 而不是极坐标 (r,theta)?谁能解释一下?
据我了解(引用自维基百科):
霍夫变换最简单的情况就是检测直线。一般来说,直线y = mx + b
在参数space中可以表示为一个点(b, m)
。然而,垂直线会带来问题。它们会导致斜率参数 m
的无限值。因此,出于计算原因,Duda 和 Hart 提出使用 Hesse 范式 r = x*cos(theta) + y*sin(theta)
,其中 r
是原点到直线上最近点的距离,theta
是 x
轴与连接原点和最近点的直线之间的角度。
一条线可以通过找到交点的数量来检测curves.The更多的曲线相交意味着该交点所代表的线有更多的点。通常,我们可以定义检测一条线所需的最小交叉点数的阈值。
这就是霍夫线变换的作用。它跟踪图像中每个点的曲线之间的交点。如果交叉点的数量超过某个阈值,则它会将其声明为带有交叉点参数 (theta,r_(theta))
的线。 (OpenCV 文档)