hough变换提取直线(Matlab实现)

上传人:细水****9 文档编号:57808725 上传时间:2022-02-24 格式:DOCX 页数:5 大小:290.11KB
收藏 版权申诉 举报 下载
hough变换提取直线(Matlab实现)_第1页
第1页 / 共5页
hough变换提取直线(Matlab实现)_第2页
第2页 / 共5页
hough变换提取直线(Matlab实现)_第3页
第3页 / 共5页
资源描述:

《hough变换提取直线(Matlab实现)》由会员分享,可在线阅读,更多相关《hough变换提取直线(Matlab实现)(5页珍藏版)》请在装配图网上搜索。

1、Hough变换提取直线一、实验目标实现用Hough变换检测直线的算法二、实验内容1、读入图像选取有较多直线及部分曲线以作对比的图像作为实验素材,这里我们必须使用彩色图像(有些看似灰度图像的实际属性也是彩色图像),原因下面有详解。2、检测图像边缘如果一个像素落在图像中某一个物体的边界上,那么它的邻域将成为一个灰度级变化的带。对这种变化最有用的两个特征是灰度的变化率和方向,他们分别用梯度向量的幅度和方向来表示。 边缘检测算子检查每个像素的邻域并对灰度变化率进行量化,通常也包括方向的确定。有若干种算子可以使用,大多数是基于方向导数掩模求卷积的方法。如Roberts算子,Sobel算子 ,Prewit

2、t算子,Log算子等。这里采用Log算子提取图像边缘,再用均值滤波去除边缘图像噪声。3、实现Houg变换,检测出图像中的直线 Hough变换是一种利用图像的全局特征将特定形状的边缘连接起来,形成连续平滑边缘的一种方法。它通过将源图像上的点影射到用于累加的参数空间,实现对已知解析式曲线的识别。 这里先对边缘图像进行二值化处理,然后再用hough变换提取直线,最后用红色标记之。因为处理过程中需使用灰度图像,但最后无法给灰度图像赋颜色(会出错或效果不好),只能给彩色图像赋颜色,故最初输入时请使用彩色图像。4、Matlab代码如下:f=imread(3.png);%读入彩色图像,注意不能使用灰度图像o

3、=f; %保留彩色原图f=rgb2gray(f);%将彩色图像转换为灰度图像,f=im2double(f);figure();subplot(2,2,1);imshow(o);title(原图);m,n=size(f);%得到图像矩阵行数m,列数nfor i=3:m-2 for j=3:n-2%处理领域较大,所以从图像(3,3)开始,在(m-2,n-2)结束 l(i,j)=-f(i-2,j)-f(i-1,j-1)-2*f(i-1,j)-f(i-1,j+1)-f(i,j-2)-2*f(i,j-1)+16*f(i,j)-2*f(i,j+1)-f(i,j+2)-f(i+1,j-1)-2*f(i+1,

4、j)-f(i+1,j+1)-f(i+2,j);%LoG算子 endendsubplot(2,2,2);imshow(l);title(LoG算子提取图像边缘);m,n=size(l);for i=2:m-1 for j=2:n-1 y(i,j)=l(i-1,j-1)+l(i-1,j)+l(i-1,j+1)+l(i,j-1)+l(i,j)+l(i,j+1)+l(i+1,j-1)+l(i+1,j)+l(i+1,j+1); y(i,j)=y(i,j)/9; %LoG算子提取边缘后,对结果进行均值滤波以去除噪声,为下一步hough变换提取直线作准备 endendsubplot(2,2,3);imsho

5、w(y);title(均值滤波器处理后)q=im2uint8(y);m,n=size(q);for i=1:m for j=1:n if q(i,j)80; %设置二值化的阈值为80 q(i,j)=255; %对图像进行二值化处理,使图像边缘更加突出清晰 else q(i,j)=0; end endendsubplot(2,2,4);imshow(q);title(二值化处理后); %Hough变换检测直线,使用(a,p)参数空间,a0,180,p0,2da=180; %角度的值为0到180度d=round(sqrt(m2+n2); %图像对角线长度为p的最大值s=zeros(a,2*d);

6、%存储每个(a,p)个数z=cell(a,2*d); %用元胞存储每个被检测的点的坐标for i=1:m for j=1:n%遍历图像每个点 if(q(i,j)=255)%只检测图像边缘的白点,其余点不检测 for k=1:a p = round(i*cos(pi*k/180)+j*sin(pi*k/180);%对每个点从1到180度遍历一遍,取得经过该点的所有直线的p值(取整) if(p 0)%若p大于0,则将点存储在(d,2d)空间 s(k,d+p)=s(k,d+p)+1;%(a,p)相应的累加器单元加一 zk,d+p=zk,d+p,i,j;%存储点坐标 else ap=abs(p)+1;

7、%若p小于0,则将点存储在(0,d)空间 s(k,ap)=s(k,ap)+1;%(a,p)相应的累加器单元加一 zk,ap=zk,ap,i,j;%存储点坐标 end end end endendfor i=1:a for j=1:d*2 %检查每个累加器单元中存储数量 if(s(i,j) 70) %将提取直线的阈值设为70 lp=zi,j;%提取对应点坐标 for k=1:s(i,j)%对满足阈值条件的累加器单元中(a,p)对应的所有点进行操作 o(lp(1,k),lp(2,k),1)=255; %每个点R分量=255,G分量=0,B分量=0 o(lp(1,k),lp(2,k),2)=0; o(lp(1,k),lp(2,k),3)=0; %结果为在原图上对满足阈值要求的直线上的点赋红色 end end endendfigure,imshow(o);title(hough变换提取直线);5、实验结果附:两个参数的调节1.二值化图像的细节多少可以通过对二值化的阈值调节来控制,阈值越大,细节越少。2.最后提取直线的阈值越小,可被赋红色的直线的越多,但更多的无关细节也可能被赋红色;阈值越大,可被赋红色的直线的越少,同时无关细节也会减少。通过对这个两个参数的适当调节可使提取直线的效果更好。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!