图像处理之 _ 霍夫(Hough)变换

#图形图像

1. 用途

Hough 变换是一种在图像中寻找直线,圆及其它简单形状的方法.当我们对图像进行边缘检测之后,可用 Hough 变换识别图像中的简单形状.该转换也是对图像的一种抽象(由繁到简).下面介绍最基本 Hough 变换:寻找直线算法.

2. 思路

Hough 变换通过从直角坐标系到极坐标系的转换,将直角坐标系中的一条"直线",转换为极坐标系上的一个"点",落在这条"直线"上的像素点越多,这个极坐标中"点"的权越重,最终通过分析各个"点"的权重(局部最大值),获取重要线段.为区别直角坐标系中的点和极坐标系中的点,下面我们将直角坐标系中的点称为像素点.

3. 具体实现

图片.png

如图所示,假设我们有一个桃心图形,由多个红色像素点组成(红色为其有意义的像素点,即轮廓值),想提取出其中的直线.如果将各个像素点连成直线,直线将会有很多条,有些有意义,有些没意义.一般认为像素点足够多的直线更具意义,比如图中的绿色和蓝色的直线.在直角坐标系中,可以用斜截式 y=kx+b 来表示一条直线(k 是斜率,b 是 y 轴上的截距).转换到极坐标系 P(ρ,θ);ρ称为 P 点的极径(从原点到直线的垂直距离,上图中的虚线),θ称为 P 点的极角(极径与 x 轴的夹角).直角坐标系中的一条"直线",可转换为极坐标系上的一个"点"(上图中的黑圈),也就是说:把直角坐标系中的多个像素点,对应成极坐标系中的一个点.落在该"直线"上的像素点越多,极坐标系中的该点的权重越大,通过比较权重,取得重要直线.

4. 总结

Hough 变换通过映射,将一个形状识别问题,转换成了一个统计问题,在寻找直线的过程中,将落入一条直线上的点映射成了极径和极角(二元),在寻找圆的过程中,将落入圆弧上的点映射成了圆心点坐标 x,y 与半径 r 的组合(三元),通过映射简化了数据描述,映射后的数据也可以作为图像的一种抽象特征进行其它运算.可其扩展到识别更复杂的形状,加入颜色更一步判断,以及利用基本形状之间的关系,层层抽象,组合出更加复杂的功能.