%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% author:王宇 %
% object name:基于浮点小波变换的水印方法 %
% data:20/06/07 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear;
%读取水印信息
Wfile_name='\shuiyin.jpg';
ma=double(imread(Wfile_name))/255;
%转换成二值图像
X=im2bw(ma,0.7);
%imshow(X);
%水印置乱 再取k=1,N=96,周期为24 这里做12次变换
[m,n]=size(ma);
[matrix,row1,col1]=chaos(X,3,96,12);
%置乱水印大小
[m1,n1]=size(matrix);
%混沌序列生成
randmtx=randCL(m1,n1,0.5,3.6);
%置换的序列同混沌序列做异或运算
for i=1:m1
for j=1:n1
if randmtx(i,j)>0.36
randmtx(i,j)=0;
else
randmtx(i,j)=1;
end
end
end
matrix=xor(matrix,randmtx);
%matrix2=xor(matrix1,randmtx);
%kkk=matrix1-matrix2;
%读取载体信息
file_name='\lena.bmp';
%Sorce=imread(file_name);
cover=double(imread(file_name));
%对载体图像进行小波变化
[cA1,cH1,cV1,cD1] = dwt2(cover,'db4');
%取得高频中的中间平均值kk,ll
%ave=average(cA1);
%[kk,ll]=SearchIndex(cA1,ave);
%设定嵌入的起始位置
%if (kk-m/2>0)&&(ll-n/2>0)
% p1=kk-m/2;
% p2=ll-n/2;
%else
% p1=kk;
% p2=ll;
%end
%高频嵌入水印部分
%取模s=5 ,10,20所得效果不同
p1=22;p2=22;
for i=p1+1:p1+96
for j=p2+1:p2+96
temp(i-p1,j-p2)=mod(cA1(i,j),5);
end
end
%kmin=min(kk);
%for i=1:38025
% if abs(kk(i)-0.0043321)<0.0000001
% kkk=i;
% end
%end
%设定阈值T1,T2 图像效果与T1,T2大小有关,其值越大效果越差
T1=2;T2=4;
%水印嵌入规则
for i=1:96
for j=1:96
if (matrix(i,j)==1)&(cA1(i+p1,j+p2)>=0)
cA1(i+p1,j+p2)=cA1(i+p1,j+p2)-temp(i,j)+T1;
end
if (matrix(i,j)==0)&(cA1(i+p1,j+p2)>=0)
cA1(i+p1,j+p2)=cA1(i+p1,j+p2)-temp(i,j)+T2;
end
if (matrix(i,j)==1)&(cA1(i+p1,j+p2)<0)
cA1(i+p1,j+p2)=cA1(i+p1,j+p2)+temp(i,j)-T1;
end
if (matrix(i,j)==0)&(cA1(i+p1,j+p2)<0)
cA1(i+p1,j+p2)=cA1(i+p1,j+p2)+temp(i,j)-T2;
end
end
end
%cA1 =double( idwt2(cA2,cH2,cV2,cD2,'db4',size(cA1)))/255;
A0 = double(idwt2(cA1,cH1,cV1,cD1,'db4',size(cover)))/255;
%保存水印图片
imwrite(A0,'ImTemp.bmp','bmp');
image=imread('\ImTemp.bmp','bmp');
%image1=imnoise(image1,'gaussian',0.000005);
%imwrite(image1,'ImTemp.bmp','bmp');
%image=imread('\ImTemp.bmp','bmp');
imageY=file_name;
Ppsnr=psnr(cover,double(image));
figure(1);
%subplot(1,2,1);
imshow(image);
title('加入噪声后含水印图片')
%subplot(1,2,2);
figure(2);
imshow(X);title('水印');
figure(3);
imshow(matrix);title('经过混沌处理后置乱水印');
figure(4);
imshow(imageY);title('原图像');
没有合适的资源?快使用搜索试试~ 我知道了~
数字水印算法特别的,c++
共39个文件
jpg:19个
m:8个
bmp:6个
需积分: 10 2 下载量 77 浏览量
2011-05-18
14:53:15
上传
评论
收藏 611KB RAR 举报
温馨提示
水印 的师傅都是 士大夫 阿斯顿飞 地方阿斯顿飞啊发到的
资源推荐
资源详情
资源评论
收起资源包目录
191247358DWT.rar (39个子文件)
DWT
average.asv 59B
jsytx.jpg 25KB
水印.jpg 3KB
2.jpg 3KB
还原.jpg 4KB
置乱.jpg 10KB
4.jpg 5KB
psnr.m 395B
chaos.m 882B
未命名2.jpg 4KB
加躁后.jpg 5KB
average.m 105B
ImTemp1.bmp 145KB
jzh.bmp 5KB
pickup.asv 1KB
chaos.asv 880B
SearchIndex.asv 412B
FloatDwt.asv 3KB
ImTemp.bmp 145KB
pickup.m 1KB
wavelet2D.m 1KB
randCL.m 171B
zs.jpg 61KB
jzh1.bmp 5KB
yt.jpg 25KB
3.jpg 10KB
WM.jpg 7KB
FloatDwt.m 3KB
lena.bmp 145KB
SearchIndex.m 554B
嵌入后.jpg 25KB
shuiyin.jpg 2KB
1.jpg 61KB
untitled.jpg 25KB
未命名.jpg 24KB
jzh2.bmp 5KB
未命名1.jpg 24KB
untitled1.jpg 5KB
www.pudn.com.txt 218B
共 39 条
- 1
资源评论
lcq5058263
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功