文档介绍:第七章 数字水印技术-变换域算法
第一页,共81页。
水印技术
从加载方式上分类
空间域水印:直接在载体数据上加载水印信息
LSB算法
拼凑算法
变换域水印:载体数据经过变换后添加水印信息
NEC算法
*
第二页,共8印, α是尺度因子,用于控制水印的嵌入强度
嵌入强度越大,水印鲁棒性越强,但不可见性越差
进行二维逆DCT变换,并将像素灰度值进行截断使其值位于[0,255]之间,从而得到含水印图像
第三十页,共81页。
复****br/>NEC算法流程
水印嵌入DCT低频系数
水印嵌入强度固定
Si=Xi (1+αWi)
第三十一页,共81页。
NEC算法描述
水印的提取
对接收到的可能含有水印的图像和原始图像做DCT变换
找到可能含有水印信息的N个DCT系数,根据下式提取水印信息W'
Wi ' =[(Yi-Xi) /Xi]α,其中Y是可能含有水印信息的n个DCT系数
第三十二页,共81页。
NEC算法描述
水印的检测
通过下式计算原始水印W与提取水印W'之间的相似程度sim(W,W')
然后将sim(W,W')与预先设定的阈值进行比较,判断水印的存在与否。阈值可以通过实验的方法获得,也可以通过一些统计和假设的方法获得
第三十三页,共81页。
第三十四页,共81页。
NEC算法实现
%文件名:
%函数功能:将均匀分布的随机序列(水印信号)按照cox扩频方法嵌入到载体图像的DCT系数中
%格式:J = COX_Embed (I, W, alpha, N)
%参数说明:
%I: 原始图像矩阵
%W:水印信息
%alpha: 水印强度
%N :嵌入水印长度
%J:嵌入水印图像矩阵
第三十五页,共81页。
提示
index = FindNLargest (A, N);
%index寻找到的A中最大N个值的坐标,
index(1,:),行坐标;index(2,:),列坐标
第三十六页,共81页。
NEC算法:嵌入算法
function J = Cox_Embed (I, W, alpha, N)
[m, n] = size(I);
If (m*n<N)
error ('载体图像太小');
end
DCTI = dct2(I);
index = FindNLargest (abs(DCTI), N);
%index寻找到的DCT系数坐标,index(1,:),行坐标;index(2,:),列坐标
for i = 1:N
DCTI(index(1,i),index(2,i))=DCTI(index(1,i),index(2,i))*(1+alpha*W(i));
end
J = idct2(DCTI);
J = abs(J);
J = uint8(J);
第三十七页,共81页。
NEC算法实现
%文件名:
%函数功能:提取水印信号
%格式:Wd = COX_Detect (I, J, alpha, N)
%参数说明:
%I:原始图像矩阵
%J:待测图像矩阵
% alpha:水印强度
%N:嵌入水印长度
% Wd:提取水印
*
第三十八页,共81页。
NEC算法:提取算法
function Wd = Cox_Detect (I, J, alpha, N)
[m, n] = size(I);
[x, y] = size(J);
if ( (m~=x)|(n~=y))
error ('图像大小不一致');
end
DCTI = dct2 (I);
DCTJ = dct2 (J);
index = FindNLargest (abs(DCTI), N);
for i = 1:N
Wd(i) = (DCTJ(index(1,i),index(2,i))/DCTI(index(1,i),index(2,i))-1)/alpha;
end
第三十九页,共81页。
NEC算法:检测算法
function sim=Similar(x,y)
[m,n]=size(x);
%m=1,行向量;n=1,列向量
if(m~=1&n~=1)
error('错误:x应为矢量');
end
[a,b]=size(y);
if(a~=1&b~=1)
error('错误:y应为矢量');
end
sim=sum(x(1:n).*y(1:b))/sum(y(1:b).*y(1:b));
第四十页,共81页。
NEC算法的性能分析
水印容量?
嵌入1bit水印
水印不可见性?
好
水印鲁棒性?
好
第四十一页,共81页。
水印性能评价
第四十二页,共81页。
水印不可