加密图像三个方向相关系数画图matlab代码
时间: 2023-09-09 11:01:00 浏览: 84
图像加密matlab代码
4星 · 用户满意度95%
加密图像的三个方向相关系数是指将加密图像分为水平方向、垂直方向和对角线方向,计算三个方向上的相关系数。具体的画图Matlab代码如下:
```matlab
% 读取原始图像和加密图像
original_img = imread('原始图像路径');
encrypted_img = imread('加密图像路径');
% 将原始图像和加密图像转为灰度图像
original_gray = rgb2gray(original_img);
encrypted_gray = rgb2gray(encrypted_img);
% 计算原始图像和加密图像的三个方向相关系数
original_coefs = corrcoef_3direction(original_gray);
encrypted_coefs = corrcoef_3direction(encrypted_gray);
% 画图
figure;
subplot(2,2,1);
imshow(original_gray);
title('原始图像');
subplot(2,2,2);
imshow(encrypted_gray);
title('加密图像');
subplot(2,2,3);
bar(original_coefs);
title('原始图像三个方向相关系数');
xlabel('方向');
ylabel('相关系数');
subplot(2,2,4);
bar(encrypted_coefs);
title('加密图像三个方向相关系数');
xlabel('方向');
ylabel('相关系数');
% 相关系数计算函数
function coefs = corrcoef_3direction(img)
% 获取图像的大小
[height, width] = size(img);
% 垂直方向的相关系数
vertical_coefs = corrcoef(img(1:height-1, :), img(2:height, :));
% 水平方向的相关系数
horizontal_coefs = corrcoef(img(:, 1:width-1), img(:, 2:width));
% 对角线方向的相关系数
diagonal_coefs = corrcoef(img(1:height-1, 1:width-1), img(2:height, 2:width));
% 将三个方向的相关系数合并为一个数组
coefs = [vertical_coefs(2,1), horizontal_coefs(2,1), diagonal_coefs(2,1)];
end
```
以上代码中,`original_img`和`encrypted_img`分别为原始图像和加密图像的路径。首先,将原始图像和加密图像转为灰度图像,然后分别计算原始图像和加密图像在三个方向上的相关系数。接着,使用Matlab的subplot函数绘制子图,将原始图像、加密图像以及三个方向的相关系数分别显示在各自的子图中。最后,使用自定义的函数`corrcoef_3direction`计算垂直方向、水平方向和对角线方向的相关系数,并返回一个包含这三个相关系数的数组。
阅读全文