【一】Hough Transform
- 检测图像中是否有 特定几何形状 的物体
【二】逐步推导演示
- 【1】笛卡尔坐标系中一条线,霍夫空间一个点
- 在笛卡尔坐标系中,我们可以 y = mx + b 通过绘制 y 对 x 来表示直线
- 但是,我们也可以通过绘制 b 对 m 来将此线表示为霍夫空间中的单个点
- 例如,具有等式的线 y = 2x + 1 可以表示为(2,1)霍夫空间,这里画错了,m 和 b 对调
![](https://i-blog.csdnimg.cn/blog_migrate/a10d38bce2ec2940647aa42dd98129cd.png)
- 【2】笛卡尔坐标系中一个点,霍夫空间一条线
- 笛卡尔坐标系中一个点,有许多可能的线可以通过这一点,每条线具有不同的参数 m 和 b
- 这些不同的参数点,会在霍夫空间中连成一条直线
![](https://i-blog.csdnimg.cn/blog_migrate/efbf5edde85d6e6806f7ee833ddef211.png)
- 【3】霍夫空间确定直线方程
- 每当我们在笛卡尔坐标系中看到一系列点并知道这些点通过某条线连接时
- 首先将笛卡尔坐标系中的每个点绘制到霍夫空间中的相应的线来找到该线的方程
- 然后找到霍夫空间的交点,这些交点表示贯穿系列中所有点的 m 和 b 值
![](https://i-blog.csdnimg.cn/blog_migrate/af1483afa5302ae93f33e917b9b42fff.png)
- 【4】极坐标
- 当线是垂直的,梯度是无穷大的,不能在霍夫空间中表示
- 使用 Polar 极坐标解决此问题
![](https://i-blog.csdnimg.cn/blog_migrate/6009689f32a92a6e57d7b1e7de189e71.png)
- 【5】结果说明
- 通常,在霍夫空间中相交的曲线越多意味着由该交点表示的线对应于更多的点
- 对于我们的实现,我们将在霍夫空间中定义最小阈值交叉点数以检测线
- 因此,霍夫变换基本上跟踪帧中每个点的霍夫空间交点
- 如果交点的数量超过给定的阈值,我们将识别具有相应 θ 和 r 参数的线
![](https://i-blog.csdnimg.cn/blog_migrate/a34cefa31206a8cd5b6d0c5d0f17d170.png)