使用 Matlab 进行霍夫变换

Posted

技术标签:

【中文标题】使用 Matlab 进行霍夫变换【英文标题】:Hough Transform with Matlab 【发布时间】:2015-05-03 11:53:11 【问题描述】:

我正在使用 Matlab 进行一些形状检测编码。我只是想看懂代码段

[H,theta,rho] = hough(BW)

我了解x,y 坐标到theta,rho 坐标系的转换。我无法理解的是hough(BW) 函数的输出格式。简单的问题是[H,theta,rho]here 是什么。最好能通过一个例子对Hough Transformation Matrix (H)有一个清晰的认识。

【问题讨论】:

【参考方案1】:

H、theta 和 rho

如果您不熟悉 Matlab-isms 以及 Hough 变换的工作原理,输出会有点混乱。

H 是 Hough 变换的累积结果表,维度为 rho-theta。因此,对于阈值图像中的每个像素,您计算 rho(距离)和 theta(角度)并将相应的单元格增加 1。

返回的 rho 和 theta 矩阵本质上是 H 矩阵的行和列标题。

一个简单的 Hough 实现

看看我的Naive Hough implementation for Matlab可能对你有帮助

【讨论】:

【参考方案2】:

请仔细阅读hough函数的文档。 这里有一个清晰的解释什么是Hthetarho

该函数返回H,即霍夫变换矩阵。theta(以度为单位)和rhorhotheta 值的数组,hough 在这些值上生成霍夫变换矩阵。

【讨论】:

以上是关于使用 Matlab 进行霍夫变换的主要内容,如果未能解决你的问题,请参考以下文章

matlab与opencv cpp中的霍夫变换

应用霍夫变换方法,用matlab语言编写相应的程序

使用霍夫变换进行矩形检测

matlab 霍夫变换(hough) 检测直线

Python OpenCV 霍夫(Hough Transform)直线变换检测原理,图像处理第 33 篇博客

HoughLinesP(霍夫变换直线检测)