基于DCT变换的信息隐藏(数字水印)嵌入算法的设计(Matlab)

来源:互联网 发布:家庭影院网络播放器 编辑:程序博客网 时间:2024/05/21 10:03

<div class="article_content" id="article_content">
<p>隐藏信息嵌入程序,老师写的!</p>
<p>&nbsp;</p>
<p>%------------------------------------------------------------------%<br>%&nbsp;&nbsp;&nbsp;&nbsp; 基于DCT变换的信息隐藏(数字水印)嵌入算法的设计____2007.06.19&nbsp;&nbsp;&nbsp;&nbsp; %%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %<br>%-----------------------------------------------------------=------%<br>clear all;<br>close all;<br>clc<br>%-----------------读入"W",并进行WPP处理---------------------<br>wm0=imread('watermark.bmp');<br>% wm0=imresize(wm0,[64 64]);<br>[Mm,Nm]=size(wm0) ; %计算水印图象的高度和宽度<br>n=Mm*Nm;<br>subplot(131)<br>imshow(wm0);<br>title('my watermark');<br>wm=double(wm0);<br>for i=1:Mm<br>&nbsp;&nbsp;&nbsp; for j=1:Nm<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if wm(i,j)==0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wm(i,j)=-1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp; end<br>end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>%-----------------------读入"C",并进行CPP处理--------------------------<br>% cover_image=imread('cameraman.tif');<br>cover_image=imread('lena.bmp');<br>[Mc,Nc]=size(cover_image);&nbsp;%计算载体图象的高度和宽度<br>subplot(132);<br>imshow(cover_image);<br>title('my coverimage');<br>cover_image=double(cover_image);%读入原始宿主图象,并转换为双精度数组</p>
<p>%------------------分块DCT变换,嵌入水印----------------------------</p>
<p>%设置水印嵌入强度<br>% k=369; <br>k=70; <br>%设置嵌入位置<br>x=3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>y=5;<br>%设定图象的分块大小为8*8<br>blocksize=8;&nbsp;&nbsp;&nbsp; <br>c=Mc/blocksize;<br>d=Nc/blocksize;<br>m=c*d;%计算图象划分的图象块</p>
<p>%判断载体图像尺寸是否适合水印大小<br>if n&gt;m<br>&nbsp;&nbsp;&nbsp; error('^_^ Dear classmates~~~~~~The watermark is too large to be imbeded into the coverimage,hehe~~~');<br>end</p>
<p>%分块DCT变换,嵌入水印<br>for j=1:c<br>&nbsp;&nbsp;&nbsp; for i=1:d<br>&nbsp;&nbsp;&nbsp;&nbsp; dct_block=dct2(cover_image((1+(j-1)*8):j*8,(1+(i-1)*8):i*8));<br>&nbsp;&nbsp;&nbsp;&nbsp; dct_block(x,y)=k*wm(j,i);<br>&nbsp;&nbsp;&nbsp;&nbsp; watermarked_image((1+(j-1)*8):j*8,(1+(i-1)*8):i*8)=idct2(dct_block);<br>&nbsp;&nbsp;&nbsp; end<br>end<br>%------------------------------------------------------------------</p>
<p>%生成并输出嵌入水印后的图象<br>imwrite(uint8(watermarked_image),'watermarked_image.bmp','bmp');<br>%显示嵌入水印后的图象<br>subplot(133);<br>imshow(uint8(watermarked_image))<br>title('watermarkedImage') &nbsp;</p>
<p>&nbsp;</p>
<p>隐藏信息提取程序,我写的!</p>
<p>clear all ;<br>close all ;<br>clc</p>
<p>%定义一个空空间来存储提取的水印<br>wm_image=zeros(32,32);<br>% subplot(122);<br>% imshow(wm_image);</p>
<p>%read the marked image and transfer it to double precise<br>%-------------------------------------------------------<br>watermarked_image=imread('watermarked_image.bmp');<br>[M_marked,N_marked]=size(watermarked_image);<br>subplot(121);<br>imshow(watermarked_image);<br>title('The marked image') ;<br>watermarked_image=double(watermarked_image);</p>
<p>blocksize=8;<br>k=1/70;<br>x=3;<br>y=5;</p>
<p>c=M_marked/blocksize;<br>d=N_marked/blocksize;</p>
<p>for j=1:c<br>&nbsp;&nbsp;&nbsp; for i=1:d<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dct_markedblock=dct2(watermarked_image((1+(j-1)*8):j*8,(1+(i-1)*8):i*8));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if k*dct_markedblock(x,y)&gt;0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wm_image(j,i)=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vm_image(j,i)=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp; end<br>end<br>&nbsp;&nbsp;&nbsp; subplot(122);<br>&nbsp;&nbsp;&nbsp; imshow(wm_image);<br>&nbsp;&nbsp;&nbsp; title('mark image');<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; imwrite((wm_image),'MYwm_image.bmp','bmp');</p>
&nbsp;  
</div>
0 0
原创粉丝点击