基于MATLAB的图像边缘提取并计算其角度和距离.pdf
文本预览下载声明
MATLAB
目的:检测下列图像的白色区域和红色区域的边缘,并计算其角度和距离。
1) 利用烟草包装纸、基准线以及传送带三者之间的特性,首先将高速相机拍摄到的图片进
行红色通道分离。
2) 将通道分离后的图片进行二值化,得到二值图像
3) 将所得到的二值图像进行边缘检测
4) 将边缘检测后的图像先腐蚀运算,再进行膨胀运算,得到最终图像
5) 将图8 最终得到的两条边界线使用MATLAB 进行最小二乘法拟合,分别得到两条边界线
的关系式,并使用数学方法计算出两条边界线的角度以及图像最左端的直线距离。
此例中,计算得到的两边沿的偏离角大小为 3.15°,两边沿最左端距离大小为 303.51
像素。
yx1_c2 = yx1(:,2);
clear clc yx2_c1 = yx2(:,1);
image=imread(Image.jpg); %读取图片 yx2_c2 = yx2(:,2);
imtool(image); %显示所读取
的图片 %绘制分离边界的像素点
imager = image(:,:,1); %提取图片红色 plot(w,h,r.)
通道 axis([0 b 0 a]);
imtool(imager); hold on
BW = im2bw(imager,0.15); %二值化
BW = ~BW; %绘制拟合的直线
imtool(BW); xy1=polyfit(yx1_c2,yx1_c1,1);
plot( 1:b,polyval(xy1,1:b),b-)
BW1 = edge(BW,canny,0.95); %检测边缘 axis([0 b 0 a]);
imtool(BW1); hold on
xy2=polyfit(yx2_c2,yx2_c1,1);
se1 = strel(line,9,176); %腐蚀 plot(1:b,polyval(xy2,1:b),y-)
IM1 = imerode(BW1,se1); axis([0 b 0 a]);
imtool(IM1); hold on
se2 = strel(line,60,176); %膨胀 %计算两直线的夹角
IM2 = imdilate(IM1,se2); angle_xy
显示全部