主权项 |
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>·</mo><mo>·</mo><mo>·</mo><mo>,</mo><mi>Fn</mi><mo>;</mo><mi>f</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>·</mo><mo>·</mo><mo>·</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>·</mo><mo>·</mo><mo>·</mo><mo>,</mo><mi>Fn</mi><mo>;</mo><mi>f</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>·</mo><mo>·</mo><mo>·</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>·</mo><mo>·</mo><mo>·</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)相对应的量化和变长码编码操作,得到嵌入水印后的视频序列。 |