发明名称 用于三维电视系统中2D视频到3D视频的转换方法
摘要 本发明公开了一种用于三维电视系统中2D视频到3D视频的转换方法,包括如下步骤:(1)获取经过视频编码标准压缩过的待转换2D视频文件;(2)解码得到原始视频,同时从视频解码器中提取每个4×4像素块的运动矢量信息,换算成运动幅度;(3)通过运动幅度描述出每一帧图像的初始深度图;(4)迭代边缘修正滤波,得到物体边缘清晰准确的稠密深度图,完成3D视频的表达。本发明利用视频解码器的中间结果获取初始深度图,很好地节省了信号处理的时间和最终产品的成本;同时设计了一个边缘修正滤波器,解决了基于图像获取深度这类算法中的一大难题——如何得到物体边缘清晰准确的稠密深度图。
申请公布号 CN101631256B 申请公布日期 2011.02.09
申请号 CN200910102114.6 申请日期 2009.08.13
申请人 浙江大学 发明人 王梁昊;黄晓军;李东晓;席明;杨青青;张明
分类号 H04N13/00(2006.01)I 主分类号 H04N13/00(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 张法高
主权项 一种用于三维电视系统中2D视频到3D视频的转换方法,其特征在于包括如下步骤:(1)获取经过视频编码标准压缩过的待转换2D视频文件;(2)解码待转换2D视频文件,得到原始视频,同时从视频解码器中提取每个4×4像素块的运动矢量信息,换算出这个4×4像素块的运动幅度;(3)对从解码待转换2D视频文件中得到的每一帧图像,通过每个4×4像素块的运动幅度描述出整幅图像的初始深度图;(4)利用解码出来的原始视频和每一帧的初始深度图,通过边缘修正滤波,得到物体边缘清晰准确的稠密深度图,完成3D视频的表达;所述的解码待转换2D视频文件,得到原始视频,同时从视频解码器中提取每个4×4像素块的运动矢量信息,换算出这个4×4像素块的运动幅度步骤:(a)解码待转换2D视频文件,得到原始视频,同时从视频解码器中提取每个4×4像素块的运动矢量,包括前向和后向各一对,每对包含x方向和y方向;(b)利用每个4×4像素块的参考关系,找到4×4像素块的参考块所在的参考帧与当前帧之间的帧距以及参考关系;(c)将4×4像素块的参考块所在的参考帧与当前帧之间的帧距以及参考关系换算成每个4×4像素块的运动幅度;每个4×4像素块的运动幅度的定义如下:设当前4×4像素块的前向运动矢量为MVfx(x,y)和MVfy(x,y),后向运动矢量为MVbx(x,y)和MVby(x,y),前向参考块所在的参考帧与当前帧的帧距为Δdf(x,y)和Δdb(x,y),这个4×4像素块的运动幅度f(x,y)定义为: <mrow> <mi>f</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <mo>&CenterDot;</mo> <mrow> <mo>(</mo> <msqrt> <msup> <mrow> <mo>(</mo> <mfrac> <mrow> <msub> <mi>MV</mi> <mi>fx</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mi>&Delta;</mi> <msub> <mi>d</mi> <mi>f</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <mfrac> <mrow> <msub> <mi>MV</mi> <mi>fy</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mi>&Delta;</mi> <msub> <mi>d</mi> <mi>f</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>)</mo> </mrow> <mn>2</mn> </msup> </msqrt> <mo>+</mo> <msqrt> <msup> <mrow> <mo>(</mo> <mfrac> <mrow> <msub> <mi>MV</mi> <mi>bx</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mi>&Delta;</mi> <msub> <mi>d</mi> <mi>b</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <mfrac> <mrow> <msub> <mi>MV</mi> <mi>by</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mi>&Delta;</mi> <msub> <mi>d</mi> <mi>b</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>)</mo> </mrow> <mn>2</mn> </msup> </msqrt> <mo>)</mo> </mrow> <mo>;</mo> </mrow>所述的对从解码待转换2D视频文件中得到的每一帧图像,通过每个4×4像素块的运动幅度描述出整幅图像的初始深度图步骤:(d)对于解码2D视频文件得到的每一帧图像,通过运动幅度描述出对应描述图,描述图的每个像素点代表着每个4×4像素块的运动情况,由运动幅度描述出对应描述图的描述过程如下:对步骤(c)中得到的f(x,y)的值进行线性缩放,确保描述图的每个像素点的取值范围为[0,255],设描述图的每个点表示为g(x,y),线性缩放方法如下: <mrow> <mi>g</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>255</mn> <mrow> <mi>f</mi> <msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mi>max</mi> </msub> <mo>-</mo> <mi>f</mi> <msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mi>min</mi> </msub> </mrow> </mfrac> <mo>[</mo> <mi>f</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>-</mo> <mi>f</mi> <msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mi>min</mi> </msub> <mo>]</mo> <mo>;</mo> </mrow>(e)将得到的描述图线性放大16倍,即水平方向4倍,垂直方向4倍,得到分辨率与原始序列相同的初始深度图;所述的利用解码出来的原始视频和每一帧的初始深度图,通过边缘修正滤波,得到物体边缘清晰准确的稠密深度图步骤:(f)对步骤(e)中得到的初始深度图进行边缘修正滤波,其中滤波参数的确定来自于原始视频当前帧和参考帧像素点数据,得到滤波后的深度图;(g)对滤波后的深度图迭代步骤(f)中的边缘修正滤波,迭代五次后得到物体边缘清晰准确的稠密深度图,完成3D视频的表达;每次迭代中的边缘修正滤波如下: <mrow> <msub> <mi>d</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <munder> <mi>&Sigma;</mi> <mrow> <mi>q</mi> <mo>&Element;</mo> <mi>A</mi> </mrow> </munder> <msub> <mi>&omega;</mi> <mi>pq</mi> </msub> <msub> <mi>d</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mrow> <mo>(</mo> <mi>q</mi> <mo>)</mo> </mrow> </mrow> <mrow> <munder> <mi>&Sigma;</mi> <mrow> <mi>q</mi> <mo>&Element;</mo> <mi>A</mi> </mrow> </munder> <msub> <mi>&omega;</mi> <mi>pq</mi> </msub> </mrow> </mfrac> </mrow>其中,i表示第i次迭代,p表示深度图中的一个点,di(p)表示在i次迭代时p点的深度值,i次迭代深度图中的p点,是由i‑1次迭代深度图中p位置周边A邻域中的所有q点确定的,权值ωpq定义如下:ωpq=ωboundaryωreliability <mrow> <msub> <mi>&omega;</mi> <mi>boundary</mi> </msub> <mo>=</mo> <msup> <mi>e</mi> <mrow> <mo>-</mo> <mi>&alpha;</mi> <mo>|</mo> <msub> <mi>s</mi> <mi>p</mi> </msub> <mo>-</mo> <msub> <mi>s</mi> <mi>q</mi> </msub> <mo>|</mo> </mrow> </msup> </mrow> <mrow> <msub> <mi>&omega;</mi> <mi>reliability</mi> </msub> <mo>=</mo> <mn>1</mn> <mo>-</mo> <msup> <mi>e</mi> <mrow> <mo>-</mo> <mi>&beta;</mi> <mo>|</mo> <msub> <mi>s</mi> <mi>q</mi> </msub> <mo>-</mo> <msubsup> <mi>s</mi> <msup> <mi>q</mi> <mo>&prime;</mo> </msup> <mo>&prime;</mo> </msubsup> <mo>|</mo> </mrow> </msup> </mrow>其中,sp表示当前帧在p位置上的像素亮度值,sq表示当前帧在q位置上的像素亮度值,若|sp‑sq|较大,则两点恰好在边界,ωboundary较小,对上一次迭代的p点进行滤波的强度较小,保留原深度,反之则进行模糊滤波,消除块状虚假边界,如此一来,|sp‑sq|就能为深度图定位精确的物体边界,q′为q点的深度图逆转换得到运动矢量后对应的参考位置,s′q′即为参考帧中在该参考位置的像数亮度值;类似于|sp‑sq|,若|sq‑s′q′|较大,则表明邻域中q点的运动矢量不精确,即深度不准确,需要对p进行模糊滤波,反之则保留该点深度,α和β均为正数,其值的选取可在系统运行中不断调整,从而得到物体边界清晰准确的稠密深度图,完成3D视频的表达。
地址 310027 浙江省杭州市浙大路38号