|||
遇到好几次这个信息熵问题的IDL程序了,没深入研究过,也不懂这个概念,简单写了下,与大家探讨。
先转基本概念【http://wiki.mbalib.com/wiki/%E4%BF%A1%E6%81%AF%E7%86%B5】
信息熵的计算
根据Charles H. Bennett对Maxwell's Demon的解释,对信息的销毁是一个不可逆过程所以销毁信息是符合热力学第二定律的。而产生信息,则是为系统引入负(热力学)熵的过程。所以信息熵的符 号与热力学熵应该是相反的。一般而言,当一种信息出现概率更高的时候,表明它被传播得更广泛,或者说,被引用的程度更高。我们可以认为,从信息传播的角度 来看,信息熵可以表示信息的价值。这样我们就有一个衡量信息价值高低的标准,可以做出关于知识流通问题的更多推论。
信源的平均不定度。在信息论中信源输出是随机量,因而其不定度可以用概率分布来度量。记 H(X)=H(P1,P2,…,Pn)=P(xi)logP(xi),这里P(xi),i=1,2,…,n为信源取第i个符号的概率。 P(xi)=1,H(X)称为信源的信息熵。
熵的概念来源于热力学。在热力学中熵的定义是系统可能状态数的对数值,称为热熵。它是用 来表达分子状态杂乱程度的一个物理量。热力学指出,对任何已知孤立的物理系统的演化,热熵只能增加,不能减少。然而这里的信息熵则相反,它只能减少,不能 增加。所以热熵和信息熵互为负量。且已证明,任何系统要获得信息必须要增加热熵来补偿,即两者在数量上是有联系的。
可以从数学上加以证明,只要H(X)满足下列三个条件:
①连续性:H(P,1-P)是P的连续函数(0≤P≤1);
②对称性:H(P1,…,Pn)与P1,…,Pn的排列次序无关;
③可加性:若Pn=Q1+Q2>0,且Q1,Q2≥0,则有H(P1,…,Pn-1,Q1,Q2)=H(P1,…,Pn-1)+PnH;则一定有下列唯一表达形式:H(P1,…,Pn)=-CP(xi)logP(xi)
其中C为正整数,一般取C=1,它是信息熵的最基本表达式。
信息熵的单位与公式中对数的底有关。最常用的是以2为底,单位为比特(bit);在理论推导中常采用以e为底,单位为奈特(Nat);还可以采用其他的底和单位,并可进行互换。
信息熵除了上述三条基本性质外,还具有一系列重要性质,其中最主要的有:
①非负性:H(P1,…,Pn)≥0;
②确定性:H(1,0)=H(0,1)=H(0,1,0,…)=0;
③扩张性:Hn-1(P1,…,Pn-ε,ε)=Hn(P1,…,Pn);
④极值性:P(xi)logP(xi)≤P(xi)logQ(xi);这里Q(xi)=1;
⑤上凸性:H[λP +(1-λ)Q]>λH(P)+(1-λ)H(Q),式中0<λ<1。
再发函数
重点在于Histogram函数,不用for循环,否则效率低的多得多
;只计算一维二维字节型或整型数据的信息熵
function calEntroy, image
nDim = size(image, /N_Dimension)
;一维数据
if nDim LE 2 then begin
pixNums = Histogram(image,BINSIZE =1)
nums = Total(pixNums)
pby = pixNums*1D/nums
imageEntroy = -Total(pby*aLog(pby)/aLog(2))
;其他维算法未知,o(∩_∩)o 哈哈
endif else begin
???
endelse
return, imageEntroy
end
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 15:17
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社