机器视觉项目一:小孔判定与最短距识别 MATLAB版

这里只上传源代码吧:http://www.pudn.com/downloads386/sourcecode/graph/texture_mapping/detail1655723.html


clc
close all
clear all
%%%%%%%%%%%%%
I=imread('2.jpg');
figure;imshow(I);


I1=rgb2gray(I);
figure;imshow(I1);


I2=medfilt2(I1,[3,3]);
figure, imshow(I2);
se=strel('disk',1);     %采用半径为1的圆作为结构元素
I3=imopen(I2,se);
figure;imshow(I3);


I4=edge(I3,'sobel');
figure;imshow(I4);


[m,n]=size(I4)
num1=sum(sum(I4))
%%%%%%%%%%%
II=imread('5.jpg');
figure;imshow(II);


II1=rgb2gray(II);
figure;imshow(II1);


II2=medfilt2(II1,[3,3]);
figure, imshow(II2);
se=strel('disk',1);     %采用半径为1的圆作为结构元素
II3=imopen(II2,se);
figure;imshow(II3);


II4=edge(II3,'sobel');
figure;imshow(II4);
imwrite(II4,'test.bmp');


[m,n]=size(II4)
num2=sum(sum(II4))


if num1>num2
    disp('2.jpg 有孔')
else
    disp('5.jpg 有孔')
end

%求最窄处
clc;
close all;
clear all;
II=imread('2.jpg');
figure;imshow(II);


II1=rgb2gray(II);
figure;imshow(II1);


II2=medfilt2(II1,[3,3]);
figure, imshow(II2);


se=strel('disk',1);     %采用半径为1的圆作为结构元素
II3=imopen(II2,se);
figure;imshow(II3);


II4=edge(II3,'sobel');
figure;imshow(II4);
imwrite(II4,'test.bmp');


[m,n]=size(II4)
sum(m)=0;
for x=1:m
jy(n)=0;j=1;xx=0;
for y=1:n
    if II4(x,y)==1
        xx=1;
    end
    if xx==1
        jy(j)=y;
        j=j+1;
    end
end
jy=jy(1);


iy(n)=0;j=1;xx=0;
for y=n:-1:1
    if II4(x,y)==1
        xx=1;
    end
    if xx==1
        iy(j)=y;
        j=j+1;
    end
end
iy=iy(1);
sum(x)=iy-jy%扫描每一行的像素区间并显示
end


nmin=sum(20);
for x=1:m%求所有行中间的最小值,就是最短值
    if (sum(x)>10) && (sum(x)<100)
        %nmin=sum(1)
        if sum(x)<nmin
            nmin=sum(x)
        end
    end
end
nmin
disp('最短像素是')
length=nmin/28.346
disp('cm')





  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值