图像信息熵
- 反应图像中平均信息量的多少
- 一维熵:图像中灰度分布的聚集特征所包含的信息量
- Pi表示图像中灰度为i的像素所占的比例,则一元灰度熵为

- 一维熵并不能反应灰度分布的空间特征,引入能反应空间特征的量组成二维熵
- 选择图像的领域灰度均值作为空间特征量,二维熵记为(i,j)
- i为像素灰度值,j为领域灰度

- Pij反应某像素位置的灰度与周围灰度分布
- f(i,j)为(i,j)出现的频数
- N为图像尺度
- 二维熵为

clc
clear
close all
I=imread('rice.png');
[C,L]=size(I);
Img_size=C*L;
G=256;
H_x=0;
nk=zeros(G,1);
for i=1:C
for j=1:L
Img_level=I(i,j)+1;
nk(Img_level)=nk(Img_level)+1;
end
end
for k=1:G
Ps(k)=nk(k)/Img_size;
if Ps(k)~=0;
H_x=-Ps(k)*log2(Ps(k))+H_x;
end
end
H_x
霍夫曼编码
- 霍夫曼相关函数
huffmanenco(SIG,DICT)哈夫曼编码函数 SIG为输入编码信号 DICT编码字典
huffmandeco(COMP,DICT)哈夫曼解码函数 COMP哈夫曼编码向量
huffmandict(SYM, PROB)哈夫曼字典生成字典函数 SYM为信源符号向量 PROB为符号出现概率
- 实现代码
clear;
clear all;
I = imread('F:\Myfile\Matlab\Test_picture\1_1.jpg');
[M,N] = size(I);
I1 = I(:);
P = zeros(1,256);
for i = 0:255
P(i+1) = length(find(I1 == i))/(M*N);
end
k = 0:255;
dict = huffmandict(k,P);
enco = huffmanenco(I1,dict);
deco = huffmandeco(enco,dict);
Ide = col2im(deco,[M,N],[M,N],'distinct');
subplot(1,2,1);imshow(I);title('original image');
subplot(1,2,2);imshow(uint8(Ide));title('deco image');