matlab 灰度图像矩阵与伪随机矩阵异或

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); %将图片进行异或加密
为什么异或之后的结果不对啊?
要怎么改呢
希望两次异或之后还是原图

第1个回答  2013-03-21
P = imread('rice.png');
g = rgb2gray(P);
level = graythresh(g);
bw = rgb2bw(g,level);
rand...追问

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一样

相似回答
大家正在搜