[Medical Image Processing] 2. GrayScale Histogram and Threshold-【Isodata Algorithm】

1.Histogram:

图像灰度分析。以及图像二值化的基础。

1.1特点:

丢失了所有的空间信息。(只给出了图像中同灰度像素点的分布)

1.2灰度直方图与图像面积的关系:

对灰度直方图进行积分即可。

1.3用途:

分析图像中的灰度变化,最终可以帮助我们确定图像二值化的最优值。

对于大多数灰度直方图,具有双峰性。一般称为图像的“前景”与图像的“背景”。


2.Binary Operation(二值化算法)

Isodata Algorithm:

%Isodata Algorithm
%对图像进行二值化处理,寻找最优阈值
%算法流程:
%step1:设定初始阈值T0;
%step2:根据阈值进行分割得R1、R2,计算R1区域平均灰度值avg1,R2区域平均灰度值avg2;
%step3:计算新的分割阈值T1=(avg1+avg2)/2; 
%      若|T0-T1|<e,执行step4,否则返回step2.
%step4:输出图像
%%%%%%author:沈春旭
clc;clear all;
I=imread('chunxu.jpg');
figure(1);imshow(I);%colorful
II=rgb2gray(I);%colorful to gray
figure(2);imhist(II);
II=double(II);
%%%%Binary Threshold%%%%
[x,y]=size(II);
Global_mean=mean(mean(II));%初始设定的分割阈值
T0=Global_mean;
T1=0;
while(abs(T0-T1)>0.01)
    T1=T0;%把最新的阈值送给T1方便分割
    sum_R0=0;count0=0;
    sum_R1=0;count1=0;
    for i=1:1:x
        for j=1:1:y
            if( II(i,j)<=T1 ) 
                count0=count0+1;
                sum_R0=sum_R0+II(i,j);
            end
            if ( II(i,j)>T1) 
                count1=count1+1;
                sum_R1=sum_R1+II(i,j);
            end
        end
    end
    R0_mean=sum_R0/count0;
    R1_mean=sum_R1/count1; 
    %新生成的阈值赋给T0,与上次的分割与上次的分割阈值作比较。
    T0=(R0_mean+R1_mean)/2;%生成新得分割阈值
end
%利用T0进行图像二值化处理
for i=1:1:x
    for j=1:1:y
        if (II(i,j)>=T0) II(i,j)=255;
        end
        if (II(i,j)<T0) II(i,j)=0;
        end
    end
end
figure(3);imshow(II);

[Medical Image Processing] 2. GrayScale Histogram and Threshold-【Isodata Algorithm】_第1张图片 [Medical Image Processing] 2. GrayScale Histogram and Threshold-【Isodata Algorithm】_第2张图片 [Medical Image Processing] 2. GrayScale Histogram and Threshold-【Isodata Algorithm】_第3张图片

algorithm result:

#Global_mean=109.2339

#better_Threshold=101.1197




你可能感兴趣的:([Medical Image Processing] 2. GrayScale Histogram and Threshold-【Isodata Algorithm】)