基于MATLAB的图像边缘提取并计算其角度和距离

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

MATLAB目的:检测下列图像的白色区域和红色区域的边缘,并计算其角度和距离。1)利用烟草包装纸、基准线以及传送带三者之间的特性,首先将高速相机拍摄到的图片进行红色通道分离。2)将通道分离后的图片进行二值化,得到二值图像3)将所得到的二值图像进行边缘检测4)将边缘检测后的图像先腐蚀运算,再进行膨胀运算,得到最终图像5)将图8最终得到的两条边界线使用MATLAB进行最小二乘法拟合,分别得到两条边界线的关系式,并使用数学方法计算出两条边界线的角度以及图像最左端的直线距离。此例中,计算得到的两边沿的偏离角大小为3.15°,两边沿最左端距离大小为303.51像素。clearclcimage=imread('Image.jpg');%读取图片imtool(image);%显示所读取的图片imager=image(:,:,1);%提取图片红色通道imtool(imager);BW=im2bw(imager,0.15);%二值化BW=~BW;imtool(BW);BW1=edge(BW,'canny',0.95);%检测边缘imtool(BW1);se1=strel('line',9,176);%腐蚀IM1=imerode(BW1,se1);imtool(IM1);se2=strel('line',60,176);%膨胀IM2=imdilate(IM1,se2);imtool(IM2);[a,b]=size(IM2);[h,w]=find(IM2==1);%筛选边界点,像素值为1yx=[h,w];yx_size=size(yx);%像素点坐标对数%数据筛选出上下边界线以供拟合p=1;q=1;fork=1:yx_size(1,1)if(yx(k,1)=600)yx1(p,:)=yx(k,:);p=p+1;elseyx2(q,:)=yx(k,:);q=q+1;endendyx1_c1=yx1(:,1);yx1_c2=yx1(:,2);yx2_c1=yx2(:,1);yx2_c2=yx2(:,2);%绘制分离边界的像素点plot(w,h,'r.')axis([0b0a]);holdon%绘制拟合的直线xy1=polyfit(yx1_c2,yx1_c1,1);plot(1:b,polyval(xy1,1:b),'b-')axis([0b0a]);holdonxy2=polyfit(yx2_c2,yx2_c1,1);plot(1:b,polyval(xy2,1:b),'y-')axis([0b0a]);holdon%计算两直线的夹角angle_xy=180*atan(abs((xy2(1,1)-xy1(1,1)))/(1+xy1(1,1)*xy2(1,1)))/pi%角度%计算最左端的距离,以像素点为单位dist_xy=polyval(xy1,0)-polyval(xy2,0)

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功