二维最大熵阈值分割原理与opencv实现

来源:互联网 发布:shell执行sql脚本 编辑:程序博客网 时间:2024/06/06 01:03

二维最大熵原理

  近期在做图像处理灰阶分割的研究,发现网上有很多将一维最大熵阈值分割的文章与程序代码,但是二维最大熵的资源相对较小。故本博客的目的就在于此,在学习的过程中记录相关笔记,以便帮助后面的研究者少走些弯路。希望与大家一起进步,共同提高。

1、 基于二维最大熵阈值分割

阈值化是图像分割中一种重要的技术。现有大多数方法都通过图像的一维灰度直方图选择阈值。但是, 当图像的信噪比递减时, 采用这些方法将产生很多的分割错误。近年来, 出现了一些方法开始利用图像的二 维 灰 度 直 方 图———像 素 的 灰 度 值分布及其邻域的平均灰度值分布所构成的直方图 来 进 行 阈 值分割。这些方法由于利用了图像的灰度信息和邻域的空间相关信息, 其效果较传统方法有明显改善

1.1  二维直方图

通常, 图像可看作一个二维灰度函数, 其中包含 N×N 个象素点, G={0, 2, ⋯, L- 1}为灰度取值范围, 这里 L=256。定义位于
坐标( x, y) 象素的灰度值为 f( x, y) 。设 T∈G 为一分割阈值, 则对 图 像 函 数 f( x, y) 以 灰 度 值 T 阈 值 化 的 结 果 即 为 二 值 函 数fT( x, y) :
fT( x, y) =
b0 f( x, y) ≤T
b1 f( x, y) > # T
( 1)
其中: 0≤b0, T, b1≤L- 1。二维阈值化方法同时考虑象素的灰度值 及 其 邻 域 平 均 灰度值。象素( x, y) 处的 n×n 邻域平均灰度值为:
 
其中: n≤N, n 一般取奇数, [n2]表示取整, 本文取 n=3。通过对原图进行邻域平均得到另一“平滑图像”, 由原图像和平滑图像构造出一个二维直方图。因为图像像素与其邻域像素的相关性是相当大的, 所以物体和背景的分布在二维直方图中就会比在一维直方图中更容易区分。一般地, 二维直方图呈双峰或多峰特性。如以灰度、邻域平均灰度值对[f( x, y) , g( x, y) ]来表示图像,并以二维矢量( S, T) 来分割图像, 这里, 0≤S, T≤L- 1。则二维阈值化函数可定义为
则{pij}就是图像的二维灰度直方图, 如图所示。其起始点在左上方, 灰度值从左至右增加, 邻域平均灰度值自上 而 下
增加。二维直方图上共有 L2个点, 每一点的函数值即为 rij。若图像的分割阈值矢量为( S, T) , 则直方图被分成 4 块, 根据同态
性, 在目标和背景处, 象素的灰度值和邻域平均灰度值接近, 在目标和背景的分界邻域, 象素的灰度值与邻域平均灰度值差异较大。因此目标和背景中的象素将出现在对角线周围, 故方块0 和 1 包含了目标类和背景类的分布; 远离对角线的方块 2 和3, 对应边缘和噪声。

基本思想:利用点灰度和区域灰度均值的二维直方图,根据熵最大原则寻找最佳阈值。

做法:首先以原始灰度图像(L个灰度级)中各象素及其4邻域组为一个区域,计算出区域灰度均值图像(L个灰度级),这样原始图像中的每个象素都对应一个点灰度-区域灰度均值对,这样的数据对存在L×L种可能的取值。

ni,j为图像中点灰度为i及其区域灰度均值为j的象素点数,pi,j为点灰度-区域灰度均值对(i,j)发生的概率,则


则{pi,j,i,j=0,1,……L-1}就是该图像关于点灰度-区域灰度均值的二维直方图

结论:

1.在强噪声干扰下,一维直方图是单峰的二维直方图利用了图像邻域的相关信息,目标和背景的双峰仍然明显;

2. 点灰度-区域灰度均值的概率高峰主要出现在XOY平面的对角线附近,并且在总体上呈现双峰和一谷的状态;

这是由于图像的所有象素中,目标点和背景点所占比例最大,而目标区域和背景区域内部象素灰度级比较均匀,点灰度及其区域灰度均值相差不大,所以都集中在对角线附近,两个峰分别对应于目标和背景;远离XOY平面对角线的坐标处,峰的高度急剧下降,这部分所反映的是图像中的噪声点、边缘点和杂散点。

3. 应该在A区和B区上用点灰度-区域灰度均值二维最大熵法确定最佳阈值,使真正代表目标和背景的信息量最大。

这是由于图像的所有象素中,目标点和背景点所占比例最大,而目标区域和背景区域内部象素灰度级比较均匀,点灰度及其区域灰度均值相差不大,所以都集中在对角线附近,两个峰分别对应于目标和背景;远离XOY平面对角线的坐标处,峰的高度急剧下降,这部分所反映的是图像中的噪声点、边缘点和杂散点。


0 0
原创粉丝点击