P=imread('rice.png'); %读取图片
l=length(P);
I=reshape(P,1,l*l); %将灰度值矩阵变成向量
I=dec2bin(I,8); %将灰度值十进制变成二进制
rand('seed',l); %设定伪随机0-1矩阵key
r=randint(l*l,8); %生产伪随机0-1矩阵r
I=xor(r,I); %将图片进行异或加密
为什么异或之后的结果不对啊?
要怎么改呢
希望两次异或之后还是原图
rice.png本来就是灰度图像啊。另外不明白为什么要设定阈值啊?
追答% 阈值不同,得到的 bw 完全不同。
P = imread('rice.png');
g = rgb2gray(P);
level = graythresh(g);
bw = im2bw(g,level); % 前面错了
[m,n] = size(bw);
R = randint(m,n);
A = xor(bw,R);
我希望两次异或之后可以还原图片。
追答% 前提是:用于还原的异或矩阵( R)必须是用于加密的矩阵,意思是必须将R值保存,还原时调出
% B = xor(A,R); imshow(B); % 可以验证
试了下,只可惜恢复出来的是二值图,我希望是灰度值,与原图P一样