文档详情

WSVD数字水印实验.ppt

发布:2018-04-30约4.7千字共46页下载文档
文本预览下载声明
W-SVD数字水印实验 《信息隐藏实验教程》教学幻灯片 十四 W-SVD水印算法简介 W-SVD数字水印算法是美国Syracuse大学数学系和美国空军实验室通信遥感部联合于1998年发布的。该算法属于小波变换域数字水印算法,具有良好的水印不可见性和鲁棒性等特点。尽管这一算法也并不是十分完美的,而且也不具备现代数字水印自适应和盲检测的要求,但无论如何,W-SVD的经典性是无庸置疑的。 第一部分 水印生成和嵌入 水印生成和嵌入策略流程图 步骤二:对低频相似矩阵做SVD变换 矩阵SVD变换:对于任意M×N矩阵B,都可以写成B=UΣVT,其中U和V分别是M×M和N×N的正交矩阵。Σ是M×N的对角矩阵。 SVD变换通过函数svd完成。(右图从上到下依次为U、 Σ 、V、 ) 步骤三: 正交随机矩阵的生成 在W-SVD算法中,我们需要生成 和 两个随机的正交矩阵。 对于一个M×N矩阵C,其QR分解是将一个M×M的正交矩阵Q和一个M×N的矩阵R。 在MATLAB中,QR变换是通过内置函数qr完成的。 (右图从上到下依次为一般随机矩阵、Q和R ) 步骤四:随机对角矩阵的生成 随机对角矩阵生成: sigma_tilda=alpha*diag(flipud(sort(rand(d,1)))); sigma_tilda就是算法中的 。 alpha就是强度因子α ,d是根据d/n计算出的要替换的行数。 步骤五:替换 水印模板的产生。用种子控制的随机正交矩阵 和 的后d列(行)来替换原始低频系数分解矩阵U和V的后d列(行),得到矩阵 和 。 d是一个由比例因子d/n决定的整数。 步骤五:替换 步骤六:用替换后的低频系数矩阵重构图像 利用MATLAB的waverec2函数对图像进行重构。 考虑到MATLAB精度对实验结果的影响,建议将重构后的图像以16位图(如png格式)的方式存储。 W-SVD数字水印算法函数代码 W-SVD水印效果 第二部分 水印的检测 W-SVD水印的检测策略 W-SVD算法采用非盲检测手段对图像进行检测。其思路为:利用原始图像生成一个理论上存在的水印模板(原始水印),从待测图像中提取可能存在的水印模板(待测水印),继而计算二者的相关性。当二者高度相关时,我们认为待测图像含有水印;反之则检测不出水印。 W-SVD水印的检测策略 计算检测相关性值的方法 常规检测直接相关性值d : DCT检测相关性值 : W和W’分别表示原始水印和待测水印。 M和N为水印模板的大小。 水印检测的具体步骤 给原始图像加水印并提取其加有水印图像的小波低频系数A 。 提取待测图像的小波低频系数B。 提取原始图像的小波低频系数C。 生成原始水印(A-C)和待测水印(B-C)。 计算相关性值。 一个问题的提出: 计算出了相关性值如何判定是否有水印? 根据一个检测阈值(Test_threshold)来决定水印的有无 。 在数字水印检测中,会出现两类错误:虚警错误和漏警错误。前者是指将没有水印的图像判定为有水印,后者则是将有水印的图像判定为无水印。当检测阈值选取过大时,就会造成漏警概率过大;而当检测阈值选取过小时,就会造成虚警概率过大。 绘制“种子—相关性值图”(SC图)是我们分析水印系统的一个重要手段 。 W-SVD模型下数字水印检测 %文件名:wavedetect.m %程序员:郭迟 %编写时间:2003.10.7 %函数功能:本函数将完成W-svd模型下数字水印的检测 %输入格式举例: %[corr_coef,corr_DCTcoef]=wavedetect(c:\test.png,c:\lenna.jpg,1983,db6,2,0.1,0.99) %参数说明: %input为输入原始图像 %seed为随机数种子 %wavelet为使用的小波函数 %level为小波分解的尺度 %alpha为水印强度 %ratio为算法中d/n的比例 %corr_coef,corr_DCTcoef分别为不同方法下检测出的相关系数 function [corr_coef,corr_DCTcoef]= wavedetect(test,original,seed,wavelet,level,alpha,ratio) dataoriginal=imread(original); datatest=imread(test); dataoriginal=double(dataoriginal)/255; datat
显示全部
相似文档