我正在查看OpenCV的文档的cv2.HoughLines(),文档中引用了一个多尺度的Hough变换。经典的Hough变换和多尺度的Hough变换有什么区别?
发布于 2022-06-01 05:44:18
首先,您需要了解Hough变换算法的一般工作原理。从你的问题上还不清楚你对它有多熟悉。
如有必要,我建议阅读以下内容:
简而言之,经典算法由以下元素组成(所有角度都以度表示,而不是仅为方便起见而以弧度表示):
rho和theta参数实际上决定了ρ和θ的分辨率。由于距离受图像对角线大小的限制,且角度为0.180,我们可以创建一个由距离和角度的所有组合组成的矩阵(根据分辨率)。这被称为accumulator.
例如:如果图像对角线为100,rho参数为20,我们将在矩阵中得到以下ρ值:0、20、40、60、80、100。角度也一样。累加器矩阵中的每个单元格表示一条潜在行(具有特定的ρ,θ)。threshold)作为输出。多尺度版本添加了以下内容,以形成一个迭代过程:
srn参数不是对ρ应用单一分辨率,而是确定距离分辨率的除数。stn参数不是对θ应用单一分辨率,而是确定角度分辨率的除数。min_theta和max_theta参数可以限制我们跟踪的角度的范围。一般来说,多尺度版本可以提供更好的结果(由于尝试更多的分辨率),而代价是计算量更大。
我还没有找到关于这个迭代过程的确切方式的正式文档。
但是从opencv源代码中的注释来看,似乎至少完成了两次迭代:一次粗( rho和theta),一次罚款( rho/srn和theta/stn)。
我建议您尝试这两种方法,并在特定情况下比较结果、质量和处理时间。
请注意,也有可能出现的版本-请参阅cv::HoughLinesP
https://stackoverflow.com/questions/72115574
复制相似问题