「图像处理」霍夫变换
霍夫变换(Hough Transform)
最近在学习图像分割的相关知识,提及到霍夫变换,参考教材《数字图像处理(第三版)》决定总结一下这个有用的方法
方法介绍
看图,霍夫变换回答了这样一个问题:哪一些点的集合可以被判断为组成了一条直线?
霍夫变换需要将xy坐标转换为ab坐标,为什么需要这样的转换呢?回答是这样的,因为在xy坐标上需要表示一条线时,需要两个参数(a和b)y=ax+b表示成功,但是在ab坐标中,表示一条线时,只需要一个点,a和b两个参数组成的点,就可以表示一条直线了
有了这样的操作之后能干什么呢?举一个例子,有一个点,我并不清楚它在图像中的哪一条直线上,这时候我只需要将这个点带入不同的线段中(其实就是不断改变a的值),计算出与之对应的b,这样就会以不同的a为投票条件,将未知的点进行投票,从投票结果来看,在一个范围内出现最多的点,很大程度上就属于同一条线了,分类的精度取决于投票器(1、2、3、4)的区域大小,这就是霍夫变换的基本操作。
还有一个小问题需要回答,为什么最后又要进行一次坐标变换呢?将ab坐标变换为三角函数坐标?是因为在空间图像中可能会有垂直的线段,意味着线段斜率可能无穷大,于是就不可能在ab坐标上表示出来,解决方法就是用这条直线的法线来表示这条直线,为了方便理解,可以借助圆来帮助大家理解,这条线相当于圆上某一点的切线,切线固定,则垂线固定
效果演示
霍夫变换不仅可以处理直线,也可以处理其他模型,只要知道了模型的数学公式,例如圆,就可以进行图片中的模型检测,不过模型中参数越多,设计出来的投票器(计算点在某一特定参数出现的次数)维度就越高。
这种变换在检测特定模型时,例如圆、直线、矩形抗噪能力优秀。