发明内容
本发明解决的是现有技术中将二维视频转换成三维视频的方法应用于手机的三维显示的效果不佳的问题。
为了解决上述问题,本发明提供了一种视频图像的转换方法,包括:
对二维视频的当前帧图像进行预处理获得当前帧预处理图像,所述预处理包括:去除当前帧图像的全局运动;
提取所述当前帧预处理图像的深度图像;
基于所述当前帧预处理图像及其深度图像获取当前帧图像的左眼图像和右眼图像。
可选的,所述去除当前帧图像的全局运动包括:
获取当前帧图像的全局运动矢量场和全局旋转运动矢量场;
基于所述当前帧图像的全局运动矢量场和全局旋转运动矢量场对当前帧图像进行全局平移和全局旋转。
可选的,所述预处理还包括:在去除所述当前帧图像的全局运动前去除所述当前帧图像的畸变。
可选的,采用桶形畸变模型去除所述当前帧图像的畸变。
可选的,所述提取所述当前帧预处理图像的深度图像包括:
去除所述当前帧预处理图像中运动矢量不可信的像素点;
获取所述当前帧预处理图像的色彩区域分割信息;
至少基于所述色彩区域分割信息对去除了运动矢量不可信的像素点的当前帧预处理图像中的空洞进行填充,获取当前帧预处理图像的深度图像。
可选的,所述去除所述当前帧预处理图像中运动矢量不可信的像素点包括:
对当前帧预处理图像与前一帧图像进行匹配,获取当前帧预处理图像的像素点与其匹配点对应的正向匹配值和反向匹配值;
将所述当前帧预处理图像以预定尺寸分割为图像块;
去除所述当前帧预处理图像中所述正向匹配值和反向匹配值的误差大于第一门限值的像素点,以及所述图像块的平滑度大于第二门限值时,所述图像块中的像素点。
可选的,所述对当前帧预处理图像与前一帧图像进行匹配采用块匹配方法、光流法和混合迭代匹配法中的一种。
可选的,所述至少基于所述色彩区域分割信息对去除了运动矢量不可信的像素点的当前帧预处理图像中的空洞进行填充包括:结合所述色彩区域分割信息和缓存的当前帧图像的至少前一帧图像的深度图像的深度信息确定所述空洞的像素点的深度信息,以对所述空洞进行填充。
可选的,所述当前帧预处理图像的深度图像为归一化和滤波后的当前帧预处理图像的深度图像。
可选的,所述滤波为平滑滤波、中值滤波和双边滤波中的一种。
可选的,所述基于所述当前帧预处理图像及其深度图像获取当前帧图像的左眼图像和右眼图像包括:
将所述当前帧预处理图像作为右眼图像或左眼图像;
对所述当前帧预处理图像的深度图像进行映射,以获得映射图像;
对所述映射图像进行空洞填充,获取对应的另一眼图像。
可选的,所述对所述当前帧预处理图像的深度图像进行映射包括:对所述当前帧预处理图像的深度图像进行低通滤波后再进行映射。
可选的,所述对所述映射图像进行空洞填充包括:对所述映射图像进行线性滤波。
可选的,所述视频图像的转换方法还包括:对所述二维视频的各帧图像的左眼图像和右眼图像进行视频编码,以获得三维视频码流。
可选的,所述视频图像的转换方法还包括:对所述当前帧的左眼图像和右眼图像进行图像压缩,以获得三维图像。
为解决上述问题,本发明还提供了视频图像的转换装置,包括:
预处理单元,适于对二维视频的当前帧图像进行预处理获得当前帧预处理图像,所述预处理包括:去除当前帧图像的全局运动;
深度图像提取单元,适于提取所述当前帧预处理图像的深度图像;
深度图像渲染单元,适于基于所述当前帧预处理图像及其深度图像获取当前帧图像的左眼图像和右眼图像。
与现有技术相比,本发明的技术方案具有以下优点:
通过对所述二维视频的当前帧图像先进行预处理获得当前帧预处理图像,然后获取所述当前帧预处理图像的深度图像、最后基于所述当前帧预处理图像的深度图像映射出左眼图像或右眼图像,并将所述当前帧预处理图像作为另一眼图像,在实现了在手机上将二维视频转换为三维视频的同时,也使得用户在通过具有单一摄像头的手机制作3D视频的过程中可以沿任意方向移动手机,且不需要进行多次操作就可以获得效果较佳的3D视频,给用户提供了极大的方便。
通过预处理的方式去除了二维视频的当前帧图像的畸变和全局运动获得了当前帧图像的预处理图像,对当前帧预处理图像中运动矢量不可信的像素点进行去除,并基于所述当前帧预处理图像的色彩区域分割信息对去除了运动矢量不可信的像素点的当前帧预处理图像中的空洞进行填充,进而获得深度图像,相对于直接通过当前帧图像来获得的深度图像而言其精确度高,因此也提高了最终获得的3D视频的质量。
进一步地,在去除了当前帧预处理图像中的运动矢量不可信的像素点后,利用缓存的当前帧图像的至少前一帧图像的深度图像的深度信息及所述当前帧图像的色彩区域分割信息,对当前帧预处理图像中的大面积空洞进行填充,进一步地提高了获得的当前帧预处理图像的深度图像的精确度。
通过对当前帧预处理图像的深度图像进行归一化和滤波处理,更进一步地提高了当前帧预处理图像的深度图像的精确度,进而提高了3D视频的质量。
对所述当前帧预处理图像的深度图像进行映射包括:对所述当前帧预处理图像的深度图像进行低通滤波后再进行映射,使得所述当前帧预处理图像的深度图像的边缘平滑,减少了对所述当前帧预处理图像的深度图像进行映射时空洞的产生,提高了最终获得当前帧图像的左眼或右眼图像的质量,进而也提高了3D视频的质量。
具体实施方式
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施方式的限制。
正如背景技术部分所述,现有技术中,手机只能对3D视频进行播放,而目前大部分视频源或者图像源均为2D的,此外采用现有的具有单一摄像头的手机制作3D视频时,效果不佳而且具有一定的局限性。
发明人经过研究发现,提取图像深度信息依赖于摄像机本身平移运动造成的视差,但是如果摄像机本身有旋转运动,则会造成视频场景中出现全局的平移或者旋转运动向量场,然而由于目前的应用于数字电视的2D视频到3D视频的转换***并无法去除2D视频图像中的全局运动,因此如果应用在移动终端(例如手机)上,则易导致转换后的3D视频的显示效果不佳,且当视频图像中存在遮挡的区域、平滑无特征的区域时,基于上述***获取的深度图像的效果并不好。
此外,当采用手机的摄像头进行3D视频的制作时,由于手机摄像头口径一般比较小,因此,通过手机摄像头获得的图像畸变比较严重,而上述***也未涉及对畸变的图像进行矫正。
因此,应用于数字电视的2D视频到3D视频的转换***并不能直接应用于手机平台。由此发明人提出,先对2D视频进行预处理,以去除由于摄像头引起的2D视频图像的畸变和由于摄像头旋转导致的2D视频图像的全局运动,然后对经过预处理的2D视频图像中的遮挡区域以及平滑区域(难以检测特征的区域)的像素点的运动矢量进行检测,去除运动矢量不可信的像素点,再对去除了运动矢量不可信的像素点的2D视频图像中的空洞进行填充,以获得效果比较好的深度图像。
为了更好地理解本发明的技术方案,首先对本发明中出现的相关名词进行解释:
匹配点:与第i帧图像中的像素点对应的第i-1帧图像中的像素点。
匹配块:与第i帧图像中的图像块对应的第i-1帧图像中的图像块。
运动矢量:第i帧图像中的像素点与其对应的匹配点的相对位移。
正向匹配值:第i帧图像中的像素点与其匹配点对应的正向运动矢量。
反向匹配值:第i帧图像中的像素点与其匹配点对应的反向运动矢量。
请参见图3,图3是本发明实施例的视频图像的转换方法的流程示意图;如图3所示,所述视频图像的转换方法包括:
步骤S11:对二维视频的当前帧图像进行预处理获得当前帧预处理图像,所述预处理包括:去除当前帧图像的全局运动。
步骤S12:提取所述当前帧预处理图像的深度图像。
步骤S13:基于所述当前帧预处理图像及其深度图像获取当前帧图像的左眼图像和右眼图像。
执行步骤S11,本实施例中,所述2D视频可以是用户通过网络或者其他方式获得的2D视频码流经视频解码后得到的2D视频,也可以是用户通过手机的摄像头拍摄的2D视频。对所述2D视频进行预处理,具体地,就是对2D视频中的每一帧图像进行预处理。所述预处理包括:去除当前帧图像的全局运动,所述全局运动是指由摄像头的旋转所引起的视频运动,此时整个图像的背景和目标都在运动。
需要说明的是,对于通过上述方式获得的2D视频而言,若所述2D视频图像已经去除了畸变,则只需要去除2D视频图像的全局运动,若所述2D视频图像并未去除畸变,则既需要去除所述2D视频图像的畸变也需要去除所述2D视频图像的全局运动,具体地,在去除所述当前帧图像的全局运动前去除所述当前帧图像的畸变。
本实施例中,以当前帧图像未去除畸变进行相应的说明。去除当前帧图像的畸变可以采用镜头校准法、反畸变模型法等,去除当前帧图像的全局运动主要是指去除由于摄像头旋转而引起的全局运动,可以采用光流法等,采用何种方法根据实际需求而定。
具体地,本实施例中采用桶形(barrel)镜头畸变模型来对畸变的2D视频图像进行矫正,请参见图4,图4是barrel镜头畸变模型,其中,图(a)表示未畸变的图像,图(b)表示畸变的图像,对于图像中像素点而言,其对应的畸变公式为:
其中:ru是指在未畸变图像中,像素点距离畸变中心的位置,rd是指畸变图像中,像素点距离畸变中心的位置,k为桶形畸变系数,由镜头的光学特性而定。而畸变校正的目的则是:确定图(a)中每个像素点对应于图(b)中的位置,即:
rd=F(k,ru) (2)
其中F是公式(1)的逆运算,实际计算过程中为了方便计算,通常会将上述公式(2)进行变换,得到如下公式:
通过上述公式确定了图(a)中的每个像素点的位置在图(b)中的相应位置后,将图(b)中相应位置处的像素值作为与该位置对应的图(a)中的像素点的像素值,即可重构未畸变的图像。
在通过上述方法去除了当前帧图像的畸变后,然后去除当前帧图像的全局运动,具体地,可以通过如下方式进行:
先获取当前帧图像的全局运动矢量场和全局旋转运动矢量场,然后基于获得的所述当前帧图像的全局运动矢量场和全局旋转运动矢量场对当前帧图像进行全局平移和全局旋转。
本领域技术人员知晓,若要获取当前帧图像的全局运动矢量场和全局旋转运动矢量场,则需先获取当前帧图像中的每个像素点的全局运动矢量和全局旋转运动矢量,当前帧图像中所有像素点的全局运动矢量即组成了全局运动矢量场,所有像素点的全局旋转运动矢量即组成了全局旋转运动矢量场。而基于获得的所述当前帧图像的全局运动矢量场和全局旋转运动矢量场对当前帧图像进行全局平移和全局旋转,也是先基于像素点的全局运动矢量和全局旋转运动矢量来对像素点进行全局平移和全局旋转,然后通过对所有的像素点进行全局平移和全局旋转进而实现对当前帧图像的全局平移和全局旋转。以下对获取像素点的全局运动矢量和全局旋转运动矢量进行详细地说明。
本实施例中,全局运动矢量可以分为水平全局运动矢量和垂直全局运动矢量,对于带有姿态传感器(陀螺仪)的手机而言,其摄像头拍摄的当前帧图像中像素点的水平全局运动矢量可以以手机摄像头相对于水平方向旋转的角度θh来衡量,垂直全局运动矢量可以以手机摄像头相对于垂直方向旋转的角度θv来衡量,所述角度θh、θv通过陀螺仪检测得到。像素点的全局旋转运动矢量可以以手机摄像头沿自身光轴旋转的角度θo来衡量。
若手机没有姿态传感器,则可以通过图像处理的方法来获得所述全局运动矢量和全局旋转运动矢量,本实施例中具体通过光流法来获得像素点的全局运动矢量和全局旋转运动矢量。对于光流法而言,首先基于亮度恒常性假设,即:
Ixu(x,y)+Iyv(x,y)+It=0
其中:Ix为像素点亮度对x的导数,Iy为像素点亮度对y的导数,It为像素点亮度对t的导数,u(x,y)为像素点(x,y)对应的运动矢量在x方向的分量,v(x,y)为像素点(x,y)对应的运动矢量在y方向的分量。
然后基于光流平滑性假设,即图像中每个邻域的像素点均以相同的方式运动,则像素点(x,y)对应的运动矢量在x方向的分量u(x,y)和在y方向的分量v(x,y)通过如下公式获得如下:
其中:Ix1为第一个像素点亮度对x的导数,Ixn为第n个像素点亮度对x的导数;Iy1为第一个像素点亮度对y的导数,Iyn为第n个像素点亮度对y的导数;It1为第一个像素点亮度对t的导数,Itn为第n个像素点亮度对t的导数,1≤n≤当前帧图像的像素点总数。
本实施例中,为了加快计算速度可以不对当前帧图像中的所有像素点进行计算,而是按照一定的间距,例如:在水平方向和垂直方向上每隔10个像素点取一个像素点,然后代入公式(3)来获得像素点(x,y)对应的运动矢量在x方向的分量u(x,y),以及像素点(x,y)对应的运动矢量在y方向的分量v(x,y)。
通过上述方式获得像素点对应的运动矢量在x方向的分量u(x,y)和在y方向的分量v(x,y)后,对所有的u(x,y)求平均值,并将该平均值作为水平全局运动矢量θh,对所有的v(x,y)求平均值,并将该平均值作为垂直全局运动矢量θv。
仍然采用光流法获取像素点的运动矢量,即仍然采用公式(3)来获取像素点的运动矢量,此时n=1。将获得的像素点的运动矢量减去上述的水平全局运动矢量得到uo(每个像素点均对应了一个uo),将获得的像素点的运动矢量减去上述的垂直全局运动矢量得到vo(每个像素点均对应了一个vo),进而通过uo和vo来估计像素点的全局旋转运动矢量θo。
进一步,为了能够快速获取像素点的全局旋转运动矢量θo,采用简单的搜索方法,具体地,就是在0°到α度的范围,每隔β度间隔计算一次旋转运动矢量在x方向的分量以及在y方向的分量,即:
ui=ru(1-cosθi)
vi=rusinθi (4)
其中:ui为像素点(x,y)对应的旋转运动矢量在x方向的分量,vi为像素点(x,y)对应的旋转运动矢量在y方向的分量,ru为像素点的旋转运动矢量,θi=β度,2β度,3β度,...,α度。分别计算u1与uo的均方误差,u2与uo的均方误差,u3与uo的均方误差,...,与uo的均方误差,并将与uo的均方误差最小的umin取出;分别计算v1与vo的均方误差,v2与vo的均方误差,v3与vo的均方误差,...,与vo的均方误差,并将与vo的均方误差最小的vmin取出;以umin(该弧度对应的角度)和vmin(该弧度对应的角度)为θi的范围,仍然采用上述公式(4),每隔γ度计算一次旋转运动矢量在x方向的分量以及在y方向的分量,并获得此时的umin(该弧度对应的角度)和vmin(该弧度对应的角度),当最终获得的umin(该弧度对应的角度)和vmin(该弧度对应的角度)的差小于0.1°时,将umin(该弧度对应的角度)或vmin(该弧度对应的角度)或umin(该弧度对应的角度)与vmin(该弧度对应的角度)的平均值作为全局旋转运动矢量θo。若此时umin(该弧度对应的角度)和vmin(该弧度对应的角度)的差大于0.1°,则继续每隔σ度计算一次旋转运动矢量在x方向的分量以及在y方向的分量,直至此次获得的umin(该弧度对应的角度)和vmin(该弧度对应的角度)的差小于0.1°。
以α=90°,β=10°,γ=1°为例对上述方法进行详细说明。先每隔10°计算一次旋转运动矢量在x方向的分量以及在y方向的分量,即分别计算u1与uo的均方误差,u2与uo的均方误差,u3与uo的均方误差,...,u9与uo的均方误差,并将与uo的均方误差最小的umin取出;分别计算v1与vo的均方误差,v2与vo的均方误差,v3与vo的均方误差,...,v9与vo的均方误差,并将与vo的均方误差最小的vmin取出;将umin对应的角度θumin和vmin对应的角度θvmin作为公式(4)中θi的范围,此处以θvmin>θumin,θumin=1°,θvmin=20°为例,由于γ=1°,故每隔1度计算一次旋转运动矢量在x方向的分量以及在y方向的分量,则此时θi=1°,2°,3°,...,19°,20°,分别计算此时u1与uo的均方误差,u2与uo的均方误差,u3与uo的均方误差,...,u20与uo的均方误差,并将与uo的均方误差最小的umin取出;分别计算此时v1与vo的均方误差,v2与vo的均方误差,v3与vo的均方误差,...,v20与vo的均方误差,并将与vo的均方误差最小的vmin取出;将此时获得的umin对应的角度θumin和vmin对应的角度θvmin作为θi的范围,若此时得到的θumin和θvmin的差小于0.1°,则将θumin或θvmin或作为全局旋转运动矢量θo。否则,继续每隔一定的度数重复上述过程,直至最终获得的θumin和θvmin的差小于0.1°。
需要说明的是,上述过程中α、β、γ、σ...的取值由具体情况而定,通常为了能够快速获取像素点的全局旋转运动矢量θo,α一般取90°,β、γ、σ...的度数则在1°~10°之间。
至此,通过上述的光流法获得了像素点的水平全局运动矢量θh、垂直全局运动矢量θv和全局旋转运动矢量θo。
基于获得的像素点的水平全局运动矢量θh和垂直全局运动矢量θv,以及像素点的全局旋转运动矢量θo对该像素点进行全局平移和全局旋转,具体地通过以下公式来去除像素点的全局运动,
xd=xu+kxθh+rr(1-coSθo)
yd=yu+kyθv+rrsinθo
其中:(xu,yu)是指去除全局运动后的像素点的坐标、(xd,yd)是指未去除全局运动的像素点的坐标,rr是指像素点与旋转中心的距离,kx是指手机每转过1度,图像在水平方向平移多少像素,ky是指手机每转过1度,图像在垂直方向平移多少像素(kx和ky的取值与摄像头物理特性有关,可以通过实验的方法测定)。
将未去除全局运动的像素点(xd,yd)的像素值作为去除全局运动的像素点(xu,yu)的像素值,即可以获得去除全局运动的像素点。对当前帧图像中的所有像素点均去除全局运动,则去除了当前帧图像的全局运动,在对当前帧图像去除全局运动后,提取当前帧预处理图像的深度图像。
为了更好地理解本实施例中提取当前帧预处理图像的深度图像(步骤S12),先简单地对从视频图像中提取深度图像的原理进行介绍。请参见图5,图5是深度图像提取的原理图,如图5所示,点O表示图像场景中的任意一点,摄像机使用简化过的小孔成像模型,视频的两帧图像对应的摄像机的光心位置分别为A、B,f表示摄像机的焦距,Z表示点O距摄像机的距离,则点O的像点在两帧图像中对应了不同的像素点a和b。若像素点a为当前帧图像中点O的像点,像素点b为前一帧图像中点O的像点,则像素点b为像素点a的匹配点,也即当前帧图像中像素点a的匹配点为像素点b。对应于像素点a和b而言,X1表示像素点a与图像中心的距离,X2表示像素点b与图像中心的距离,若Z远远大于f,由几何关系可以得出(X1-X2)的值正比于点O距摄像机的距离Z的倒数1/Z。因此,可以通过(X1-X2)的值乘以一个比例系数来代表O点的深度信息。
故,提取当前帧图像的深度图像的问题转化为提取当前帧图像中每一个像素点与参考帧图像(前一帧图像)中对应匹配点的运动矢量的问题。且由上述也可以获知离摄像机近的物体的像素点对应的运动矢量的绝对值大,离摄像机远的物体的像素点对应的运动矢量的绝对值小,若获得到的运动矢量的信息越精确,那么得到的深度信息也越精确,进而根据深度图像渲染出的三维视频的质量也就越好。
请参见图6,图6是本发明实施例的提取当前帧预处理图像的深度图像的流程示意图(对应于图3中的步骤S12),如图6所示,提取当前帧预处理图像的深度图像包括:
S121:去除所述当前帧预处理图像中运动矢量不可信的像素点。
S122:获取所述当前帧预处理图像的色彩区域分割信息。
S123:至少基于所述色彩区域分割信息对去除了运动矢量不可信的像素点的当前帧预处理图像中的空洞进行填充,获取当前帧预处理图像的深度图像。
执行步骤S121,本实施例中去除所述当前帧预处理图像中运动矢量不可信的像素点包括:包括:
对当前帧预处理图像与前一帧图像进行匹配,获取当前帧预处理图像的像素点与其匹配点对应的正向匹配值和反向匹配值;
将所述当前帧图像以预定尺寸分割为图像块;
去除所述当前帧预处理图像中所述正向匹配值和反向匹配值的误差大于第一门限值的像素点,以及所述图像块的平滑度大于第二门限值时,所述图像块中的像素点。
本实施例中对当前帧预处理图像与前一帧图像进行匹配获取当前帧预处理图像的像素点与其匹配点对应的正向匹配值和反向匹配值可以采用块匹配方法、光流法和HRM方法等,具体采用何种方法,由该方法的运算复杂度来决定。本实施例中采用HRM方法,对于HRM方法而言,虽然其运算复杂度比较高,但是采用HRM方法获得的运动矢量的精度较高,故获得的深度信息也越精确,渲染出的三维视频的效果也就越好。
具体地,第一步:对当前帧预处理图像中的图像块进行运动估计。
本实施例中若当前帧预处理图像为第一帧图像(当前帧图像为第一帧图像),则采用块匹配运动估计方法对所述当前帧预处理图像的图像块进行运动估计(通常图像块的尺寸在4*4~8*8像素之间),并将该运动估计作为初始运动矢量。块匹配运动估计方法为现有的运动估计方法,故此处不再展开具体详述。
若所述当前帧预处理图像不是第一帧图像(当前帧图像不是第一帧图像),则将当前帧预处理图像的图像块与其匹配块对应的运动矢量(所述匹配块是指与当前帧预处理图像中的图像块对应的前一帧图像中的图像块)、当前帧预处理图像的图像块的左边图像块与其匹配块对应的运动矢量,当前帧预处理图像的图像块的上方图像块与其匹配块对应的运动矢量作为候选运动矢量。本实施例中,所述图像块的尺寸优选地为4*4像素,所述当前帧预处理图像的图像块的左边图像块、上方图像块可以这样理解,以将一副160*160像素的图像按照4*4像素大小划分图像块为例,则共有40*40个图像块,每个图像块对应有一个坐标,若其中某个图像块的坐标为(2,10),则其对应的左边的图像块的坐标为(2,9),上方图像块的坐标为(1,10)。
分别计算上述的三个候选运动矢量的匹配误差,选择匹配误差最小的候选运动矢量作为初始运动矢量。所述匹配误差通过以下公式获得:
其中:D为匹配误差,M是图像块在水平方向的像素点的个数,N是图像块在垂直方向的像素点的个数,Fc(x,y)是当前帧预处理图像中坐标为(x,y)的像素点的像素值,Fr(x+dx,y+dy)是前一帧图像中坐标为(x+dx,y+dy)的像素点的像素值,dx为当前帧预处理图像的像素点与其匹配点对应的运动矢量在x方向的分量,dy为当前帧预处理图像的像素点与其匹配点对应的运动矢量在y方向的分量。本实施例中M和N的取值由实际需求而定。
此外,需要说明的是,对于当前帧预处理图像不是第一帧图像而言,若当前帧预处理图像的图像块位于当前帧预处理图像的边界处,则仍需通过块匹配运动估计方法来获取初始运动矢量。
第二步:对当前帧预处理图像的图像块内部的每个像素点对应的运动矢量(每个像素点对应的运动矢量,即指当前帧预处理图像中每个像素点与其匹配点对应的运动矢量,当前帧预处理图像的像素点的匹配点是指与当前帧预处理图像中的像素点对应的前一帧图像中的像素点)赋值为初始运动矢量,采用像素精度匹配方法获取运动矢量修正值。具体地,通过以下公式获得:
d(x,y)=di-|fc(x,y)-fr(x+dx,y+dy)|[ux,uy]T
其中:
d(x,y)为当前帧预处理图像的像素点(x,y)的运动矢量修正值,di为初始运动矢量,fc(x,y)是当前帧预处理图像中坐标为(x,y)的像素点的像素值,fr(x+dx,y+dy)是前一帧图像中坐标为(x+dx,y+dy)的像素点的像素值,Θ为梯度阈值,与图像的平滑度相关。
第三步:获取当前帧预处理图像的图像块内部的每个像素点对应的运动矢量,具体地,将初始运动矢量与每个像素点对应的运动矢量修正值相加,即可以得到每个像素点对应的运动矢量。
选取当前帧预处理图像的图像块内部的每个像素点对应的运动矢量的匹配误差与第一步中获得的三个候选运动矢量对应的匹配误差中,最小匹配误差所对应的运动矢量作为当前帧预处理图像的图像块的最终运动矢量。具体地,每个像素点对应的运动矢量的匹配误差仍采用公式(5)来计算(此时M=0,N=0)。
上述获得的当前帧预处理图像的图像块的最终运动矢量即为当前帧预处理图像的图像块中的像素点与其匹配点对应的正向运动矢量,也即当前帧预处理图像的图像块中的像素点与其匹配点对应的正向匹配值,对于当前帧预处理图像中的每个图像块均采用上述的方法获取所述图像块的最终运动矢量,进而可以获取当前帧预处理图像中的每个像素点与其匹配点对应的正向匹配值。而对于当前帧预处理图像的像素点与其匹配点对应的反向运动矢量的获取与正向运动矢量的获取相类似,不同的是将上述HRM方法中第一步至第三步中的当前帧预处理图像替换为前一帧图像,而将前一帧图像替换为当前帧预处理图像即可。
至此,通过上述的HRM方法获得了当前帧预处理图像的像素点与其匹配点对应的正向匹配值和反向匹配值。
检测上述的正向匹配值和反向匹配值之间的误差是否大于第一门限值,若大于则该像素点与其匹配点对应的运动矢量不可信,反之则为可信。所述第一门限由实际测试而定,可以为3~10个像素点的长度,本实施例中所述第一门限值的取值为5个像素点的长度。
本实施例中还通过计算当前帧预处理图像中图像块的平滑度来判断该图像块中所包含的像素点与其匹配点对应的运动矢量可信还是不可信。具体地,将所述当前帧预处理图像以预定尺寸分割为图像块,所述预定尺寸根据实际需求而定,本实施例中所述预定尺寸为4*4~8*8像素之间,优选地为4*4像素。对分割后的当前帧预处理图像中的每一个图像块的平滑度进行检测,检测所述图像块的平滑度是否大于第二门限值。
本实施例中图像块的平滑度可以通过获取该图像块所包含的所有像素点的像素值的均方差来衡量,即该图像块的平滑度为其包含的所有像素点的像素值的均方差,若所述图像块的平滑度大于所述第二门限值,则该图像块包含的像素点与其匹配点对应的运动矢量不可信,反之则为可信,所述第二门限由实际测试而定,可以为10~100,本实施例中所述第二门限值的取值为40。
经过上述的判断,获取了当前帧预处理图像中的像素点与其匹配点对应的运动矢量为不可信的像素点,则需要将运动矢量不可信的像素点进行去除,即去除所述当前帧预处理图像中正向匹配值和反向匹配值的误差大于第一门限值的像素点,以及所述图像块的平滑度大于第二门限值时,所述图像块中的像素点。
对当前帧预处理图像中的运动矢量不可信的像素点去除后,导致当前帧预处理图像中出现了许多空洞,因此,需要对其进行填补。本实施例中采用对当前帧预处理图像的色彩区域进行分割(即根据色彩的不同将图像区域划分为不同的色块),获取所述当前帧预处理图像的色彩区域分割信息,一方面利用所述色彩区域的分割信息来保留当前帧预处理图像中的物体边缘,另一方面也利用获取到的色彩区域分割信息中位于空洞周围的色彩区域的深度信息来确定需要填充的空洞的深度信息,进而对当前帧预处理图像中的空洞进行填充,以获得当前帧预处理图像的深度图像。
需要说明的是,若所述当前帧预处理图像在去除了运动矢量不可信的像素点后,所述当前帧预处理图像中出现大面积的空洞,则除了利用获取的当前帧预处理图像的色彩区域分割信息外,还需要利用缓存的当前帧图像的至少前一帧图像的深度图像的深度信息来确定所述空洞的像素点的深度信息,进而对去除了运动矢量不可信的像素点后的当前帧预处理图像中的空洞进行填充以获取当前帧预处理图像的深度图像。本实施例中通过缓存的前5帧的深度图像的深度信息来对当前帧预处理图像中的大面积空洞进行填充,且深度图像的深度信息通过以下公式获得:
其中:D(x,y)为像素点(x,y)的深度信息,u(x,y)为像素点(x,y)对应的运动矢量在x方向的分量,v(x,y)为像素点(x,y)对应的运动矢量在y方向的分量。结合当前帧预处理图像的色彩区域分割信息和缓存的当前帧图像的至少前一帧图像的深度图像的深度信息来对当前帧预处理图像中的空洞进行填充为现有技术,故此处不再展开具体详述。
此外,由于不同帧的图像之间,摄像头运动的距离可能会发生变化,因此,总体来讲每帧图像中像素点的运动矢量长度的比例也是会发生变化的(即同一个物体在摄像头运动过程当中其深度没有发生变化,但是由于摄像头运动距离的不同而造成与该物体对应的像素点的运动矢量的长度发生变化),故,需要通过归一化的方法来统一各帧对应的深度图像的比例,即对每一帧图像对应的深度图像均进行归一化处理。
而且对于利用缓存的图像帧的深度图像的深度信息对当前帧预处理图像进行填充的区域而言,由于缓存的图像帧的深度信息的比例与当前帧预处理图像的深度信息的比例不同,因此,更需要对当前帧预处理图像的深度图像进行归一化处理。具体地,通过以下公式对当前帧预处理图像的深度图像进行归一化处理:
其中:Dr为归一化的当前帧预处理图像的像素点的深度信息,D为当前帧预处理图像的像素点的深度信息,Dmin为当前帧预处理图像的像素点深度信息的最小值,Dmax为当前帧预处理图像的像素点深度信息的最大值。
在对所述当前帧预处理图像的深度图像进行归一化后,本实施例中还对归一化后的当前帧预处理图像的深度图像进行滤波处理,主要是为了对归一化后的当前帧预处理图像的深度图像进行去噪。本实施例中可以采用平滑滤波、中值滤波和双边(Bilateral)滤波中的一种对所述归一化后的当前帧预处理图像的深度图像进行滤波。
在通过上述步骤获得了具有精确深度信息的当前帧预处理图像的深度图像后,执行步骤S13,基于所述当前帧预处理图像及其深度图像获取当前帧图像的左眼图像和右眼图像。具体地,
将所述当前帧预处理图像作为右眼图像或左眼图像;
对所述当前帧预处理图像的深度图像进行映射,以获得映射图像;
对所述映射图像进行空洞填充,获取对应的另一眼图像。
本实施例中,由于对所述当前帧预处理图像的深度图像还进行了归一化和滤波,故首先对归一化和滤波后的当前帧预处理图像的深度图像进行映射,根据生理学研究的一些结论,人脑在合成立体图像时更多的依赖于右眼获取的信息(对于习惯使用右手的人来说),因此右眼图像质量好一些有助于提高立体图的观看效果,故本实施例中优选地将所述当前帧预处理图像的深度图像作为右眼图像,将所述归一化和滤波后的当前帧预处理图像的深度图像映射为左眼图像,具体地,通过以下公式实现对所述归一化和滤波后的当前帧预处理图像的深度图像进行映射:
xl=xc+k/Z
其中,xc为当前帧预处理图像的深度图像中像素点的横坐标;xl为通过映射获得的左眼图像中像素点的横坐标;k为比例系数,代表单位深度差对应的像素距离,其大小由手机使用的摄像头的物理特性的不同而不同,具体地通过实测的方法来确定,Z为摄像机与物点之间的距离。
需要说明的是,本实施例中,由于对当前帧预处理图像的深度图像还进行了归一化和滤波,故上述的xc应为归一化和滤波后的当前帧预处理图像的深度图像中像素点的横坐标。
然而,通过上述映射获取的映射图像(左眼图像)当中仍然会出现一些空洞和重叠,其中空洞部分是由于遮挡造成的图像信息缺失形成的,故仍需要对映射图像中出现的空洞进行填充,本实施例中,对所述映射图像进行空洞填充包括:对所述映射图像进行线性滤波以填充空洞区域的像素值,而对于映射图像中出现的像素点重叠的部分,则用深度信息小的像素点的像素值作为最终的像素值。
另外,为了减少空洞的产生,可以在对归一化和滤波后的当前帧预处理图像的深度图像进行映射前进行预处理,具体地,本实施例中采用对归一化和滤波后的当前帧预处理图像的深度图像先进行低通滤波后再进行映射,归一化和滤波后的当前帧预处理图像的深度图像经过低通滤波后,获得的深度图像的边缘平滑,进而可以减少空洞的产生,提高最终渲染的左眼图像的质量。
本实施例中将所述当前帧预处理图像作为右眼图像,而将对归一化和滤波后的当前帧预处理图像的深度图像进行预处理后再进行映射、空洞填充后的图像作为左眼图像;而在其他实施例中也可以将所述当前帧预处理图像作为左眼图像,而将对归一化和滤波后的当前帧预处理图像的深度图像进行预处理后再进行映射、空洞填充后的图像作为右眼图像。
通过上述的视频图像的转换方法获得当前帧图像的左眼图像和右眼图像后,将获得的左眼图像和右眼图像输入3D视频显示***即可以显示有立体感的3D视频。
另外,通过上述的视频图像的转换方法,对获得的2D视频的各帧图像的左眼图像和右眼图像进行视频编码,则可以获得三维视频码流。对获得的2D视频的当前帧图像的左眼图像和右眼图像进行图像压缩,则可以获得静态的单帧3D图像。
对应于上述的视频图像的转换方法,本发明实施例还提供一种视频图像的转换装置,请参见图7,图7是本发明实施例的视频图像的转换装置的结构示意图,如图7所示,所述视频图像的转换装置包括:
预处理单元A10,适于对二维视频的当前帧图像进行预处理获得当前帧预处理图像,所述预处理包括:去除当前帧图像的全局运动。
深度图像提取单元A11,与所述预处理单元A10相连,适于提取所述当前帧预处理图像的的深度图像。
深度图像渲染单元A12,与所述深度图像提取单元A11相连,适于基于所述当前帧预处理图像及其深度图像获取当前帧图像的左眼图像和右眼图像。
所述预处理单元A10包括:
矢量场获取单元(图中未示出),适于获取当前帧图像的全局运动矢量场和全局旋转运动矢量场。
全局运动去除单元(图中未示出),适于基于所述当前帧图像的全局运动矢量场和全局旋转运动矢量场对当前帧图像进行全局平移和全局旋转。
本实施例中,所述预处理单元A10还包括:
畸变去除单元(图中未示出),适于在去除所述当前帧图像的全局运动前去除所述当前帧图像的畸变。所述畸变去除单元适于采用桶形畸变模型去除当前帧图像的畸变。
所述深度图像提取单元A11包括:
去除单元110,与所述预处理单元A10相连,适于去除所述当前帧预处理图像中运动矢量不可信的像素点。
分割信息获取单元111,与所述预处理单元A10相连,适于获取所述当前帧预处理图像的色彩区域分割信息。
第一空洞填充单元112,分别与所述去除单元110和分割信息获取单元111相连,适于至少基于所述色彩区域分割信息对去除了运动矢量不可信的像素点的当前帧预处理图像中的空洞进行填充,获取当前帧预处理图像的深度图像。
其中,所述去除单元110包括:
第一缓存单元(图中未示出),适于存储当前帧图像的前一帧图像。
匹配单元(图中未示出),适于对当前帧预处理图像与前一帧图像进行匹配,获取当前帧预处理图像的像素点与其匹配点对应的正向匹配值和反向匹配值。
图像分割单元(图中未示出),适于将所述当前帧预处理图像以预定尺寸分割为图像块。
第一检测单元(图中未示出),适于检测当前帧预处理图像中的像素点的正向匹配值和反向匹配值的误差是否大于第一门限值。
第二检测单元(图中未示出),适于检测所述图像分割单元分割的图像块的平滑度是否大于第二门限值。
第一去除单元(图中未示出),适于去除所述当前帧预处理图像中所述正向匹配值和反向匹配值的误差大于第一门限值的像素点,以及所述图像块的平滑度大于第二门限值时,所述图像块中的像素点。
本实施例中,所述匹配单元对当前帧预处理图像与前一帧图像进行匹配采用块匹配方法、光流法和HRM方法中的一种。
本实施例中,所述深度图像提取单元A11还包括:
第二缓存单元(图中未示出),适于缓存当前帧图像的至少前一帧图像的深度图像。
所述第一空洞填充单元112,还适于结合所述色彩区域分割信息和第二缓存单元缓存的当前帧图像的至少前一帧图像的深度图像的深度信息确定所述空洞的像素点的深度信息,以对所述空洞进行填充。
所述深度图像渲染单元A12包括:
输出单元120,与所述预处理单元A10相连,适于将所述当前帧预处理图像作为右眼图像或左眼图像输出。
映射单元121,与所述第一空洞填充单元112相连,适于对所述当前帧预处理图像的深度图像进行映射,以获得映射图像。
第二空洞填充单元122,与所述映射单元121相连,适于对所述映射图像进行空洞填充,获取对应的另一眼图像。
本实施例中,所述映射单元121,适于对所述当前帧预处理图像的深度图像进行低通滤波后再进行映射。
所述第二空洞填充单元122包括:
第二滤波单元(图中未示出),适于对所述映射图像进行线性滤波。
本实施例中,所述视频图像的转换装置还包括:视频编码单元(图中未示出),适于对所述二维视频的各帧图像的左眼图像和右眼图像进行视频编码,以获得三维视频码流。
图像压缩单元(图中未示出),适于对所述当前帧的左眼图像和右眼图像进行图像压缩,以获得三维图像。
请参见图8,图8是本发明另一实施例的视频图像的转换装置的结构示意图,图8中,预处理单元B10、去除单元110、分割信息获取单元111、第一空洞填充单元112、输出单元120、第二空洞填充单元122均与图7中的相类似,不同的是本实施例中,深度图像提取单元B11除了包括去除单元110、分割信息获取单元111和第一空洞填充单元112外,还包括:
归一化单元113,与所述第一空洞填充单元112相连,适于对所述当前帧预处理图像的深度图像进行归一化。
第一滤波单元114,与所述归一化单元113相连,适于对归一化后的当前帧预处理图像的深度图像进行滤波。
深度图像渲染单元B12,适于基于所述当前帧预处理图像及归一化和滤波后的当前帧预处理图像的深度图像获取当前帧图像的左眼图像和右眼图像。故,图8中,映射单元121与所述第一滤波单元114相连,适于对经过归一化和滤波后的当前帧预处理图像的深度图像进行映射,以获得映射图像。
所述第一滤波单元114通过平滑滤波、中值滤波和Bilateral滤波中的一种对所述归一化后的当前帧预处理图像的深度图像进行滤波。
本发明实施例的视频图像的转换装置将二维视频转换为三维视频的过程可以参考上述的视频图像的转换方法进行,在此不再赘述。
综上所述,本发明的技术方案至少具有以下有益效果:
通过对所述二维视频的当前帧图像先进行预处理获得当前帧预处理图像,然后获取所述当前帧预处理图像的深度图像、最后基于所述当前帧预处理图像的深度图像映射出左眼图像或右眼图像,并将所述当前帧预处理图像作为另一眼图像,在实现了在手机上将二维视频转换为三维视频的同时,也使得用户在通过具有单一摄像头的手机制作3D视频的过程中可以沿任意方向移动手机,且不需要进行多次操作就可以获得效果较佳的3D视频,给用户提供了极大的方便。
通过预处理的方式去除了二维视频的当前帧图像的畸变和全局运动获得了当前帧图像的预处理图像,对当前帧预处理图像中运动矢量不可信的像素点进行去除,并基于所述当前帧预处理图像的色彩区域分割信息对去除了运动矢量不可信的像素点的当前帧预处理图像中的空洞进行填充,进而获得深度图像,相对于直接通过当前帧图像来获得的深度图像而言其精确度高,因此也提高了最终获得的3D视频的质量。
进一步地,在去除了当前帧预处理图像中的运动矢量不可信的像素点后,利用缓存的当前帧图像的至少前一帧图像的深度图像的深度信息及所述当前帧图像的色彩区域分割信息,对当前帧预处理图像中的大面积空洞进行填充,进一步地提高了获得的当前帧预处理图像的深度图像的精确度。
通过对当前帧预处理图像的深度图像进行归一化和滤波处理,更进一步地提高了当前帧预处理图像的深度图像的精确度,进而提高了3D视频的质量。
对所述当前帧预处理图像的深度图像进行映射包括:对所述当前帧预处理图像的深度图像进行低通滤波后再进行映射,使得所述当前帧预处理图像的深度图像的边缘平滑,减少了对所述当前帧预处理图像的深度图像进行映射时空洞的产生,提高了最终获得当前帧图像的左眼或右眼图像的质量,进而也提高了3D视频的质量。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。