资源简介

最大类间方差法(OTSU)阈值分割的matlab实现

资源截图

代码片段和文件信息

%图像OTSU阈值分割的程序设计
clear;  %清除系统变量
close all; %关闭所有打开的窗口
[name path]=uigetfile(‘*.jpg‘); %出现打开文件界面 
filename=[path name];           %获取文件的路径与文件名
I=rgb2gray(imread(filename)); %  读图并转化为黑白图片
%以下为阈值计算程序
Ni=imhist(I);%计算直方图数组
N=sum(Ni);   %总像素点个数
delamax=0;   %类间方差最大值
threshold=0; %阈值
for k=2:255
  u=dot([0:255]Ni/N); %图像的总平均灰度级
  w0=sum(Ni(1:k)/N);  %C0类像素所占面积的比例
  w1=1-w0;            %C1类像素所占面积的比例
  if w0==0|w0==1      %当w0为1或0时提前结束本次循环
     continue 
  end
  u0=dot([0:k-1]Ni(1:k)/N)/w0;   %C0类像素的平均灰度
  u1=dot([k:255]Ni(k+1:256)/N)/w1; %C1类像素的平均灰度
    dela(k)=w0*(u-u0)^2+w1*(u-u1)^2;  %类间方差公式
  %求出

评论

共有 条评论