霍夫变换(Hough Transform)的原理以及代码实现
第一次在博客上写技术文章总结一下最近所做的,还希望大家多多批评指正。
霍夫变换是一种常用的图像算法,在线状物和圆形物检测等应用中具有很重要的意义。特别地,Hough变换能够较好的克服目标被部分遮挡的情况。因此,在图像检测应用场合中,霍夫变换具有重要的意义。本文首先介绍霍夫变换的基本思想,然后结合matlab代码谈谈具体应用方法,最后给出Hough变换的C++代码并针对检测应用中常常要求的实时性给出一些优化策略。
一、霍夫变换的基本思想
在计算机中,图像一般被表示为二维矩阵 I I I。图像中像素 I ( x , y ) I(x,y) I(x,y)所反映的位置信息即图像像素的空间信息,而像素值则是该空间位置下亮度信息的反映。霍夫变换所针对的是图像中形状特征的检测,所用到的是图像的像素排列的空间信息。所以,霍夫变换输入的图像要求为二值图像(仅反映图像中待检测的感兴趣像素集),一般为阈值变换或边缘检测算子处理后的输出。
下面以霍夫直线检测为例谈谈霍夫变换的基本思想。如图1所示,在图像 I I I中通过像素 I ( x , y ) I(x,y) I(x,y