发明名称 面向3D高清数字视频的鲁棒隐水印嵌入与提取方法
摘要 一种面向3D高清数字视频的鲁棒隐水印嵌入与提取方法属于图像处理等交叉领域。用户输入一段3D视频,算法将其按帧率分为序列帧,并对序列帧中的每一帧都进行嵌入操作。在每一帧上,算法首先对左右视图分别进行以8*8像素块为单位DCT变换。将水印中的每一个比特依次嵌入在左右通道视图相同位置的一对8*8DCT系数块上。水印算法选取DCT系数块中的中频区域进行嵌入,引入三种系数限制机制对嵌入强度进行有效限制,分别为:最小可别差感知模型、细粒度调制参数和嵌入参考矩阵。本发明在基于单通道视频的水印技术研究的理论基础上,简化整体复杂度,使之可以并行处理计算密集型的任务,提升高清立体视频的处理速度,实现在以上前提下保证不可见性及鲁棒性的目的。
申请公布号 CN106131711A 申请公布日期 2016.11.16
申请号 CN201610563291.4 申请日期 2016.07.16
申请人 北京工业大学 发明人 张诗阳;成聪鑫;杨宇辰;马伟;周心实
分类号 H04N21/8358(2011.01)I;H04N19/625(2014.01)I;H04N19/176(2014.01)I;H04N19/467(2014.01)I 主分类号 H04N21/8358(2011.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 刘萍
主权项 面向3D高清数字视频的鲁棒隐水印嵌入与提取方法,其特征在于,包括以步骤:步骤一,视频资源处理把用户输入的3D数字视频中分解为序列图片帧。步骤二,水印信息嵌入对于3D高清数字视频帧的左右通道,算法所做的操作是相同的。首先,各帧左右视图被分为不重叠的8*8像素块进行DCT变换。嵌入过程中的系数调制以每个8*8像素块为单位执行一次,水印信息中的一个比特将被均匀地嵌入位于(2,6)(3,5)(4,4)(5,3)(6,2)五个位置的中频区域DCT系数之中。<img file="FDA0001051278930000011.GIF" wi="94" he="76" />和<img file="FDA0001051278930000012.GIF" wi="99" he="70" />分别为左右视图每个8*8像素块中(i,j)位置的DCT系数综合均值,其计算公式为:<maths num="0001"><math><![CDATA[<mrow><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msubsup><mi>G</mi><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mi>l</mi></msubsup><mo>=</mo><msub><mi>&omega;</mi><mn>1</mn></msub><mo>*</mo><msubsup><mi>g</mi><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mi>l</mi></msubsup><mo>+</mo><msub><mi>&omega;</mi><mn>2</mn></msub><mo>*</mo><msubsup><mi>g</mi><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mi>r</mi></msubsup></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mi>G</mi><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mi>r</mi></msubsup><mo>=</mo><msub><mi>&omega;</mi><mn>1</mn></msub><mo>*</mo><msubsup><mi>g</mi><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mi>r</mi></msubsup><mo>+</mo><msub><mi>&omega;</mi><mn>2</mn></msub><mo>*</mo><msubsup><mi>g</mi><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mi>l</mi></msubsup></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001051278930000013.GIF" wi="861" he="158" /></maths>其中ω<sub>1</sub>+ω<sub>2</sub>=1且ω<sub>1</sub>六倍于ω<sub>2</sub>。<img file="FDA0001051278930000014.GIF" wi="95" he="79" />和<img file="FDA0001051278930000015.GIF" wi="94" he="71" />为左右视图同样位置的DCT系数算术平均值,由式(2)定义:<maths num="0002"><math><![CDATA[<mrow><msub><mi>g</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>=</mo><mfrac><mrow><mo>(</mo><msub><mi>C</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>+</mo><msub><mi>C</mi><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>+</mo><msub><mi>C</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msub><mo>+</mo><msub><mi>C</mi><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msub><mo>)</mo></mrow><mn>4</mn></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001051278930000016.GIF" wi="917" he="126" /></maths>其中C<sub>(i,j)</sub>表示的是指定位置(i,j)处的DCT系数。随后水印算法进入嵌入核心阶段对于在DCT系数中嵌入的每一比特,当被调制对象<img file="FDA0001051278930000017.GIF" wi="99" he="71" />与<img file="FDA0001051278930000018.GIF" wi="91" he="71" />已经满足式(3)中调整的大小关系时,此处的嵌入过程将略过;若不满足,依据式(3)完成最终的系数调整过程,即在水印比特wm为“0”的情况下,左视图的DCT系数在式(1)计算结果<img file="FDA0001051278930000019.GIF" wi="98" he="79" />的基础上增大,而右视图的DCT系数将在<img file="FDA00010512789300000115.GIF" wi="96" he="65" />的基础上减小,最终使得<img file="FDA00010512789300000110.GIF" wi="275" he="70" />相反地,在水印比特wm为“1”的情况下,左视图的DCT系数在式(1)计算结果<img file="FDA00010512789300000111.GIF" wi="96" he="71" />的基础上减小,而右视图的DCT系数将在<img file="FDA00010512789300000112.GIF" wi="94" he="70" />的基础上增大,最终使得<img file="FDA00010512789300000113.GIF" wi="275" he="79" />以上嵌入过程用如下数学表达式进行呈现:<maths num="0003"><math><![CDATA[<mrow><mtable><mtr><mtd><mrow><msubsup><mi>C</mi><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mrow><mo>&prime;</mo><mi>l</mi></mrow></msubsup><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msubsup><mi>G</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>l</mi></msubsup><mo>+</mo><msub><mi>&beta;</mi><mrow><mo>(</mo><mi>p</mi><mo>,</mo><mi>q</mi><mo>)</mo></mrow></msub><mo>&times;</mo><mrow><mo>(</mo><mi>&alpha;</mi><mo>&times;</mo><msubsup><mi>JND</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>l</mi></msubsup><mo>+</mo><msubsup><mi>&epsiv;</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>l</mi></msubsup><mo>)</mo></mrow><mo>,</mo><mi>w</mi><mi>m</mi><mo>=</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mi>G</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>l</mi></msubsup><mo>-</mo><msub><mi>&beta;</mi><mrow><mo>(</mo><mi>p</mi><mo>,</mo><mi>q</mi><mo>)</mo></mrow></msub><mo>&times;</mo><mrow><mo>(</mo><mi>&alpha;</mi><mo>&times;</mo><msubsup><mi>JND</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>l</mi></msubsup><mo>+</mo><msubsup><mi>&epsiv;</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>l</mi></msubsup><mo>)</mo></mrow><mo>,</mo><mi>w</mi><mi>m</mi><mo>=</mo><mn>1</mn></mrow></mtd></mtr></mtable></mfenced></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mi>C</mi><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mrow><mo>&prime;</mo><mi>r</mi></mrow></msubsup><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msubsup><mi>G</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>r</mi></msubsup><mo>-</mo><msub><mi>&beta;</mi><mrow><mo>(</mo><mi>p</mi><mo>,</mo><mi>q</mi><mo>)</mo></mrow></msub><mo>&times;</mo><mrow><mo>(</mo><mi>&alpha;</mi><mo>&times;</mo><msubsup><mi>JND</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>r</mi></msubsup><mo>+</mo><msubsup><mi>&epsiv;</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>r</mi></msubsup><mo>)</mo></mrow><mo>,</mo><mi>w</mi><mi>m</mi><mo>=</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mi>G</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>r</mi></msubsup><mo>+</mo><msub><mi>&beta;</mi><mrow><mo>(</mo><mi>p</mi><mo>,</mo><mi>q</mi><mo>)</mo></mrow></msub><mo>&times;</mo><mrow><mo>(</mo><mi>&alpha;</mi><mo>&times;</mo><msubsup><mi>JND</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>r</mi></msubsup><mo>+</mo><msubsup><mi>&epsiv;</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>r</mi></msubsup><mo>)</mo></mrow><mo>,</mo><mi>w</mi><mi>m</mi><mo>=</mo><mn>1</mn></mrow></mtd></mtr></mtable></mfenced></mrow></mtd></mtr></mtable><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA00010512789300000114.GIF" wi="1230" he="327" /></maths>这里,<img file="FDA0001051278930000021.GIF" wi="94" he="71" />和<img file="FDA0001051278930000022.GIF" wi="96" he="70" />分别代表经历系数调制过程后的最终结果。<img file="FDA0001051278930000023.GIF" wi="158" he="71" />和<img file="FDA0001051278930000024.GIF" wi="155" he="70" />分别代表左右视图对应位置的最小可别差计算结果。α为0.05。ε<sub>(i,j)</sub>=0.1g<sub>(i,j)</sub>。式3中的系数β由嵌入参考矩阵决定。与α相比,β负责管控整体视角上的嵌入强度,由式(4)给出:<maths num="0004"><math><![CDATA[<mrow><msub><mi>&beta;</mi><mrow><mo>(</mo><mi>p</mi><mo>,</mo><mi>q</mi><mo>)</mo></mrow></msub><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mn>0.5</mn></mtd><mtd><mrow><msub><mi>R</mi><mrow><mo>(</mo><mi>p</mi><mo>,</mo><mi>q</mi><mo>)</mo></mrow></msub><mo>=</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mrow><msub><mi>R</mi><mrow><mo>(</mo><mi>p</mi><mo>,</mo><mi>q</mi><mo>)</mo></mrow></msub><mo>=</mo><mn>1</mn></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001051278930000025.GIF" wi="790" he="157" /></maths>R<sub>(p,q)</sub>是嵌入参考矩阵的一个位于(p,q)位置的元素。每个立体视频帧的左右视图均会计算嵌入参考阵。在画面上的每个不重叠的图像块分别对应着参考阵中的一个元素。嵌入参考系数由(p,q)位置的3D视频运动以及视差信息决定,R<sub>(p,q)</sub>∈[0,1]。嵌入参考矩阵计算方法如下:首先运用光流法对立体视频帧每个(p,q)块中(i,j)位置的运动幅度进行计算,既包含水平方向也包含竖直方向,计算结果被分别记录为<img file="FDA0001051278930000026.GIF" wi="109" he="71" />与<img file="FDA0001051278930000027.GIF" wi="138" he="83" />最终的运动因子M<sub>(i,j)</sub>的计算结果由下列式子给出:<maths num="0005"><math><![CDATA[<mrow><msub><mi>M</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>=</mo><msqrt><mrow><msup><msubsup><mi>M</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>X</mi></msubsup><mn>2</mn></msup><mo>+</mo><msup><msubsup><mi>M</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mi>Y</mi></msubsup><mn>2</mn></msup></mrow></msqrt><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001051278930000028.GIF" wi="837" he="94" /></maths>与此同时,D<sub>(i,j)</sub>所代表的画幅上(i,j)位置的深度信息由SGBM算法计算得出。通过综合上述运动以及深度因子信息,算法在每个像素块上都得出了一个具有权重的影响因子MotionDpth<sub>(p,q)</sub>,由以下式子计算得出:<maths num="0006"><math><![CDATA[<mrow><msub><mi>MotionDpth</mi><mrow><mo>(</mo><mi>p</mi><mo>,</mo><mi>q</mi><mo>)</mo></mrow></msub><mo>=</mo><mfrac><mrow><msub><mi>&Sigma;</mi><mi>i</mi></msub><msub><mi>&Sigma;</mi><mi>j</mi></msub><mrow><mo>(</mo><msub><mi>&mu;</mi><mn>1</mn></msub><mo>*</mo><msub><mi>D</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>+</mo><msub><mi>&mu;</mi><mn>2</mn></msub><mo>*</mo><msub><mi>M</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mo>)</mo></mrow></mrow><mn>64</mn></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001051278930000029.GIF" wi="1174" he="143" /></maths>μ<sub>1</sub>和μ<sub>2</sub>指的是在影响因子中深度信息因子和运动信息因子各所占比重,设置为5/6和1/6。在影响因子MotionDpth<sub>(p,q)</sub>组成的矩阵中,对于那些高于矩阵整体均值的元素,R<sub>(p,q)</sub>被设置成1,反之设置为0。步骤三,水印信息提取水印信息提取过程中,对于给定已嵌入数字水印的3D高清视频而言,算法将各帧左右视图将被分为不重叠的8*8像素块;接着,左右视图对应位置像素块中选定位置的DCT系数总体差异值由以下式子进行计算<maths num="0007"><math><![CDATA[<mrow><msub><mi>D</mi><mrow><mo>(</mo><mi>p</mi><mo>,</mo><mi>q</mi><mo>)</mo></mrow></msub><mo>=</mo><msub><mi>&Sigma;</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></msub><mrow><mo>(</mo><msubsup><mi>C</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mrow><mo>&prime;</mo><mi>l</mi></mrow></msubsup><mo>-</mo><msubsup><mi>C</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mrow><mo>&prime;</mo><mi>r</mi></mrow></msubsup><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA00010512789300000210.GIF" wi="774" he="86" /></maths>(i,j)表示像素块中的指定位置,(p,q)是像素块整体的索引。由于水印信息隐藏的过程中,每一个比特被以同样形式嵌入到DCT变换后中频区域的五个选定的参数位置上。以D<sub>(p,q)</sub>的计算结果为基础,水印信息的每一个比特将通过以下规则被决定:<maths num="0008"><math><![CDATA[<mrow><msub><mi>wm</mi><mrow><mo>(</mo><mi>p</mi><mo>,</mo><mi>q</mi><mo>)</mo></mrow></msub><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mrow><msub><mi>D</mi><mrow><mo>(</mo><mi>p</mi><mo>,</mo><mi>q</mi><mo>)</mo></mrow></msub><mo>&GreaterEqual;</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mrow><msub><mi>D</mi><mrow><mo>(</mo><mi>p</mi><mo>,</mo><mi>q</mi><mo>)</mo></mrow></msub><mo>&lt;</mo><mn>0</mn></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001051278930000031.GIF" wi="782" he="157" /></maths>在对载体图像的全部内容进行提取操作后,水印信息最终被整体提取出来。
地址 100124 北京市朝阳区平乐园100号