⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 otsu_1d.m

📁 用于实现灰度图像阈值分割的一维otsu方法
💻 M
字号:
%最大化类间方差
clc
clear all
tic
b=imread('d:\image\a2.jpg','jpg'); 
%b=imread('d:\image\rice.tif','tif');
%b=imread('d:\image\airplane.tiff','tiff');
subplot(1,2,1);
imshow(b);
ng=zeros(1,256);
gray=255;
[m,l]=size(b);
for i=1:1:m
    for j=1:1:l
        temp=double(b(i,j));
        if temp<=gray
            gray=temp;
        end
        ng(temp+1)=ng(temp+1)+1;
    end
end
for i=1:1:256
    hg(i)=ng(i)/(m*l);
end
for t=gray:1:255  % t是灰度
    w0=0;
    u0=0;
    n0=0;
    w1=0;
    u1=0;
    n1=0;
    for i=0:1:t
        w0=w0+hg(i+1);
    end
    w1=1-w0;
    for i=0:1:t
        if w0~=0
           u0=u0+(i*hg(i+1)/w0);
       end
    end
    for i=t+1:1:255
        if w1~=0
           u1=u1+(i*hg(i+1)/w1);
       end
    end
    ut=w0*u0+w1*u1;
    n(t+1)=w0*(u0-ut)^2+w1*(u1-ut)^2;
    if t==gray
        Nm=n(t+1);
    end
    if n(t+1)>=Nm
        Nm=n(t+1);
        Topt=t;
    end
end
Topt
image1=ones(m,l);
for i=1:m
    for j=1:l
        if b(i,j)<=Topt
            image1(i,j)=0;
        end
    end
end
subplot(1,2,2);
imshow(image1);
toc        
    

⌨️ 快捷键说明

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