首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >经典的Hough变换和多尺度的Hough变换有什么区别?

经典的Hough变换和多尺度的Hough变换有什么区别?
EN

Stack Overflow用户
提问于 2022-05-04 15:26:21
回答 1查看 187关注 0票数 1

我正在查看OpenCV的文档cv2.HoughLines(),文档中引用了一个多尺度的Hough变换。经典的Hough变换和多尺度的Hough变换有什么区别?

EN

回答 1

Stack Overflow用户

发布于 2022-06-01 05:44:18

首先,您需要了解Hough变换算法的一般工作原理。从你的问题上还不清楚你对它有多熟悉。

如有必要,我建议阅读以下内容:

  1. 算法的描述,引用自您在问题中提到的opencv文档:Hough变换
  2. OpenCV的Hough线变换教程。

简而言之,经典算法由以下元素组成(所有角度都以度表示,而不是仅为方便起见而以弧度表示):

  1. 一条线的参数是它与原点的垂直距离(ρ - rho),以及由这条垂线形成的角度(θ - theta)。
  2. rhotheta参数实际上决定了ρ和θ的分辨率。由于距离受图像对角线大小的限制,且角度为0.180,我们可以创建一个由距离和角度的所有组合组成的矩阵(根据分辨率)。这被称为accumulator. 例如:如果图像对角线为100,rho参数为20,我们将在矩阵中得到以下ρ值:0、20、40、60、80、100。角度也一样。累加器矩阵中的每个单元格表示一条潜在行(具有特定的ρ,θ)。
  3. 输入图像必须是二进制掩码。我们遍历所有的“亮”像素。每个像素可以属于多条线(根据不同的ρ和θ)。我们在累加器中增加对应于其中任何一行的每个单元格。这就像投票给一样。
  4. 最后,我们选择得票最高的行(取决于threshold)作为输出。

多尺度版本添加了以下内容,以形成一个迭代过程:

  1. srn参数不是对ρ应用单一分辨率,而是确定距离分辨率的除数。
  2. 类似地,stn参数不是对θ应用单一分辨率,而是确定角度分辨率的除数。
  3. 还有min_thetamax_theta参数可以限制我们跟踪的角度的范围。

一般来说,多尺度版本可以提供更好的结果(由于尝试更多的分辨率),而代价是计算量更大。

我还没有找到关于这个迭代过程的确切方式的正式文档。

但是从opencv源代码中的注释来看,似乎至少完成了两次迭代:一次粗( rhotheta),一次罚款( rho/srntheta/stn)。

我建议您尝试这两种方法,并在特定情况下比较结果、质量和处理时间。

请注意,也有可能出现的版本-请参阅cv::HoughLinesP

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72115574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档