%****************************************************
%水印的多分辨率提取算法
%刘俊伟 2008.5.5
%第一可行算法
clc
clear
%%计算开始时间
start_time=cputime;
%读出嵌有水印的图像
%file_name='dwt3_watermarked.bmp';
[filename,pathname]=uigetfile('*.bmp;*tiff;*tif;*jpg','输入嵌有水印的图像');
fn=[pathname filename];
X=double(imread(fn));
%对嵌有水印的图进行三层二维小波分解
[c,s]=wavedec2(X,3,'haar');
%提取三层二维小波分解的第一层的近似分量
ca1=appcoef2(c,s,'haar',1);
%提取三层二维小波分解的第一层的细节分量
ch1=detcoef2('h',c,s,1);%第一层的水平分量
cv1=detcoef2('v',c,s,1);%第一层的垂直分量
cd1=detcoef2('d',c,s,1);%第一层的对角线分量
%提取三层二维小波分解的第二层的近似分量
ca2=appcoef2(c,s,'haar',2);
%提取三层二维小波分解的第二层的细节分量
ch2=detcoef2('h',c,s,2);%第二层的水平分量
cv2=detcoef2('v',c,s,2);%第二层的垂直分量
cd2=detcoef2('d',c,s,2);%第二层的对角线分量
%提取三层二维小波分解的第三层的近似分量
ca3=appcoef2(c,s,'haar',3);
%提取三层三维小波分解的第三层的细节分量
ch3=detcoef2('h',c,s,3);%第三层的水平分量
cv3=detcoef2('v',c,s,3);%第三层的垂直分量
cd3=detcoef2('d',c,s,3);%第三层的对角线分量
%载入原始宿主图像
file_name='lena_g512by512.bmp';
y=double(imread(file_name));
%对原始宿主图像进行三层二维小波分解
[c1,s1]=wavedec2(y,3,'haar');
%提取三层二维小波分解的第一层的近似分量
ca11=appcoef2(c1,s1,'haar',1);
%提取三层二维小波分解的第一层的细节分量
ch11=detcoef2('h',c1,s1,1);%第一层的水平分量
cv11=detcoef2('v',c1,s1,1);%第一层的垂直分量
cd11=detcoef2('d',c1,s1,1);%第一层的对角线分量
%提取三层二维小波分解的第二层的近似分量
ca12=appcoef2(c1,s1,'haar',2);
%提取三层三维小波分解的第二层的细节分量
ch12=detcoef2('h',c1,s1,2);%第二层的水平分量
cv12=detcoef2('v',c1,s1,2);%第二层的垂直分量
cd12=detcoef2('d',c1,s1,2);%第二层的对角线分量
%提取三层二维小波分解的第三层的近似分量
ca13=appcoef2(c1,s1,'haar',3);
%提取三层三维小波分解的第三层的细节分量
ch13=detcoef2('h',c1,s1,3);%第三层的水平分量
cv13=detcoef2('v',c1,s1,3);%第三层的垂直分量
cd13=detcoef2('d',c1,s1,3);%第三层的对角线分量
%重构水印
w1=(ch1(97:128,97:128)-ch11(97:128,97:128))/0.1;
w2=(ch2(33:64,33:64)-ch12(33:64,33:64))/0.1;
w3=(ch3(17:48,17:48)-ch13(17:48,17:48))/0.1;
w0=(cv2(33:64,33:64)-cv12(33:64,33:64)+cv3(17:48,17:48)-cv13(17:48,17:48)+cv1(97:128,97:128)-cv11(97:128,97:128))/0.3
%小波分解系数重构图像
ww3=idwt2(w0,w1,w2,w3,'haar');
%将重构的水印写入文件中
ww3_uint8=uint8(ww3);
imwrite(ww3_uint8,'recoveredwater.bmp','bmp');
z=imread('recoveredwater.bmp')
figure('Units','Pixels','Position',[100 100 256 256])
subplot(1,2,1)
imshow(z);
%title('提取的水印');
title('旋转0.2度');
subplot(1,2,2)
imshow('water2_g64by64.bmp');
title('原始水印');
%计算程序运行时间
elplose_time=cputime-start_time
adf.rar_ADF_DWT 代码_dwt_matlab dwt 水印_水印
版权申诉
167 浏览量
2022-07-15
09:08:22
上传
评论
收藏 1.68MB RAR 举报
JaniceLu
- 粉丝: 79
- 资源: 1万+
最新资源
- [大模型部署]在C# Winform中使用文心一言ERNIE-3.5 4K 聊天模型
- python毕业设计-基于Django+OpenCV的二维码生成与识别系统设计与实现.zip
- python毕业设计-基于Django+OpenCV的二维码生成与识别系统设计与实现+使用说明.zip
- 基于STM32单片机空气监测系统设计源码+详细文档+配套全部资料(毕业设计).zip
- rdf0412-kcu116-pcie-c-2019-1.zip(XILINX KCU116 源码)
- 基于C#语言的winform界面火车票订票系统(源码+实验报告)
- 【华为OD部分真题及讲解】华为OD部分真题及讲解
- 基于Python+Django的京东商品比价系统源码+全部资料(毕业设计).zip
- G460 G560 Z460 Z560的最新BIOS 2.18版(无白名单)
- MetaJUI v0.4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈