MATLAB程序
clc;
clear;
tic;
original_filename = "lena256.bmp";
original_image = double(imread(original_filename));
[num_rows, num_cols] = size(original_image);
Index = randperm (num_rows * num_cols);
intermediate_encrypted_image = Scramble(Index, original_image);
reconstructed_image = Unscramble (Index,intermediate_encrypted_image);
subplot(1,3,1),imshow(uint8(original_image));
subplot(1,3,2),imshow(intermediate_encrypted_image,[]);
subplot(1,3,3),imshow(uint8(reconstructed_image));
time_encoder = toc
function encrypted_image = Scramble (Index, original_image)
[row, col] = size(original_image);
size_images = row;
vec_reshape_image = reshape(original_image, size_images * size_images, 1);
enc_vec_reshape_image = zeros(size_images * size_images, 1);
for i=1: 1: size_images * size_images
enc_vec_reshape_image (i) = vec_reshape_image(Index(i));
end
encrypted_image = reshape(enc_vec_reshape_image, size_images, size_images);
end
function decrypted_image = Unscramble (Index, encrypted_image)
[row, col] = size(encrypted_image);
size_images = row;
vec_reshape_encrypted_image = reshape(encrypted_image, size_images * size_images, 1);
vec_reshape_image = zeros(size_images * size_images, 1);
for i=1: 1: size_images * size_images
vec_reshape_image (Index(i)) = vec_reshape_encrypted_image(i);
end
decrypted_image = reshape(vec_reshape_image, size_images, size_images);
end
运行结果
参考资料
https://github.com/lilizong/2DCS-ETC