发明名称 一种抗几何攻击的实时视频水印方法
摘要 本发明提出一种抗几何攻击的实时视频水印方法,主要适用于基于DCT编码的视频文件。该方法通过快速变换方法将分块DCT系数直接变换到整体DCT系数,然后在整体DCT域中自适应修改低频系数值来嵌入水印信号,水印嵌入后的整体DCT系数与原始系数间的差值转换为分块DCT系数的差值,再写回到分块DCT系数中去;水印检测则是在空域中进行,因为检测过程伴随着视频播放进行,这时视频完全解码,可以从空域直接进行整体DCT变换,然后为了能够抵抗旋转攻击,对检测视频进行了旋转补偿,再按照嵌入时的规则进行水印提取。实验结果表明方法对普通信号处理和常规几何攻击(行列去除、旋转、等比例缩放、纵横比攻击、线性变换、随机扭曲、裁剪以及几种联合攻击等)具有很好的鲁棒性。
申请公布号 CN101489133A 申请公布日期 2009.07.22
申请号 CN200910060551.6 申请日期 2009.01.16
申请人 华中科技大学 发明人 凌贺飞;邹复好;王丽云
分类号 H04N7/26(2006.01)I;H04N7/30(2006.01)I 主分类号 H04N7/26(2006.01)I
代理机构 华中科技大学专利中心 代理人 曹葆青
主权项 1、一种抗几何攻击的实时视频水印嵌入方法,包括下述步骤:第A1步预处理:对压缩的视频序列进行变长码解码及反量化操作,得到视频序列亮度分量的分块DCT系数,每个视频帧表示为分块DCT系数的集合;第A2步获取水印的嵌入域:在预处理后的视频序列中,随机选取连续的、偶数个的视频帧作为最小水印嵌入单位,记为WMS;其中,设WMS中包含的视频帧帧数为Fn,2≤Fn≤10;将WMS中的任一视频帧X<sub>k</sub>的行和列表示为两个整数的乘积,定义X<sub>k</sub>的大小为L×S行和M×S列,其中,k表示视频帧中WMS中的序号,k=1,…,Fn;X<sub>k</sub>将表示为L×M个子块,每一子块表示为Sb<sub>ij</sub>,i=1,2,…,L,j=1,2,…,M;利用式(I)计算每个视频帧X<sub>k</sub>左上角E×E块的左上对角区域的整体DCT系数C<sub>full</sub>,其它区域的整体DCT系数均设定0;<img file="A200910060551C00021.GIF" wi="1815" he="376" />其中,B<sub>1</sub>是块Sb<sub>ij</sub>的DCT变换系数矩阵,B<sub>2</sub>和B<sub>3</sub>是视频帧X<sub>k</sub>的整体DCT变换系数矩阵;C<sub>part</sub>代表所有子块Sb<sub>ij</sub>的分块DCT系数集合;从zigzag扫描后的整体DCT系数中选择N个整体DCT系数,N为正整数,Fn幅视频帧的所选整体DCT系数构成了一个大小为Fn×N的矩阵C,即为一个WMS的嵌入域,表示为:<maths num="0001"><![CDATA[<math><mrow><mi>C</mi><mo>=</mo><mo>{</mo><msubsup><mi>c</mi><mi>kf</mi><mi>o</mi></msubsup><mo>|</mo><mi>k</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>,</mo><mi>Fn</mi><mo>;</mo><mi>f</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>,</mo><mi>N</mi><mo>}</mo></mrow></math>]]></maths>(II)第A3步对于设定的置乱密钥K′,利用种子函数产生N个种子,构成种子序列SK;对于矩阵C的任一列f的整体DCT系数,用第f个种子sk<sub>f</sub>进行置乱,产生一个置乱后的系数矩阵,记为<maths num="0002"><![CDATA[<math><mrow><msup><mi>C</mi><mi>h</mi></msup><mo>=</mo><mo>{</mo><msubsup><mi>c</mi><mi>kf</mi><mi>h</mi></msubsup><mo>|</mo><mi>k</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>,</mo><mi>Fn</mi><mo>;</mo><mi>f</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>,</mo><mi>N</mi><mo>}</mo></mrow></math>]]></maths>      (III)第A4步设置<img file="A200910060551C00032.GIF" wi="81" he="68" />个由Fn个比特组成的序列,各比特的值是“+1”或“-1”,并且各序列中“+1”和“-1”的个数相等,由这些序列组成集合G,记为<maths num="0003"><![CDATA[<math><mrow><mi>G</mi><mo>=</mo><mo>{</mo><msub><mi>G</mi><mi>r</mi></msub><mo>|</mo><mi>r</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><msubsup><mi>C</mi><mi>Fn</mi><mrow><mi>Fn</mi><mo>/</mo><mn>2</mn></mrow></msubsup><mo>}</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mi>IV</mi><mo>)</mo></mrow></mrow></math>]]></maths>G<sub>r</sub>的序号r为该元素在G中的索引值;然后根据设置的水印密钥Key产生一个由N个字符组成的字符串信息,记为H,每个字符H<sub>f</sub>由十六进制数字表示;依据每一位字符H<sub>f</sub>到G中查找相对应的元素G<sub>r</sub>,查找公式如下:<maths num="0004"><![CDATA[<math><mrow><mi>r</mi><mo>=</mo><mi>mod</mi><mrow><mo>(</mo><msub><mi>H</mi><mi>f</mi></msub><mo>,</mo><msubsup><mi>C</mi><mi>Fn</mi><mrow><mi>Fn</mi><mo>/</mo><mn>2</mn></mrow></msubsup><mo>)</mo></mrow><mo>+</mo><mn>1</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mi>V</mi><mo>)</mo></mrow></mrow></math>]]></maths>查找出来的N个元素G<sub>r</sub>构成Fn×N比特的二进制水印信号,记为W;第A5步在系数矩阵C<sup>h</sup>中,在各列中的每一个整体DCT系数中对应嵌入二进制水印信号W中的一个比特,得到嵌入后的整体DCT系数矩阵C<sup>hw</sup>,根据置乱密钥K′将C<sup>hw</sup>中所有整体DCT系数逆置乱,恢复到原始位置,得到系数矩阵C<sup>w</sup>;第A6步设置大小为(L×S)×(M×S)的差值矩阵D<sub>full</sub>,其左上角区域的值对应于系数矩阵C<sup>w</sup>与C的差值,其它部分均为零;再利用式(VI)将差值矩阵D<sub>full</sub>变换到分块DCT系数的差值矩阵,记为D<sub>part</sub>:<img file="A200910060551C00035.GIF" wi="1861" he="372" />将D<sub>part</sub>与C<sub>part</sub>相加,得到嵌入水印后的分块DCT系数;第A7步根据嵌入水印后的分块DCT系数进行与步骤(A1)相对应的量化和变长码编码操作,得到嵌入水印后的视频序列。
地址 430074湖北省武汉市洪山区珞喻路1037号