%利用Logistic混沌映射,对灰度图像进行序列加密 picture=imread('C:\Users\AAA\Desktop\hui\LENA.bmp'); figure(1);subplot(1,3,1); imshow(picture); title('明文'); [M,N]=size(picture); x=0.1; u=4; %迭代200次,达到充分混沌状态 for i=1:200 x=u*x*(1-x); end %产生一维混沌加密序列 A=zeros(1,M*N);%生成1*MN的零矩阵 A(1)=x; %生成混沌序列 for i=1:M*N-1 A(i+1)=u*A(i)*(1-A(i)); end %归一化序列 B=uint8(255*A);%转换为255数据类型 %转化为二维混沌加密序列 Imgn=reshape(B,M,N);%reshape就是把指定的矩阵改变形状,但是元素个数不变;这里将B转换为M行,N列 Rod=bitxor(picture,Imgn);%异或操作加密 figure(1);subplot(1,3,2); imshow(Rod); title('密文'); %解密 Picturej=bitxor(Rod,Imgn);%异或操作解密 figure(1);subplot(1,3,3); imshow(Picturej); title('解密图像'); %绘制明文和密文的直方图 figure(2);subplot(1,2,1); imhist(picture);title('明文直方图'); figure(2);subplot(1,2,2) imhist(Rod);title('密文直方图');错误:bitxor各输入的大小必须相同
时间: 2023-09-06 10:13:08 浏览: 63
基于Logistic混沌映射的图像加密系统及FPGA实现-论文
根据您提供的错误信息,可以看出 `bitxor` 函数的输入矩阵大小必须相同,因此在进行 `bitxor` 操作之前,需要确保 `picture` 和 `Imgn` 的大小相同。您可以使用 `imresize` 函数将 `Imgn` 调整为与 `picture` 相同大小,即:
```
Imgn_resized = imresize(Imgn, [M, N]);
Rod = bitxor(picture, Imgn_resized);
```
同样地,在进行解密时,您也需要将 `Imgn_resized` 用于解密,即:
```
Picturej = bitxor(Rod, Imgn_resized);
```
这样就可以避免 `bitxor` 函数出现输入矩阵大小不同的错误。
阅读全文