• 大小: 847B
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: 其他
  • 标签: otsu  

资源简介

数字图像处理大津法阈值分割

资源截图

代码片段和文件信息

function otsu=otsu(Im)
%大津法计算阈值
I=double(Im);
IMAX=max(max(I));
IMIN=min(min(I));
T=double(IMIN:IMAX);
ISIZE=size(I); %图像大小
muxSize=ISIZE(1)*ISIZE(2);

tic   %计时器
for i=1:length(T)
    %从最小灰度值到最大灰度值分别计算方差
    TK=T(1i);
    ifground=0;
    ibground=0;
    %定义前景和背景的灰度总和
    FgroundS=0;
    BgroundS=0;
    for j=1:ISIZE(1)
        for k=1:ISIZE(2)
            tmp=I(jk);
            if(tmp>=TK)
                ifground=ifground+1;
                FgroundS=FgroundS+double(tmp); %前景灰度值
            else
                %背景像素点的计算
                ibground=ibground+1;
                BgroundS=BgroundS+double(tmp);
            end
        end
    end
    %计算前景和背景的比例、平均灰度值
    %这里存在一个0分母的情况,导致警告,但不影响结果
    w0=ifground/muxSize;
    w1=ibground/muxSize;
    u0=FgroundS/ifground;
    u1=BgroundS/ibground;
    T(2i)=w0*w1*(u0-u1)*(u0-u1);
end
%遍历后寻找I第二行的最大值
oMax=max(T(2:));
%第二行方差的最大值,忽略NaN
idx=find(T(2:)>=oMax);
%获得算法运行时间
% disp(strcat(‘大津法时间:‘num2str(toc)));
%方差最大值所对应的序列号
T=uint8(T(1idx));
%显示最佳阈值
% disp(strcat(‘大津法计算阈值为:‘num2str(T)));
%从第一行取出灰度值作为赋值
otsu=T;
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1297  2016-12-08 21:09  otsu.m

评论

共有 条评论