信息熵与图像熵
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信电学院
信息论与编码实验报告书(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.9649