binary_thre.m

来自「这是本人下载和编译过的关于大津法二值化的matlab代码」· M 代码 · 共 41 行

M
41
字号
function seg = Binary_thre(I0)
I = double(I0);
[x,y] = size(I);
z_max = max(max(I));
z_min = min(min(I));
T = (z_max + z_min)/2;
TT = 0;
s0 = 0; n0 = 0;
s1 = 0; n1 = 0;
allow = 0.1;
d  = abs(T-TT);
count = 0;
while(d>=allow)
    count = count + 1;
    for i = 1 : x
        for j = 1 : y
            if(I(i,j)>=T)
                s0 = s0 + I(i,j);
                n0 = n0 + 1;
            end
            if(I(i,j)<T)
                s1 = s1 + I(i,j);
                n1 = n1 + 1;
            end
        end
    end
    T0 = s0/n0;
    T1 = s1/n1;
    TT = (T0 + T1)/2;
    d = abs(T-TT);
    T = TT;
end
for i = 1 : x
    for j = 1 : y
        if(I(i,j)>=T)
            seg(i,j) = 255;
        else
            seg(i,j) = 0;
        end
    end
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?