matlab下对齿轮图片的参数提取
目标:基于matlab对下面图片的各个参数进行提取
图片预处理:
首先读入图片,二值化,用canny算子边缘提取,由于接下来要用与中心提取,细化边缘。
代码:
bw1=imread('gear.bmp'); %读取图片
subplot(2,2,1);
imshow(bw1);%展示读取到的图片
bw2=im2bw(bw1);%将图片二值化
subplot(2,2,2);
imshow(bw2);%展示二值化后的图片
bw3=edge(bw2,'canny');%对二值化的图片边缘提取
subplot(2,2,3);
imshow(bw3);%展示边缘提取后的图片
bw4 = bwmorph(bw3,'remove');%对边缘提取后的图片进行细化
subplot(2,2,4);
imshow(bw4);%展示细化提取后的图片
结果:
边缘追踪获得齿轮边缘以及内圆的像素值:
代码:
figure;%另开一个图像窗口验证边缘追踪的结果是否正确
imshow(bw4);
x1 = 314; y1 = 132;%由之前运行结果可以查bw4的数值,该点应该在齿轮边缘上,由该点开始边缘追踪
gearline = bwtraceboundary(bw4,[x1 y1],'E');%使用边缘追踪函数获得齿轮部分的坐标
hold on
plot(gearline(:,2),gearline(:,1),'g','LineWidth',2);%在图像中用绿线展示,验证是否提取成功
x2=250; y2=315;
circle = bwtraceboundary(bw4,[x2 y2],'NE');%使用边缘追踪函数获得内孔部分的坐标
hold on
plot(circle(:,2),ci