|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
M' T' O% q9 ^一、源代码) g* ~" ?/ J- v0 Q: O! u: \/ T
+ {; _8 v( R# H) `7 i- %Main embedding code of the steganography method
- %It is written by:Souradeep Mukhopadhyay
- %Mail:souradeepmukhopadhyay99@gmail.com
- %Phone:6291028852
- clc;
- clear all;
- my_image=imread('Picture 13623416.jpg');
- secret_image=imread('Picture 13623416.jpg');
- headerlength=32;
- [R,C]=size(my_image);
- % [R1,C1]=size(secret_image);
- [s,k]=size(secret_image);
- watermarklength=s*k;
- slength=uint8(headerlength/2);
- klength=uint8(headerlength-slength);
- slengthbits=dec2bin(s,slength);
- slengthbits=reshape(slengthbits',[],1);
- klengthbits=dec2bin(k,klength);
- klengthbits=reshape(klengthbits',[],1);
- sizebits=uint8(zeros(headerlength,1));
- for j=1:uint8(headerlength)
- if(j<=slength)
- sizebits(j)=uint8(slengthbits(j)-48);
- else
- sizebits(j)=uint8(klengthbits(j-klength)-48);
- end
- end
- actualbits=dec2bin(secret_image);
- actualbits=reshape(actualbits',[],1);
- totalnoofbitstobeembedded=watermarklength*8+headerlength;
- for i=1:totalnoofbitstobeembedded
- if(i<=headerlength)
- watermarkbits(i)=uint8(sizebits(i));
- else
- watermarkbits(i)=uint8(actualbits(i-headerlength)-48);
- end
- end
- blocksizeR=1;
- blocksizeC=3;
- wholeBlockRows = ceil(R / blocksizeR);
- wholeBlockCols = ceil(C / blocksizeC);
- % blocksize=2;
- % wholeBlockRows = floor(R / blocksize);
- % wholeBlockCols = floor(C / blocksize);
- % padding if the image is not divisible by block size
- if rem(R,blocksizeR)==0
- effectiveblocksizeR=rem(R,blocksizeR);
- else
- effectiveblocksizeR=blocksizeR-rem(R,blocksizeR);
- end
- if rem(C,blocksizeC)==0
- effectiveblocksizeC=rem(C,blocksizeC);
- else
- effectiveblocksizeC=blocksizeC-rem(C,blocksizeC);
- end
- my_image = padarray(my_image, [effectiveblocksizeR effectiveblocksizeC], 'replicate','pre');
- %imwrite(my_image,'E:\Dr. Ram Sarkar\MATLAB_SKG_PROG\ori_resize\lena512_gray_pad.bmp');
- [R,C]=size(my_image);
- bin=zeros(R,C,'uint8');
- flag=0;
- traversedbit=1;
- traversedbit=uint32(traversedbit);
- noOfbitEmbedded=[3 2 4];
- % loop over all rows and columns
- for i=1:wholeBlockRows
- for j=1:wholeBlockCols
- % get the block
- one_block=my_image((i-1)*blocksizeR+[1:blocksizeR],(j-1)*blocksizeC+[1:blocksizeC]);
- %Transform the block
- tn_one_block=uint32(LT(uint32(one_block)));
- backup_tn_one_block=tn_one_block;
- for m=1:blocksizeR
- for n=1:blocksizeC
- freqcom=tn_one_block(m,n);
- % backupfreqcom=freqcom;
- for l=1:noOfbitEmbedded(m*n)
- if(traversedbit<=totalnoofbitstobeembedded)
- if watermarkbits(traversedbit)==1
- freqcom=bitor(freqcom,(2^(l-1)));
- else
- freqcom=bitand(freqcom,bitcmp((2^(l-1)),'uint16'));
- end
- % tn_one_block(m,n)=freqcom;
- traversedbit=traversedbit+1;
- else
- flag=1;
- break;
- end
- if(flag)
- break;
- end
- end
- if(flag)
- break;
- end
- tn_one_block(m,n)=freqcom;
- end
- end
- tn_one_block(1,1)=frequencyAdjustment(backup_tn_one_block(1,1),tn_one_block(1,1),noOfbitEmbedded(1));
- tn_one_block(1,2)=frequencyAdjustment(backup_tn_one_block(1,2),tn_one_block(1,2),noOfbitEmbedded(2));
- tn_one_block(1,3)=frequencyAdjustment(backup_tn_one_block(1,3),tn_one_block(1,3),noOfbitEmbedded(3));
- In_one_block=uint32(ILT(int32(tn_one_block)));
- for m=1:blocksizeR
- for n=1:blocksizeC
- pixelval=In_one_block(m,n);
- bin((i-1)*blocksizeR+m,(j-1)*blocksizeC+n)=pixelval;
- end
- end
- end
- end
- imshow(bin);
- % PSNR=psnr(my_image,bin)
- %imwrite(bin,'E:\Dr. Ram Sarkar\MATLAB_SKG_PROG\stego_resize\lena512_gray_stego.bmp');. M9 e, b4 P9 I* ~6 t1 ~) P6 ?
6 t" ]1 Q7 t8 \' `
4 j# ^* Z; N3 V0 C4 T' m二、运行结果
" G% Q6 W0 M" h3 E1 V2 G
7 |; W% H( N; @5 R \
- h" G/ g/ Z7 J, s- K) U8 R& t
& A/ o0 F& [' v( p) a0 k6 E |
|