实验一 信息熵与图像熵计算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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: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)、