gusucode.com > 利用遗传算法进行图像分割matlab源码程序 > segment_ga/ksw_qiongju.m

    


%%%利用最佳直方图熵法(KSW熵法)及穷举法实现灰度图像阈值分割
%%%主程序


%%初始部分,读取图像及计算相关信息

clear;
close all;
clc;

I=imread('rice_noise.tif');




hist=imhist(I);

total=0;
for i=0:255
    total=total+hist(i+1);
end
hist1=hist/total;

HT=0;
for i=0:255
    if hist1(i+1)==0
        temp=0;
    else
        temp=hist1(i+1)*log(1/hist1(i+1));
    end
    HT=HT+temp;
end


%%程序主干部分
t0=clock;

    for i=0:255
        adapt_value(i+1)=ksw(i,0,255,hist1,HT);
    end
    
    max_value=max(adapt_value);
    number=find(adapt_value==max_value);
    t_opt=number-1;

t1=clock;
search_time=etime(t1,t0);
    
%%阈值分割及显示部分

threshold_opt=t_opt/255;

I1=im2bw(I,threshold_opt);

disp('灰度图像阈值分割的效果如图所示:');
disp('源图为:Fifure No.1');
disp('最佳直方图熵法及穷举法阈值分割后的图像为:Fifure No.2');

figure(1);
imshow(I);
title('源图');

figure(2);
imshow(I1);
title('最佳直方图熵法及穷举法阈值分割后的图像');


disp('最佳直方图熵法及穷举法阈值为:');
disp(t_opt);

disp('最佳直方图熵法及穷举法阈值搜索所用时间(s):');
disp(search_time);

%%程序结束