Houghlines中的笛卡尔坐标
Posted
技术标签:
【中文标题】Houghlines中的笛卡尔坐标【英文标题】:Cartesian coordinates in Houghlines 【发布时间】:2018-08-02 07:03:33 【问题描述】:为什么我们不能在 Houghlines 变换中使用笛卡尔坐标 (x,y) 而不是极坐标 (r,theta) ?谁能澄清一下?
【问题讨论】:
因为效率更高?也许他们应该添加一个转换器:) 如何使用笛卡尔坐标对线进行参数化? “霍夫空间”是参数空间,由要检测的形状的参数跨越的空间。 基本上是因为 HoughLines 变换是这样设计的,将它们放在笛卡尔坐标中是没有意义的(整个想法是将由许多像素组成的直线编码或参数化为仅 2 个变量 rho和θ) 【参考方案1】:据我所知(引自***):
霍夫变换最简单的情况是检测直线。一般来说,直线y = mx + b
可以表示为参数空间中的一个点(b, m)
。但是,垂直线会造成问题。它们会产生斜率参数m
的无限值。因此,出于计算原因,Duda 和 Hart 提出使用 Hesse 范式r = x*cos(theta) + y*sin(theta)
,其中r
是从原点到直线上最近点的距离,theta
是@ 987654327@ 轴和连接原点与最近点的线。
可以通过查找曲线之间的交点数来检测一条线。相交的曲线越多意味着该交点所代表的线有更多的点。一般来说,我们可以定义检测一条线所需的最小交叉点数的阈值。
这就是霍夫线变换的作用。它跟踪图像中每个点的曲线之间的交点。如果交叉点的数量高于某个阈值,则将其声明为一条带有交叉点参数(theta,r_(theta))
的线。 (OpenCV 文档)
【讨论】:
以上是关于Houghlines中的笛卡尔坐标的主要内容,如果未能解决你的问题,请参考以下文章
如何从极坐标中找到一条线(Hough Transform Confusion)
Unity3D之笛卡尔坐标系转换——屏幕坐标转换世界坐标,世界坐标转换相机坐标工具