实验一 信息熵与图像熵计算

合集下载

计算信息熵及其互信息

计算信息熵及其互信息

信息论实验一计算信息熵及其互信息实验者:王国星班级:09030701学号:**********2009年10月20日实验一计算信息熵及其互信息一.实验目的1.理解信源的概念。

2.了解如何获得信息。

3.学会计算信息熵。

4.学会计算两个信息的互信息。

二.实验原理1.信息论是运用概率论与数理统计的方法研究信息、信息熵、通信系统、数据传输、密码学、数据压缩等问题的应用数学学科。

信息论将信息的传递作为一种统计现象来考虑,给出了估算通信信道容量的方法。

信息传输和信息压缩是信息论研究中的两大领域。

这两个方面又由信息传输定理、信源-信道隔离定理相互联系。

香农(Claude Shannon)被称为是“信息论之父”。

人们通常将香农于1948年10月发表于《贝尔系统技术学报》上的论文《A Mathe matical Theory of Communication》(通信的数学理论)作为现代信息论研究的开端。

这一文章部分基于哈里·奈奎斯特和拉尔夫·哈特利先前的成果。

在该文中,香农给出了信息熵(以下简称为“熵”)的定义:这一定义可以用来推算传递经二进制编码后的原信息所需的信道带宽。

熵度量的是消息中所含的信息量,其中去除了由消息的固有结构所决定的部分,比如,语言结构的冗余性以及语言中字母、词的使用频度等统计特性。

信息论中熵的概念与物理学中的热力学熵有着紧密的联系。

玻尔兹曼与吉布斯在统计物理学中对熵做了很多的工作。

信息论中的熵也正是受之启发。

互信息(Mutual Information)是另一有用的信息度量,它是指两个事件集合之间的相关性。

两个事件X和Y的互信息定义为:I(X,Y) = H(X) + H(Y) - H(X,Y)其中H(X,Y) 是联合熵(Joint Entropy),其定义为:互信息与多元对数似然比检验以及皮尔森χ2校验有着密切的联系。

2. MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

图像熵

图像熵

OpenMp
(1)、OpenMP只能并行化for循环,它不会并行while和 do-while循环,而且只能并行循环次数在for循环外面就确 定了的for循环。 (2)、循环变量只能是整型和指针类型(不能是浮点型)
OpenMp使用
(3)、循环语句只能是单入口单出口的。循环内部不能改 变index,而且里面不能有goto、break、return。但是可以 使用continue,因为它并不会减少循环次数。另外exit语句 也是可以用的,因为它的能力太大,他一来,程序就结束了。
double Result::result(Mat* Xiang,vector<double>*Rp,vector<double>* Gp,vector<double>* Bp,vector<double>* Ri,vector<double>* Gi,vector<double>* Bi) { double E=0,Er=0,Eg=0,Eb=0; double all=(*Xiang).cols*((*Xiang).rows); int j=0; #pragma omp parallel for for(j;j<256;j++){ pictureData(Xiang, j, Ri, Gi, Bi);} #pragma omp parallel for int k=0; for(k;k<256;k++){ (*Rp).at(k)=(*Ri).at(k)/all; (*Gp).at(k)=(*Gi).at(k)/all; (*Bp).at(k)=(*Bi).at(k)/all; if( (*Rp).at(k)==0) { (*Rp).at(k)=1;} if((*Gp).at(k)==0) { (*Gp).at(k)=1;} if((*Bp).at(k)==0) { (*Bp).at(k)=1;} Er+=(*Rp).at(k)*log((*Rp).at(k)); Eg+=(*Gp).at(k)*log((*Gp).at(k)); Eb+=(*Bp).at(k)*log((*Bp).at(k)); }

计算信息熵实验原理的应用

计算信息熵实验原理的应用

计算信息熵实验原理的应用1. 实验目的本实验旨在探究信息熵在计算机科学和信息论中的应用,通过实验验证信息熵的计算原理,并分析其在数据压缩、密码学以及机器学习等领域的实际应用。

2. 实验原理信息熵是信息论中度量信息不确定性的常用指标。

信息熵的计算公式如下:H(X) = -Σ(P(x) * log2(P(x)))其中,H(X)代表随机变量X的信息熵,P(x)表示随机变量X取值为x时的概率。

信息熵的单位是比特,表示所需的平均比特数来编码一组符号。

3. 实验步骤1.首先,收集一组待处理的数据,可以是文本、图像或其他形式的数据。

2.对数据进行预处理,例如去除噪声、归一化处理等,以确保数据质量和准确性。

3.根据数据的特点和需求,选择合适的编码方式。

常用的编码方式包括ASCII编码、Unicode编码、Huffman编码等。

4.对编码后的数据计算信息熵。

根据实验原理中给出的信息熵计算公式,计算数据的信息熵。

可以使用编程语言的计算函数或自行编写计算代码进行计算。

5.分析实验结果。

根据计算得到的信息熵结果,进行进一步的分析和讨论。

比较不同编码方式和不同数据集的信息熵结果,探讨其差异和潜在规律。

6.探究信息熵在数据压缩、密码学和机器学习等领域的应用。

通过查阅相关文献和资料,了解和讨论信息熵在不同领域中的具体应用方式和效果。

4. 实验结果与讨论通过实验计算得到的信息熵结果可以用于评估数据的不确定性和信息量。

信息熵越高,表示数据的不确定性越大,需要更多的比特数来进行编码。

在数据压缩中,可以利用信息熵的概念来设计压缩算法,减少数据存储和传输的成本。

在密码学中,信息熵可以用于生成随机密钥,增加密码的强度和安全性。

在机器学习中,信息熵可以作为衡量模型复杂度和决策效果的指标,帮助选择和优化模型。

5. 实验结论信息熵是计算机科学和信息论中的重要概念,具有广泛的应用价值。

通过实验可以验证信息熵的计算原理,并了解其在数据压缩、密码学和机器学习等领域的应用。

关于信源熵的实验报告讲解

关于信源熵的实验报告讲解

实验报告实验名称关于信源熵的实验课程名称信息论与编码姓名xxx 成绩90班级电子信息1102学号**********日期2013.11.22地点综合实验楼实验一关于信源熵的实验一、实验目的1. 掌握离散信源熵的原理和计算方法。

2. 熟悉matlab 软件的基本操作,练习使用matlab 求解信源的信息熵。

3. 自学图像熵的相关概念,并应用所学知识,使用matlab 或其他开发工具求解图像熵。

4. 掌握Excel的绘图功能,使用Excel绘制散点图、直方图。

二、实验原理1. 离散信源相关的基本概念、原理和计算公式产生离散信息的信源称为离散信源。

离散信源只能产生有限种符号。

随机事件的自信息量I(xi)为其对应的随机变量xi 出现概率对数的负值。

即: I (xi )= -log2p ( xi)随机事件X 的平均不确定度(信源熵)H(X)为离散随机变量 xi 出现概率的数学期望,即:2.二元信源的信息熵设信源符号集X={0,1} ,每个符号发生的概率分别为p(0)= p,p(1)= q,p+ q =1,即信源的概率空间为:则该二元信源的信源熵为:H( X) = - plogp–qlogq = - plogp –(1 - p)log(1- p)即:H (p) = - plogp –(1 - p)log(1- p) 其中 0 ≤ p ≤13. MATLAB二维绘图用matlab 中的命令plot( x , y) 就可以自动绘制出二维图来。

例1-2,在matlab 上绘制余弦曲线图,y = cos x ,其中 0 ≤ x ≤2。

>>x =0:0.1:2*pi; %生成横坐标向量,使其为 0,0.1,0.2,…,6.2>>y =cos(x ); %计算余弦向量>>plot(x ,y ) %绘制图形4. MATLAB求解离散信源熵求解信息熵过程:1) 输入一个离散信源,并检查该信源是否是完备集。

信息熵计算

信息熵计算

信息熵计算
信息熵的计算公式为H(x) = E[I(xi)] = E[ log(2,1/P(xi)) ] = -∑P(xi)log(2,P(xi)) (i=1,2,..n)。

1948年,香农提出了“信息熵”的概念,才解决了对信息的量化度量问题。

信息熵这个词是C.E.Shannon(香农)从热力学中借用过来的。

热力学中的热熵是表示分子状态混乱程度的物理量。

香农用信息熵的概念来描述信源的不确定度。

特点:
信息熵的计算是非常复杂的。

而具有多重前置条件的信息,更是几乎不能计算的。

所以在现实世界中信息的价值大多是不能被计算出来的。

但因为信息熵和热力学熵的紧密相关性,所以信息熵是可以在衰减的过程中被测定出来的。

因此信息的价值是通过信息的传递体现出来的。

在没有引入附加价值(负熵)的情况下,传播得越广、流传时间越长的信息越有价值。

信息论实验报告(实验一、信源与信息熵的计算)

信息论实验报告(实验一、信源与信息熵的计算)

学生实验报告
院别电子信息学院课程名称信息论语编码实验
班级实验名称实验一、信源与信息熵的计算姓名实验时间
学号指导教师
成绩
报告内容
一、实验目的和任务
1、理解自信息、互信息、熵等概念;
2、熟悉 MATLAB程序设计;
3、掌握通过计算机实验计算离散信源的信息量及熵的计算方法;
4、对给定信源分别计算出信源熵、条件熵、联合熵、交互熵;
二、实验原理介绍
三、实验设备介绍
1、计算机
2、编程软件MATLAB6.5以上
四、实验内容和步骤
H X H Y H X Y H Y X H XY I X Y 分别求出如下图所示离散信道的(),(),(|),(|),(),(;)
1、面出程序设计的流程图。

2、写出在调试过程中出现的问题。

3、对实验的结果进行分析。

五、实验数据记录
六、实验结论与心得
通过本次实验,加强了对matlab程序的学习,进一步提高了我的编程能力。

信息论实验信息熵函数的计算

信息论实验信息熵函数的计算

信息论实验信息熵函数的计算信息熵是信息论中的一个重要概念,用于度量信息的不确定性或者随机性。

它可以描述信息源的平均信息量,也可以用于衡量编码的效率。

本文将介绍信息熵的计算方法,并通过实例来说明如何计算信息熵。

首先,我们需要了解如何计算一个离散概率分布的信息熵。

对于一个离散概率分布,它可以由一个概率密度函数来描述,其中每个事件的概率都是非负的,并且所有事件的概率之和为1、令p(x)表示事件x的概率,则该分布的信息熵H(X)可以通过以下公式计算:H(X) = -∑ [p(x) * log₂(p(x))]其中,∑表示对所有事件求和。

log₂表示以2为底的对数函数。

该公式的物理意义是,对于每个事件x,我们将其概率p(x)与以2为底的对数计算结果相乘,并将所有结果相加,得到的值即为信息熵。

为了更好地理解信息熵的计算过程,我们可以通过一个实例来进行展示。

假设有一个硬币的抛掷实验,在该实验中,正面向上和反面向上的概率分别为p(正)=1/2和p(反)=1/2、则该实验的信息熵可以使用以下公式进行计算:H(硬币实验) = -[1/2 * log₂(1/2) + 1/2 * log₂(1/2)]首先,我们需要计算log₂(1/2)的值。

根据对数的定义,我们可以将此式化简为:H(硬币实验)=-[1/2*(-1)+1/2*(-1)]=-(-1/2+1/2)=-0正如我们所期望的,在这个实验中,硬币是确定性的,即每次抛掷都会出现正面或反面。

因此,硬币实验的信息熵为0,意味着在该实验中我们不需要任何信息来描述结果。

接下来,我们来计算一个更复杂的实例,假设有一组骰子的抛掷实验,其中每个面出现的概率分别为p(1)=1/6,p(2)=1/6,p(3)=1/6,p(4)=1/6,p(5)=1/6,p(6)=1/6、我们可以使用以上公式计算该实验的信息熵:H(骰子实验) = -[1/6 * log₂(1/6) + 1/6 * log₂(1/6) + 1/6 *log₂(1/6) + 1/6 * log₂(1/6) + 1/6 * log₂(1/6) + 1/6 * log₂(1/6)]首先,我们需要计算log₂(1/6)的值。

信息熵与图像熵的计算

信息熵与图像熵的计算

信息熵与图像熵的计算信息熵是信息论中一个重要的概念,用来衡量信源中包含的信息量。

而图像熵是在图像处理中引入的概念,用来衡量图像中的信息量。

1.信息熵的概念信息熵是用来度量一个信源的平均信息量的,也可以看作是随机变量的不确定性的度量。

信息熵的计算公式如下:H(X) = -Σ(p(x) * log2(p(x)))其中,X表示一个离散型的信源,p(x)表示X取值为x的概率。

计算信息熵的步骤如下:1)统计信源中每个离散值出现的概率;2)根据计算出的概率值,计算每个离散值的信息量;3)将每个离散值的信息量相加,即可以得到信源的信息熵。

2.图像熵的概念图像熵是用来衡量图像中信息量的一个指标。

在图像处理中,图像熵用来描述图像的纹理复杂程度,即图像中包含的信息量。

图像熵的计算公式如下:H(I) = -Σ(p(i) * log2(p(i)))其中,I表示一个图像,p(i)表示图像中像素值为i的概率。

计算图像熵的步骤如下:1)统计图像中每个像素值出现的概率;2)根据计算出的概率值,计算每个像素值的信息量;3)将每个像素值的信息量相加,即可以得到图像的熵。

3.信息熵与图像熵的比较信息熵和图像熵的计算方法相似,但是在具体的应用场景中存在一些差别。

首先,信息熵是用来度量信源的不确定性,所以信源可以是任意类型的数据,包括离散型信源和连续型信源。

而图像熵是针对图像数据的一种度量,因此信源是离散型的。

其次,图像熵主要用来衡量图像的纹理复杂程度,所以在计算图像熵时,通常会将图像转化为灰度图像。

这样做的目的是忽略图像的颜色信息,只关注亮度信息,因为在大多数场景下,图像的颜色信息对于图像的信息量没有太大的贡献。

此外,信息熵和图像熵的计算结果都是一个非负数,越大表示信息量越大,越小表示信息量越少。

当信息熵或图像熵为0时,表示信源或图像中只有一个确定的值,没有任何信息的不确定性。

总结来说,信息熵和图像熵都是衡量信息量的一种指标,用来描述数据的不确定性或者纹理复杂程度。

信息论编码实验一熵的计算

信息论编码实验一熵的计算

实验一 熵的计算一、 实验目的通过本次实验的练习,使学生进一步巩固熵的基本概念,掌握熵的统计方法,培养学生使用编程工具进行分析计算的基本能力。

二、 实验仪器与软件1. PC 机1台2. MATLAB7.0环境三、实验原理1. 信息熵的基本原理离散信源数学模型如下(设该信源可能取的符号有n 个):⎭⎬⎫⎩⎨⎧=⎥⎦⎤⎢⎣⎡)(,),(,),(),( ,, , , , )( 2121n i n i a p a p a p a p a a a a X P X则该信源的信息熵为:)(log )()(21i ni i x p x p X H ∑==H(X)是信源X 中每个事件出现的平均信息量,或者说H(X)表示了信源X 中各符号出现的平均不确定性。

● 图像的信息熵:设数字图像的灰度级集合为{r 1,r 2,…,r m },其对应的概率分别为p (r 1),p (r 2),…,p (r m ),则图像的信息熵可以定义为:图像的信息熵表示像素各个灰度级位数的统计平均值,它给出了对此输入灰度级集合进行无失真图像编码时所需要的平均位数的下限。

2. 图像文件的读取● 函数imread () MATLAB 通过函数imread 完成图像的读取,该函数语法格式如下:I = imread(filename,fmt)用于读取由filename 指定的图像数据到数组A 中,参数fmt 对应于所有图像处理工具所支持的图像文件格式。

如I=imread ('rice.tif');● 函数imhist () 显示图像的直方图 用法: imhist(I,n) 计算和显示图像I 的直方图,n 为指定的灰度级数目,默认为256。

如果I 是二值图像,那么n 仅有两个值。

[counts,x] = imhist(I) 返回直方图数据向量counts 或相应的色彩值向量x 。

● 函数size(a) 表示矩阵a 每个维度的长度 如size([1 2 3;4 5 6]),返回[2 3],表示该矩阵有2行3列 ● find ()寻找非零元素下标 如:x = [11 0 33 0 55]; find(x) ans = 1 3 5 find(x == 0)ans = 2 4 ● 相关函数 点运算 在MATLAB 中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。

信息熵的计算方法

信息熵的计算方法

信息熵的计算方法信息熵是信息论中的一个重要概念,用来衡量信息的不确定性和信息量。

在实际应用中,我们经常需要计算信息熵来评估数据的复杂程度和信息量大小。

本文将介绍信息熵的计算方法,帮助读者更好地理解和运用这一概念。

首先,我们需要了解信息熵的基本公式。

对于离散型随机变量X,其信息熵的计算公式为:H(X) = -Σ p(x) log2 p(x)。

其中,p(x)表示随机变量X取某个值的概率,log2表示以2为底的对数。

这个公式告诉我们,信息熵的大小取决于事件发生的概率,概率越大,信息熵越小,表示信息的不确定性越低。

在实际计算中,我们通常会遇到多个离散型随机变量组成的联合分布,此时可以使用联合熵来衡量这些随机变量的不确定性。

对于两个随机变量X和Y,其联合熵的计算公式为:H(X, Y) = -ΣΣ p(x, y) log2 p(x, y)。

这个公式表示了X和Y联合发生的概率对信息熵的贡献,同样可以用于衡量多个随机变量的联合不确定性。

除了离散型随机变量,我们还需要了解连续型随机变量的信息熵计算方法。

对于连续型随机变量X,其概率密度函数为p(x),则其信息熵的计算公式为:H(X) = -∫ p(x) log2 p(x) dx。

这个公式告诉我们,连续型随机变量的信息熵计算需要用到积分,通过对概率密度函数的积分来计算信息熵的值。

在实际应用中,我们通常会遇到条件熵的计算问题,即在给定某个条件下的信息熵。

对于随机变量X在给定随机变量Y的条件下的信息熵,计算公式为:H(X|Y) = -ΣΣ p(x, y) log2 p(x|y)。

这个公式表示了在已知Y的条件下,X的信息熵大小,可以帮助我们更好地理解X的不确定性。

最后,我们还需要了解信息增益的概念。

信息增益表示了在得知某个特征值的情况下,对信息熵的减少程度。

对于离散型随机变量X和特征A,其信息增益的计算公式为:Gain(A) = H(X) H(X|A)。

这个公式告诉我们,特征A对信息熵的减少程度,可以帮助我们选择最优的特征来进行数据分析和建模。

图形图像编码中的熵编码算法使用教程

图形图像编码中的熵编码算法使用教程

图形图像编码中的熵编码算法使用教程在图形图像编码中,熵编码算法是一种常用的数据压缩技术。

通过对图像中的数据进行编码,可以减小图像所占用的存储空间,提高传输效率。

本文将介绍图形图像编码中的熵编码算法的使用教程,并详细解释其原理和操作步骤。

熵编码是一种无损压缩方法,它通过使用较短的位数来表示频率较高的符号,以实现数据的压缩。

在图形图像编码中,熵编码通常用于对图像中的颜色或像素值进行编码。

首先,我们需要了解熵编码的原理。

熵编码基于信息熵的概念,信息熵是用来度量信息量的一个指标。

当一个符号出现的概率越高时,其信息量越低,所需编码的位数也越少。

熵编码就是根据符号的概率分布,将频率较高的符号用较少的位数进行编码,从而减小数据的表示长度。

接下来,我们可以了解一下常用的熵编码算法,如霍夫曼编码和算术编码。

这两种算法都是通过建立符号和编码之间的对应关系来实现熵编码。

在实际使用中,我们可以先进行图像预处理,将图像进行离散化处理,将连续的像素值转化为离散的符号。

然后,利用统计方法来获取符号的概率分布。

对于图像中的颜色编码,我们可以统计每种颜色的出现次数,并计算其概率。

对于像素值编码,我们可以统计不同像素值的频率,并计算其概率。

接下来,我们需要根据符号的概率分布来构建编码表。

对于霍夫曼编码,我们可以根据符号的概率构建一颗霍夫曼树,将概率较高的符号放在树的较低层,概率较低的符号放在树的较高层。

然后,我们可以从树的根节点开始遍历树,根据左子树和右子树的关系为符号赋予相应的编码。

而对于算术编码,我们可以使用算术编码表来对符号进行编码。

编码完成后,我们将编码后的信息进行传输或存储。

在传输或存储过程中,我们需要注意将编码后的信息进行解码,以使接收方能够正确地解析图像数据。

为了正确地解码信息,接收方需要了解和发送方相同的编码表。

总结一下,图形图像编码中的熵编码算法是一种常用的数据压缩技术。

通过统计符号的概率分布,构建编码表,对数据进行编码,可以实现数据的压缩和传输效率的提高。

信息熵与图像熵的计算

信息熵与图像熵的计算

实验一信息熵与图‎像熵计算一、实验目的1.复习MAT‎L AB 的基本命令‎,熟悉MAT‎L AB 下的基本函‎数。

2.复习信息熵‎基本定义, 能够自学图‎像熵定义和‎基本概念。

二、实验仪器、设备1.计算机-系统最低配‎置256M 内存、P4 CPU。

2.Matla‎b仿真软件- 7.0 / 7.1 / 2006a‎等版本Ma‎t lab 软件。

三、实验内容与‎原理(1)内容:1.能够写出M‎ATLAB‎源代码,求信源的信‎息熵。

2.根据图像熵‎基本知识,综合设计出‎M ATLA‎B程序,求出给定图‎像的图像熵‎。

(2)原理1. MATLA‎B中数据类型‎、矩阵运算、图像文件输‎入与输出知‎识复习。

2.利用信息论‎中信息熵概‎念,求出任意一‎个离散信源‎的熵(平均自信息‎量)。

自信息是一‎个随机变量‎,它是指某一‎信源发出某‎一消息所含‎有的信息量‎。

所发出的消息不同‎,它们所含有‎的信息量也‎就不同。

任何一个消‎息的自信息‎量都代表不‎了信源所包含‎的平均自信‎息量。

不能作为整‎个信源的信‎息测度,因此定义自‎信息量的数学期望为‎信源的平均‎自信息量:信息熵的意‎义:信源的信息‎熵H是从整‎个信源的统‎计特性来考‎虑的。

它是从平均‎意义上来表征‎信源的总体‎特性的。

对于某特定‎的信源,其信息熵只‎有一个。

不同的信源因统计特‎性不同,其熵也不同‎。

3.学习图像熵‎基本概念,能够求出图‎像一维熵和‎二维熵。

图像熵是一‎种特征的统‎计形式,它反映了图‎像中平均信‎息量的多少‎。

图像的一维熵表示图‎像中灰度分‎布的聚集特‎征所包含的‎信息量,令Pi 表示图像中‎灰度值为i‎的像素所占‎的比例,则定义灰度‎图像的一元‎灰度熵为:255log i iip p ==∑H图像的一维‎熵可以表示‎图像灰度分‎布的聚集特‎征,却不能反映‎图像灰度分‎布的空间特征,为了表征这‎种空间特征‎,可以在一维‎熵的基础上‎引入能够反‎映灰度分布‎空间特征的特征‎量来组成图‎像的二维熵‎。

实验一 信息熵与图像熵计算

实验一 信息熵与图像熵计算

实验一信息熵与图像熵计算(2 学时)一、实验目的1.复习MATLAB的基本命令,熟悉MATLAB下的基本函数;2.复习信息熵基本定义,能够自学图像熵定义和基本概念。

二、实验内容1.能够写出MATLAB源代码,求信源的信息熵;2.根据图像熵基本知识,综合设计出MATLAB程序,求出给定图像的图像熵。

三、实验仪器、设备1.计算机-系统最低配置256M内存、P4 CPU;2.MATLAB编程软件。

四实验流程图五实验数据及结果分析四、实验原理1.MATLAB中数据类型、矩阵运算、图像文件输入与输出知识复习。

2.利用信息论中信息熵概念,求出任意一个离散信源的熵(平均自信息量)。

自信息是一个随机变量,它是指某一信源发出某一消息所含有的信息量。

所发出的消息不同,它们所含有的信息量也就不同。

任何一个消息的自信息量都代表不了信源所包含的平均自信息量。

不能作为整个信源的信息测度,因此定义自信息量的数学期望为信源的平均自信息量:1( ) 1 ( ) [log ] ( ) log ( ) i n i i p a i H E p a p a X 信息熵的意义:信源的信息熵H是从整个信源的统计特性来考虑的。

它是从平均意义上来表征信源的总体特性的。

对于某特定的信源,其信息熵只有一个。

不同的信源因统计特性不同,其熵也不同。

3.学习图像熵基本概念,能够求出图像一维熵和二维熵。

图像熵是一种特征的统计形式,它反映了图像中平均信息量的多少。

图像的一维熵表示图像中灰度分布的聚集特征所包含的信息量,令Pi表示图像中灰度值为i的像素所占的比例,则定义灰度图像的一元灰度熵为:2550 log i i i p p H图像的一维熵可以表示图像灰度分布的聚集特征,却不能反映图像灰度分布的空间特征,为了表征这种空间特征,可以在一维熵的基础上引入能够反映灰度分布空间特征的特征量来组成图像的二维熵。

选择图像的邻域灰度均值作为灰度2分布的空间特征量,与图像的像素灰度组成特征二元组,记为(i,j),其中i表示像素的灰度值(0<=i<=255),j表示邻域灰度(0<=j<=255),2 ( , ) / ij p f i j N上式能反应某像素位置上的灰度值与其周围像素灰度分布的综合特征,其中f(i,j)为特征二元组(i,j)出现的频数,N为图像的尺度,定义离散的图像二维熵为:2550 log ij ij i p p H构造的图像二维熵可以在图像所包含信息量的前提下,突出反映图像中像素位置的灰度信息和像素邻域内灰度分布的综合特征。

信息与编码实验一-信息熵的计算

信息与编码实验一-信息熵的计算
#define _ALAPHA_NUMBER ((int)('z'-'a'+1))
void PrintStati(int arr[],int size);
int Stati(const char * arr[]);
float EntropCompute(int arr[],int sum,int arrSize);
if(p){
printf("fail to open file");
return 0;
}
while(1){
c=fgetc(pFile);
if(c==EOF){
break;
}
if(c>='a'&&c<='z'){
arr[c-'a']++;
sum++;
}else if(c>='A'&&c<='z'){
arr[_ALAPHA_NUMBER+c-'A']++;
printf("%c:%d ",i+'a',arr[i]);
}
else{
printf("%c:%d ",i+'A'-_ALAPHA_NUMBER,arr[i]);
}
i++;
}
}
int Stati(const char * arr[]){
FILE *p;
char c;
int sum=0;
p(,"rb");

计算图像信息熵报告

计算图像信息熵报告

计算图像信息熵报告1. 简介图像信息熵是一种用来描述图像中信息量的指标,它可以反映图像的复杂程度和信息丰富度。

本报告将介绍计算图像信息熵的步骤和方法。

2. 图像信息熵的定义图像信息熵是指图像中每个像素点的信息量的平均值。

信息量的计算可以通过像素的灰度值来实现。

在灰度图像中,每个像素的灰度值通常是一个从0到255的整数,代表了图像中的亮度。

3. 计算图像信息熵的步骤计算图像信息熵的步骤如下:步骤一:将图像转换为灰度图像在计算图像信息熵之前,首先需要将彩色图像转换为灰度图像。

这是因为彩色图像包含了RGB三个通道的信息,而计算信息熵只需要考虑灰度值。

步骤二:计算每个像素的灰度值频率对于灰度图像中的每个像素点,计算其灰度值出现的频率。

频率可以通过统计每个灰度值在图像中出现的次数来得到。

步骤三:计算每个像素的信息量利用每个像素的灰度值频率,计算每个像素的信息量。

信息量可以通过以下公式计算:信息量 = -频率 * log(频率)步骤四:计算图像信息熵将每个像素的信息量相加,然后取平均值,即可得到图像的信息熵。

信息熵的计算公式如下:信息熵 = 平均信息量 = 总信息量 / 像素数量4. 示例代码以下是使用Python编程语言实现计算图像信息熵的示例代码:import cv2import numpy as npimport mathdef calculate_entropy(image):gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)height, width = gray_image.shapepixel_count = height * width# 计算灰度值频率gray_level_counts = np.bincount(gray_image.flatten(), minlength=256) gray_level_probabilities = gray_level_counts / pixel_count # 计算信息量entropy =0for p in gray_level_probabilities:if p >0:entropy -= p * math.log2(p)return entropy# 读取图像image = cv2.imread("example.jpg")# 计算图像信息熵entropy = calculate_entropy(image)print("图像信息熵为:", entropy)5. 结论本报告介绍了计算图像信息熵的步骤和方法。

实验1.信息熵值的表示和计算

实验1.信息熵值的表示和计算

信息熵的表示和计算(实验一)专业:教育技术01班学号:40809020103姓名:周国涛一.实验题目信息熵的表示和计算二.实验目的1.掌握对信源熵值的计算计算方法。

2.掌握编程语言字符处理程序的设计和调试技术。

三.实验要求已知:信源符号为一篇英文字母(不区分大小写)。

输入:一篇英文的信源文档。

输出:给出该信源文档的中各个字母的概率分布,以及该信源的熵。

四.程序流程1.输入一篇英文文章,以回车键为截止,计算该英文文章中每个字母的出现次数(不区分大小写),每出现一次该字符的计数器+1;2.计算信源总大小计算出每个字母出现的概率;3.通过统计数据和信息熵公式计算出所求信源熵值(本程序中单位为奈特nat)。

程序流程图:↓↓↓五.源代码如下:#include<stdio.h>#include<math.h>void main(){int ch[26]={0};int sum=0,n=0;int i;double p[26]={0};double H=0;char c;printf("please input an english massage:\n");while((c=getchar())!='\n'){for (i=65;i<=90;i++){if (c==i){ch[i-65]++;sum++;}}for (i=97;i<=122;i++){if(c==i){ch[i-97]++;sum++;}}}for(i=0;i<26;i++){p[i]=(double)ch[i]/(double)sum ;printf(" p(%c)= %1.2f ",i+65, p[i]);n++;if(n==3){printf("\n");n=0;}}for(i=0;i<=25;i++){if(p[i]!=0)H=H+p[i]*(log(p[i]));}printf("\n");printf("信息熵=%f",-H);printf("\n");}运行结果如下:其中英语文章如下:I feel that my strongest asset is my ability to stick to things to get them done. I feel a real sense of accomplishment when I finish a job and it turns out just as I’d planned. I’ve set some high goals for myself. For example, I want to graduate with highest distinction. And even though I had a slow start in my freshman year, I made up for it by doing an honor’s thesis.By :zhouguotaoXuehao:40809020103六.程序优点:熵的大小可用于表示概率系统的不确定程度。

信息熵的表示和计算

信息熵的表示和计算

信息熵的表示和计算
实验题目:
信息熵的表示和计算
实验要求:
要求输入一段英文文章,统计英文字母的概率,计算细心熵。

实验原理:
分别初始化两个整形数组和双精度数组,用以计数字母出现的次数和出现的概率(不区分大小写)。

对输入的每一个字母分别进行检测,同时与之相应的整形数组的元素加1,遇到回车停止,空格不加入计算。

然后对数组的元素进行统计,分别计算其出现的概率,把概率结果放入与之对应的双精度数组中。

最后输出统计结果。

算法与流程:
运行结果如图所示:
分析:
由于算法设计的限制,导致在设计程序时,循环体内过于冗长,循环效率低。

实验二信息熵与图像熵

实验二信息熵与图像熵

实验⼆信息熵与图像熵信电学院信息论与编码实验报告书(2013/2014学年第⼆学期)实验名称:信息熵与图像熵计算专业班级:通信三班学⽣姓名:包博⽂学号:120310323指导教师:张龙设计成绩:2014年5⽉10⽇实验⼆信息熵与图像熵计算⼀、实验⽬的1 通过本实验复习MATLAB的基本命令,熟悉MATLAB下的基本函数2 复习信息熵基本定义,能够⾃学图像熵定义和基本概念⼆、实验要求1 能够写出MATLAB源代码,求信源的信息熵2 根据图像熵基本知识,设计出MATLAB程序,求出给定图像的图像熵三、实验步骤1 求解信息熵过程:①输⼊⼀个离散信源,并检查该信源是否是完备集。

②去除信源中符号分布概率为零的元素。

③根据平均信息量公式,求出离散信源的熵。

2 图像熵计算过程:①输⼊⼀幅图像,并将其转换成灰度图像。

②统计出图像中每个灰度阶象素概率。

③统计出图像中相邻两象素的灰度阶联合分布矩阵。

④根据图像熵和⼆阶熵公式,计算出⼀幅图像的熵。

四、程序的流程图1 信息熵2 图像熵真五、试验运⾏结果记录1、信息熵(1)、A=[0.3 0.5 0.2 0.1];H=xinxishang(A)Error using==>xinxishang不是完备集。

(2)、A=[0.3 0.05 0.35 0.1 0.2 0];H=xinxishang(A)去除概率为零的元素A =0.3000 0.0500 0.3500 0.1000 0.2000 H =2.0639;(3)、A=[0.05 0.1 0.3 0.1 0.35];H=xinxishang(A)H=2.0639;2、图像熵[H1,H2] = tuxiangshang('111.jpg')H1 =7.2250; H2 =5.3577;六、编写的程序1、信息熵function H=xinxishang(A)if sum(A)~=1error('不是完备集')endif find(A==0)A(find(A==0))=[];disp('去除概率为零的元素');A endH=-sum(A.*log2(A));2、图像熵function [H1,H2]=tuxiangshang(img) I=imread(img); img=rgb2gray(I);imview(I), imview(img);[ix,iy]=size(img);P1=imhist(img)/(ix*iy);temp=double(img);temp=[temp,temp(:,1)];A=zeros(256,256);for x=1:ixfor y=1:iyi=temp(x,y);j=temp(x,y+1);A(i+1,j+1)=A(i+1,j+1)+1;endendP2=A./(ix*iy);H1=0;H2=0;for i=1:256if P1(i)~=0H1=H1-P1(i)*log2(P1(i));endfor j=1:256if P2(i,j)~=0H2=H2-P2(i,j)*log2(P2(i,j));endendendH2=H2/2七、实验⼩结通过本次实验熟悉了Matlab软件编写程序环境和⼀些函数的功能及使⽤,掌握了信息熵,图像熵的计算⽅法。

信息熵的表示和计算

信息熵的表示和计算

实验一信息熵的表示和计算(实验估计时间:120 分钟)1.1.1 背景知识信息熵是美国贝尔实验室数学家仙侬(SHANNON)在1948年他的"通讯数学理论"那篇文章中首先提出的. 仙侬也因此获得了现代信息通讯技术之父的美称. 他对信息通讯的贡献可以说是对世纪进入信息时代奠定了最重要的基础理论.要简单说信息熵(ENTROPY)的概念很不容易,不过你只要把它看做是信息的一种数量化的衡量尺度就八九不离十了. 就象世界原来并没有时间这个东西,但是处于测度生命和运动过程的需要,人们发明了时间的概念.同样,信息原本并没有测度标准,但是出于衡量信息传递量和速度的需要,仙侬先生发明了对于信息的一个度量方法,这就是信息熵,它的单位是BIT.为什么用BIT? 因为在二次大战结束后,世界通讯领域发展很快,电报,电话,电传等普及了,而这些以电脉冲为信号载体的设备的最基本的结构就是只具有两种状态的开关(继电器). 所以二进制的通讯信号已经是最普及的信息通讯编码方式,以它作为信息的测度尺寸也是最自然的选择.以英文为例看如何计算信息熵. 我们都知道英文使用26个字母,如果我们把字母在所传输信息中出现的频率看做是随机的,而且具有同样的概率. 那么要传输26个字母中的任何一个就至少需要4个多BIT才够(4位最大是16个,5位最大是32个,26个字母介于两者之间). 当然,每个字母在传输信息中出现的概率不可能一样,比如 A是1/16; B是1/13; ...Z是1/126;(它们的和是1),那么通过计算可以得出英文的信息熵是4.03(根据参考文章介绍的数据). 2n = X; 其中 X 就是传输信息所需要的字符集的大小减去它的冗余度.公式: H(信息熵) = -∑ Pi log2(Pi); Pi:为每个字母在信息中出现的概率;计算公式并不复杂. 取以2为底的对数的道理也很简单,因为如果: 2n = X 的话,那么logX = n; 所以可以看出所谓信息熵就二进制的字符集在去掉冗余度后的二进制编码位数.冗余度是通过统计每个字符出现概率获得的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一信息熵与图像熵计算(2 学时)一、实验目的1.复习MATLAB的基本命令,熟悉MATLAB下的基本函数;2.复习信息熵基本定义,能够自学图像熵定义和基本概念。

二、实验内容1.能够写出MATLAB源代码,求信源的信息熵;2.根据图像熵基本知识,综合设计出MATLAB程序,求出给定图像的图像熵。

三、实验仪器、设备1.计算机-系统最低配置256M内存、P4 CPU;2.MATLAB编程软件。

四实验流程图五实验数据及结果分析四、实验原理1.MATLAB中数据类型、矩阵运算、图像文件输入与输出知识复习。

2.利用信息论中信息熵概念,求出任意一个离散信源的熵(平均自信息量)。

自信息是一个随机变量,它是指某一信源发出某一消息所含有的信息量。

所发出的消息不同,它们所含有的信息量也就不同。

任何一个消息的自信息量都代表不了信源所包含的平均自信息量。

不能作为整个信源的信息测度,因此定义自信息量的数学期望为信源的平均自信息量:1( ) 1 ( ) [log ] ( ) log ( ) i n i i p a i H E p a p a X 信息熵的意义:信源的信息熵H是从整个信源的统计特性来考虑的。

它是从平均意义上来表征信源的总体特性的。

对于某特定的信源,其信息熵只有一个。

不同的信源因统计特性不同,其熵也不同。

3.学习图像熵基本概念,能够求出图像一维熵和二维熵。

图像熵是一种特征的统计形式,它反映了图像中平均信息量的多少。

图像的一维熵表示图像中灰度分布的聚集特征所包含的信息量,令Pi表示图像中灰度值为i的像素所占的比例,则定义灰度图像的一元灰度熵为:2550 log i i i p p H图像的一维熵可以表示图像灰度分布的聚集特征,却不能反映图像灰度分布的空间特征,为了表征这种空间特征,可以在一维熵的基础上引入能够反映灰度分布空间特征的特征量来组成图像的二维熵。

选择图像的邻域灰度均值作为灰度2分布的空间特征量,与图像的像素灰度组成特征二元组,记为(i,j),其中i表示像素的灰度值(0<=i<=255),j表示邻域灰度(0<=j<=255),2 ( , ) / ij p f i j N上式能反应某像素位置上的灰度值与其周围像素灰度分布的综合特征,其中f(i,j)为特征二元组(i,j)出现的频数,N为图像的尺度,定义离散的图像二维熵为:2550 log ij ij i p p H构造的图像二维熵可以在图像所包含信息量的前提下,突出反映图像中像素位置的灰度信息和像素邻域内灰度分布的综合特征。

五、实验步骤1.求解信息熵过程:(1)输入一个离散信源,并检查该信源是否是完备集;(2)去除信源中符号分布概率为零的元素;(3)根据平均信息量公式,求出离散信源的熵。

2.图像熵计算过程:(1)输入一幅图像,并将其转换成灰度图像;(2)统计出图像中每个灰度阶象素概率;(3)统计出图像中相邻两象素的灰度阶联合分布矩阵;(4)根据图像熵和二阶熵公式,计算出一幅图像的熵。

六、实验报告要求1.按照本节内容后实验报告形式书写;2.实验总结和心得要详细,可以根据自己实验情况,写出建议。

七、实验注意事项1.MATLAB语言课下多复习,尽量采用模块化编程方法,通过函数调用形式运行程序。

2.仔细理解、体会图像熵的概念,能够将其联合熵的概念理解透彻。

八、思考题举例说明图像熵、信息熵在现实中有何实践指导意义?附录1:实验报告样式:实验报告班级:姓名:学号:组别:同组人:课程名称:实验室:实验时间:(使用实验报告纸的,以上内容可按照实验报告纸格式填写)实验一信息熵与图像熵计算 3一、实验目的:二、实验内容与原理:三、实验器材(设备、元器件、软件工具、平台):四、实验步骤:五、程序流程图:六、实验数据及结果分析:七、实验结论:八、思考题:九、编程、调试过程中遇到的问题及解决方法:十、其他:实验总结、心得体会及对本实验方法、手段及过程的改进建议等。

附录2:图像一维二维熵程序:close all; clc;I=imread('C:\Documents and Settings\All Users\Documents\My Pictures\picture\Sunset.jpg');img=rgb2gray(I);imview(I),imview(img);[ix,iy]=size(img);P1=imhist(img)/(ix*iy);temp=double(img);temp=[temp,temp(:,1)];CoefficientMat=zeros(256,256);for x=1:ixfor y=1:iyi=temp(x,y); j=temp(x,y+1);CoefficientMat(i+1,j+1)=CoefficientMat(i+1,j+1)+1;endendP2 = CoefficientMat./(ix*iy);H1=0; H2=0;for i=1:256if P1(i)~=0H1=H1-P1(i)*log2(P1(i));endfor j=1:256if P2(i,j)~=0H2=H2-P2(i,j)*log2(P2(i,j));endendendH2=H2/2;sprintf('1 ord image entropy is:%d',H1)sprintf('2 ord image entropy is:%d',H2)、实验二香农编码(2 个学时)一、实验目的1.了解香农编码的基本原理及其特点;2.熟悉掌握香农编码的方法和步骤;3.掌握MATLAB 编写香农编码的程序。

二、实验内容1.根据香农编码的方法和步骤,用香农编码编写程序;2.用编写的源程序验证书中例题的正确性。

三、实验仪器、设备1.计算机-系统最低配置256M 内存、P4 CPU;2. MATLAB 编程软件。

四、实验原理1.香农编码原理:香农第一定理指出了平均码长与信源之间的关系,同时也指出了可以通过编码使平均码长达到极限值,这是一个很重要的极限定理。

香农第一定理指出,选择每个码字的长度i K 满足下式:I (Xi ) K I (Xi ) 1,i就可以得到这种码,这种编码方法就是香农编码。

2.香农编码算法:1.将信源消息符号按其出现的概率大小依次排列:1 2 n P(X ) P(X ) , , P(X )2.确定满足下列不等式整数码长i K ;log2p( ) log2 ( ) 1 i i i x K p x3.为了编成唯一可译码,计算第i 个消息的累加概率;11( )ii kkp p x4.将累加概率i P变成二进制数;5.取i P二进制数的小数点后i K 位即为该消息符号的二进制码字。

五、实验步骤1.根据实验原理,设计香农编码程序;2.输入一组信源消息符号概率,可以求香农编码、平均码长和编码效率。

六、实验报告要求51. 按照本节内容后实验报告形式书写;2. 实验总结和心得要详细,可以根据自己情况写出建议。

七、实验注意事项1.香农编码是符号概率大的用短表示,小长程序中香农编码是符号概率大的用短表示,小长程序中香农编码是符号概率大的用短表示,小长程序中需要对概率进行排序,此我们调用 MATLAB MATLABMATLABMATLABMATLAB的库函数;2.最后需要注意的是,求得码字依次与排序符号概率对应;3.向无穷方取最小正整数位 ceilceilceil 函数。

八、思考题举例说明香农编码在现实中有际作用,列一个子并简要说明?附录 1:实验报告样式:实验报告班级:姓名:学号:组别:同组人:课程名称:实验室:实验时间:(使用实验报告纸的,以上内容可按照实验报告纸格式填写)实验二香农编码一、实验目的:二、实验内容与原理:三、实验器材(设备、元器件、软件工具、平台):四、实验步骤:五、程序流程图:六、实验数据及结果分析:七、实验结论:八、思考题:九、编程、调试过程中遇到的问题及解决方法:十、其他:实验总结、心得体会及对本实验方法、手段及过程的改进建议等。

附录 2:香农编码程序:close all;clc;n=input('输入信源符号个数:');p=zeros(1,n);for i=1:np(1,i)=input('输入信源符号概率:');endif sum(p)<1||sum(p)>1error('输入概率不符合概率分布')end6y=fliplr(sort(p));D=zeros(n,4);D(:,1)=y';for i=2:nD(1,2)=0;D(i,2)=D(i-1,1)+D(i-1,2);endfor i=1:nD(i,3)=-log2(D(i,1));D(i,4)=ceil(D(i,3));endDA=D(:,2)';B=D(:,4)';Code_length=0;for j=1:nCode_length=Code_length+p(j)*D(j,4);endH=0;for j=1:nH=H+p(j)*log2(1/p(j));endfor j=1:nfprintf('输入信源符号概率为%f的码字为:',p(1,j));C=deczbin(A(j),B(j));disp(C)endEfficiency=H/(Code_length)fprintf('平均码长:\n');disp(Code_length)fprintf('\n 香农编码效率:\n');disp(Efficiency)A:累加概率; B:码子长度。

:码子长度。

function [C]=deczbin(A,B)C=zeros(1,B); temp=A;for i=1:Btemp=temp*2;if temp>1temp=temp-1;C(1,i)=1;elseC(1,i)=0;endend7实验三费诺编码(2 学时)一、实验目的掌握费诺编码方法的基本步骤及优缺点。

二、实验内容对于给定的信源的概率分布,按照费诺编码的方法进行计算机实现。

三、实验仪器、设备1.计算机-系统最低配置256M 内存、P4 CPU;2.MATLAB 编程软件。

四、实验原理1.费诺编码原理:费诺编码就是通过使编码中各个句号出现的概率大致相等,实现概率均匀化,从而减少冗余度,提高编码效率。

凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合称为最佳变长码。

在编N 进制码时首先将信源消息符号按其出现的额概率一次又小到大排列开来,并将排列好的心愿符号按概率值分N 大组,使N 组的概率之和近似相同,并对各组赋予一个N 进制码元0、1...N-1。

相关文档
最新文档