发明名称 一种适用于深度图编码的拉格朗日因子计算方法
摘要 本发明公开了一种适用于深度图编码的拉格朗日因子计算方法,该方法首先是确定虚拟视图失真与深度图编码误差之间的关系,依据摄像机参数计算深度图的编码误差对虚拟视图失真的影响程度,进而采用深度图对应的纹理视频估算模型参数,最后计算拉格朗日因子。本发明依据深度图的压缩失真对合成虚拟视图质量的影响,更好的反映深度图的压缩失真对合成虚拟视图质量的影响,提高三维立体视频编码的效率,可应用于三位立体视频的编码标准中。
申请公布号 CN102595166B 申请公布日期 2014.03.05
申请号 CN201210055680.8 申请日期 2012.03.05
申请人 山东大学 发明人 元辉;刘琚;孙建德
分类号 H04N13/00(2006.01)I 主分类号 H04N13/00(2006.01)I
代理机构 济南金迪知识产权代理有限公司 37219 代理人 宁钦亮
主权项 一种适用于深度图编码的拉格朗日因子计算方法,其特征是:具体步骤如下:(1)建立虚拟视图失真Dv与深度图编码误差之间的关系为, <mfenced open='' close=''> <mtable> <mtr> <mtd> <msub> <mi>D</mi> <mi>v</mi> </msub> <mo>=</mo> <mi>SS</mi> <msub> <mi>D</mi> <mi>i</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mi>M</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <msup> <mrow> <mo>[</mo> <mi>T</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>-</mo> <msub> <mi>T</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>]</mo> </mrow> <mn>2</mn> </msup> </mtd> </mtr> <mtr> <mtd> <mo>&ap;</mo> <msub> <mi>A</mi> <mn>0</mn> </msub> <mo>+</mo> <msub> <mi>A</mi> <mn>1</mn> </msub> <mo>&CenterDot;</mo> <mi>i</mi> <mo>+</mo> <msub> <mi>A</mi> <mn>2</mn> </msub> <mo>&CenterDot;</mo> <msup> <mi>i</mi> <mn>2</mn> </msup> </mtd> </mtr> <mtr> <mtd> <mo>=</mo> <msub> <mi>A</mi> <mn>0</mn> </msub> <mo>+</mo> <msub> <mi>A</mi> <mn>1</mn> </msub> <mo>&CenterDot;</mo> <mi>&alpha;</mi> <mo>&CenterDot;</mo> <mo>|</mo> <msub> <mi>e</mi> <mi>d</mi> </msub> <mo>|</mo> <mo>+</mo> <msub> <mi>A</mi> <mn>2</mn> </msub> <mo>&CenterDot;</mo> <msup> <mi>&alpha;</mi> <mn>2</mn> </msup> <mo>&CenterDot;</mo> <msup> <mrow> <mo>|</mo> <msub> <mi>e</mi> <mi>d</mi> </msub> <mo>|</mo> </mrow> <mn>2</mn> </msup> </mtd> </mtr> <mtr> <mtd> <mo>=</mo> <msub> <mi>A</mi> <mn>0</mn> </msub> <mo>+</mo> <msub> <mi>A</mi> <mn>1</mn> </msub> <mo>&CenterDot;</mo> <mi>&alpha;</mi> <mo>&CenterDot;</mo> <mo>|</mo> <msub> <mi>e</mi> <mi>d</mi> </msub> <mo>|</mo> <mo>+</mo> <msub> <mi>A</mi> <mn>2</mn> </msub> <mo>&CenterDot;</mo> <msup> <mi>&alpha;</mi> <mn>2</mn> </msup> <mo>&CenterDot;</mo> <msub> <mi>D</mi> <mi>d</mi> </msub> </mtd> </mtr> </mtable> </mfenced>其中,Dv表示虚拟视图的失真,T为深度图对应的纹理视频图像,Ti为将该纹理视频图像平移i个像素所得到的图像,SSDi表示T与Ti之间的平方差和,j为纹理视频图像中的第j个像素,M为纹理视频图像中像素的数量,|ed|为深度图的编码误差,Dd为深度图的编码失真,A0,A1,A2表示像素投射位置的变化对虚拟视图失真的影响程度,参数α表示深度图的编码失真对像素投射位置的变化的影响程度,(2)依据摄像机焦距f、当前视点与虚拟视点之间的距离L、场景的最近物体的深度值Znear以及最远物体的深度值Zfar计算参数α, <mrow> <mi>&alpha;</mi> <mo>=</mo> <mfrac> <mrow> <mi>f</mi> <mo>&CenterDot;</mo> <mi>L</mi> </mrow> <mn>255</mn> </mfrac> <mo>&CenterDot;</mo> <mrow> <mo>(</mo> <mfrac> <mn>1</mn> <msub> <mi>Z</mi> <mi>near</mi> </msub> </mfrac> <mo>-</mo> <mfrac> <mn>1</mn> <msub> <mi>Z</mi> <mi>far</mi> </msub> </mfrac> <mo>)</mo> </mrow> <mo>,</mo> </mrow>(3)确定深度图对应的纹理视频图像T,将该纹理视频图像依次平移i个像素,记为Ti,i的取值范围是[1,N],其中,N须小于该纹理视频图像的宽度;(4)计算T与Ti之间的平方差和,即SSDi, <mrow> <mi>SS</mi> <msub> <mi>D</mi> <mi>i</mi> </msub> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mi>M</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <msup> <mrow> <mo>[</mo> <mi>T</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>-</mo> <msub> <mi>T</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>]</mo> </mrow> <mn>2</mn> </msup> <mo>,</mo> </mrow>其中,j为纹理视频图像中的第j个像素,M为纹理视频图像中像素的数量;(5)依据SSDi的计算方法, <mfenced open='{' close=''> <mtable> <mtr> <mtd> <mi>SS</mi> <msub> <mi>D</mi> <mn>1</mn> </msub> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mi>M</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <msup> <mrow> <mo>[</mo> <mi>T</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>-</mo> <msub> <mi>T</mi> <mn>1</mn> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>]</mo> </mrow> <mn>2</mn> </msup> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mi>SS</mi> <msub> <mi>D</mi> <mi>i</mi> </msub> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mi>M</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <msup> <mrow> <mo>[</mo> <mi>T</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>-</mo> <msub> <mi>T</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>]</mo> </mrow> <mn>2</mn> </msup> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mi>SS</mi> <msub> <mi>D</mi> <mi>N</mi> </msub> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mi>M</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <msup> <mrow> <mo>[</mo> <mi>T</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>-</mo> <msub> <mi>T</mi> <mi>N</mi> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>]</mo> </mrow> <mn>2</mn> </msup> </mtd> </mtr> </mtable> </mfenced>首先计算出N个SSD数据,SSD1,…SSDi,…SSDN;然后依据SSDi与i之间的关系,建立N个方程组, <mrow> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <mi>SS</mi> <msub> <mi>D</mi> <mn>1</mn> </msub> <mo>&ap;</mo> <msub> <mi>A</mi> <mn>0</mn> </msub> <mo>+</mo> <msub> <mi>A</mi> <mn>1</mn> </msub> <mo>&CenterDot;</mo> <mn>1</mn> <mo>+</mo> <msub> <mi>A</mi> <mn>2</mn> </msub> <mo>&CenterDot;</mo> <msup> <mn>1</mn> <mn>2</mn> </msup> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mi>SS</mi> <msub> <mi>D</mi> <mi>i</mi> </msub> <mo>&ap;</mo> <msub> <mi>A</mi> <mn>0</mn> </msub> <mo>+</mo> <msub> <mi>A</mi> <mn>1</mn> </msub> <mo>&CenterDot;</mo> <mi>i</mi> <mo>+</mo> <msub> <mi>A</mi> <mn>2</mn> </msub> <mo>&CenterDot;</mo> <msup> <mi>i</mi> <mn>2</mn> </msup> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mi>SS</mi> <mrow> <msub> <mi>D</mi> <mi>N</mi> </msub> <mo>&ap;</mo> <msub> <mi>A</mi> <mn>0</mn> </msub> <mo>+</mo> <msub> <mi>A</mi> <mn>1</mn> </msub> <mo>&CenterDot;</mo> <mi>N</mi> <mo>+</mo> <msub> <mi>A</mi> <mn>2</mn> </msub> <mo>&CenterDot;</mo> <msup> <mi>N</mi> <mn>2</mn> </msup> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>即, <mrow> <mfenced open='(' close=')'> <mtable> <mtr> <mtd> <mi>SS</mi> <msub> <mi>D</mi> <mn>1</mn> </msub> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mi>SS</mi> <msub> <mi>D</mi> <mi>i</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mi>SS</mi> <msub> <mi>D</mi> <mi>N</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open='(' close=')'> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <msup> <mn>1</mn> <mn>2</mn> </msup> </mtd> </mtr> <mtr> <mtd> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> </mtd> </mtr> <mtr> <mtd> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> </mtd> </mtr> <mtr> <mtd> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mi>i</mi> </mtd> <mtd> <msup> <mi>i</mi> <mn>2</mn> </msup> </mtd> </mtr> <mtr> <mtd> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> </mtd> </mtr> <mtr> <mtd> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> </mtd> </mtr> <mtr> <mtd> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mi>N</mi> </mtd> <mtd> <msup> <mi>N</mi> <mn>2</mn> </msup> </mtd> </mtr> </mtable> </mfenced> <mfenced open='(' close=')'> <mtable> <mtr> <mtd> <msub> <mi>A</mi> <mn>0</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>A</mi> <mn>1</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>A</mi> <mn>2</mn> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>通过矩阵运算即可计算出参数A0、A1和A2;为便于计算,将矩阵运算过程转换为求解以下三元一次方程组的问题, <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msub> <mi>A</mi> <mn>1</mn> </msub> <mo>&CenterDot;</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mi>i</mi> <mo>+</mo> <msub> <mi>A</mi> <mn>2</mn> </msub> <mo>&CenterDot;</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msup> <mi>i</mi> <mn>2</mn> </msup> <mo>+</mo> <msub> <mi>A</mi> <mn>0</mn> </msub> <mo>&CenterDot;</mo> <mi>N</mi> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mi>SS</mi> <msub> <mi>D</mi> <mi>i</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>A</mi> <mn>1</mn> </msub> <mo>&CenterDot;</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msup> <mi>i</mi> <mn>2</mn> </msup> <mo>+</mo> <msub> <mi>A</mi> <mn>2</mn> </msub> <mo>&CenterDot;</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msup> <mi>i</mi> <mn>3</mn> </msup> <mo>+</mo> <msub> <mi>A</mi> <mn>0</mn> </msub> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mi>i</mi> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mrow> <mo>(</mo> <mi>SS</mi> <msub> <mi>D</mi> <mi>i</mi> </msub> <mo>&CenterDot;</mo> <mi>i</mi> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <msub> <mi>A</mi> <mn>1</mn> </msub> <mo>&CenterDot;</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msup> <mi>i</mi> <mn>3</mn> </msup> <mo>+</mo> <msub> <mi>A</mi> <mn>2</mn> </msub> <mo>&CenterDot;</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msup> <mi>i</mi> <mn>4</mn> </msup> <mo>+</mo> <msub> <mi>A</mi> <mn>0</mn> </msub> <mo>&CenterDot;</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msup> <mi>i</mi> <mn>2</mn> </msup> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mrow> <mo>(</mo> <mi>SS</mi> <msub> <mi>D</mi> <mi>i</mi> </msub> <mo>&CenterDot;</mo> <msup> <mi>i</mi> <mn>2</mn> </msup> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mfenced>其中A0、A1和A2为待求的参数,i,N,SSDi为已知数据;(6)计算深度图编码中拉格朗日因子λd, <mrow> <msub> <mi>&lambda;</mi> <mi>d</mi> </msub> <mo>=</mo> <mo>-</mo> <msub> <mi>A</mi> <mn>1</mn> </msub> <mo>&CenterDot;</mo> <mi>&alpha;</mi> <mo>&CenterDot;</mo> <msqrt> <msub> <mi>&lambda;</mi> <mi>mode</mi> </msub> </msqrt> <mo>-</mo> <msub> <mi>A</mi> <mn>2</mn> </msub> <mo>&CenterDot;</mo> <msup> <mi>&alpha;</mi> <mn>2</mn> </msup> <mo>&CenterDot;</mo> <msub> <mi>&lambda;</mi> <mi>mode</mi> </msub> <mo>,</mo> </mrow>其中,λmode为H.264/AVC中模式判决过程中采用的拉格朗日因子,λmode的计算方法如下, <mrow> <msub> <mi>&lambda;</mi> <mi>mode</mi> </msub> <mo>=</mo> <mo>-</mo> <mfrac> <mrow> <mo>&PartialD;</mo> <msub> <mi>D</mi> <mi>d</mi> </msub> </mrow> <mrow> <mo>&PartialD;</mo> <msub> <mi>R</mi> <mi>d</mi> </msub> </mrow> </mfrac> <mo>=</mo> <mo>-</mo> <mfrac> <mrow> <mo>&PartialD;</mo> <msub> <mi>D</mi> <mi>d</mi> </msub> </mrow> <mrow> <mo>&PartialD;</mo> <msub> <mi>Q</mi> <mi>d</mi> </msub> </mrow> </mfrac> <mo>&CenterDot;</mo> <mfrac> <mrow> <mo>&PartialD;</mo> <msub> <mi>Q</mi> <mi>d</mi> </msub> </mrow> <mrow> <mo>&PartialD;</mo> <msub> <mi>R</mi> <mi>d</mi> </msub> </mrow> </mfrac> <mo>=</mo> <mn>0.85</mn> <mo>&CenterDot;</mo> <msup> <mn>2</mn> <mrow> <mrow> <mo>(</mo> <mi>QP</mi> <mo>-</mo> <mn>12</mn> <mo>)</mo> </mrow> <mo>/</mo> <mn>3</mn> </mrow> </msup> <mo>,</mo> </mrow>其中,Dd为深度图的编码失真,Qd为深度图的量化步长,Rd为深度图的编码码率,QP为深度图的量化参数。
地址 250100 山东省济南市历城区山大南路27号