求图像的信息熵
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 }