数字图像处理Hough变换直线检测matlab实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理—Hough 变换直线检测,matlab 实现实验八Hough 变换直线检测
一、实验目的
理解Hough变换的原理,了解其应用;掌握利用Hough变换进行直线检测的处理过程
及编程方法。
二、实验内容
利用Hough变换检测直线通常先进行边缘检测,得到只包含边缘的二值图像。再通过
Hough变换,在参数空间检测图像共线点的数量得到直线参数,从而实现直线检测。
1、读入图像(图像需有直线或直线性边缘) 2 、进行图像边缘,得到二值图像
3、实现Hough变换,检测出图像中的直线方程
4、输出结果
三、实验要求
1、编写代码,完成各项实验内容
2、总结实验中遇到问题及解决方案,书写实验报告
%Hougl变换
clc;clear;close all f=imread('l in e.bmp'); % 若是彩色图片转灰度化if len gth(size (f) )>2
f=rgb2gray(f);
end
%
figure(1)
subplot(121);imshow(f); % 利用edge函数进行边缘检测
j=edge(f,'Sobel');
subplot(122);imshow(j); [row,col]=size(j);
pi nfan g=ro un d((row*row+col*colF0.5);
A=zeros(2*pinfang,180);
for m=1:row
for n=1:col
if j(m,n)>0
for thera=1:180
r=thera/180*pi; % 角度转弧度
rho=round(m*cos(r)+n*sin(r));% p =cos 0 +sin 0
rho=rho+pinfang+1;%-l:l 转换到1:2l+1
A(rho,thera)=A(rho,thera)+1;
end
end
end
end
[rho,the⑻二仙d(A>40);% 交点超过60条线的点,ma,na为参数空间的坐标点nma=length(rho);
for i=1:nma
hold on
m=1:row;
%rho=ma(i)-1;
r=thera(i)/180*pi;
n=(rho(i)-pinfang-m*cos(r))/(0.00001+sin(r));
end