信电学院
信息论与编码
实验报告书
实验名称 专业班级 学生姓名 学 号 指导教师 设计成绩 (2013/2014学年第二学期) 信息熵与图像熵的计算
通信1202
王渊
120310201
张 龙 2014年 05月 10 日
::::::信息熵与图像熵计算
一 实验目的
1 通过本实验复习MATLAB的基本命令,熟悉MATLAB下的基本函数
2 复习信息熵基本定义,能够自学图像熵定义和基本概念
二 实验要求
1 能够写出MATLAB源代码,求信源的信息熵
2 根据图像熵基本知识,设计出MATLAB程序,求出给定图像的图像熵
三 实验步骤
1. 求解信息熵过程:
① 输入一个离散信源,并检查该信源是否是完备集。
② 去除信源中符号分布概率为零的元素。
③ 根据平均信息量公式,求出离散信源的熵。
程序及运行结果记录:
function H = xxs(X)
if abs(sum(X) - 1) ~=0
error('不是完备集')
end
if find(X==0)
A(find(X==0))=[];
disp('去掉概率为零的元素');
A
end
H = -sum(X .* log2(X));
X=[0.2,0.5,0.3];
>> H=xxs(X)
H =1.4855
2. 图像熵计算过程:
① 输入一幅图像,并将其转换成灰度图像。
② 统计出图像中每个灰度阶象素概率。
③ 统计出图像中相邻两象素的灰度阶联合分布矩阵。
④ 根据图像熵和二阶熵公式,计算出一幅图像的熵。
程序及运行结果记录:
function [H1,H2]=txs(Y)
I=imread(Y); %读取图像
img=rgb2gray(I); %转化为灰度图像
imview(I),imview(Y);
[ix,iy]=size(Y); %计算图像大小
P1=imhist(Y)/(ix*iy); %获取图像数据直方图
temp=double(Y);
temp=[temp,temp(:,1)];
A=zeros(256,256); %定义256*256的零矩阵
for x=1:ix %统计出图像中相邻两象素的灰度阶联合分布矩阵
for y=1:iy
i=temp(x,y);j=temp(x,y+1);
A(i+1,j+1)= A(i+1,j+1)+1;
end
end
P2=A./(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;
>>[H1,H2]=txs('asd3.jpg')
H1 =
6.7520
H2 =
4.99