求图像的信息熵

  1948年,香农(Claude E. Shannon)提出了信息熵的概念,解决了对信息的量化度量问题。香农第一次用数学语言描述了概率于信息冗余度的关系。

  信息的定义:

    信息是确定性的增加。

    信息是物质、能量、信息及其属性的标示。

  所谓信息熵,是一个数学上颇为抽象的概念,在这里不妨把信息熵理解成某种特定信息的出现概率。根据Charles H. Bennett对Maxwell's Demon的重新解释,对信息的销毁是一个不可逆过程,所以销毁信息是符合热力学第二定律(熵增定律)的。一般而言,当一种信息出现概率更高的时候,表明它被传播得更广泛,或者说,被引用的程度更高。我们可以认为,从信息传播的角度来看,信息熵可以表示信息的价值。这样子我们就有一个衡量信息价值高低的标准,可以做出关于知识流通问题的更多推论。

  【计算公式】

    H(x)=E[I(xi)]=E[ log(2,1/p(xi)) ]=-∑p(xi)log(2,p(xi)) (i=1,2,..n)

 1 double Entropy(Mat img)
 2 {
 3     //将输入的矩阵为图像
 4     double temp[256];
 5     /*清零*/
 6     for(int i=0;i<256;i++)
 7     {
 8         temp[i] = 0.0;
 9     }
10     /*计算每个像素的累积值*/
11     for(int m=0;m<img.rows;m++)
12     {
13         const uchar* t = img.ptr<uchar>(m);
14         for(int n=0;n<img.cols;n++)
15         {
16             int i = t[n];
17             temp[i] = temp[i]+1;
18         }
19     }
20     /*计算每个像素的概率*/
21     for(int i=0;i<256;i++)
22     {
23         temp[i] = temp[i]/(img.rows*img.cols);
24     }
25     double result = 0;
26     /*根据定义计算图像熵*/
27     for(int i=0;i<256;i++)
28     {
29         if(temp[i]==0.0)
30             result = result;
31         else
32                  result = result-temp[i]*(log(temp[i])/log(2.0));
33     }
34     return result;
35 }
View Code
原文地址:https://www.cnblogs.com/yongjiuzhizhen/p/3454502.html