Hough Transform(霍夫变换)

霍夫变换(Hough Transform)是一种经典的计算机视觉与图像处理技术,用于在图像中检测几何形状(尤其是直线、圆、椭圆等参数化曲线)。


🌟 一句话理解:

霍夫变换是将“图像空间中的点”转换为“参数空间中的曲线”,从而在参数空间中寻找形状的累积证据(投票)来检测图像中的几何形状。


📐 最经典应用:检测直线

在图像中一条直线通常由多个像素点构成。但这些点不一定连在一起,可能被噪声破坏。霍夫变换通过投票机制在参数空间中找出所有可能组成直线的点,从而鲁棒地检测图像中的直线。


🔢 直线的参数形式

在图像空间中,一条直线可以表示为:

y = mx + b (斜截式,但m→∞不适用于垂直线)

为了避免这种不稳定性,霍夫变换采用极坐标表示法

ρ = x·cosθ + y·sinθ
  • ρ:直线到原点的最短距离

  • θ:直线与 x 轴的夹角


🔁 基本原理

  1. 对图像进行边缘检测(如 Canny 边缘检测),得到一系列边缘像素点。

  2. 每个边缘点 (x, y) 在参数空间中“变成一条曲线”(ρ-θ 空间)。

  3. 多个边缘点的曲线在参数空间中“交汇”的地方(即投票数最多的点)表示可能存在一条真实直线。

  4. 最后在图像中绘制这些检测到的直线。


🌀 霍夫变换也可以检测其他形状

除了直线,霍夫变换还可以用于检测:

  • (参数:x₀, y₀, r)

  • 椭圆

  • 任意参数可描述的形状

不过维度越高,计算越复杂(称为高维霍夫空间),因此会采用优化版:

  • 累加器优化

  • 随机霍夫变换(Randomized Hough Transform)

  • 梯度导向霍夫变换(Gradient-based Hough)


📦 应用场景

  • 检测图像中的道路边缘、车道线

  • 检测建筑结构的边缘(如墙角、地板线)

  • 检测圆形物体(如交通标志、细胞)


🧠 总结一句话:

霍夫变换就是在“参数空间里投票找规律”,哪条线、哪个圆在图像中出现的证据最多,它就出现了。