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.

%/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

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)

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,[]);

2 Comments

Can you please tell me which method of steganography is this ? Is this LSB or some other method ? Thanks in advance.

Sign in to comment.

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!