嵌入不可见水印matlab,水印嵌入问题

代码如下:但是出来的结果却是一条线  如截图  这是为什么

%function dwtg1

clear all;

clc;

%保存开始时间

start_time=cputime;

figure(1);

%读出原始图像

subplot(1,2,1);

input=imread('image.bmp');

imshow(input);

title('原始图像');

%读出水印

subplot(1,2,2);

water=imread('water1.bmp');

imshow(water,[]);

title('水印');

%三色分离

input=double(input);

water=double(water);

inputr=input(:,:,1);

waterr=water(:,:,1);

inputg=input(:,:,2);

waterg=water(:,:,2);

inputb=double(input(:,:,3));

waterb=double(water(:,:,3));

%系数r大,增加鲁棒性,r小增加透明性

r=0.06;

%水印R的分解

[Cwr,Swr]=WAVEDEC2(waterr,1,'haar');

%图像R的分解

[Cr,Sr]=WAVEDEC2(inputr,2,'haar');

%水印的嵌入

Cr(1:size(Cwr,2)/16)=...

Cr(1:size(Cwr,2)/16)+r*Cwr(1:size(Cwr,2)/16);

k=0;

while k<=size(Cr,2)/size(Cwr,2)-1

Cr(1+size(Cr,2)/4+k*size(Cwr,2)/4:size(Cr,2)/4+...

(k+1)*size(Cwr,2)/4)=Cr(1+size(Cr,2)/4+...

k*size(Cwr,2)/4:size(Cwr,2)/4+(k+1)*size(Cwr,2)/4)+...

r*Cwr(1+size(Cwr,2)/4:size(Cwr,2)/2);

Cr(1+size(Cr,2)/2+k*size(Cwr,2)/4:size(Cr,2)/2+...

(k+1)*size(Cwr,2)/4)=Cr(1+size(Cr,2)/2+...

k*size(Cwr,2)/4:size(Cwr,2)/2+(k+1)*size(Cwr,2)/4)+...

r*Cwr(1+size(Cwr,2)/2:3*size(Cwr,2)/4);

Cr(1+3*size(Cr,2)/4+k*size(Cwr,2)/4:3*size(Cr,2)/4+...

(k+1)*size(Cwr,2)/4)=Cr(1+3*size(Cr,2)/4+...

k*size(Cwr,2)/4:3*size(Cwr,2)/4+(k+1)*size(Cwr,2)/4)+...

r*Cwr(1+3*size(Cwr,2)/4:size(Cwr,2));

k=k+1;

end;

Cr(1:size(Cwr,2)/4)=Cr(1:size(Cwr,2)/4)+r*Cwr(1:size(Cwr,2)/4);

g=0.03;

%水印G的分解

[Cwg,Swg]=WAVEDEC2(waterg,1,'haar');

%图像G的分解

[Cg,Sg]=WAVEDEC2(inputg,2,'haar');

%水印的嵌入

Cg(1:size(Cwg,2)/16)=...

Cg(1:size(Cwg,2)/16)+g*Cwg(1:size(Cwg,2)/16);

k=0;

while k<=size(Cwg,2)/size(Cwg,2)-1;

Cg(1+size(Cg,2)/4+k*size(Cwg,2)/4:size(Cg,2)/4+...

(k+1)*size(Cwg,2)/4)=Cg(1+size(Cg,2)/4+...

k*size(Cwg,2)/4:size(Cwg,2)/4+(k+1)*size(Cwg,2)/4)+...

g*Cwg(1+size(Cwg,2)/4:size(Cwg,2)/2);

Cg(1+size(Cg,2)/2+k*size(Cwg,2)/4:size(Cg,2)/2+...

(k+1)*size(Cwg,2)/4)=Cg(1+size(Cg,2)/2+...

k*size(Cwg,2)/4:size(Cwg,2)/2+(k+1)*size(Cwg,2)/4)+...

g*Cwg(1+size(Cwg,2)/2:3*size(Cwg,2)/4);

Cg(1+3*size(Cg,2)/4+k*size(Cwg,2)/4:3*size(Cg,2)/4+...

(k+1)*size(Cwg,2)/4)=Cg(1+3*size(Cg,2)/4+...

k*size(Cwg,2)/4:3*size(Cwg,2)/4+(k+1)*size(Cwg,2)/4)+...

g*Cwg(1+3*size(Cwg,2)/4:size(Cwg,2));

k=k+1;

end;

Cg(1:size(Cwg,2)/4)=Cg(1:size(Cwg,2)/4)+g*Cwg(1:size(Cwg,2)/4);

b=0.12;

%水印B的分解

[Cwb,Swb]=WAVEDEC2(waterb,1,'haar');

%图像B的分解

[Cb,Sb]=WAVEDEC2(inputb,2,'haar');

%水印的嵌入

Cb(1:size(Cwb,2)/16)=...

Cb(1:size(Cwg,2)/16)+b*Cwb(1:size(Cwb,2)/16);

k=0;

while k<=size(Cwb,2)/size(Cwb,2)-1;

Cb(1+size(Cb,2)/4+k*size(Cwb,2)/4:size(Cb,2)/4+...

(k+1)*size(Cwb,2)/4)=Cb(1+size(Cb,2)/4+...

k*size(Cwb,2)/4:size(Cwb,2)/4+(k+1)*size(Cwb,2)/4)+...

g*Cwb(1+size(Cwb,2)/4:size(Cwb,2)/2);

Cb(1+size(Cb,2)/2+k*size(Cwb,2)/4:size(Cb,2)/2+...

(k+1)*size(Cwb,2)/4)=Cb(1+size(Cb,2)/2+...

k*size(Cwb,2)/4:size(Cwb,2)/2+(k+1)*size(Cwb,2)/4)+...

g*Cwb(1+size(Cwb,2)/2:3*size(Cwb,2)/4);

Cb(1+3*size(Cb,2)/4+k*size(Cwb,2)/4:3*size(Cb,2)/4+...

(k+1)*size(Cwb,2)/4)=Cb(1+3*size(Cb,2)/4+...

k*size(Cwb,2)/4:3*size(Cwb,2)/4+(k+1)*size(Cwb,2)/4)+...

g*Cwb(1+3*size(Cwb,2)/4:size(Cwb,2));

k=k+1;

end;

Cb(1:size(Cwb,2)/4)=Cb(1:size(Cwb,2)/4)+b*Cwb(1:size(Cwb,2)/4);

%图像的重构

inputr=WAVEREC(Cr,Sr,'haar');

inputg=WAVEREC2(Cg,Sg,'haar');

inputb=WAVEREC2(Cb,Sb,'haar');

%三色的叠加

temp=size(inputr);

pic=zeros(temp(1),temp(2),3);

for i=1:temp(1);

for j=1:temp(2);

pic(i,j,1)=inputr(i,j);

pic(i,j,2)=inputg(i,j);

pic(i,j,3)=inputb(i,j);

end

end

output=uint8(round(pic));

%转化为uint8

watermarked_image_uint8=uint8(output);

imwrite(watermarked_image_uint8,'watermarked.bmp','bmp');

%显示时间

elapsed_time=cputime-start_time,

%输出结果

figure(2);

imshow(watermarked_image_uint8);

title('水印图像');

[本帖最后由 llllihom 于 2008-4-27 00:51 编辑]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值