霍夫变换检测直线和平面

本文介绍霍夫变换Hough Transform,并介绍其在直线检测和三维平面检测的应用。

霍夫变换

霍夫空间

我们把一条直线y=kx+q变换为:q = -xk + y, 然后绘制出关于k和q坐标系下的方程,可以得到一个点。

image

相应的,q = -xk + y 这条直线也可以转换为点(x, y),这里的 q, k构成的坐标系为霍夫空间Hough Space

多点共线

对于在笛卡尔坐标系中多个点共线的情况,投影到霍夫空间,变为交于同一点的直线:
image

这里的交点(k, q),便是这几个点共线的方程y = kx + q。

极坐标系

在极坐标系下,通过将x, y的方程替换为ρ和θ,得到交于同一点的若干条曲线。
image

网格化

对于离散的点,在霍夫空间无法准确地交于同一个点,这时我们需要把霍夫空间的坐标系进行网格化,再对每个网格进投票,统计经过直线(曲线)最多的网格,视为交点。这个网格的坐标系下的平均值则为拟合直线方程的参数。

image

霍夫变换用于点云平面检测

对于3D点云,霍夫变换可以用来检验平面。论文The 3D Hough Transform for Plane Detection in Point Clouds:A Review and a new Accumulator Design [2011] 介绍了用3D霍夫变换检测平面的研究。

我们可以把3维平面的方程转换为极坐标,构建关于ø,θ和ρ的方程:
image

在三维坐标系下,点到霍夫的投影可以表示为三条曲面。对于三点共面,可以通过网格化霍夫空间,求得三条曲面交汇的交点,从而得到平面的方程:

image

posted @ 2022-07-05 21:11  Asp1rant  阅读(496)  评论(0编辑  收藏  举报