引言
模糊理论说得直白一点就是表达不确定性,这个不确定性是用一个隶属度函数来衡量,该函数的取值为
[0,1]
,隶属度函数值越大则趋于一致,当隶属度函数值为
0
时,表示相反。关于模糊理论的一般定义和表述可以参考Gonzalez《数字图像处理》。本文关注的是模糊集在数字图像处理的运用,包括图像二值化和图像增强两方面的运用,主要内容来自以下两篇论文:
[1]. Image thresholding by minimizing the measure of fuzziness
[2]. Image Enhancement Using Smoothing with Fuzzy Sets
个人理解能力有限,不妥之处还望指教。
二值化
图像二值化是数字图像处理中一个最基本的概念。简单来说,是将图像从灰度阶从{0,1,2...L}映射到仅仅两个灰度值(这里用0、1表示)
{0,1}
。分别表述背景和前景。映射方法的基本思想是选择一个阈值
t
,如果图像某一像素的灰度值I(x,y)<t,则映射后的灰度值为
0
,反之则为1。
基于模糊理论的图像二值化
基于模糊集的图像二值化思想是将像素的灰度阶用隶属度函数来表征,而选择最佳二值化阈值则是用熵来确定。这里,我们按照论文中提出的算法来进行说明。首先,我们假定
X
代表一副大小为M×N的具有
L
个色阶的灰度图像,而Xmn代表图像
X
中点(m,n)处的像素灰度值,定义
μX(xmn)
表示该点具有某种属性的隶属度值,也就是说我们定义了一个从图像
X
映射到[0,1]区间的模糊子集,用模糊集数学表达,即有:
X={xmn,μX(xmn)}
其中,
0≤μX(Xmn)≤1,m=0,1...M,n=0,1...N
,
M
和
N分别代表图像的长度和宽度。论文中定义像素隶属度函数是从像素与区域的关系来定义的,这里的区域仅仅有两类,因为目标是二值化图像,那么两个区域仅仅是目标(前景)和背景。首先,假设最佳阈值
t
分隔出的前景和背景趋于均值。
μ0=∑tg=0gh(g)∑t0h(g)
μ1=∑Lg=t+1gh(g)∑Lg=t+1h(g)
其中
g
是某点的像素灰度值,
h(g)是该像素值在图像中出现的次数。
μ0、μ1
分别是图像的背景和前景的均值。考虑像素和在区域的均值关系定义如下隶属度函数:
uX(xmn)=11+|xmn−μ0|/Cifxmn<=t
uX(xmn)=11+|xmn−μ1|/Cifxmn>t
C是一个常数,保证
0.5<=uX(xmn)<=1
,一个像素要么属于背景,要么属于前景,因此隶属度函数应该是大于0.5的。实际中
C=gmax−gmin
。
当
t
是最佳阈值时,那么可以从熵的角度来看,熵在0和1时取值最小,而在0.5时取值最大。很显然的这里的取值可以是模糊度,当模糊都在0和1时,一个像素属于哪个区域是很明确的,在0.5的时候最不能确定到底应该属于前景还是背景。所以完全可以熵来度量图像像素的模糊度。熵的定义是:
E(A)=1nln2∑i=1nS(μA(xi))
其中
S(μA(xi))
是香农函数,定义为:
S(μA(xi))=−μA(xi)ln(μA(xi))−(1−μA(xi))ln(1−μA(xi))
很容易可以扩展到二维图像中使用:
E(X)=−1MNln2∑m=0M−1∑n=0N−1S(μx(xmn))
如果利用直方图统计量,则可改写为:
E(X)=−1MNln2∑g=0L−1S(μx(g))h(g)
最后,最小化该熵的阈值
t
便是最佳阈值。熵的图像类似于一个开口向下的抛物线,对称中心在
0.5。所以,在
[0,0.5]
这个区间,是递增函数,在
[0.5,1]
这个区间是递减的。在
0.5
时取得最大。而上面的定义可以证明是满足这些性质的。
实现中的技巧
在实现中可以采用某些技巧来提高算法效率,首先定义如下的一些符号:
S(t)=∑g=0th(g)S^(t)=∑g=t+1Lh(g)
W(t)=∑g=0tgh(g)W^(t)=∑g=t+1Lgh(g)
对于整幅图像来讲,
S(L)、W(L)
是常量。因此算法实现可采用如下步骤:
(1). 计算
S(L)
和
W(L)
,令初始阈值
t=gmin,S(t−1)=0,W(t−1)=0
;
(2). 按照如下方式计算
S(t),S^(t),W(t),W^(t)
:
S(t)=S(t−1)+h(t),S^(t)=S(L)+S(t)
W(t)=W(t−1)+t∗h(t),W^(t)=W(L)−W(t)
对于中间阈值
t
的前景和背景均值是:
μ0=int(W(t)/S(t))
μ1=int(W^(t)/S^(t))
int
表示取整。
(3). 计算以
t
为阈值的模糊度;
(4). 令
t=t+1,重复执行上述步骤,直到
t=gmax
,选择模糊度最小的阈值
t
为最佳阈值。
图像增强
模糊集用于图像增强的方法有很多,大多数是按照如下思想来进行的:
(1). 设计隶属度函数将图像从空间域变换到模糊集域;
(2). 设计模糊增强算子,在模糊集域对图像进行处理;
(3). 根据第一步的隶属度函数重新将图像从模糊集域变换到空间域。
根据上述文献【2】中涉及的初始隶属度函数为:
μmn=(1+Xmax−xmnFd)−Fe
Xmax
为图像中最大的像素值。
Fd、Fe
的取值细节可参考论文,按照如下方法更新隶属度函数值:
如果
μmn<0.5
则:
μmn=2∗u2mn
如果
μmn>=0.5
则:
μmn=1−2∗(1−umn)2
直到图像中像素计算完,最后反变换到图像域,则完成。
从初始化隶属度函数可以看出,对于像素比较大的值,计算出的隶属度函数值相对大,对于像素值小的函数隶属度值较小。而在更新过程中,对于隶属度值小的进行压缩,而对于大的值进行放大。感觉是对数和反对数变换的结合(S形函数)。从而达到对比度的增强。选择
0.5
为分界值则符合模糊理论的定义,因为一个像素值要么应该被增强亮度,要么应该增强暗度。其实就是一个局部的S形变换,却比在图像域进行局部变换方便。