资源描述:
《hough变换检测直线》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Hough变换检测直线实验报告一,实验要求用hough算法检测图像中的直线算法。使用这一算法来求一幅图像中的所有大于规定长度的直线段,设规定的长度为20点。二,Hough变换简介Hough变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问题转化为寻找参数空间中的峰值问题。图1Hough变换如上图所示,在图像空间,直线上一点转换到参数空间就是一条曲线,而且
2、,图像空间同一直线上的点转换到参数空间的曲线一定相交于一点,即参数空间各曲线的交点对应着图像空间的一条直线,这样,检测参数空间曲线交点就检测出了图像空间的直线。三,实验过程和结果分析用Hough变换之前,首先要对图像进行边缘检测的处理,也即霍夫线变换的直接输入只能是边缘二值图像。本实验基于VS2008和OPENCV来实现。实验的步骤如下:(1)读入图像,转换成灰度图像OPENCV中用cvLoadImage函数来读取图像,函数原型:IplImage*cvLoadImage(constchar*file
3、name,intflags=CV_LOAD_IMAGE_COLOR);filename:要被读入的文件的文件名(包括后缀);flags:指定读入图像的颜色和深度;例如:cvLoadImage(filename,-1);//默认读取图像的原通道数cvLoadImage(filename,0);//强制转化读取图像为灰度图cvLoadImage(filename,1);//读取彩色图(2)进行边缘检测otherstaffoftheCentre.Duringthewar,Zhuwastransferred
4、backtoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialCommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterpri
5、sesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypartyCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,Ministersand本实验选择Canny算子的边缘检测,OPENCV中用Canny函数来进行Canny算子的边缘检测,函数原型为:voidcvCanny(constCvArr*image,CvArr*edges,doublethreshold1,d
6、oublethreshold2,intaperture_size=3);image:单通道输入图像edges:单通道存储边缘的输出图像threshold1:第一个阈值threshold2:第二个阈值aperture_size:算子内核大小3,对检测出的二值图像进行Hough变换OPENCV中用cvHoughLines2函数来进行Hough变换,函数原型为:CvSeq*cvHonghLines2(CvArr*image,void*line_storage,intmehtod,doublerho,dou
7、bletheta,intthreshold,doubleparam1=0,doubleparam2=0);Image:输入8-比特、单通道(二值)图像line_storage:检测到的线段存储仓Method:Hough变换变量,是下面变量的其中之一CV_HOUGH_STANDARD——传统或标准Hough变换CV_HOUGH_PROBABILISTIC——概率Hough变换CV_HOUGH_MULTI_SCALE——传统Hough变换多尺度变种Rho:以象素为单位的距离精度,一般取1Theta:以弧
8、度为单位角度精度,一般取CV_PI/180Threshold:阈值参数,当在一条直线上的像素点数大于threshold时,才将该直线作为检测结果显示出来,该值越大,得到直线越少。本实验中将该值设为20即可param1/param2:对传统Hough变换,不使用(0).(4)将检测出的直线画在原图上在OPENCV中显示图像用cvShowImage函数,函数原型为:voidcvShowImage(constchar*name,constCvArr*image);Name: