matlab计算NPCR
时间: 2023-11-21 07:54:35 浏览: 92
NPCR是指在加密图像中改变一个像素后,与原图像相比不同像素的比例。在Matlab中,可以通过以下步骤计算NPCR:
1. 读取更改原图一个像素点后的加密图和没有更改原图的加密图。
2. 显示图片。
3. 计算相同位置灰度值相等的个数。
4. 计算NPCR,公式为:NPC=(256*256-m)/(256*256),其中m为相同位置灰度值相等的个数。
下面是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=0;
for i=1:256
for j=1:256
if image1(i,j)==image2(i,j)
m=m+1;
end
end
end
%计算NPCR
NPC=(256*256-m)/(256*256);
```
相关问题
matlab 计算NPCR代码
好的,以下是一个简单的 MATLAB 代码,用于计算两个图像的 NPCR(Normalized Pixel Change Rate):
```matlab
% 读取两个图像 img1 和 img2
img1 = imread('image1.png');
img2 = imread('image2.png');
% 如果两个图像大小不同,则将它们调整为相同的大小
if size(img1) ~= size(img2)
img2 = imresize(img2, size(img1));
end
% 计算 NPCR
num_pixels = numel(img1);
num_changed = sum(img1(:) ~= img2(:));
npcr = num_changed / num_pixels;
fprintf('NPCR = %.4f\n', npcr);
```
在这个代码中,我们首先读取了两个图像 `img1` 和 `img2`,然后检查它们的大小是否相同。如果不同,我们使用 MATLAB 的 `imresize` 函数将它们调整为相同的大小。
接下来,我们计算了两个图像中像素值不同的数量,用 `num_changed` 表示。最后,我们计算 NPCR 值,即将 `num_changed` 除以总像素数 `num_pixels`。最后,我们使用 `fprintf` 函数将 NPCR 值输出到控制台。
请注意,这只是一个简单的示例代码,如果您需要更详细的功能或高效率的实现,请考虑使用更专业的图像处理库或算法。
图像处理中npcr与uaci的值matlab
NPCR (Normalized Pixel Change Rate) 和 UACI (Unified Average Changing Intensity) 是评估图像加密算法性能的指标之一,通常用于比较加密前后的图像差异程度。
在 MATLAB 中,可以使用以下代码计算 NPCR 和 UACI 值:
```matlab
% 读入加密前和加密后的图像
img1 = imread('image1.bmp');
img2 = imread('image2.bmp');
% 计算 NPCR 值
npcr = sum(sum(img1 ~= img2)) / (size(img1, 1) * size(img1, 2)) * 100;
% 计算 UACI 值
uaci = sum(sum(abs(double(img1) - double(img2)))) / (size(img1, 1) * size(img1, 2) * 255) * 100;
```
其中,`img1` 和 `img2` 分别是加密前和加密后的图像,`size(img1, 1)` 和 `size(img1, 2)` 分别是图像的行数和列数。计算 NPCR 值时,先将两幅图像逐像素比较,计算不同像素的数量,再除以总像素数并乘以 100 得到 NPCR 值。计算 UACI 值时,先将两幅图像转换为 double 类型,再逐像素计算它们的差值绝对值之和,除以总像素数和像素值范围 255,最后乘以 100 得到 UACI 值。