二值化是图像处理中最为常见的处理方式,最近做完毕业设计,然后对图像中二值化处理方式进行整理和分类,主要包括:最大类间方法法(OSTU),迭代阈值法,P分位法,基于最小误差的全局阈值法,局部阈值法,全局阈值与局部阈值相结合的方法;以下使用matlab编写的算法。
1、最大类间方差法:
%二值化方法
%OSTU方法:最大类间方差法
function Img = OstuFun(I)
%二值化处理
level = graythresh(I);
Img = im2bw(I,level);
2、迭代阈值法:
%该函数采用迭代法求取阈值
function Out_img = IterateThresh(I)
I = double(I);
%求出图像的大小
[M,N] = size(I);
%选择初始阈值T
Z0 = max(max(I));
Z1 = min(min(I));
T = (Z0+Z1)/2;
%新的阈值初始赋值为零
TT = 0;
%预先指定范围
allow = 5;
d = abs(T-TT);
%计算大于阈值的灰度总值和小于阈值的灰度总值
S0 = 0;N0 = 0;
S1 = 0;N1 = 0;
%阈值迭代
while(d >= allow)
for i=1:M
for j=1:N
if(I(i,j) >= T)
S0 = S0+I(i,j);
N0 = N0+1;
else
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:M
for j=1:N
if(I(i,j)>=T)
Out_img(i,j) = 255;
else
Out_img(i,j) = 0;
end
end
end
3、P分位法
%该