我只是喜欢冒险,正在迈出第一步迈向计算机视觉。我试图自己实现霍夫变换,但我只是不了解整个情况。我阅读了维基百科条目,甚至阅读了Richardard Duda和Peter Hart最初的“使用霍夫变换来检测图片中的线条和曲线”,但没有帮助。
有人可以用更友好的语言帮我解释吗?
最佳答案
考虑矩形坐标中的一条线更常见,即y = mx + b。如Wikipedia文章所述,一条线也可以极性表示。 Hough变换利用了这种表示形式的变化(无论如何,对于线条来说。讨论也可以应用于圆,椭圆等)。
Hough变换的第一步是将图像缩小到一组边缘。 Canny边缘检测器是常见的选择。所得的边缘图像用作霍夫过程的输入。
总而言之,将边缘图像中的“点亮”像素转换为极坐标形式,即,使用方向theta和距离r-代替x和y表示其位置。 (图像的中心通常用作此坐标更改的引用点。)
霍夫变换本质上是直方图。假定映射到相同的θ和r的边缘像素定义了图像中的一条线。为了计算出现的频率,将theta和r离散化(划分为多个bin)。一旦所有边缘像素都已转换为极坐标形式,便对分档进行分析以确定原始图像中的线。
通常会查找N个最频繁的参数-或对参数设置阈值,以使小于n的计数被忽略。
我不确定该答案是否比您最初提供的答案更好-您是否有坚持的特定观点?
关于image-processing - 解释霍夫变换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4709725/