我最近开始了一门简历课程,正在学习旧的家庭作业(目前的作业尚未发布)。我已经实现了一个Hough线函数,我循环通过每个点,如果它是一条边,那么我循环通过0-180(或-90到90)θ值,然后计算ρ,最后存储在一个数组中。
当我尝试从极坐标转换回来时,我可以找到一个X,Y对(使用rho*sin(θ)和rho*cos(θ)),但是我不明白如何将其转换为笛卡尔空间中的线。要拥有一条线,您需要2个点或一个点和一个方向(当然是假设射线)
我只是明白重点在哪里。
我做了一些搜索,但似乎找不到答案,人们往往会说,polar告诉你x,然后bam你有一条笛卡尔线,但我似乎错过了“bam”所在的连接。
我的意思在这里描述;解释霍夫变换
还有极坐标中的向量/线,有人问我如何从极坐标中画一条线,答案很好,这里是x和y。但我从来没有提到过其他的解决方案。
这条线是否与y=mx b有关,其中m是θ,b是ρ?
如果不是,我如何转换回笛卡尔空间中的一条线。
编辑:在回顾了Sunreef的答案后,并尝试将y转换为它自己的一侧,我也发现了这个答案:如何将坐标从hough转换(rho,θ)转换回图像(x, y)?
看来我想找的是这个
m=-cotθ
c=p*cosecθ
编辑#2我在网上找到了其他一些例子。基本上是的,我需要ρ*sin(θ)和ρ*cos(θ)
另一个让我困惑的地方是我需要转换成弧度,一旦我这样做了,我就开始得到好的结果。
摘自维基百科:
在点(r0,ɣ)垂直穿过径向线的非径向线具有以下等式:r(Д)=r0*秒(Д-ɣ)。
如果我假设你的线的坐标是和r0,那么你可以像这样重写这个等式:
r(Д)*cos(Д)*cos(ɣ)r(Д)*sin(Д)*sin(ɣ)-r0=0
我们知道,当将极坐标转换为笛卡尔坐标时,如果我们在极平面上有一个点P(r,),那么它在笛卡尔平面上的坐标将是:
x=r*cos(Д)
y=r*sin(Д)
因此,上面的方程变成直线方程,如下所示:
x*cos(ɣ)y*sin(ɣ)-r0=0
这是笛卡尔坐标系中直线的方程。
(如果你看到一些错误,请告诉我,我很快就做到了)
你是对的,你可以在直线上得到一些基点
(X0, Y0) = (rho * cos(theta), rho * sin(theta))
你可以找到(单位)垂直于法线的方向向量:
(dx, dy) = ( -sin(theta), cos(theta))
可以通过使用类的方法应用霍夫变换技术来检测给定图像的形状。以下是此方法的语法。 该方法接受以下参数 - image - 表示此操作的源(输入图像)的对象。 lines - 类的一个对象,用于存储存储线的参数的向量。 rho - 类型为的变量,以像素为单位表示参数的分辨率。 theta - 类型为的变量,表示以弧度表示的参数的分辨率。 threshold - 一个整数类型的变量,表示“检测”一条直线
目标 在这一章当中, 我们将了解霍夫变换的概念。 我们将看到如何使用它来检测图像中的线条。 我们将看到以下函数:cv.HoughLines(),cv.HoughLinesP() 理论 如果可以用数学形式表示形状,则霍夫变换是一种检测任何形状的流行技术。即使形状有些破损或变形,也可以检测出形状。我们将看到它如何作用于一条线。 一条线可以表示为$y = mx + c$或以参数形式表示为$\rho=xc
目标 我们将理解霍夫变换的概念。 我们将看到如何使用它来检测图像中的线条。 我们将看到以下函数:cv2.HoughLines(),cv2.HoughLinesP() 理论基础 霍夫变换是一种用来检测形状的流行的技术,如果你能以数学形式来表示这种形状的话。它可以检测到形状,即使它被破坏或扭曲了一点。我们将看到它是如何检测出一条线。 一条线可以表示为 $y = mx+c$,或以参数方程表示,$\rho
假设我有下图中显示的线条,以极坐标格式(rho和θ)表示。这些线条是OpenCV的HoughLines函数经过一些后处理后的输出。(抱歉,我还不允许嵌入图像。) 我想做的是,给定任何一条线,找出与该线垂直的所有线,如下面的第二幅图所示。 我知道如何使用笛卡尔线来实现这一点,但我很难理解ρ和θ的性质,这两条线必须是垂直的,尽管我至少从根本上理解了极线是如何工作的。抱歉,如果这是基本的东西,但我在网上
目标 在这一章当中, 我们将学习使用霍夫变换来查找图像中的圆。 我们将看到这些函数:cv2.HoughCircles() 理论基础 一个圆在数学上可以表示为 $(x-x{center})^2 + (y - y{center})^2 = r^2$ 其中 $(x{center},y{center})$ 是圆的中心,$ r $ 是圆的半径。从等式中可以看出我们有3个参数,所以我们需要一个三维累加器来进行
学习目标 在本章中, 我们将学习使用霍夫变换来查找图像中的圆。 我们将看到以下函数:cv.HoughCircles() 理论 圆在数学上表示为$(x-x{center})^2+(y-y{center})^2 = r^2$,其中$(x{center},y{center})$是圆的中心,$r$是圆的半径。从等式中,我们可以看到我们有3个参数,因此我们需要3D累加器进行霍夫变换,这将非常低效。因此,Op