- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实现用Hough变换检测直线的算法
设计目的了解Hought变换的原理;实现用Hough变换检测直线的算法。设计要求找一幅或多幅(两幅以上)包含直线形状的图像,检测出图像中的多条直线; 分析并显示各直线的角度、长度。 设计原理Hough变换是利用图像全局特性而将边缘像素连接起来组成区域封闭边界的一种方法。在预先知道区域形状的条件下,利用Hough变换可以方便的得到边界曲线而将不连续的像素边缘点连接起来。Hough变换的主要优点是受噪声和曲线间断的影响小。利用Hough变换可以直接检测某些已知形状的目标,如直线。Hough变换的基本思想是点线的对偶性。一方面,图像空间中共线的点对应在参数空间里相交的线;另一方面,在参数空间中相交于同一个点的所有直线在图像空间里都有共线的点与之对应。因此Hough变换把在图像空间中的直线检测问题转换到参数空间中对点的检测问题,通过在参数空间里进行简单的累加统计完成检测任务。如果参数空间中使用直线方程,当图像空间直线斜率为无穷大时,会使累加器尺寸和变很大,从而使计算复杂度过大。为解决这一问题,采用直线极坐标方程,变换方程如下:(3-1)根据3-1公式,原图像空间中的点对应新参数空间中的一条正弦曲线,即点- 正弦曲线对偶。检测直线的具体过程就是让θ取遍可能的值,然后计算ρ的值,再根据θ和ρ的值对累加数组累加,从而得到共线点的个数。下面介绍θ和ρ取值范围的确定。设被检测的直线在第一象限,右上角坐标为( m, n) ,则第一象限中直线的位置情况如图3.1所示。图3.1 坐标位置由图3.1可见,当直线从与x轴重合处逆时针旋转时,θ的值开始由0°增大,直到180°,所以θ的取值范围为0°~180°。由直线极坐标方程可知: (3-1) (3-2)所以当且仅当x和y都达到最大且θ+Φ=±90°时(根据来调整θ的值) (3-3),即ρ取值范围。由θ、ρ的取值范围和它们的分辨率就可以确定累加器的大小,从而检测直线。利用Hough变换检测图像中直线的一般步骤应该首先对图像进行二值化,然后进行边缘检测,接着对边缘检测的结果作Hough变换,最后得到直线检测结果。为了简便,算法主要针对图像的Hough变换,所以输入图像采用二值边缘图,具体算法步骤如下:(1)读入一幅256级灰度图(虽然是256级灰度,但实际上仅有0和255两个灰度等级) 。(2)根据图像尺寸决定Hough变换累加器的大小并分配内存。(3)对图像作Hough变换,并将变换结果存入Hough变换累加器。(4)设定阈值,并根据阈值大小将Hough变换累加器中累加值小于阈值的点清零,即认为这些点并不对应图像域中的一条直线。(5)查找Hough变换累加器中累加值最大的点,记录该点并将其领域清零,继续查找并记录下一个累加值最大的点,直到累加器中所有的累加值都为零,记录的这些点即对应了检测到的图像中的直线。(6)根据检测到的点在图像域中绘出直线。4.设计内容4.1、读入图像选取有较多直线及部分曲线以作对比的图像作为实验素材,这里我们必须使用彩色图像(有些看似灰度图像的实际属性也是彩色图像),原因下面有详解。4.2、检测图像边缘如果一个像素落在图像中某一个物体的边界上,那么它的邻域将成为一个灰度级变化的带。对这种变化最有用的两个特征是灰度的变化率和方向,他们分别用梯度向量的幅度和方向来表示。 边缘检测算子检查每个像素的邻域并对灰度变化率进行量化,通常也包括方向的确定。有若干种算子可以使用,大多数是基于方向导数掩模求卷积的方法。如Roberts算子,Sobel算子 ,Prewitt算子,Log算子等。这里采用Log算子提取图像边缘,再用均值滤波去除边缘图像噪声。4.3、实现Houg变换,检测出图像中的直线Hough变换是一种利用图像的全局特征将特定形状的边缘连接起来,形成连续平滑边缘的一种方法。它通过将源图像上的点影射到用于累加的参数空间,实现对已知解析式曲线的识别。 这里先对边缘图像进行二值化处理,然后再用hough变换提取直线,最后用红色标记之。因为处理过程中需使用灰度图像,但最后无法给灰度图像赋颜色(会出错或效果不好),只能给彩色图像赋颜色,故最初输入时请使用彩色图像。5.程序代码clc;clear; %% 录入图像并显示f=imread(C:\Users\YeSonG\Documents\MATLAB\01.jpg);%读入彩色图像,注意不能使用灰度图像o=f; %保留彩色原图f=rgb2gray(f);%将彩色图像转换为灰度图像f=im2double(f); figure(); subplot(2,2,1);imshow(o);title(原图); %% 提取图像边缘[m,n]=size(f);%得到图像矩阵行数m,列数n fori=3:m-2
您可能关注的文档
- 2019-2020年沪教版四年下《四则运算》word教案3篇.doc
- 安徽商贸职业技术学院《推销实务》考试的试卷和答案.doc
- 河北省衡水中学2015-2016学年高二上学期期中生物试卷 含解析.doc
- 河北省衡水中学2015-2016学年高二下学期一调生物试卷 含解析.doc
- 衢州工商局营业执照年检网上申报流程最新版.doc
- 2019-2020年沪教版四年下《垂直》word教案2篇.doc
- 河北省衡水中学2015-2016学年高二下学期三调物理试卷 含解析.doc
- 河北省衡水中学2015-2016学年高二下学期三调物理试卷 含解析_1.doc
- 衡阳市石鼓区合江套片区综合开发.doc
- 河北省衡水中学2015-2016学年高二下学期二调数学试卷(文科) 含解析.doc
文档评论(0)