资源简介

利用matlab编程 实现对钢筋横截面图像的钢筋根数的自动统计 对于较少数目的钢筋,统计十分准确;对于数目较多,统计正确率在95%左右

资源截图

代码片段和文件信息

%读入图片,并灰度化
I=imread(‘钢筋根数统计.jpg‘);
figureimshow(I);
I=rgb2gray(I);
%计算图片的像素点个数
[mn]=size(I);
%存放各灰度级出现的次数
num=zeros(1256); 
%存放各灰度级的比率
p=zeros(1256); 
%双精度化
I=double(I); 
for i=1:m 
    for j=1:n 
       num(I(ij)+1)=num(I(ij)+1)+1;%统计各灰度级的像素点个数
    end
end
for i=1:256 
    p(i)=num(i)/(m*n);%计算各灰度级出现的比率 
end 
for i=2:256 
    if p(i)~=0 
        st=i+1;%实现寻找出现比率不为0的最小灰度值 
        break 
    end 
end 
for i=256:-1:1
    if p(i)~=0;
        nd=i-1;%实现找出出现比率不为0的最大灰度值
        break 
    end 
end

%进行otsu阈值分割
%以下程序实现利用最小方差和法找出门阈值 
w=inf;th=0; 
for t=st:nd%最小非零比率灰度值到最大非零比率灰度值 
    qt1=0;qt2=0;%前景后景像素点比率 
    u1=0;u2=0;%前景后景均值 
    v1=0;v2=0;
    for i=1:t 
        qt1=qt1+p(i); 
    end 
    for i=1:t 
        u1=u1+i*p(i)/qt1; 
    end 
    for i=1:t 
        v1=v1+((i-u1)^2)*p(i)/qt1; 
    end 
    for i=t+1:256 
        qt2=qt2+p(i); 
    end 
    for i=t+1:256 
        u2=u2+i*p(i)/qt2; 
    end 
    for i=t+1:256 
        v2=v2+((i-u2)^2)*p(i)/qt2; 

评论

共有 条评论