2D到3D图像颜色空间层转换技术研究及实现

2013-05-11 00:45
微型电脑应用 2013年3期
关键词:深度图红蓝视差

王 琦

0 引言

3D能够给观众带来更真实的视觉体验,但是目前无论是电视台,还是图片库运营商、影视节目发行商、大型网络音视频网站存储的内容介质超过99%都是2D视频、图像。由于3D摄像、拍照等环节成本较高,因此基于人眼对三维模型的视觉模型,2D转3D的技术应用显的尤为重要,通过该项技术可以将普通的2D图像转成3D图像,进而可以由2D视频转换为3D视频。

本文从人眼视觉模型出发阐述3D相关技术,着重讨论2D转3D技术,并给出一种软件实现方法及实验结果。

1 D相关技术

3D相关技术包括3D显示技术、立体视觉、2D转3D、多视点编解码等。本章将简述除2D转3D技术之外的相关技术。

图像、视频处理、传输技术经历了从黑白到彩色,从模拟电视到数字电视,从标准清晰度到高清的多次变革。每次变革都提高了人们的视觉享受。目前,千家万户都在观看的二维(2D)图像、视频平面显示系统由于缺少物体的深度信息,使人的视觉缺乏立体(深度)感而有与实际的自然场景不一致的感觉。目前,观看立体图像、视频的方式主要有佩戴立体眼镜(偏振式、快门式、分色式)和自动立体显示(视差栅栏式、柱透镜光栅式)。

人类之所以能够感知自然深度是由于左右眼观看真实世界有轻微的差异,每只眼睛的视网膜上各形成一个独立的影像,传到大脑皮层后结合为具有深度感的视像。进一步说,当相距约6.5cm的双眼观察物体时,因视向的不同,左眼看到物体的左边物点,右眼看到物体的右边物点,在两个视网膜上得到不同的两个视像,其两者之差成为视差。由此可见,双眼视差是形成对立体物体有深度感的重要条件,视差与深度之间存在必然联系。人眼对获取的景象的深度感知能力(Depth Perception)主要来自于:双目视差(Binocular Parallax)、运动视差(Motion Parallax)、眼睛的适应性调节(Accommodation)、视差图像在人脑的融合(Convergence)。[1]

MVC标准建立在AVC标准之上,以AVC标准补篇(附录H)的形式出现。详见[2]。

2 D转3D技术

观众在观看2D图像、视频时,两眼同时接收同一图像、视频序列帧;而在观看3D图像、视频,要体验到立体感,则左眼接收左序列帧,右眼接收有视差的右序列帧。因此2D转3D的技术难点在于如何由单目序列帧生成一对有视差的双目序列帧。

根据输入2D图像数目的不同,现有的2D转3D技术大体上可以分为两类:基于两幅或多幅图像的转换技术和基于单幅图像的转换技术。第一种技术利用多路相机拍摄的图像或者是单路相机拍摄动态场景得到的图像,使用了夺目深度线索;而第二种技术利用单幅静止图像作为输入,使用的是单目深度线索,作为目前最常用,也是目前国内电视台中已经上线运营过的技术是基于3d红蓝立体原理的图像转换技术。

3d红蓝立体原理的图像转换技术主要是指人类是通过左眼和右眼所看到的物体的细微差异来获得立体感的,要从一幅平面的图像中获得立体感,那么这幅平面图像中就必须包含具有一定视差的两幅图像的信息,再通过适当的方法和工具分别传送到我们的左右眼睛。

那么一幅红蓝立体图是如何包含两幅图像信息。纯黄的RGB数值是255,255,0,可以看出:纯黄色=纯红色+纯绿色,根据互补色原理,补色指完全不含另一种颜色,红和绿混合成黄色,因为完全不含蓝色,所以黄色就是蓝色的补色。我们可以通过计算来确定任意一个颜色的互补色:首先取得这个颜色的RGB数值,再用255分别减去现有的RGB值即可。比如黄色的RGB值是255,255,0,那么通过计算:r(255-255),g(255-255),b(255-0),互补色为:0,0,255。正是蓝色。红色的互补色为青色,红色的RGB值是(0--255),0,0;而青色的RGB值是0,(0--255),(0--255),由于它们不含有对方的颜色,利用这个特点,我们用红色来保存一幅图像的信息,而用青色来保存另一幅图像的信息,这样就完全可以用一幅图像来包含两幅图像的信息了。

我们可以用一个公式来表达;第一幅图像RGB1=R1,G1,B1;第二幅图像RGB2=R2,G2,B2,合成后的立体图像RGB12=R1,G2,B2(这种情况程序实现时深度向外)或RGB21=R2,G1,B1(这种情况程序实现时深度向内)。从公式RGB12=R1,G2,B2中可以看出,合成后的立体图像实际上包含了第一幅图像的红色RGB=R1,0,0和第二幅图像的青色RGB=0,R2,B2。

接下来的问题就是怎样保证我们的左右眼分别只看到一幅图像,研究一下立体眼镜,红色眼镜片的RGB值是255,0,0;青色眼镜片的RGB值是0,255,255,因为只有红色才能透过红色眼镜片,传送到我们左眼的图像的RGB红=R1,0,0;因为只有青色才能透过青色眼睛片,传送到我们右眼的图像的RGB青=0,R2,B2。这样包含在一幅红蓝立体图中的两幅图像的信息就被分别传送到了我们的左右眼睛。

Depth from motion主要经过视频帧的读取、视频分割、视差估计(深度图的求取),合成3D视频帧等几个步骤,如图1所示:

图1 Depth from motion

深度图(Depth map):场景中各点相对于摄像机的距离,即深度图中的每一个像素值表示场景中某一点与摄像机之间的距离。视差图(Parallax map):以图像对中任一幅图像为基准,其大小为该基准图像的大小,元素值为视差值的图像。

DIBR(Depth image based Rendering)[3]技术着重解决的是如何由提供的原图片和对应的深度图生成一对3D立体图。

DIBR的算法处理流程是:图片预处理(原图和深度图):深度图归一化,对深度图进行不对称高斯滤波。因为人类的视觉模型获取视差主要来自与水平差,而并非垂直差,所以要进行不对称的高斯滤波。

Structure from Motion技术通过分析二维物体的运动信号得到三维结构,只有一个取景器(如摄像机)的情况下,通过分析取景器移动时拍到的场景来得到场景的三维信息。类似于多取景器状况下的立体视觉。。从二维图像得到三维场景具有挑战性,因为图像的形成过程是不可逆的。

3 D到3D图像转换软件设计流程及实验效果

本文给出一种基于3d红蓝立体原理的图像转换技术,并实现了一套2D到3D的软件系统。实验证明,该方法仅对颜色空间层进行相应处理,具有使用简单、高效等特点,后期可方便的扩展到硬件实现,且可兼容市面上的低价格3D眼睛。

3.1 总体设计

2D转3D转换实现总流程,如图2所示:

图2 2D转3D转换实现总流程图

首先定义存储图像的结构体,设定选择模式,程序根据设定的模式为结构体赋值并申请图像存储空间,设置颜色搭配模式,为文件中的指定帧进行3D图像转换。

3.2 2D转3D转换处理流程

2D转3D转换处理,首先要判断转换处理模式,处理模式共分为2种,分别为图像进行左右处理和上下处理,对其进行YUV转换为RGB并按序保存,最后把帧画面写入图像中,从而完成2D转3D功能,如图3所示:

图3 2D转3D处理流程图

下面根据2D转3D处理处理流程的两种选择模式进行细化处理,通过转换存储矩阵,判断颜色搭配模式,实现YUV分量转RGB并依次存储,最后将其写入BMP文件,如图4、图5所示:

图4 图像转换左右处理逻辑流程图

图5 图像转换上下处理逻辑流程图

转换公式

YUV分量转换RGB公式如下:

R=Y+1.4075*(V-128)

G=Y-0.3455*(U-128)-0.7169*(V-128)

B=Y+1.799*(U-128)

人眼立体感知处理的7种不同颜色组合及对应处理公式如下:

3D red-blue image(左B右R,即红蓝)

R=left R*0+right R*1

G=left G*0+right G*0

B=left B*1+right B*0

3D red-cyan image(左GB右R,即红青)

R=left R*0+right R*1

G=left G*1+right G*0

B=left B*1+right B*0

3D red-green image(左G右R,即红绿)

R=left R*0+right R*1

G=left G*1+ right G*0

B=left B*0+right B*0

3D green-red image(左R右G,即绿红)

R=left R*1+right R*0

G=left G*0+right G*1

B=left B*0+right B*0

3D magenta-green image(左G右RB,即品红绿)

R=left R*0+right R*1

G=left G*1+ right G*0

B=left B*0+right B*1

3D green-magenta image(左RB右G,即绿品红)

R=left R*1+right R*0

G=left G*0+right G*1

B=left B*1+right B*0

3D brown-blue image(左B右RG,即棕蓝)

R=left R*0+right R*0.5

G=left G*0+right G*0.25

B=left B*1+right B*0

通过判断颜色组合模式,套用转换公式实现YUV分量转RGB并依次存储,最后将其写入BMP文件完成对一个画面的3D转换处理。

3.3 数据结构设计

1、影片图片的枚举变量设计:

typedef enum{YUV420=0,YUV422,YUV444,

RGB565,RGB888,RGB32,}AV_ImageFormat;

2、图像转换处理结构体设计:

typedef struct AV_3DVideo_PostProcessing__OperatePar{

//for Input Image

//unsigned int inImageFormat;

AV_ImageFormat inImageFormat;

unsigned char*inYUVFrame[3];

unsigned int inYUVWidth[3];

unsigned int inYUVHeight[3];

unsigned int inYUVStride[3];

//for Output Image

AV_ImageFormat outImageFormat;

unsigned char*outRGBFrame;

unsigned int outRGBWidth;

unsigned int outRGBHeight;

unsigned int outRGBStride;

unsigned char*outYUVFrame[3];

unsigned int outYUVWidth[3];

unsigned int outYUVHeight[3];

unsigned int outYUVStride[3];

//for Effect type

unsigned int colorchoose;

unsigned int typechoose;

}AV_3DVideo_PostProcessing__OperatePar;

3.4 2D转3D函数接口定义:

Int AV_3DVideo_Create(unsigned int *handle,AV_3DVideo_PostProcessing__OperatePar*videoconversion);

int AV_3DVideo_Destroy(unsigned int handle);

int AV_3DVideo_PostProcessing(unsigned int handle,VA_3DVideo_PostProcessing__OperatePar*videoconversion);

3.4 实验及运行结果:

基于以上思路,开发Demo运行系统,并对一个800x450的YUV420序列进行2D到3D转换。

根据以上实验结果,结合人眼佩戴眼睛后实现感观体验。将YUV分量转换为RGB并依次存储,左G右RB,即品红绿;或者将YUV分量转换为RGB并依次存储左RB右G即绿品红,这两种转换效果相对较好。

4 结束语

通过本文实现的DEMO系统,已经能初步较好的完成2D转3D图像转换,并通过配置相关观看装置技术能给人们带来一定的3D体验。希望随着2D转3D技术的不断前进,能够将将更多的普通2D图像方便的转成3D图像。

[1]王树峰,基于立体视觉方法的图像三维模型重建研究,[D]南京航空航天大学,20080301

[2]ITU-T T-REC-H.264-201003-I!!PDF-E

[3]Tao Li,Qionghai Dai,Xudong Xie,An Efficient Method for Automatic Stereoscopic Conversion,[D]Visual Information Engineering,2008.VIE 2008.5th International Conference on

[4]Liang Zhang;Tam,W.J “Stereoscopic image generation based on depth images for 3D TV,”[D]IEEE Conference on Broadcasting,pp.191-199,2005

猜你喜欢
深度图红蓝视差
基于自适应窗的立体相机视差图优化方法研究
一种基于WMF-ACA的深度图像修复算法
最爱红蓝饭
基于深度图的3D-HEVC鲁棒视频水印算法
基于梯度域引导滤波的视差精炼迭代算法
一种基于局部直方图匹配的深度编码滤波算法
基于分割树的视差图修复算法研究
叠加速度谱在钻孔稀少地区资料解释中的应用
立体视差对瞳孔直径影响的研究
红蓝饭飘香