解释霍夫变换
computer-vision
image-processing
4
0

我只是喜欢冒险,正在朝着计算机视觉迈出第一步。我试图自己实现霍夫变换,但我只是不了解整个情况。我阅读了维基百科的条目,甚至阅读了Richardard Duda和Peter Hart最初的“使用霍夫变换来检测图片中的线条和曲线”,但并没有帮助。

有人可以用更友好的语言帮我解释吗?

参考资料:
Stack Overflow
收藏
评论
共 4 个回答
高赞 时间 活跃

霍夫变换是一种找到最可能代表一条线(或一条圆或许多其他东西)的值的方法。

您给Hough变换输入线条的图片作为输入。此图片将包含两种类型的像素:像素是线条的一部分,而像素是背景的一部分。

对于线的每个像素,将计算所有可能的参数组合。例如,如果坐标(1,100)处的像素是线的一部分,则该像素可能是梯度(m)= 0且y轴截距(c)= 100的线的一部分。是m = 1的一部分,c = 99;或m = 2,c = 98;或m = 3,c = 97;等等。您可以求解线方程y = mx + c来找到所有可能的组合。

每个像素对可以解释它的每个参数(m和c)投一票。因此,您可以想象,如果一行中有1000个像素,则m和c的正确组合将获得1000票。

投票最多的m和c的组合将作为该行的参数返回。

收藏
评论

这是一个关于霍夫变换如何检测图像中线条的非常基本的视觉说明:

在此处输入图片说明

收藏
评论

在矩形坐标中考虑一条线是更常见的,即y = mx + b 。如Wikipedia文章所述,一条线也可以极性表示。霍夫变换利用了这种表示形式的改变(无论如何,对于线条来说。讨论也可以应用于圆,椭圆等)。

Hough变换的第一步是将图像缩小到一组边缘。 Canny边缘检测器是常见的选择。所得的边缘图像用作霍夫过程的输入。

总而言之,将边缘图像中的“点亮”像素转换为极坐标形式,即使用方向theta和距离r-代替xy来表示其位置。 (图像的中心通常用作此坐标更改的参考点。)

霍夫变换本质上是直方图。假设映射到相同的θ和r的边缘像素定义了图像中的一条线。为了计算出现的频率,将thetar离散化(划分为多个bin)。一旦所有边缘像素都已转换为极坐标形式,便对分档进行分析以确定原始图像中的线。

通常会查找N个最频繁的参数-或对参数设置阈值,以使计数小于n的计数被忽略。

我不确定这个答案是否比您最初提供的答案更好-您是否有坚持的特定观点?

收藏
评论

这是另一种观点(在电视节目Numbers的试验性情节中使用的一种观点):想象一下,早些时候在草坪上的某个地方有喷泉般的草坪洒水装置,在其周围洒出水滴。现在洒水喷头不见了,但滴仍然保留。想象一下,将每个液滴变成自己的喷头,然后在各个方向上向周围喷出液滴,因为液滴不知道它来自哪个方向。这将使大量的水稀薄地散布在地面上,除非会有一个地点,其中有大量的水一次从所有水滴中碰到。那是原始洒水器所在的地方。

线路检测的应用类似。图像中的每个点都是原始液滴之一。当它充当洒水器时,它会发送自己的液滴,标记可能穿过该点的所有线。大量次要液滴落在的地方代表通过大量图像点的直线的参数-VOILA!线路检测到!

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号