声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1140|回复: 0

[其他] 一个基于DCT的水印嵌入程序,请问大家怎么提取水印啊?

[复制链接]
发表于 2010-4-24 09:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请大家帮忙,不知怎么提取出水印信息,我是刚学习这个,谢谢大家!
I=imread('14.jpg');
I=rgb2gray(I);
%disp(I);
I=double(I)/255;
%disp(I);
I1=ceil(I);
%%%%%%%%%%显示水印图像%%%%%%%%%%%%%
figure(1);
subplot(2,3,1);
imshow(I1),title('水印图像')
dimI=size(I1);
rm=dimI(1);
cm=dimI(2);
%%%%%%%%%%%%%%%5  以下生成水印信息 %%
mark=I1;
alpha=50,
k1=randn(1,8);
k2=randn(1,8);
a0=imread('17.jpg');
a0=rgb2gray(a0);
%disp(a0);
%a0=double(a0)/255;
%disp(a0);
psnr_cover=double(a0);
subplot(2,3,2),imshow(a0,[]),title('载体图像');
[r,c]=size(a0);
cda0=blkproc(a0,[8,8],'dct2');
%%%%%%%%%%%%%%%%%%%%% 嵌入 %%%%%%%%%%
cda1=cda0;   % cda1 = 256_256
for i=1:32 % i=1:32
    for j=1:32  % j=1:32
        x=(i-1)*8;y=(j-1)*8;
        if mark(i,j)==1
        k=k1;
        else
        k=k2;
        end
    cda1(x+1,y+8)=cda0(x+1,y+8)+alpha*k(1);
    cda1(x+2,y+7)=cda0(x+2,y+7)+alpha*k(2);
    cda1(x+3,y+6)=cda0(x+3,y+6)+alpha*k(3);
    cda1(x+4,y+5)=cda0(x+4,y+5)+alpha*k(4);
    cda1(x+5,y+4)=cda0(x+5,y+4)+alpha*k(5);
    cda1(x+6,y+3)=cda0(x+6,y+3)+alpha*k(6);
    cda1(x+7,y+2)=cda0(x+7,y+2)+alpha*k(7);
    cda1(x+8,y+1)=cda0(x+8,y+1)+alpha*k(8);
   
    end
end
%%%%% 嵌入水印后图像 %%%%%%%%%%%%%%
a1=blkproc(cda1,[8,8],'idct2');
a_1=uint8(a1);
subplot(2,3,3),imshow(a_1,[]),title('嵌入水印后的图像');
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 16:22 , Processed in 0.054019 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表