Python 霍夫线中的笛卡尔坐标
为什么我们不能在Houghlines变换中使用笛卡尔坐标(x,y)而不是极坐标(r,θ)?有人能澄清吗?据我所知(引自维基百科): Hough变换最简单的情况是检测直线。通常,直线y=mx+b可以表示为参数空间中的点Python 霍夫线中的笛卡尔坐标,python,opencv,computer-vision,polar-coordinates,houghlines,Python,Opencv,Computer Vision,Polar Coordinates,Houghlines,为什么我们不能在Houghlines变换中使用笛卡尔坐标(x,y)而不是极坐标(r,θ)?有人能澄清吗?据我所知(引自维基百科): Hough变换最简单的情况是检测直线。通常,直线y=mx+b可以表示为参数空间中的点(b,m)。然而,垂直线带来了一个问题。它们将产生坡度参数m的无界值。因此,出于计算原因,Duda和Hart建议使用黑森范式r=x*cos(θ)+y*sin(θ),其中r是从原点到直线上最近点的距离,theta是x轴与连接原点和最近点的线之间的角度 通过查找曲线之间的交点数量可以检测
(b,m)
。然而,垂直线带来了一个问题。它们将产生坡度参数m
的无界值。因此,出于计算原因,Duda和Hart建议使用黑森范式r=x*cos(θ)+y*sin(θ)
,其中r
是从原点到直线上最近点的距离,theta
是x
轴与连接原点和最近点的线之间的角度
通过查找曲线之间的交点数量可以检测到一条直线。相交的曲线越多,表示该交点所代表的直线具有更多的点。一般来说,我们可以定义检测线路所需的最小交点数的阈值。
这就是Hough线变换的作用。它跟踪图像中每个点的曲线之间的交点。如果交叉点的数量高于某个阈值,则它将其声明为具有交叉点的参数
(θ,r(θ))
的直线。(OpenCV文档)因为它更高效?也许他们应该添加一个转换器:)你将如何使用笛卡尔坐标来分析一条直线?“Hough空间”是一个参数空间,一个由你想要检测的形状的参数组成的空间。基本上是因为HoughLines变换就是这样设计的,在cartessian中使用它们是没有意义的(整个想法是将由许多像素组成的直线编码或参数化为两个变量rho和θ)