Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 霍夫线中的笛卡尔坐标_Python_Opencv_Computer Vision_Polar Coordinates_Houghlines - Fatal编程技术网

Python 霍夫线中的笛卡尔坐标

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轴与连接原点和最近点的线之间的角度 通过查找曲线之间的交点数量可以检测

为什么我们不能在Houghlines变换中使用笛卡尔坐标(x,y)而不是极坐标(r,θ)?有人能澄清吗?

据我所知(引自维基百科):

Hough变换最简单的情况是检测直线。通常,直线y=mx+b可以表示为参数空间中的点
(b,m)
。然而,垂直线带来了一个问题。它们将产生坡度参数
m
的无界值。因此,出于计算原因,Duda和Hart建议使用黑森范式
r=x*cos(θ)+y*sin(θ)
,其中
r
是从原点到直线上最近点的距离,
theta
x
轴与连接原点和最近点的线之间的角度

通过查找曲线之间的交点数量可以检测到一条直线。相交的曲线越多,表示该交点所代表的直线具有更多的点。一般来说,我们可以定义检测线路所需的最小交点数的阈值。
这就是Hough线变换的作用。它跟踪图像中每个点的曲线之间的交点。如果交叉点的数量高于某个阈值,则它将其声明为具有交叉点的参数
(θ,r(θ))
的直线。(OpenCV文档)

因为它更高效?也许他们应该添加一个转换器:)你将如何使用笛卡尔坐标来分析一条直线?“Hough空间”是一个参数空间,一个由你想要检测的形状的参数组成的空间。基本上是因为HoughLines变换就是这样设计的,在cartessian中使用它们是没有意义的(整个想法是将由许多像素组成的直线编码或参数化为两个变量rho和θ)