在图像加密中,对扩散性测试的一个重要指标就是像素改变率,对于同一张灰度图,仅改变其一个灰度值,然后得到两幅不同的加密图,然后对比这两幅加密图的相同位置的灰度值,统计其不相等的个数占总像素点的百分比,得到的值就是像素改变率NPCR,当NPCR大于等于95%的时候,就可以判定扩散性较好,其具体计算公式如下图所示:
上式中,M,N分别为加密图的宽度和高度,C1(i,j),C2(i,j)分别为两幅加密图第i行第j列的灰度值
运用matlab求解像素改变率的具体程序如下:
%%%%----计算像素改变率-基于加密图和改变了原图的加密图----%%%%clc;clear;cd F:Dissertation代码图片%读取更改原图一个像素点后的加密图image1=imread('encryption_change.tif');%读取没有更改原图的加密图image2=imread('encrypted.tif');%显示图片subplot(1,2,1),imshow(image2),title('原图像')subplot(1,2,2),imshow(image1),title('改变后图像')%计算相同位置灰度值相等的个数[M,N]=size(image1);m=0;for i=1:M for j=1:N if image1(i,j)==image2(i,j) m=m+1; end endend%计算NPCRNPCR=(M*N-m)/(M*N);