資源簡介
數(shù)字水印的經(jīng)典算法源代碼,對于研究數(shù)字水印編程有很大的指導意義,尤其是彩色圖像編程網(wǎng)上更難找。

代碼片段和文件信息
function?dwtgl
clear?all
clc;
%保存開始時間
start_time=cputime;
figure(1);
%讀出原始圖像
subplot(221);
input=imread(‘image.bmp‘);
imshow(input);
title(‘原始圖像‘);
%讀出水印
subplot(222);
water=imread(‘watermark.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));
%系數(shù)r大,增加魯棒性,r小增加透明性
r=0.04;
%水印R的分解
[CwrSwr]=wavedec2(waterr1‘haar‘);
%圖像R的分解
[CrSr]=wavedec2(inputr2‘haar‘);
%水印的嵌入
Cr(1:size(Cwr2)/16)=...
????Cr(1:size(Cwr2)/16)+r*Cwr(1:size(Cwr2)/16);
k=0;
while?k<=size(Cr2)/size(Cwr2)-1
????Cr(1+size(Cr2)/4+k*size(Cwr2)/4:size(Cr2)/4+...
????????(k+1)*size(Cwr2)/4)=Cr(1+size(Cr2)/4+...
????????k*size(Cwr2)/4:size(Cr2)/4+(k+1)*size(Cwr2)/4)+...
????????r*Cwr(1+size(Cwr2)/4:size(Cwr2)/2);
????Cr(1+size(Cr2)/2+k*size(Cwr2)/4:size(Cr2)/2+...
????????(k+1)*size(Cwr2)/4)=Cr(1+size(Cr2)/2+...
????????k*size(Cwr2)/4:size(Cr2)/2+(k+1)*size(Cwr2)/4)+...
????????r*Cwr(1+size(Cwr2)/2:3*size(Cwr2)/4);
????Cr(1+3*size(Cwr2)/4+k*size(Cwr2)/4:3*size(Cwr2)/4+...
????????(k+1)*size(Cwr2)/4)=Cr(1+3*size(Cr2)/4+...
????????k*size(Cwr2)/4:3*size(Cr2)/4+(k+1)*size(Cwr2)/4)+...
????????r*Cwr(1+3*size(Cwr2)/4:size(Cwr2));
????k=k+1;
end;
Cr(1:size(Cwr2)/4)=Cr(1:size(Cwr2)/4)+r*Cwr(1:size(Cwr2)/4);
g=0.02;
%水印G的分解
[CwgSwg]=WAVEDEC2(waterg1‘haar‘);
%圖像G的分解
[CgSg]=WAVEDEC2(inputg2‘haar‘);
%水印的嵌入
Cg(1:size(Cwg2)/16)=...
????Cg(1:size(Cwg2)/16)+g*Cwg(1:size(Cwg2)/16);
k=0;
while?k<=size(Cg2)/size(Cwg2)-1
????Cg(1+size(Cg2)/4+k*size(Cwg2)/4:size(Cg2)/4+...
????????(k+1)*size(Cwg2)/4)=Cg(1+size(Cg2)/4+...
????????k*size(Cwg2)/4:size(Cg2)/4+(k+1)*size(Cwg2)/4)+...
????????g*Cwg(1+size(Cwg2)/4:size(Cwg2)/2);
????Cg(1+size(Cg2)/2+k*size(Cwg2)/4:size(Cg2)/2+...
????????(k+1)*size(Cwg2)/4)=Cg(1+size(Cg2)/2+...
????????k*size(Cwg2)/4:size(Cg2)/2+(k+1)*size(Cwg2)/4)+...
????????g*Cwg(1+size(Cwg2)/2:3*size(Cwg2)/4);
????Cg(1+3*size(Cg2)/4+k*size(Cwg2)/4:3*size(Cg2)/4+...
????????(k+1)*size(Cwg2)/4)=Cg(1+3*size(Cg2)/4+...
????????k*size(Cwg2)/4:3*size(Cg2)/4+(k+1)*size(Cwg2)/4)+...
????????g*Cwg(1+3*size(Cwg2)/4:size(Cwg2));
????k=k+1;
end;
Cg(1:size(Cwg2)/4)=Cg(1:size(Cwg2)/4)+g*Cwg(1:size(Cwg2)/4);
b=0.16;
%水印B的分解
[CwbSwb]=WAVEDEC2(waterb1‘haar‘);
%圖像B的分解
[CbSb]=WAVEDEC2(inputb2‘haar‘);
%水印的嵌入
Cb(1:size(Cwb2)/16)+b*Cwb(1:size(Cwb2)/16);
k=0;
while?k<=size(Cb2)/size(Cwb2)-1
????Cb(1+size(Cb2)/4+k*size(Cwb2)/4:size(Cb2)/4+...
????????(k+1)*size(Cwb2)/4)=Cb(1+size(Cb2)/4+...
????????k*size(Cwb2)/4:size(Cb2)/4+(k+1)*size(Cwb2)/4)+...
????????g*Cwb(1+size(Cwb2)/4:size(Cwb2)/2);
????Cb(1+size(Cb2)/2+k*size(Cwb2)/4:size(Cb2)/2+...
????????(k+1)*size(Cwb2)/4)=Cb(1+size(Cb2)/2+...
????????k*size(Cwb2)/4:size(Cb2)/2+(k+1)*size(Cwb2)/4)+..
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????786486??2007-05-27?12:52??image.bmp
?????文件?????196662??2007-05-10?10:58??watermark.bmp
?????文件???????3978??2008-03-01?21:11??dwt.m
?????文件???????4611??2008-02-27?20:12??tiqu.m
-----------?---------??----------?-----??----
???????????????991955????????????????????5
- 上一篇:SPC控制圖的應用案例及分析方法
- 下一篇:基于粒子群的K均值聚類算法
評論
共有 條評論