图像分割是模式识别和计算机视觉中很重要的一个部分,基于阈值的图像分割具有简单、计算量小、效率高等特点,在实际图像处理中具有广泛的应用。经过国内外学者的广泛努力,已经提出了数以百计的阈值分割的算法,依据阈值分割算法本身所具有的准则或特性,可以分为迭代法、最大类间误差法(Otsu)、最大熵法等。本文主要介绍以上几种阈值分割方法。
(一)迭代法
迭代法是一种比较简单的阈值分割方法,其思想:设置阈值的初始值为图像灰度最大值和最小值的平均,根据阈值划分图像为目标和背景,并分别将其灰度值求和,计算目标和背景的平均灰度,并判断阈值是否等于目标和背景平均灰度的和的平均,若相等,则阈值即为其平均,否则,将阈值设置为目标和背景灰度平局值的和的一半,继续迭代,直至计算出阈值。
算法过程:
1、计算图像的最大灰度值Zmax、最小灰度值Zmin,求平均得到初始阈值tk。
zmax=max(max(I));zmin=min(min(I));
tk=(zmax+zmin)/2;
2、根据阈值划分图像为目标和背景,并分别计算其灰度均值
z1=foregroundsum/iforeground;
z2=foregroundsum/ibackground;
tktmp=uint8((z1+z2)/2);
3、判断tk是否等于tktmp,若相等则退出循环,阈值为tktmp,否则,将tktmp赋给tk,转2继续执行迭代。
参考代码:
close all;%关闭所有窗口
clear;%清除变量的状态数据
clc;%清除命令行
I=imread('rice.png');
subplot(1,2,1);
imshow(I);
title('1 rice的原图');
%迭代式阈值分割
zmax=max(max(I));%取出最大灰度值
zmin=min(min(I));%取出最小灰度值
tk=(zmax+zmin)/2;
bcal=1;
[m,n]=size(I);
while(bcal)
%定义