使用Matlab实现 利用Arnold置乱一级小波分解后的低频分量,得到密文图像。
时间: 2024-05-06 21:17:14 浏览: 11
以下是利用Arnold置乱一级小波分解后的低频分量得到密文图像的Matlab代码:
```matlab
% 读取原始图像
img = imread('lena.bmp');
% 显示原始图像
subplot(1,3,1), imshow(img), title('原始图像');
% Arnold置乱
N = size(img,1); % 图像大小
x = 1:N; y = 1:N;
[X,Y] = meshgrid(x,y);
a = 1; b = 1; % Arnold置乱参数
for k=1:20 % 迭代20次
X = mod(X + Y + a, N) + 1;
Y = mod(X + 2*Y + b, N) + 1;
end
scrambled_img = img(sub2ind([N,N], X, Y)); % 置乱后的图像
subplot(1,3,2), imshow(scrambled_img), title('置乱后的图像');
% 一级小波分解
[LL, LH, HL, HH] = dwt2(double(scrambled_img)/255, 'haar');
LL = uint8(LL*255); % 将LL转为uint8类型
% 生成密钥
key = randperm(N*N);
% 加密低频分量
LL_vector = reshape(LL, [1,N*N]); % 将LL转为向量形式
LL_vector_encrypted = LL_vector(key); % 加密LL向量
LL_encrypted = uint8(reshape(LL_vector_encrypted, [N,N])); % 将加密后的LL向量转为图像形式
% 生成密文图像
ciphertext = scrambled_img;
ciphertext(1:N/2, 1:N/2) = LL_encrypted; % 将加密后的LL替换到密文图像中
subplot(1,3,3), imshow(ciphertext), title('密文图像');
```
运行上述代码,即可得到原始图像、Arnold置乱后的图像和密文图像。其中,密钥是通过随机排列N*N个数字得到的,可以用于解密。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)