数字图像处理第四次实验知识点

519 阅读2分钟

图像信息熵

  • 反应图像中平均信息量的多少
  • 一维熵:图像中灰度分布的聚集特征所包含的信息量
    • 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);%产生一个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');