i have written a code to hide a grayscale image within a rgb image.but while decrypting.the rgb image is retrieved.but the grayscale image is not.a black image is displayed instead.

1 view (last 30 days)
%/encryption
p=imread('flower.jpg');
q=imread('msgimage.jpg');
p1=rgb2gray(p)
s=size(q);
[r c]=size(p1);
figure(1),imshow(q),title('original');
q2=imresize(q,[r c]);
qr=q2(:,:,1);
qg=q2(:,:,2);
qb=q2(:,:,3);
l=r*c;
qr=bitand(qr,uint8(240));
p2=bitshift(p1,-3);
im=bitor(qr,p2);
im=cat(3,qr,qg,qb);
%im1=imresize(im1,[s(1) s(2)]);
figure(2),imshow(p1);
figure(3),imshow(im),title('final');
=========================================
%/decryption
ir=im(:,:,1);
ig=im(:,:,2);
ib=im(:,:,3);
x=bitand(ir,uint8(240));
y=bitand(ir,uint8(15));
x=cat(3,ir,ig,ib);
figure(1),imshow(x);
figure(2),imshow(y);

Accepted Answer

Walter Roberson
Walter Roberson on 28 Jan 2014
You have
im=bitor(qr,p2);
im=cat(3,qr,qg,qb);
which calculates im and then throws away that result and writes in a new one.

More Answers (1)

Shivaputra Narke
Shivaputra Narke on 28 Jan 2014
Edited: Walter Roberson on 28 Jan 2014
Use following code...
Compare code and find the changes done.
Hope this help..
%/encryption
p=imread('flowers.jpg');
q=imread('msgimage.jpg');
p1=rgb2gray(p)
s=size(q);
[r c]=size(p1);
figure(1),imshow(q),title('original');
q2=imresize(q,[r c]);
qr=q2(:,:,1);
qg=q2(:,:,2);
qb=q2(:,:,3);
l=r*c;
qr=bitand(qr,uint8(240));
p2=bitshift(p1,-3);
im=bitor(qr,p2);
im=cat(3,im,qg,qb);
%im1=imresize(im1,[s(1) s(2)]);
figure(2),imshow(p1);
figure(3),imshow(im),title('final');
%/decryption
ir=im(:,:,1);
ig=im(:,:,2);
ib=im(:,:,3);
x=bitand(ir,uint8(240));
y=bitand(ir,uint8(15));
x=cat(3,ir,ig,ib);
figure(1),imshow(x);
figure(2),imshow(y,[]);

Categories

Find more on MATLAB in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!