Stegnaography using DCT
이전 댓글 표시
this is the code we are using to implement steganography based on DCT....
I = imread('lena_std.jpg');
I = im2double(I(:,:,1));
I2=imread('test.bmp');
subplot(2,2,1),imshow(I);
subplot(2,2,2),imshow(I2);
I2=de2bi(I2(:,:,1));
x=reshape(I2',1,38400);
T = dctmtx(8);
dct = @(x)T * x * T';
B = blkproc(I,[8 8],dct);
k=0;
for i=1:256
for j=1:256
if B(i,j)>0
b=dec2bin(typecast(single(B(i,j)),'uint32'),32);
b(1,7:8)=x(1,k*2+1:k*2+2);
k=k+1;
c=double(typecast(uint32(bin2dec(b)),'single') );
B(i,j)=c;
end
end
end
subplot(2,2,3),imshow(B);
invdct = @(x)T' * x * T;
B3= blkproc(B,[2 2],invdct);
subplot(2,2,4),imshow(B3);
could somebody tell me the problem in this code with respect to the binary and decimal conversion....
댓글 수: 2
kbae
2013년 4월 26일
could you give me the extraction code for this embedding method?thank you
Ajmal Mohammed V M
2022년 5월 13일
Could u pls share the extraction code for the above problem
채택된 답변
추가 답변 (5개)
NILANJ
2013년 4월 19일
0 개 추천
I2=de2bi(I2(:,:,1)); can any one tell me plz that in this function why (:,:,1) ???
댓글 수: 1
Walter Roberson
2013년 4월 19일
First bit plane -- corresponding to Red in an RGB image.
Maulana Wahid
2014년 1월 9일
0 개 추천
could you please explain your DCT code step by step?
Peter Eze
2016년 12월 22일
0 개 추천
use transpose(dec2bin(ImageMessage(i,j))) to create the binary string for each pixel of the message to be embedded
juhi patel
2017년 9월 26일
0 개 추천
de2bi()is used for you want your data in matrix form.&dec2bin() is used if you want output in string format.you are mixing both function in this code.using de2bi() will solve your problem since image is in matrix form.
댓글 수: 1
Walter Roberson
2017년 9월 26일
I almost always use dec2bin() and subtract '0' to get matrix form. Then I do not have to worry about the fact that de2bi() is part of a communications toolbox rather than part of basic MATLAB.
Fady Samann
2020년 6월 13일
편집: Fady Samann
2020년 8월 12일
0 개 추천
First, you are not doing quantization to remove the samller DCT coefficients after that you can change LSB by masking it and and OR it with the message bit. Use bitwise operations, because dec2bin and bin2dec treat the binary as a string of 0's and 1's.
the process is just like JPG compression but in the middle of quantization and dequantization, you can change the LSB.
Second, when you pick the right DCT coefficient to change its LSB, the coefficient must be greater than one because of changing the LSB of one to zero (from the message bits) will set the coefficient to zero then during the decoding process this coefficient will be skipped because of the if condition (B(i,j)>0).
Note: round the number only after the quantization stage in the encoding and decoding of the message.
카테고리
도움말 센터 및 File Exchange에서 Image Transforms에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!