实验一-信息熵与图像熵计算
实验一 信息熵与图像熵计算(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 SettingsAll UsersDocumentsMy PicturespictureSunset.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:ix for y=1:iy i=temp(x,y); j=temp(x,y+1); CoefficientMat(i+1,j+1)=CoefficientMat(i+1,j+1)+1; end end P2 = CoefficientMat./(ix*iy); H1=0; H2=0; for i=1:256 if P1(i)=0 H1=H1-P1(i)*log2(P1(i); end for j=1:256 if P2(i,j)=0 H2=H2-P2(i,j)*log2(P2(i,j); end end end H2=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 x +3.为了编成唯一可译码,计算第i 个消息的累加概率;11( )ii kkp p x-= 4.将累加概率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。之后再针对每一个大组内的心愿符号做如上处理,即再分为概率相同的N 组,赋予N 进制码元。如此重复,直到每组