利用matlab进行图像检测--直线提取
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
H a r b i n I n s t i t u t e o f T e c h n o l o g y
图像工程导论
课程名称:图像工程导论
设计题目:《图像检测:直线提取》院系:
班级:
设计者:
学号:
哈尔滨工业大学教务处
图像工程导论任务书
二〇一五年柒月哈尔滨工业大学
一、课题详细描述:
提取图像中所有长度>8,<80像素的水平、垂直和对角直线。
二、课题设计思路:
读取图片后将其转化为灰度图后记为二值图像,对其进行边缘检测后通过霍夫变换检测直线,并将符合像素要求的水平、垂直和对角直线绘制在屏幕上。
三、代码清单及注释
x=imread('D:2.jpg');%读取图片
BW=rgb2gray(x);%转化为灰度图
imshow(BW);
thresh=[0.01,0.17];
sigma=2; %定义高斯参数
f=edge(double(BW),'canny',thresh,sigma);%canny边缘检测
figure,imshow(f);
[H,T,R]=hough(f,'ThetaResolution',89,'RhoResolution',10); %霍夫变换
P=houghpeaks(H,400,'Threshold',80,'NHoodSize',[1,1]);
lines=houghlines(f,T,R,P,'FillGap',1,'Minlength',8);
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
len = norm(lines(k).point1 - lines(k).point2);
Len(k)=len
if ( len > 8& len < 80) %限定像素范围
plot(xy(:,1),-xy(:,2),'LineWidth',2,'color','Red'); %绘制图像
hold on;
end
end
四、代码运行结果及自评
所需处理的图片:
处理结果:
从图中可以看到本程序确是找到了满足要求的所有直线并将其呈现在了新的窗口中,完成了设计要求。
五、实验中所遇到的问题及解决方法
①在调试中最开始就由于实际操作经验不足,遇到了代码错误、路径错
误、图像失准等问题,在查阅相关资料以及咨询指导教师后问题便迎刃而解
了。
②本实验关于的降噪等图像处理方法多种多样,本实验组在不断的尝试
与失败之后最终选择了如上所示1的方案来解决问题。
③在开始实验测试时选取直线的精度以及准确性都不是很高,难免有遗
漏,但是在多次修改参数以及方案后最终得到了较满意的结果。
④实验初期由于经验不足、分工不明确导致合作效率低下、方案各有抵
触,但是在多次交流协商之后将实验方案和分工明确地确定了下来,使得合作更有了效果。
六、心得与体会
①通过本次课题实验,我们深切的认识到了图像检测处理技术的深刻意
义,亲身参与并体验到了图像工程乃至科学技术对于生活的广大变革及便利的意义。
②在合作与交流之中,我们体会到了高效率的分工合作对于生产科研的
重大促进意义。
③本次课题我们运用了多方面的知识,大范围地查阅资料、咨询达者,
感受到了自己动手操作实践的乐趣、成功的喜悦以及多种方式学习的能力和方法。