文章目录
图片加密的评价指标—直方图统计与熵值

  1. 本篇文章对加密(置乱)后的图像进行评估,采用matlab来计算加密前后的图像直方图统计,以及图像的熵值。
  2. 灰度直方图统计能反映一幅图的像素分布,或者说是亮度变化,针对加密图像来说,通过直方图统计可得到像素之间的 相关性 关系。
  3. 图像熵值能反映图像的平均信息量,同时熵值越大,说明图像越混乱。


根据以上,我们对FPGA实现加密后的图像进行质量评估。
1、首先给出原图与加密后的图像
2、matlab进行直方图统计:

I = imread('his22.png') ; % 读取rgb图像
I = rgb2gray(I);
figure, imshow(I); 
figure, imhist(I); % 显示图像的灰度值直方图

结果如下:

通过上述图片可看出,加密后的图像分布更均匀,且直方图统计特性不如原图明显,因此说明图像像素之间的相关性低,也就是图像越混乱,从而达到了加密的效果。

3、同样对原图与加密图进行图像熵值的计算

clc
clear
close all

I=imread('his22.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 %显示熵值

通过计算可知,原图熵值为7.71,加密图的熵值为7.84,因此加密后的图像熵值更大,同时对于8位的灰度图来说,最大的信息熵值是8,7.84更接近于8,说明加密后图像的混乱程度大。

补充:加密后的直方图统计以及熵值虽然能说明加密成功,但是为了带来更好的效果,可增加置乱变换的次数,但是不可违背置乱的周期性,也就是在可复原的周期内,最大限度的变换图像,从而即可得到更好的加密效果。

参考: