数字图像阈值自动分割的实现
数字图像阈值自动分割的实现
针对不同图像实现图像二值化的自动分割
一、摘要
本文主要讨论了数字图像阈值自动分割的实现和针对不同图像实现图像二值化的自动分割的课题。其中包括直方图阈值分割技术、类间方差阈值分割、迭代法阈值分割三种图像阈值分割的原理和基本内容,提出几种常用的图像阈值分割方法和比较几种方法的优缺点,更好地完成课题要求,并且从中获得一定的专业知识和技能。
关键词:阈值分割、二值化、直方图阈值分割技术、类间方差阈值分割、迭代法阈值分割
二、前言
本课题的主要目的是实现数字图像阈值自动分割,我们主要介绍三种有效的阈值分割方法:(1) 直方图阈值分割技术(2)类间方差阈值分割(3)迭代法阈值分割。我们分别介绍三种方法的原理、程序和运行结果,并结合结果进行优缺点的比较。
我们经过广泛的查取资料,注意到以下几个问题(1)编译的程序原理能够实现不同图像的自动阈值分割(2)对于彩色图像的阈值分割,要把彩色图像转化成灰度图像。
三、正文
3.1定义
图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。1998年以来,研究人员不断改进原有的图像分割方法并把其它学科的一些新理论和新方法用于图像分割,提出了不少新的分割方法。图像分割后提取出的目标可以用于图像语义识别,图像搜索等等领域。
图像阈值分割是一种广泛应用的分割技术,阈值分割法的特点是:适用于目标与背景灰度有较强对比的情况,重要的是背景或物体的灰度比较单一,而且总可以得到封闭且连通区域的边界。
阈值分割法基本原理是:通过设定不同的特征阈值,把图像像素点分为若干类.常用的特征包括:直接来自原始图像的灰度或彩色特征;由原始灰度或彩色值变换得到的特征.设原始图像为f(x,y),按照一定的准则在f(x,y)中找到特征值T,将图像分割为两个部分,分割后的图像为 :
若取: b0=0(黑),b1=1(白),即为我们通常所说的图像二值化。一般意义下,阈值运算可以看作是对图像中某点的灰度、该点的某种局部特性以及该点在图像中的位置的一种函数,这种阈值函数可记作:T(x,y,n(x,y),f(x,y))式中,f(x,y)是点(x,y)的灰度值;n(x,y)是点(x,y)的局部邻域特性.根据对T的不同约束,可以得到3种不同类型的阈值,即
(1)点相关的全局阈值T=T(f(x,y)):只与点的灰度值有关
(2)区域相关的全局阈值T=T(n(x,y),f(x,y)):与点的灰度值和该点的局部邻域特征有关
(3)局部阈值或动态阈值T=T(x,y,n(x,y),f(x,y)):与点的位置、该点的灰度值和该点邻域特征有关
本文对三种阈值分割技术进行综述:
(1)直方图阈值分割技术
(2)类间方差阈值分割
(3)迭代法阈值分割
3.2设计目的:
图像分割的目的是把图像空间分成一些有意义的区域。例如对于安全监控图像来说,人脸的分割很重要。研究图像分割可以以逐个的像素为基础,也可以利用规定领域中的图像信息区分割。
阈值分割是一种利用图像中要提取的目标物与其背景在灰度特性上的差异,把图像视为具有不同灰度级的两类区域(目标和背景)的组合,选取一个合适的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生对应的二值图像。图像分割可以压缩数据,简化其后的分析与处理步骤,在很多图像处理系统中都是必不可少的一个环节。
3.3设计方案(思路):
阈值分割图像的基本原理描述如下:
式中,Z为阈值,是图像f(x,y)灰度级范围内的任一个灰度级集合,Z属于[Z1,Zk],Z1,Zk为任意选出来的目标和背景灰度级。可见从复杂背景中分辨出目标并将其形状完整地提取出来,预知的选择是阈值分割技术的关键,迄今为止还没有一种对所有图像都能有效分割的阈值选取方法。我们主要使用三种常用的阈值选取方法:直方图阈值分割法和类间方差阈值分割法以及迭代阈值分割法。
3.4设计内容:
阈值分割方法比较
3.4.1基于点的全局阈值方法
基于点的全局阈值算法与其他几大类方法相比,算法时间复杂度较小,易于实现,适合应用于在线实时图像处理系统。
3.4.2基于区域的全局阈值方法
对一幅图像而言,不同的区域,比如说目标区域或背景区域,同一区域内的象素,在位置和灰度级上同时具有较强的一致性和相关性。
3.4.3局部阈值法和多阈值法
局部阈值(动态阈值)当图像中有如下一些情况:有阴影,照度不均匀,各处的
对比度不同,突发噪声,背景灰度变化等,如果只用一个固定的全局阈值对整幅图像进行分割,则由于不能兼顾图像各处的情况而使分割效果受到影响。有一种解决办法就是用与象索位置相关的一组阈值(即阈值使坐标的函数)来对图像各部分分别进行分割。这种与坐标相关的阈值也叫动态阈值,此方法也叫变化阈值法,或自适应阈值法。这类算法的时间复杂性和空间复杂性比较大,但是抗噪能力强,对一些用全局阈值不易分割的图像有较好的效果。多阈值法很显然,
如果图像中含有占据不同灰度级区域的几个目标,则需要使用多个阈值才能将他们分开。其实多域值分割,可以看作单阈值分割的推广。
3.5方法介绍
3.5.1直方图阈值分割技术
(一)定义与原理
灰度直方图就是灰度级的像素数ni与灰度i的二维关系,它反映了一幅图像上灰度分布的统计特性,在MATLAB中使用函数“imhist.m”来实现。
双峰法就是其中的一种简单的阈值分割方法,即会呈现直方图呈现明显的双峰状,如图1所示,则选取双峰之间的谷底所对应的灰度级作为阈值分割,与要注意的是,用灰度直方图双峰法来分割图像需要一定的图像知识。
图1 图像的直方图
(二)MATLAB仿真源程序
clc
clear
close all
I=imread('H.bmp'); %读取图像
I=rgb2gray(I);
figure(1); %绘制空图板
subplot(1,3,1);
imhist(I); %绘制直方图
subplot(1,3,2);
imshow(I);
[m,n]=size(I); %图像尺寸
for i=1:m
for j=1:n
if(I(i,j)<120) %阈值为双峰中间的谷底
I(i,j)=255;
end
end
end
subplot(1,3,3);
imshow(I);
(三)运行结果
(1)米粒灰度图像
(a)灰度直方图
(b)原始图(c)分割后的结果(2)人像灰度图像
(3)彩色图像
(四)提示
在图像阈值分割中,往往设置多个阈值进行图像和背景的分割。直方图分割技术还可以采用基于统计最优的最佳阈值分割方法和多门限分割方法。
(五)适用情况
该方法不适用于直方图中双峰差别很大或者双峰中间谷底比较宽广而平坦的图像,以及单峰直方图的情况。
3.5.2类间方差阈值分割
(一)定义与原理
由Ostu提出的最大类间方差法,是在判决分析最小二乘法原理的基础上推到得出的,其算法比较简单,是一种方便可行的阈值选取方法。
设原始灰度图像灰度级为L,灰度级为I的像素点数为n1,则图像的全部像素数为:
N=n0+n1+n2+n3+···nz-1
归一化直方图,则
C0和C1的类的方差可由下式得到:
t的选择是类间与类内方差比值最大的灰度值。
(二)该方法计算灰度门限的程序:
clear
clc
close all
C=imread('h.jpg');
C=rgb2gray(C);
%读取图像
figure,imshow(C);title('原始灰度图像');%绘原图
count=imhist(C); %直方图统计
subplot(1,3,1);
imhist(C); %绘制直方图
[r,t]=size(C);
%图像矩阵大小
N=r*t; %图像像素个数
L=256; %制定凸显灰度级为256 count=count/N;
%各级灰度出现概率
for i=2:L
if count(i)~=0 ;
st=i-1;
break
end
end
%以上循环语句实现寻找出现概率不为0的最小灰度值
for i=L:-1:1
if count(i)~=0;
nd=i-1;
break
end
end
%实现找出出现概率不为0的最大灰度值
f=count(st+1:nd+1);
p=st;q=nd-st;
%p和q分别是灰度的起始和结束值
u=0;
for i=1:q
u=u+f(i)*(p+i-1);
ua(i)=u;
end
%计算图像的平均灰度值
for i=1:q
w(i)=sum(f(1:i));
end
%计算出选择不同k的时候,A区域的概率
d=(u*w-ua).^2./(w.*(1-w)); %求出不同k值时类间方差
[y,tp]=max(d); %求出最大方差对应的灰度值
th=tp+p;
if th<=160
th=tp+p;
else
th=160
end %根据具体情况适当修正门限
Y1=zeros(r,t);
for i=1:r
for j=1:t
X1(i,j)=double(C(i,j));
end
end
for i=1:r
for j=1:t
if (X1(i,j)>=th)
Y1(i,j)=X1(i,j);
else Y1(i,j)=0;
end
end
end
%上面一段代码实现分割
figure,imshow(Y1);title('灰度门限分割图像');
(三)运行结果如下图
(1)米粒灰度图像
(2)人像灰度图像
(3)彩色图像
(四)适用情况
类间方差阈值分割算法比较简单,是一种方便可行的阈值选取方法。类间方差法对噪音和目标大小十分敏感,它仅对类间方差为单峰的图像产生较好的分割效果。当目标与背景的大小比例悬殊时,类间方差准则函数可能呈现双峰或多峰,此时效果不好,但是类间方差法是用时最少的。
3.5.3迭代法阈值分割
(一)定义与原理
迭代法是基于逼近的思想,其步骤如下:
(1)求出图象的最大灰度值和最小灰度值,分别记为Zmax和Zmin,令初始阈值T0=(Zmax+Zmin)/2;
(2)根据阈值TK将图象分割为前景和背景,分别求出两者的平均灰度值ZO和ZB;
(3)求出新阈值TK+1=(ZO+ZB)/2;
(4)若TK=TK+1,则所得即为阈值;否则转2,迭代计算。
(二)程序设计:
clear all;
clear
clc
%%%%%%极小值图像切割%%%%%%
I=imread('h.jpg');
I=rgb2gray(I);
%读取图像
figure(1),imhist(I); % 观察灰度直方图,灰度135处有谷,确定阈值T=135;
figure(2);
%title('直方图');
imshow(I);
title('原图')
I1=im2bw(I,135/255); % im2bw函数需要将灰度值转换到[0,1]范围内
figure(3),imshow(I1); title('极小值点阈值切割'); %%%%%迭代法图像切割%%%%
I=imread('h.jpg'); %imread 从文件读取图象
figure(4),imshow(I); %%subplot 创建子图
title('原图像'); % %title 图名
[x,y]=size(I); %size 矩阵的大小
a=imhist(I); %hist 频数计算或频数直方图
I=double(I); %double 把其他类型对象转换为双精度数值
max=1;
for i=2:x