Hough 变换检测直线实验报告
一,实验要求
用 hough 算法检测图像中的直线算法。使用这一算法来求一幅图像中的所有
大于规定长度的直线段,设规定的长度为 20 点。
二,Hough 变换简介
Hough 变换是图像处理中从图像中识别几何形状的基本方法之一。 Hough
变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过
曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问
题转化为寻找参数空间中的峰值问题。
图 1 Hough
变换
如上图所
示,在图像空
间,直线上一
点转换到参数
空间就是一条曲线,而且,图像空间同一直线上的点转换到参数空间的曲线一
定相交于一点,即参数空间各曲线的交点对应着图像空间的一条直线,这样,
检测参数空间曲线交点就检测出了图像空间的直线。
三,实验过程和结果分析
用 Hough 变换之前, 首先要对图像进行边缘检测的处理,也即霍夫线变换
的直接输入只能是边缘二值图像。本实验基于 VS2008 和 OPENCV 来实现。实
验的步骤如下:
(1)读入图像,转换成灰度图像
OPENCV 中用 cvLoadImage 函数来读取图像,函数原型:IplImage*
cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );
filename :要被读入的文件的文件名(包括后缀);
flags :指定读入图像的颜色和深度;
例如:cvLoadImage( filename, -1 ); //默认读取图像的原通道数
cvLoadImage( filename, 0 ); //强制转化读取图像为灰度图
cvLoadImage( filename, 1 ); //读取彩色图
(2)进行边缘检测
本实验选择 Canny 算子的边缘检测,OPENCV 中用 Canny 函数来进行 Canny 算
子的边缘检测,函数原型为:void cvCanny( const CvArr* image, CvArr* edges,
double threshold1, double threshold2, int aperture_size=3 );
image:单通道输入图像
edges:单通道存储边缘的输出图像
threshold1 :第一个阈值
threshold2 :第二个阈值