用2023a版matlab写一段将一幅64*64的二值图像进行一种共享图像大小等于原始图像大小的非扩展视觉密码方案,非扩展视觉密码方案的原理:首先构造两个布尔矩阵C0和C1,C0用于表示原始图像内的白像素,C1用于表示原始图像内的黑像素。如果原始图像中要加密的像素是白像素(黑像素),则在C0(C1)中随机选择一列,并将它们分别赋值到两个共享图像的相应位置,即原始图像中的每个白像素(黑像素)都有两种不同的加密方式。
时间: 2023-07-16 15:13:49 浏览: 54
以下用2023a版matlab实现将一幅64*64的二值图像进行一种共享图像大小等于原始图像大小的非扩展视觉密码方案的代码:
```matlab
% 读取原始图像
img = imread('original_image.bmp');
% 将图像转为二值图像
img_binary = imbinarize(img);
% 构造布尔矩阵C0和C1
C0 = img_binary;
C1 = ~img_binary;
% 构造共享图像
share_img_1 = zeros(64, 64);
share_img_2 = zeros(64, 64);
% 对于原始图像中的每个白像素(黑像素),在C0(C1)中随机选择一列,并将它们分别赋值到两个共享图像的相应位置
for i = 1:64
for j = 1:64
if img_binary(i, j) == 1 % 白色像素
col = randi(64); % 随机选择列
share_img_1(i, col) = C0(i, col);
share_img_2(i, col) = C0(i, col);
else % 黑色像素
col = randi(64); % 随机选择列
share_img_1(i, col) = C1(i, col);
share_img_2(i, col) = C1(i, col);
end
end
end
% 显示共享图像
figure;
subplot(1, 2, 1), imshow(share_img_1);
title('Shared Image 1');
subplot(1, 2, 2), imshow(share_img_2);
title('Shared Image 2');
```
运行代码后,将会生成两个共享图像,分别为"Shared Image 1"和"Shared Image 2"。这两个图像的大小与原始图像相同,都是64*64,且每个像素都是二值像素。其中,白色像素表示原始图像中的白色像素经过加密后的值,黑色像素表示原始图像中的黑色像素经过加密后的值。
阅读全文