三维图像处理方法及实施该方法的便携式三维显示设备的制作方法

文档序号:7998891阅读:209来源:国知局
专利名称:三维图像处理方法及实施该方法的便携式三维显示设备的制作方法
技术领域
本发明涉及图像处理方法和设备。具体地讲,本发明涉及三维(3D)显示设备和方法。
背景技术
人类视觉系统能够通过使用多种深度线索来发现事物的相对位置。这些深度线索 包括如调节、会聚、双目视差、运动视差等之类的生理因素,以及如直线距离、阴影、阴影距离、被其他物体遮挡、纹理等级、色彩等之类的心理因素。在生理深度线索中,调节是出于使得眼睛聚焦在指定位置上的目的而改变晶状体的聚焦范围。调节的功能和会聚一起进行。同时,会聚是在一个人凝视距离他有限距离的目标点时,通过向内移动使得他的眼睛聚集到目标点。双目视差源自这样的事实,左眼和右眼被设置为响应分别的图像,这是因为它们彼此相隔约为65mm,这意味着当观看三维景象时入射到左眼视网膜和右眼视网膜上的图像之间的差异。双目视差的这个功能作为人类视觉系统中用于深度感知或立体视觉的关键深度线索。通过利用人类视觉系统这样的认知机制来设计三维显示设备以显示三维图像。在已经提出的各种类型的三维图像显示模式中,从技术还原和三维显示能力的角度看来,在这篇专利申请被提交时立体模式可以被视为是卓越的。在立体三维显示系统中,可以利用双目视差通过模拟来实现深度认知或立体视觉,这是通过使左眼和右眼接收由像人眼一样间隔约64mm的两台图像传感器独立采集的两幅图像这一方式来实现的。这里,有必要通过控制形成一对立体图像的两幅图像(即,左图像和右图像)被准确地发送至用户的左眼和右眼来排除干扰。存在几种控制干扰的方法,例如偏光类型(也叫做被动式眼镜类型或图案相位差膜(film patterned retarder, FPR)类型),其中一个相位调制板被安装在显示面板上以从左图像和右图像产生正交极化并且经过嵌入在用户眼镜中的极化滤波片将左图像和右图像分别入射到用户的左眼和右眼上;主动式眼镜类型(也称为快门眼镜类型),其中左图像和右图像被交替地施加于显示面板,并且用户的主动式眼镜操作为交替地开启其左快门和右快门;双凸透镜状类型,其中采用双凸透镜状的透镜来控制光路径;视差格栅类型,其中电子生成的视差格栅对部分屏幕进行操作,然后左图像和右图像被分别入射到用户的左眼和右眼上。在应用的时候,虽然通常已知的立体三维显示系统的最广泛应用的情况涉及电视机设备,但是还有许多技术方法将立体三维显示应用到个人电脑(PC)、智能电话、以及诸如平板计算机之类的数据处理单元的监示器中。一般通过诸如多媒体播放器之类的应用程序来进行对数据处理单元中的三维图像信号的管理。相对于二维图像播放中简单地对原始图像信号进行解码、改变其格式然后播放经过解码和格式化的原始图像信号,播放三维图像可能导致运行负担的增加,这是因为必须要对三维图像信号进行解码并且混合左图像和右图像。诸如台式计算机或者笔记本计算机之类的数据处理设备通过应用程序很容易处理三维图像信号,这是因为它们自身的微处理器拥有足够的运行能力。与之相反,考虑到功率消耗和散热而采用嵌入式低速处理器的便携式设备(诸如智能电话或平板计算机),比不上高性能的计算机,不足以处理三维图像信号。因此,目前对于便携式设备来说通过应用程序播放三维图像时不可避免地会导致低帧速率或者低比特率、或者低分辨率。尤其是类似采用安卓(android)平台的系统,如果应用程序由诸如Dalvic之类的虚拟机运行的二进制代码组成,而不是由诸如C或者C++之类的本机代码组成,则应用程序的运行速度降低很大。另外,在仅仅通过应用程序播放三维图像时,因为应用程序体量变大,所以需要很长的启动时间。考虑到这些限制,一些类型的便携式设备除了嵌入式处理器之外,还通过在其上附加用于三维图像信号处理的芯片组来播放三维图像。对于这项功能,安卓平台被配置为通过硬件抽象层(HardwareAbstraction Layer,HAL)的方式由外部硬件来实现硬件加速和 图像处理。但是,这样的附加芯片组会导致生产成本和价格,同时在设备的印刷电路板的增加了占用的面积。

发明内容
本发明的各方面至少用于解决上述问题和/或者缺陷,以及至少提供如下描述的优点。相应地,本发明的一个方面在于提供一种用于高速处理立体图像信号的方法,同时减少基于移动应用平台的便携式三维播放设备中除了处理器之外的额外的硬件元件。本发明的另一个方面在于提供一种三维显示设备,其可基于移动应用平台操作、便携、并且能够在没有类似三维专用芯片组的硬件元件的情况下高速播放立体图像。本发明的另一个方面在于提供一种可适用于便携式终端设备的方法,该便携式终端设备配备有直接控制包括显示面板的硬件装置的内核层、以及控制内核层以通过硬件装置显示移动图片的应用/中间件层。在这种用于图像信号处理的方法的示例性实施例中,首先从应用/中间件层生成一个或多个平面图像表面并将其存储在第一帧缓冲器中。在应用/中间件层的控制下对编码的图像信号进行解码从而还原表示立体图像对的YUV图像信号。随后,YUV图像信号被转换为RGB图像信号,并且在内核层中混合RGB图像信号的左图像和右图像。混合的立体图像信号被存储在第二帧缓冲器中。然后,在内核层通过叠加以硬件方式对存储在第一帧缓冲器和第二帧缓冲器中的信号进行合成,并且将合成的信号传输到显示面板。因此,一个立体(三维)图像和正常的平面图像一起被显示在显示面板上。在将平面图像表面存储于帧缓冲器中的步骤中,在应用/中间件层生成多个平面图像表面之后,在应用/中间件层中对所述多个平面图像表面进行合成,并且合成的表面被存储在第一帧缓冲器中。在生成和存储混合的立体图像信号的步骤中,YUV图像信号被转换为RGB图像信号,并且RGB图像信号被存储在混合缓冲器中。然后,对存储在混合缓冲器中的RGB图像信号的左图像和右图像进行混合,并且混合的立体图像信号被存储在RGB缓冲器中。混合的立体图像信号从RGB缓冲器被传输到第二帧缓冲器。这里,将YUV图像信号转换为RGB图像信号是在内核层中进行的。根据本发明的一个方面,提供了一种便携式三维显示设备,其通过解复用从原始图像信号中抽取压缩的图像信号,并且解码压缩的图像信号用于显示。该设备包括在前端配备有视差格栅并且被配置为显示立体图像的显示面板;显示控制器,其被配置为驱动显示面板;第一帧缓冲器和第二帧缓冲器,其被配置为分别存储通过显示控制器出现在显示面板上的图像的至少一部分。根据本发明的一个方面,提供了一种微处理器,其被配置为控制解复用和解码并且运行程序。微处理器包括内核层,其被配置为直接控制显示面板;以及应用/中间件层,其被配置为控制内核层以在显示面板上显示移动图片。微处理器可以被配置为在应用/中间件层生成一个或多个平面图像表面,并在 第一帧缓冲器中存储所述一个或多个平面图像表面;在应用/中间件层的控制下对编码的图像信号进行解码,并还YUV图像信号以原表示立体图像对;将YUV图像信号转换为RGB图像信号,在内核层混合RGB图像信号的左图像和右图像,并在第二帧缓冲器中存储混合的立体图像信号;以及在内核层通过叠加以硬件方式对第一帧缓冲器和第二帧缓冲器的信号进行合成,并且将合成的信号传输到显示面板。这种示例性实施例的图像处理方案是可以基于可在诸如智能电话或平板电脑之类的显示设备中执行的程序的。根据本发明的一个方面,提供了一种包括显示设备的记录介质。该显示设备包括显示面板,其被配置为显示立体图像;显示控制器,其被配置为驱动显示面板;第一帧缓冲器和第二帧缓冲器,其被配置为分别存储通过显示控制器出现在显示面板上的图像的至少一部分;以及微处理器,其被配置为在层的控制下运行,该微处理器包括内核层,其被配置为直接控制显示面板;以及应用/中间件层,其被配置为控制内核层以在显示面板上显不移动图片。所述微处理器可以被配置为在应用/中间件层生成一个或多个平面图像表面,并在第一帧缓冲器中存储所述一个或多个平面图像表面;在应用/中间件层的控制下对编码的图像信号进行解码,并还原YUV图像信号以表示立体图像对;将YUV图像信号转换为RGB图像信号,在内核层混合RGB图像信号的左图像和右图像,并在第二帧缓冲器中存储混合的立体图像信号;以及在内核层通过叠加以硬件方式对第一缓冲器和第二帧缓冲器的信号进行合成,并将合成的信号传输到显示面板。在另一个示例性实施例中,一种适用于便携式终端设备的处理三维图像信号的方法,该便携式终端设备配备有带有显示面板的硬件装置、直接控制硬件装置的内核层、控制内核层以通过硬件装置显示移动图片的应用/中间层,三维图像和平面图像一起显示在显示面板上,所述方法可以包括在平面图像层缓冲器中生成并存储一个或者多个平面图像表面;在应用/中间件层对编码的图像信号进行解码,并还原YUV图像信号以表示立体图像对;在内核层将YUV图像信号转换为RGB图像信号,在应用/中间件层混合RGB图像信号的左图像和右图像,并在立体图像层缓冲器中存储混合的立体图像信号;以及在应用/中间件层对存储在平面图像层缓冲器和立体图像层缓冲器中的信号进行合成,并将合成的信号传输到显示面板。在平面图像层缓冲器中存储平面图像表面的步骤中,在多个平面图像层缓冲器中分别生成和存储多个平面图像表面。在合成图像的步骤中,存储在平面图像层缓冲器和立体图像层缓冲器中的信号都被合成。根据本发明的一个方面,提供了一种便携式三维显示设备,其通过解复用从原始图像信号中抽取压缩的图像信号,并且解码压缩的图像信号用于显示。该便携式三维显示设备包括显示面板,其在前端配备有视差格栅并被配置为显示立体图像;显示控制器,其被配置为驱动显示面板;帧缓冲器,其被配置为存储将显示在显示面板上的图像;以及微处理器,其被配置为控制解复用和解码并且运行程序,该微处理器包括内核层,其被配置为直接控制显示面板;以及应用/中间件层,其被配置为控制内核层以在显示面板上显示移动图片。
微处理器可以被配置为在平面图像层缓冲器中生成并存储一个或多个平面图像表面;在应用/中间件层的控制下对编码的图像信号进行解码,并还原YUV图像信号以表示立体图像对;在内核层将YUV图像信号转换为RGB图像信号,在应用/中间件层混合RGB图像信号的左图像和右图像,并在立体图像层缓冲器中存储混合的立体图像信号;以及在应用/中间件层对存储在平面图像层缓冲器和立体图像层缓冲器中的信号进行合成,并通过帧缓冲器将合成的信号传输到显示面板。这种示例性实施例的图像处理方案是可以基于可在诸如智能电话或平板电脑之类的显示设备中执行的程序的。根据本发明的一个方面,提供了一种显示设备。该显示设备包括显示面板,其被配置为显示立体图像;显示控制器,其被配置为驱动显示面板;帧缓冲器,其被配置为存储通过显示控制器出现在显示面板上的图像的至少一部分;以及微处理器,其被配置为在层的控制下操作,该微处理器包括内核层,其被配置为直接控制显示面板;以及应用/中间件层,其被配置为控制内核层以在显示面板上显示移动图片。这里,微处理器可以被配置为在平面图像层缓冲器中生成并存储一个或多个平面图像表面;在应用/中间层的控制下对编码的图像信号进行解码,并还原YUV图像信号以表示立体图像对;在内核层将YUV图像信号转换为RGB图像信号,在应用/中间件层混合RGB图像信号的左图像和右图像,并在立体图像层缓冲器中存储混合的立体图像信号;以及在应用/中间件层对存储在平面图像层缓冲器和立体图像层缓冲器中的信号进行合成,并通过帧缓冲器将合成的信号传输到显示面板。根据本发明的示例性实施例,在诸如智能电话和平板电脑之类的便携式设备中播放立体图像时,可以最大程度地利用软件的优势来处理立体图像信号,即,特别是中间件层和内核层的软件。尤其是,通过利用安卓平台中的融合或者混合多个图像的过程来呈现混合要被处理的左图像和右图像的进程(其需要最长的操作时间),可以实现播放三维图像。因此,采用比台式处理器慢的嵌入式处理器的便携式设备能够有利地以高速率播放三维图像而不会损失与巾贞或者比特相关的速率,或分辨率。本发明还减轻了分层软件结构中操作系统内核、中间件或者库文件的体量或者尺寸的增大。即使采用嵌入式处理器之外的硬件元件也不会影响增大便携式设备自身的成本或价格。此外,可以给用户提供具有更高效率和满意度的便携式设备,用户可以享受没有眩晕感的便利的三维观看环境,这是因为他能够根据他的眼睛到显示屏幕之间的距离来调节屏幕尺寸以及左图像和右图像之间的视差。可以参照说明书的其他部分和附图来实现对本发明的特性和优点的进一步理解。根据结合附图公开了本发明示例性实施例的以下详细描述,本发明的其他方面、优点、以及突出的特征对于本领域技术人员来说是显然的。


通过以下结合附图的描述,本发明的特定示例性实施例的上述以及其他方面、特征和优势将会更加明显,其中
图I是图示出根据本发明的一个示例性实施例的三维显示设备的配置的框图;图2是图示出根据本发明的一个示例性实施例的由图I中示出的微处理器所执行的三维图像播放程序的功能结构的框图;图3示出了根据本发明的一个示例性实施例的一种混合左图像和右图像的模式;图4示出了根据本发明的一个示例性实施例的用于安卓平台的分层的多层架构,以及在图I的显示设备中执行的应用程序;图5是示例性地图示出根据本发明的一个示例性实施例的在图4中示出的分层的多层架构下用于三维显示的Java阶段和本地阶段(native stage)的类的框图;图6图示出根据本发明的一个示例性实施例的在图I中示出的显示设备中被配置用于色彩空间转换以及左图像和右图像的混合处理的输出终端;图7A和图7B为示出了根据本发明的一个示例性实施例的在图6中示出的构造中进行三维图像处理的函数的执行顺序的流程图;图8为示出根据本发明的一个示例性实施例的采用图6中示出的混合处理的三维显示设备的整体流程的流程图;图9图示出根据本发明的一个示例性实施例的在图I中示出的显示设备中被配置用于色彩空间转换以及左图像和右图像的混合处理的输出终端;图10为示出根据本发明的一个示例性实施例的在图9中示出的构造中进行三维图像处理的函数的执行顺序的流程图;图11为示出了根据本发明的一个示例性实施例的采用图9中示出的混合处理的三维显示设备的整体流程的流程图;图12示出了根据本发明的一个实施例的播放媒体文件时在屏幕上显示的菜单的模式。在全部附图中,应该注意到相同的附图标记用于描述相同或者相似的元素、特征和结构。
具体实施例方式提供了下列参考了附图的描述以帮助对由权利要求书及其等同物限定的本发明示例性实施例的充分理解。其包括各种具体细节用以帮助理解,但是这些具体细节仅仅被视作示例。因此,本领域的普通技术人员将认识到在不脱离本发明范围和思想的前提下可以对在此所描述的实施例进行各种修改和变化。另外,出于清晰和简洁的需要,省略了对于众所周知的功能和结构的描述。在下列描述和权利要求书中使用的术语和词语不限于其字面含义,而是仅仅被发明人用来确保对本发明清楚且一致的理解。因此,对于本领域的普通技术人员显然的是,本发明示例性实施例的下列描述仅提供用于说明目的,而不用于限制由所附权利要求书及其等同物限定的本发明的范围。应当理解,单数形式“一个”、“一”或者“该”包括复数形式,除非在上下文中特别指明。因此,例如,对于“一个组件表面”的引用包括了对于一个或多个这样的表面的引用。为了更加具体地描述示例性实施例,以下将会参考附图详细地描述各个方面。图I是图示出根据本发明的一个示例性实施例的三维显示设备的配置的框图。
参照图1,根据本发明的一个示例性实施例的三维显示设备(以下称为“显示设备”)被配置为包括网络接口 10、非易失性存储器20、微处理器30、易失性存储器40、液晶显示器(IXD)控制器50、IXD面板52、视差格栅54、格栅控制器56、触摸面板60、以及触摸面板控制器62。在一个示例性实施例中,该显示设备可以是便携式多媒体播放设备(例如,便携式音乐播放器;PMP)。在另一个示例性实施例中,显示设备可以是具有PMP功能(即,播放多媒体或者移动图片的功能)的智能电话或者平板电脑。在图I中,提供网络接口 10以将显示设备通过802. llb/g/n标准下的无线局域网(LAN)耦接到外部接入点,从而允许显示设备和外部网络服务器通信。特别地,在这个示例性实施例中,网络接口 10使得显示设备从流媒体服务器接收三维移动图片数据流。呈现非易失性存储器20在显示设备上是固定的或者是可移除的,用以存储三维移动图片文件。微处理器30通过解复用从由流媒体服务器提供的数据流或从非易失性存储器20中存储的移动图片文件抽取压缩的图像信号,然后解码压缩的图像信号以还原三维图像信号。微处理器30还操作用来从三维图像信号中分开左图像和右图像,并且混合左图像和右图像信号。在一个示例性实施例中,可以通过安卓平台和基于安卓平台的应用程序来进行由微处理器30执行的三维图像播放处理(诸如解复用、解码和混合)。易失性存储器40作为微处理器30运行过程中生成的数据的物理缓冲器。在一个示例性实施例中,存储在非易失性存储器20中的移动图片以MPEG4结构形成,并且从MPEG4容器中得到的图像信号可以被压缩为H. 264格式(一种视频压缩标准)。在H. 264标准下压缩的图像信号通过解码被释放并被转换为YUV (Y :亮度,U :Cb,蓝色-色差分量,V :Cr,红色-色差分量)格式的信号。然后YUV格式的三维图像信号被微处理器30的后处理器转换为RGB格式,并且在尺寸和指向上进行调整以适合IXD面板52。结果,微处理器30获得左右并排(side-by-side)的RGB格式的三维图像信号、从三维图像信号中分开左图像和右图像、并且混合左图像和右图像。液晶显示控制器50接受来自微处理器30的混合图像信号,并且在IXD面板52上显示混合图像。在一个示例性实施例中,考虑到在便携式设备的环境中不方便使用偏光或快门眼镜的实际情况,因此显示设备使用视差格栅来显示左图像和右图像。如图I所示,视差格栅54设置在IXD面板52的前面,部分遮蔽IXD面板52从而使得左图像和右图像被分别传送到左眼和右眼。根据IXD面板52上显示的图像是二维的还是三维的,格栅控制器56有选择地启动视差格栅54,并且在显示图像是三维的时候开启视差格栅54。通过参考包含在原始图像信号中的控制信号(例如,节目特定信息(PSI)的图像属性字段),微处理器30自动地执行二维或者三维图像的选择。同时,如图12所示,用户能够在播放图像时在屏幕上标出的格式选择菜单栏中选择播放模式中的一个(二维或者三维)。触摸面板60作为显示设备的输入终端。触摸面板控制器62产生数字坐标信号并将其施加给微处理器30,所述数字坐标信号是从通过触摸面板60感应到的信号转换得到的。图2图示出根据本发明的一个示例性实施例的由微处理器30运行的三维图像播放程序的功能结构。该程序功能上包括解复用部分32、解码部分34、后处理部分36和混合部分38。参照图2,解复用部分32操作以便对从流媒体服务器接收的数据流或者存储在非易失性存储器20中的移动图片文件进行解复用,然后从移动图片容器(例如,MPEG4容器)中抽取压缩的图像信号。在一个示例性实施例中,从MPEG4容器中抽取的图像信号可以以H. 264格式被压缩。在一个例性实施例中,解复用部分32可以包含在多媒体框架(例如,OpenCORE ;由 PacketVideo 公司开发)中。解码部分34操作以便解码压缩的图像信号从而还原原始三维图像信号。在一个示例性实施例中,三维图像信号通过左图像和右图像排列为左右并排的模式,并通过亮度和色差以YUV格式来表示。在一个示例性实施例中,解码部分34可以由包括在多媒体框架(例如,OneCORE)中的H. 264解码器形成。该H. 264解码器由多媒体框架管理。后处理部分36接受YUV格式的三维图像信号、将其色彩空间转换到RGB格式、并且调整其尺寸和指向以适合IXD面板52。虽然这个示例性实施例中提出了由软件来形成后处理部分36,但是对于二维图像处理时也可以允许由硬件芯片组来形成后处理部分36。混合部分38接受来自后处理部分36的RGB格式的三维图像信号,然后如图3所示,通过在垂直线单元中交替地布置其左图像和右图像来排列三维图像信号使其适应视差 格栅54的结构。在这个示例性实施例中,形成或者控制图2中示出的解复用部分32、解码部分34和混合部分38的程序由多个本地阶段服务(S卩,安卓平台的库)和存在于内核阶段的多个类对象分散地组成,而不是由单个程序文件组成,从而通过Java本地接口(JNI)与Java的阶段服务(即,应用程序级)上的类对象交互。图4示出了根据本发明的一个示例性实施例的用于安卓平台的分层的多层构架和图I中的显示设备中执行的应用程序。以下,应该注意到,涉及参照图4以及其他附图的描述或其他随后的描述中的处理三维图像信号的库和应用程序框架以及应用程序是由本发明通过对库、应用程序框架和应用程序进行修改来制定的。从开放手持设备联盟(OHA)首次公开“安卓”(2007年7月)开始,Google设定并且已经持有Linux内核的标准、通用库集以及与安卓平台有关的用户接口。这个安卓平台旨在成为一个完全开放的平台,并且它的源代码被完全发布,从而允许任何人可以由此构造软件和设备。特别地,对于在这样的安卓平台上的图像播放,Google提出类似于如下解释的关于类对象的原型和服务框架。然而,这些服务框架和原型只是针对二维图像融合和混合的。由于传统服务框架和类对象的原型的应用性限制,本发明致力于提供一种通过修改和改善这些二维图像的融合和混合技术从而混合三维图像的左图像和右图像的解决方案。参照图4,安卓平台包括由应用、应用框架、库、以及Linux内核组成的多个层。在一个示例性实施例中,应用层包含支持三维图像播放的多媒体播放器100。多媒体播放器100包括用户接口(UI)函数102、菜单指示函数104和播放控制函数106。UI函数102设置初始化和播放屏幕的整体组成,并且根据用户请求对其进行改变。具体地,根据一个示例性实施例,UI函数102使得用户可以选择用二维还是三维形式播放图像、调整左图像和右图像之间的差异、以及激活播放控制函数106。可以由Java字节代码编写媒体播放器100。在应用层中,可以在图I中的显示设备中准备另外的应用程序,用于管理地址指针、呼叫和网络浏览。
应用框架层为多媒体播放器100运行所在的应用程序层规定了应用编程接口(API)。特别地,封装管理器110管理如多媒体播放器100的应用程序的安装。活动管理器112检查应用程序的生命周期。窗口管理器114控制要在IXD面板52上显示的屏幕(即,窗口)的整体模式。资源管理器118保持将要被播放的原始数据的资源。另外,应用程序框架层可以进一步包括用于在应用程序之间数据共享的内容管理器、用于来自其他应用程序的警告的警告管理器、用于呼叫操作的呼叫管理器、以及用于定位信息的定位管理器。由来自许多应用程序的文档公用函数形成库层。可以通过从应用程序框架层调用每一个应用程序对应的库文件来执行每一个应用程序。特别地,表面管理器120是用于混合多个图片的库。媒体框架122是用于播放和记录图像文件的库。OpenGL/ES 124是一种由AMD开发的三维图形引擎。标准C库(Iibc) 126是一种典型的C语言库。另外,库层可以包括作为关系数据库管理系统的SQLite、用于渲染位图和矢量字体的FreeType、用于表现浏览器的HTML、作为渲染引擎的Webkit,作为二维图形引擎的可扩展图形库(SGL)、安全套接层(SSL)等。可以由C或者C++语言构成库层的所有库。Linux内核是安卓平台的中心,用于控制显示设备的硬件组件。具体地,显示驱动130、音频驱动132、键盘驱动134和格栅驱动136分别控制IXD面板52、扬声器(图中没有示出)、触摸面板60和视差格栅54的运行。另外,在Linux内核中可以包括功率控制程序和用于外围设备(诸如摄像机、蓝牙、闪存、USB接口、WiFi接口等)的内核程序。虽然没有在图4中示出,安卓平台可以进一步包括基于Java语言的核心库,以及用于执行Java字节代码的Dalvic虚拟机。在图4的分层的多层构架中,应用程序和应用框架的Java层可以通过JNI作为媒介和C/C++库连接。具体地说,运行在Dalvic虚拟机上的安卓应用程序在处理上比由本地代码(诸如C/C++语言)组成的程序慢,而可以通过JNI最大限度地利用C/C++本地代码库来提高它的处理速度。对于根据本发明的显示设备,多媒体播放器100通过将三维图像处理函数增到制定用于二维图像处理的C/C++本地代码库而被修改为具有通过JNI控制运行的三维图像播放功能(facility)。图5图示出根据本发明的一个示例性实施例的在图4中示出的分层的多层构架下的用于三维显示的Java阶段和本地阶段的类。为了方便起见,包含在Java阶段的每一个类中的函数被称为“方法”,而出自于类的库程序被称为“函数”。在解释关于图5中示出的类之前,如下定义几个术语。在安卓平台的标准下,“视窗(View)”是用户接口(UI)的单元,作为用于处理绘画、击键、或其他相关事件的四角形区域。View类用于表现和占用该View区域。每个活动(activity)可以具有一个或者多个“窗口(Window)”。Window可以具有一个或者多个“表面(Surface)”。这里,“Window”表示要在屏幕上显示的窗口元素的模式(即,看-和-感觉)、位置和菜单。Window类是一种定义最高级别窗口的模式和背景的非对象类。因此,属于Window类的实例被用作最高级的View。“Surface”表示为在屏幕上绘画而准备的并且被屏幕构成器管理的缓冲器。通过SurfaceView类产生表面,并且由Surface类定义表面的属性。因此,当应用程序运行的时候会产生并且保持多个表面,表面中的一部分被 SurfaceView类合成为Window。在这个过程中,利用位于屏幕较低等级处的表面对象形成所有的Window。如果与最高级Window相关的表面被转移到WindowManager类控制下的中贞缓冲器,则该最高级Window可以在View区域上显示。通过这样的View或View组,形成了UI和输出图像。参考图5,包括在作为应用程序的多媒体播放器100中的VideoView类实例200 (从这里开始,“类实例”将会简便地称为“类”)由Java字节代码构成,以允许用户从流媒体服务器或者非易失性存储器20中搜索媒体文件、计算文件大小、并选择显示选项。这个VideoView类200还对用户输入检测、播放开始、静止、重播、终点寻找等功能有帮助。当多媒体播放器100开始的时候VideoView类200向SurfaceView类210请求表面分配。MediaPlayer类202由Java字节代码构成,控制音频/视频文件和流媒体的播放。一旦VideoView类200选择播放控制功能,与之相关的参数被传递到MediaPlayer类202,然后MediaPlayer类202响应来自用户的选择开始对播放文件和流媒体的操作进行控制。SurfaceView类210由Java字节代码构成,以允许生产用于绘制的表面并嵌入在屏幕上的准确位置处,并且使得产生的表面在格式和大小上被调整。一个应用程序被分配到一个或者多个表面。具体地,根据本示例性实施例,可以响应VideoView类200的请求生成表面。甚至可以用WindowManager类220来执行这种表面分配。在占用SurfaceView的Window的背面沿垂直于Z轴(即,面板平面)的虚拟轴布置表面。SurfaceView类210使得表面通过窗口中的支撑(hold)正确地显示。在这期间,根据分层的View架构正确地对混合表面进行管理。同时,当参与SurfaceView的Window可见时生成表面。SurfaceView类210和管理后处理部分36的LayerBuffer类250协调工作。SurfaceView 类 210 还用于通过 WindowManager 类 220 控制 SurfaceFlinger 类 262。Surface类212为由SurfaceView类210产生的表面定义显示风格,诸如模糊、暗淡、旋转、隐藏、冻结等。SurfaceHolder接口 214对于表面本身是非对象的接口,即,占用表面的缓冲器。SurfaceHolder接口 214允许用户调整表面的尺寸和格式、编辑表面的像素、或者监控表面中的变化的事物。WindowManager类220是一种分配给Java应用框架的API。特别地,在本示例性实施例中,提供WindowManager类220以本地阶段的SurfaceComposer类260的方式通过控制Surface Flinger类262来管理表面到巾贞缓冲器的传输,从而混合构成立体图像对的左图像和右图像。MediaPlayer 类 230 使得 MediaPlayerServiceClient 类 232 根据从 MediaPlayer类202接受的参数选择合适的媒体子系统或者播放器,并通过MediaPlayerServiceClient类232来控制媒体播放。MediaPlayer类230还向MediaPlayer类202通知播放状态。MediaPlayerServiceClient 类 232 根据通过MediaPlayer 类 230 传输的参数帮助选择媒体子系统240、从流媒体服务器或者非易失性存储器20中搜索媒体文件、并且使得媒体子系统240解复用并解码将要播放的媒体文件。根据本示例性实施例的显示设备在媒体类型中也提供二维图像或者音频文件,而不仅是三维图像,并且适用于各种格式的媒体信号。对于这个通用的功能,MediaPlayerServiceClient类232使得媒体子系统240、或者用户预先选择的子系统适合于将要播放的媒体文件。虽然图5简单地示出了媒体子系统240中的一个,但应当可以理解,可以准备多个 子系统以供MediaPlayerServiceCl ient类232选择。在本不例性实施例中,在PacketVideo公司的OpenCORE框架的基础上建立媒体子系统240,其中包括PlayerDriver类242、PVPlayer类244、视频CODEC (编解码器)246和音频CODEC (图中没有示出)。PlayerDriver类242操作以便为PVPlayer类244产生一个线程,并且使得PVPlayer类244解复用媒体数据并且从容器(例如,MPEG4容器)中抽取压缩的图像信号。视频CODEC 246解码压缩的图像信号以还原原始图像。还原的图像信号可以是以YUV格式设置的左右并排的三维图像信号。Andro idSurfacOutput类248将YUV图像信号从视频CODEC 246中传输到LayerBuffer 类 25O。LayerBuffer类250接收YUV图像信号的比特流,并管理YUV图像信号的数据以供接下来的RGB色彩空间转换和左/右图像构成的处理使用。SurfaceFlinger类262在SurfaceComposer类260的控制下管理帧缓冲器,帧缓冲器在IXD面板52上显示图像信号。SurfaceComposer类260用于通过将被分配给单独的应用程序的这些表面提供给巾贞缓冲器来合并分层的表面。图6图示出根据本发明的一个示例性实施例的在图I中所示的显示设备中被配置用于色彩空间转换以及左图像和右图像的混合处理的输出终端。输出终端处理通过混合形成立体图像对的左图像和右图像合成三维图像,并且和三维图像一起输出多个平面图像的合成图像。这里,通过SurfaceFlinger类在262A以软件方式合成多个平面图像。合成的平面和三维图像通过帧缓冲器296和298的叠加功能在IXD控制器50中以硬件方式合成。第一层缓冲器270A和第二层缓冲器270B,作为SurfaceFlinger类262A使用的表面缓冲器,分别存储通过作为Java应用类型的各种活动产生的正常平面图像(即,静止图像)。这种平面图像具有通常的渲染特征,例如其可以是在播放三维图像内容时关于在屏幕上伴随显示的的标题和菜单的信息。SurfaceFlinger类262A通过将多个表面提供到一个第一帧缓冲器296中来对类似于存储在第一层缓冲器270A和第二层缓冲器270B中的表面数据的层状结构的存储器数据进行合成。
因为很少在屏幕上很少见到正常平面图像,因此甚至通过SurfaceFlinger类262A以软件模式合成正常平面图像也很少会影响到系统。但是,如果通过SurfaceFlinger类262A由表面构成这样的正常平面图像(这被设定为执行移动图片的显示或者相机(图中没有示出)的预览),则会使得移动管理系统需要满足大量负载。因为这个原因,本示例性实施例中SurfaceFlinger类262A被减少为只合成正常平面图像表面,而不合成混合三维图像表面。根据本示例性实施例,第二帧缓冲器298被安排仅用于处理三维移动图片显示和相机预览。IXD控制器50通过叠加功能以硬件方式对第一帧缓冲器296和第二帧缓冲器298进行合并,并且将缓冲器的输出传输到LCD面板52,从而使其能够以很高的速率处理图像信号。控制这个功能的API被称为Video 4 Linux 2 (V4L2)。这种V4L2 API通过LayerBuffer类250被传输到AdroidSurfaceOutput类248,在其对应类的控制下被适应性修改。在内核阶段,另外提供了 YUV缓冲器280、后处理器36、二维/三维开关282A、RGB 缓冲器284A、混合缓冲器290A,从而进行图像混合处理292A。YUV缓冲器280通过LayerBuffer类250接收YUV图像信号。后处理器36在SurfaceFlinger类262A或者LayerBuffer类250的控制下将YUV图像信号转换为RGB图
像信号。如果图像信号是二维图像信号,则二维/三维开关282A将RGB图像信号从后处理器36直接传输到RGB缓冲器284A。但是如果图像信号是三维图像信号,则二维/三维开关282A将RGB图像信号从后处理器36传输到混合缓冲器290A以便通过图像混合处理292A混合包含在RGB图像信号中的左图像和右图像。在一个示例性实施例中,通过参考包括在原始图像信号中的控制信号(例如,程序规范信息,PSI)来确定图像信号是二维的还是三维的。可以在应用层进行这个确定,然后将确定结果传输到二维/三维开关282A,或者直接从二维/三维开关282A中得到结果。另一方面,二维/三维开关282A可以在开关模式上是可以改变的,根据例如用户从播放图像时在屏幕上显示的下拉式选择菜单中选择的播放类型(二维或者三维)。或者,终端设备上可以配备有机械开关来选择二维或者三维。图像混合处理292A操作以便在纵向线(lengthwise line)上混合在存储在混合缓冲器290A中的RGB图像中包含的左图像和右图像。在本示例性实施例中,在内核阶段执行图像混合处理292A。换言之,本示例性实施例中的混合左图像和右图像直接在内核阶段处理的,而不是在安卓框架的中间件层阶段处理的。下面详细来说利用左图像和右图像的三维混合流程,图像混合处理292A不是按顺序传输比特流,而是在从混合缓冲器290A向RGB缓冲器284A发送图像信号的比特流的过程中,通过交替地从左右并排格式的三维RGB图像中的左图像部分和右图像部分中抽取像素来复制。即,图像混合处理292A在图3中左边部分示出的来自RGB图像的扫描线的单元中抽取第一左图像像素,并将第一左图像像素传输到RGB缓冲器284A的第一像素位置,然后从来自RGB图像的扫描线的单元中抽取第一右图像像素,并将第一右图像像素放置在RGB缓冲器284A的第二像素位置。随后,图像混合处理292A从混合缓冲器290A的RGB图像中抽取第二左图像像素,并将第二左图像像素传输到RGB缓冲器284A的第三像素位置,然后从RGB图像中抽取第二右图像像素,并将第二右图像像素放置在RGB缓冲器284A的第四像素位置。通过对RGB图像进行这种顺序的处理,RGB缓冲器284A得到并存储混合图像,其中左图像和右图像被交替排列在竖直线的单元中。在图6所示的输出终端中,考虑由SurfaceFlinger类262A处理的通常Java应用的平面图像表面的流程,通过其中执行软件合成的SurfaceFlinger类262A对Java应用各自的表面进行合并,然后将其传输到第一帧缓冲器296。相反地,因为在移动图片播放或者相机预览的应用期间处理的其他表面,当通过SurfaceFlinger类262A以软件方式合成时,会导致性能的下降,所以它们被直接传输到为其专门分配的第二巾贞缓冲器298,而不通过SurfaceFlinger类262A传送。然后,LCD控制器50以硬件方式对第一帧缓冲器296和第二帧缓冲器298进行合并。关于移动图片表面的处理,存储在YUV缓冲器280中的YUV图像通过后处理器36被转换成RGB图像并缩放到适合屏幕尺寸。如果二维/三维开关282A是在二维模式下的, 则正常的二维图像在首先存储RGB缓冲器284A中之后被传输到第二帧缓冲器298。另一方面,如果二维/三维开关282A是设置在三维模式下的,则从后处理器36输出的RGB图像被复制到混合缓冲器290A中。然后,存储在混合缓冲290A中的RGB图像中包含的左图像和右图像通过图像混合处理292A被混合,并作为混合RGB比特流存储在RGB缓冲器284A中。随后,存储在RGB缓冲器284A中的混合RGB比特流被传输到移动图片专用的第二帧缓冲器298。通过IXD控制器50以硬件叠加的方式对存储在第一帧缓冲器296和第二帧缓冲器298中的数据进行合成。当在IXD面板52上显示合成的三维图像时,面对视差格栅54的用户能够观看带有标题和/或菜单的立体三维图像。根据本示例性实施例,和三维移动图片混合相关的表面的流程具有整体缩短处理时间的效果,这是因为其直接通过内核阶段进行处理,而不是通过中间件阶段,因此没有在本地阶段中复制表面,并且没有通过SurfaceFlinger类262A以软件方式合成表面。图7A和图7B为示出了根据本发明的一个示例性实施例的在图6中示出的构造中进行三维图像处理的函数的执行顺序的流程图。如果从视频CODEC 246解码的YUV图像信号响应于计时器的同步出现,则在每个预定时间运行成员函数writeAsync ()以便与AndroidSurfaceOutput类250中的音频同步(S300)。成员函数writeAsync ()调用函数WriteFrameBuffer (),以将图像信号复制到后处理器的缓冲器,用于将解码YUV信号转换为RGB信号(S302)。函数WriteFrameBuffer ()将解码的媒体比特流传输到SurfaceLayerBuffer类,其为LayerBuffer类250的一个子类。解码的YUV比特流通过SurfaceLayerBuffer类的函数postBufferO被传输到 LayerBuffer 类 250 (S304),然后通过函数 postBuffer ()被传输到 BufferSource 类(S306),其为 LayerBuffer 类 250 的另一个类。当YUV比特流存储在YUV缓冲器280中时,BufferSource类的函数postBuffer ()使得后处理器36能够将YUV图像信号转换成RGB图像信号(S308)。对于这种转换,函数postBuffer()调用 V4L2 API。从步骤S310到步骤S324,调用将YUV图像信号转换为RGB图像信号的函数,最后将控制信号授予后处理器36用于从YUV图像信号到RGB图像信号的转换,其结果为到RGB格式的色彩空间转换。
首先,在步骤S310 中,通过 BufferSource 类的函数 Fimc_set_DMA_address ()设定传输YUV比特流的数据的物理地址。在步骤S312中,在函数Fimc_V4L2_queue()定义了用于将YUV图像信号转换为RGB图像信号所需要使用的缓冲器的大小之后,调用函数ioctlO以执行内核阶段的设备驱动(S314)。从步骤S316开始的程序流程是内核进程,其用于通过内核阶段的V4L2接口驱动执行的在内核阶段的驱动。在步骤S316中,内核阶段的V4L2接口驱动开始驱动以识别YUV图像信号的源以及后处理器36的状态。后处理器36通过函数V4L2_ioctl()被开启。函数FimC_qbuf()发现当前任务的类型,例如,“视频捕获”或“视频输出”。如果当前任务是“视频输出”,则调用函数 Fimc_qbuf_output() (S318)。函数 Fimc_qbuf_output ()在检查缓冲器是否可用于向后处理器36进行直接存储器访问(DMA)之后,确定在入队列中增加缓冲器(S320)。接下来,函数Fimc_qbuf_output_dma_auto ()更新将要在色彩空间中转换的区域的位置(S322)。然后,函数Fimc_outdev_start_camif ()用后处理器36开始RGB转换 (S324)。用于混合左图像和右图像的步骤S326到S330,是在后处理器36完成从YUV图像到RGB图像的色彩空间转换后发生的中断所执行的中断服务程序。每当完成每一帧的从YUV图像到RGB图像的色彩空间转换之后,在后处理器36产生中断并且调用函数FimcjrqO (S326)。在“视频输出”模式下,函数Fimcjrq ()调用函数 Fimc_irq_out () (328),并且函数 Fimc_irq_out ()调用函数 Fimc_irq_out_dma ()。函数Fimc_irq_out_dma()混合来自RGB比特流的左图像和右图像,然后通过RGB缓冲器284A将混合的RGB图像传输到第二帧缓冲器298 (330)。具体地,RGB比特流不是按顺序传输的,而是按照交替地从左右并排格式的三维RGB图像中抽取左图像像素和右图像像素的方式传输的。换句话说,函数Fimc_irq_out_dma()从RGB图像抽取扫描线的单元中的第一左图像像素,并将第一左图像像素传输到RGB缓冲器284A的第一像素位置,然后从RGB图像抽取扫描线的单元中的第一右图像像素,并将第一右图像像素放置在RGB缓冲器284A的第二像素位置。随后,函数Fimc_irq_out_dma()从RGB图像抽取第二左图像像素,并将第二左图像像素传输到RGB缓冲器284A的第三像素位置,然后从RGB图像抽取第二右图像像素,并将第二右图像像素放置在RGB缓冲器284A的第四像素位置。通过对RGB图像进行这种顺序的处理,RGB缓冲器284A得到并存储混合的图像,在该混合的图像中左图像和右图像被交替排列在竖直线的单元中。由于函数Fimc_irq_out_dma (),混合的RGB比特流可以通过DMA被传输到专用于移动图片处理的第二帧缓冲器298。图8为示出了根据本发明的一个示例性实施例的采用图6中示出的混合处理的三维图像显示的整体程序的流程图。用户运行多媒体播放器100,并选择媒体文件(S350)。在此期间,甚至允许在用户运行多媒体播放器100之前选择媒体文件。在步骤S352中,多媒体播放器100的VideoView类200从SurfaceView类210请求表面分配。用于生成和管理表面而不创建表面本身的SurfaceView类210只是从通常管理表面的 WindowManager 类 220 请求表面。SurfaceView 类 210 请求的 WindowManager 类220通过JNI从SurfaceFlinger类262请求表面,然后SurfaceFlinger类262分配请求的表面。该分配的表面被适应性修改从而被传输到其实际将被使用的MediaPlayer类230。在步骤S354中,VideoView类200通过MediaPlayer类202搜索媒体播放器引擎(例如,图5所示的PVPlayer 244),其用于进行图像播放操作。因此,可以将PVPlayer244选择为一个示例。VideoView类200将分配的表面以及选择的媒体文件传输到选择的媒体播放器引擎(即,PVPlayer 244)。然后,PVPlayer 244开始准备播放选择的媒体文件,并且使得在OpenCORE框架中提供的视频CODEC 246通过PlayerDriver 242运行。并且PVPlayer 244通过AndroidSurfaceOutput类248将要被使用的表面与视频CODEC 246连接。在步骤S356中,根据PVPlayer 244的激活,解复用并解码原始数据。在这里,原始数据可能是从流媒体服务器接收的数据流或者是存储在存储器20中的多媒体文件,其结构为由多个内容(例如图像、音频、数据等)组成的容器格式。PVPlayer 244通过解复用原始数据从容器中抽取移动图片源。视频CODEC 246解码压缩的移动图片源,并且输出YUV视频帧数据。从视频CODEC 246输出的该YUV图像信号通过PlayerDriver 242和 AndroidSurfaceOutput 类 248 被传输到 LayerBuffer 类 250。 在步骤S358中,传输到LayerBuffer类250的YUV图像信号在作为LayerBuffer类250的子类的SurfaceLayerBuffer类的控制下,被后处理器36转换成RGB图像信号。通过后处理器36转换的RGB图像信号被传输到分配的表面缓冲器,即,RGB缓冲器284A。如果RGB图像信号是配置为二维的,则RGB图像信号被从RGB缓冲器284A传输到内核阶段的第二帧缓冲器298,在LCD控制器50中和正常平面图像对应的表面I和表面2一起以硬件方式被合成,然后在IXD面板52上显不。另一方面,如果RGB图像信号是配置为三维的,则Surface Flinger类262使得后处理器36的叠加类对已经在RGB色彩空间中转换的图像施加叠加函数。因此,包含在RGB图像信号中的左/右图像对被交替地混合,并存储在RGB缓冲器284A中,然后以DMA模式被转移到第二帧缓冲器298。在LCD控制器50中,在和Surfacel以及Surface2 (其被存储于与正常平面图像对应的第一帧缓冲器296中)合成之后的混合的RGB图像在IXD面板52上显示为三维图像(S360)。重复步骤S356到步骤S360,直到原始数据被完全播放。图9图示出根据本发明的一个示例性实施例的在图I中示出的显示设备中被配置用于色彩空间转换以及左图像和右图像的混合处理的输出终端。参考图9,输出终端的处理被配置为通过混合形成立体图像对的左图像和右图像来合成三维图像,并且和这样的三维图像一起提供一个或者多个正常平面图像。这里,三维图像和多个正常平面图像通过SurfaceFlinger类262B以软件形式合成。在本示例性实施例中,本地阶段由如下部分组成第一至第三层缓冲器270A 270C、二维/三维开关282B和混合缓冲器290B,从而进行图像混合处理292B。第一层缓冲器270A和第二层缓冲器270B,为SurfaceFl inger类262B使用的一般表面缓冲器,存储各种属于Java应用的活动所产生的正常平面图形表面。这些平面图像,具有通用的渲染特征,可以是在播放文本、渲染的三维图像、或者三维图像内容时携带的标题或菜单信息。第三层缓冲器270C是用于处理三维移动图片显示或相机预览的。可以从内核阶段提供存储在第三层缓冲器270C的移动图片数据。在内核阶段,YUV缓冲器280从LayerBuffer类250接收YUV图像信号,并且后处理器36在ServiceFlinger类262B或LayerBuffer类250的控制下将缓存的YUV图像信号转换为RGB图像信号。在RGB缓冲器284B中存储从YUV图像信号转换得到的RGB图像信号。如果即将播放的图像信号配置为二维,则二维/三维开关将RGB图像信号从RGB缓冲器284B直接传输到第三层缓冲器270C,或者,如果即将播放的图像信号配置为三维,则二维/三维开关将RGB图像信号从RGB缓冲器284B传输到混合缓冲器290B从而使得图像混合处理292B混合RGB图像信号的左图像和右图像。然后,存将混合的RGB图像信号存储到第三层缓冲器270C中。在左图像和右图像的混合处理的细节中,图像混合处理292B不是按顺序传输比特流,而是在从混合缓冲器290B发送图像信号的比特流到第三层缓冲器270C的过程中,通过交替地从左右并排格式的三维RGB图像中抽取左图像像素和右图像像素来复制。即,图像混合处理292B在扫描线的单元中抽取第一左图像像素,并将第一左图像像素传输到第三层缓冲器270C的第一像素位置,然后抽取扫描线的单元中的第一右图像像素,并将第一右图像像素放置在第三层缓冲器270C的第二像素位置。随后,图像混合处理292B从混合缓冲器290B的RGB图像中抽取第二左图像像素,并将第二左图像像素传输到第三层缓冲器 270C的第三像素位置,然后从RGB图像中抽取第二右图像像素,并将第二右图像像素放置在第三层缓冲器270C的第四像素位置。通过对RGB图像进行这种顺序的处理,第三层缓冲器270C得到并存储混合的图像,该混合的图像中左图像和右图像被交替排列在竖直线的单元中。通过聚集移动图片的表面(例如,Surface3)以及正常平面表面Surfacel、Surface2,并将这些平面表面提供到帧缓冲器296,SurfaceFlinger类262B用于对存储在第一到第三缓冲器270A 270C中的层数据进行合成。在如图9所不的输出终端中,对于用于一般Java应用的平面图像表面的运行流程,通过SurfaceFlinger类262B以软件方式对分别被分配到Java应用的表面进行合成,然后将合成表面传输至帧缓冲器296。根据本示例性实施例,在移动图片播放或者相机预览的应用中处理的表面(例如,Surface3)也可以在SurfaceFlinger类262B中以软件方式合成。关于处理移动图片表面的流程,存储在YUV缓冲器280中的YUV图像通过后处理器36转换为RGB图像,然后缩放到适合IXD面板52的屏幕尺寸的大小。如果二维/三维开关282B设置为二维模式,则正常的二维图像被直接存储在第三层缓冲器270C中、并传输至SurfaceFlinger类262B、和其他的表面合成、然后被传输至帧缓冲器296。如果二维/三维开关282B设置为三维模式,则存储在RGB缓冲器284B中的RGB图像被复制到本地阶段的混合缓冲器290B。存储在混合缓冲290B中的RGB图像的左图像和右图像通过图像混合处理292B混合,并传输至第三层缓冲器270C中。混合的RGB图像被传输到SurfaceFlinger类262B、和其他的表面合成、被传输到帧缓冲器296、然后连同其标题和/或菜单以三维模式在IXD面板52上显示。随后,存储在第三层缓冲器270C中的三维RGB比特流被传输到SurfaceFlinger类262B,并和其他的表面合成。合成的图像被传输到帧缓冲器296,并且通过IXD控制器50在IXD面板52上显示。因此,面对视差格栅54的用户能够识别三维立体图像。
虽然在总的合成时间上可能比图6示出的前面示例性实施例要长一些,但是图9示出的该示例性实施例可以适用于包括小型LCD面板或者处理动画图像(其尤其是通过渲染具有更少数目的多边形)而不是实时图像的显示设备,这是因为移动图片表面被复制到中间件层(即,本地阶段),并且通过SurfaceFlinger类262B通过软件方式和其他的表面合成。图10为示出了根据本发明的一个示例性实施例的在图9中示出的构造中的进行三维图像处理的函数的运行流程。如果从视频C0DEC246中解码的YUV图像信号响应于定时器的同步信号而出现,则每隔一预设时间就运行AndroidSurfaceOutput类250中的成员函数writeAsync ()(S300)。成员函数writeAsync ()调用函数WriteFrameBuffer ()从而将图像信号复制到后处理器的缓冲器,该缓冲器用于从解码的YUV信号转换到RGB信号(S302)。函数WriteFrameBuffer ()将解码的媒体比特流传输到SurfaceLayerBuffer类,其为LayerBuffer 类 250 的一个子类。 解码的YUV比特流通过SurfaceLayerBuffer类的函数postBufferO被传输到 LayerBuffer 类 250 (S304),然后通过函数 postBuffer ()被传输到 BufferSource 类(S306),其为 LayerBuffer 类 250 的另一个类。当YUV比特流存储在YUV缓冲器280中时,BufferSource类的函数postBuffer ()使得后处理器36将YUV图像信号转换为RGB图像信号(S308)。在从YUV图像信号到RGB图像信号的转换之后,调用LayerBuffer类250的回调函数onDrawO (S410)。函数onDrawO从左右并排格式的三维RGB图像的左图像和右图像中交替地抽取像素,并将抽取的像素插入和放置在新表面中。例如,函数onDrawO从RGB图像的扫描线的单元中抽取第一左图像像素,并将第一左图像像素放置在新表面的第一像素位置,然后从RGB图像的扫描线的单元中抽取第一右图像像素,并将第一右图像像素放置在新表面的第二像素位置。随后,函数onDrawO从RGB图像中抽取第二左图像像素,并将第二左图像像素放置在新表面的第三像素位置,然后从RGB图像中抽取第二右图像像素,并将第二右图像像素放置在新表面的第四像素位置。通过对RGB图像进行这种顺序的处理,在屏幕上形成了新表面,使得左图像和右图像被交替排列在竖直线的单元中。在混合左RGB图像和右RGB图像之后,BufferSource服务的函数onDrawO将一个结束信号传输到SurfaceFlinger类262B,使得SurfaceFlinger类262B将混合的RGB图像数据和其他的表面Surfacel和Surface2 —起输出到帧缓冲器296(S412)。图11示出了根据本发明的一个示例性实施例的采用图9中示出的混合处理的三维图像处理的整体流程。用户运行多媒体播放器100,并选择媒体文件(S450)。在此期间,甚至允许用户在运行多媒体播放器100之前选择媒体文件。在步骤S452中,多媒体播放器100的VideoView类200从SurfaceView类210请求表面分配。用于生成和管理表面而不创建表面本身的SurfaceView类210只是从通常管理表面的 WindowManager 类 220 请求表面。SurfaceView 类 210 请求的 WindowManager 类220通过JNI从SurfaceFlinger类262请求表面,然后SurfaceFlinger类262分配请求的表面。该分配的表面被适应性修改从而被传输到其实际将被使用的MediaPlayer类230。
在步骤S454中,VideoView类200通过MediaPlayer类202搜索媒体播放器引擎(例如,图5所示的PVPlayer 244),其用于进行图像播放操作。因此,可以将PVPlayer244选择为一个示例。VideoView类200将分配的表面以及选择的媒体文件传输到选择的媒体播放器引擎(即,PVPlayer 244)。然后,PVPlayer 244开始准备播放选择的媒体文件,并且使得在OpenCORE框架中提供的视频CODEC 246通过PlayerDriver 242运行。并且PVPlayer 244通过AndroidSurfaceOutput类248将要被使用的表面与视频CODEC 246连接。在步骤S456中,根据PVPlayer 244的激活,解复用并解码原始数据。在这里,原始数据可能是从流媒体服务器接收的数据流或者是存储在存储器20中的多媒体文件,其结构为由多个内容(例如图像、音频、数据等)组成的容器格式。PVPlayer 244通过解复用原始数据从容器中抽取移动图片源。视频CODEC 246解码压缩的移动图片源,并且输出YUV视频帧数据。从视频CODEC 246输出的该YUV图像信号通过PlayerDriver 242和AndroidSurfaceOutput 类 248 被传输到 LayerBuffer 类 250。
在步骤S458中,传输到LayerBuffer类250的YUV图像信号在作为LayerBuffer类250的子类的SurfaceLayerBuffer类的控制下,被后处理器36转换成RGB图像信号。通过后处理器36转换的RGB图像信号被传输到分配的表面缓冲器,即,RGB缓冲器284A。如果RGB图像信号是配置为二维的,则RGB图像信号在Surface Flinger类262B的控制下被传输到第三层缓冲器270C,并通过Surface Flinger类262B和正常平面表面Surfacel和Surface2通过软件方式合成。合成的RGB图像信号被传输到帧缓冲器296,然后作为图像显示在IXD面板52上。另一方面,如果RGB图像信号是配置为三维的,则存储在RGB缓冲器284B中的RGB图像信号被复制到混合缓冲290B,并通过图像混合处理292B和左图像、右图像混合。混合的三维RGB图像被传输到第三层缓冲器270C,然后通过SurfaceFlinger类262B和正常的平面表面Surfacel和Surface2以软件方式合成(S460)。合成的图像信号通过帧缓冲器296在IXD面板52上显示,以凭借视差格栅54显示立体效果。重复步骤S456到步骤S460,直到原始数据被完全播放。根据本示例性实施例的三维显示设备的多媒体播放器100可以通过一个可执行文件图标呈现在LCD面板52上的用户界面上。如果该图标被选择,则其对应的程序和显示文件索引一起执行并且所选择的媒体文件开始播放。同时,当用户选择媒体文件或者在其与网站链接的情况下包括即将播放的媒体文件的网页时,允许以数据流模式的形式提供选择的媒体文件。在一个示例性实施例中,如图12所示,当播放图像时可以在屏幕上显示操作菜单500。用户可选的操作菜单500上可以包括选择按钮,如“ Start/Pause ”502、“Restart ”504、“Back”506、“2D/3D”508、“Disparity+(用于增大差异)”510,以及“Disparity-(用于减小差异)”512。这里,“Back”按钮506是用于指示移动到播放之前的屏幕。“2D/3D”按钮508用于选择在2D或3D模式下显示图像。“Disparity+”按钮510和“Disparity-”按钮512,提供用于调整左图像和右图像之间的视差。如果用户触摸“Disparity+”按钮510,应用于混合左图像和右图像时的偏移值将会增力卩。例如,响应于用户对于“Disparity+”按钮的选择,在向右移动右图像一个像素到左图像之后进行混合处理。如果用户触摸“Disparity-”按钮512,应用于混合左图像和右图像的偏移值将会减小。例如,响应于用户对于“Disparity-”按钮512的选择,在向左移动右图像一个像素到左图像之后进行混合处理。调整功能通过根据LCD面板52的屏幕尺寸或者用户的视听习惯(尤其是LCD面板52到用户眼睛之间的距离)来适应性调节最佳视差提高了用户的满意度,也缓解了观看时的头晕。虽然上文描述了示例性实施例,但是本发明也可以在不实质脱离本发明新颖指教及其效果的前提下减少各种类型和细节。例如,虽然这些示例性实施例以H. 264标准下编码的原始文件或者流数据为例进行示出,但是也可以解码在另一个标准下编码的原始文件或者流数据。虽然这些示例性实施例以输入图像的格式为左右并排的模式为例进行描述,但是也可以处理其他类型的输入图像,其格式甚至可以为上下并列(top-down)模式,或者平铺模式(tile mode),或者类似的其他方式。此外,虽然这些示例性实施例以后处理器通过软件的方式实现为例进行实施,但 是通过硬件配置组成的后处理器也是可行的。同时,在示例性实施例中采用OpenCORE作为安卓平台,但是考虑到OpenCORE被认为在修改上是复杂的并且很困难,另外一种类型(例如,StageFright)也可以作为安卓框架。对于图9至图11中示出的示例性实施例,描述在内核阶段进行色彩空间转换同时在中间件层混合左图像和右图像,但是也允许色彩空间转换和左图像和右图像的混合都在内核阶段进行。同时,虽然没有在上面进行陈述,但是可以在微处理器30或者IXD控制器50中提供帧缓冲器296和298。在帧缓冲器296和298布置在IXD控制器50中的情况下,权利要求中记载的“显示控制器”定义为执行为LCD面板52激励发光的功能,以及控制帧缓冲器296和298中的图像比特流直接或通过叠加而传输到IXD面板52。通过提供写状态的应用程序或者库程序单元的记录介质,它们可以在安装有视差格栅的终端设备、或者便携终端设备上运行。这里,终端设备不限制为便携设备,可以包括固定的、或者半固定的设备,例如,电视机、台式计算机、笔记本计算机等。前述内容仅作为示例性实施例而不是作为对本发明的限制。虽然已经描述了一些示例性实施例,但是本领域技术人员可以理解在不脱离本发明的技术思想和技术效果的前提下,可以对示例性实施例作出若干改进。相应地,所有这些修改应当包括在本发明权利要求限定的范围之内。虽然参考本发明特定示例性实施例的描述对本发明进行了说明,但是可以理解的是,在不脱离由附加权利要求及其等同物限定的本发明的思想和范围的前提下,本领域技术人员可以作出各种形式和细节上的修改。
权利要求
1.一种在便携式终端设备中处理三维图像信号的方法,所述便携式终端设备配备有带有显示面板的硬件装置、直接控制硬件装置的内核层、控制内核层以通过硬件装置显示移动图片的应用/中间件层,三维图像被显示在显示面板上,该方法包括 从应用/中间件层生成一个或者多个平面图像表面,并将所述一个或者多个平面图像表面存储在第一帧缓冲器中; 在应用/中间件层控制下对编码的图像信号进行解码,并且还原YUV图像信号以表示立体图像对; 将YUV图像信号转换为RGB图像信号,在内核层混合RGB图像信号的左图像和右图像,并在第二帧缓冲器中存储混合的立体图像信号;以及 在内核层通过叠加以硬件方式对存储在第一帧缓冲器和第二帧缓冲器中的信号进行合成,并将合成的信号传输到显不面板。
2.如权利要求I所述的方法,其中生成和存储的步骤包括 在应用/中间件层生成多个平面图像表面;以及 在应用/中间件层对所述多个平面图像表面进行合成并在第一帧缓冲器中存储合成的表面。
3.如权利要求I所述的方法,其中转换、混合和存储的步骤包括 将YUV图像信号转换为RGB图像信号,并在混合缓冲器中存储RGB图像信号;以及对存储在混合缓冲器中的RGB图像信号的左图像和右图像进行混合,在RGB缓冲器中存储混合的立体图像信号,并将混合的立体图像信号从RGB缓冲器传输到第二帧缓冲器。
4.如权利要求3所述的方法,其中在内核层中进行转换和存储的步骤。
5.一种便携式三维显示设备,其通过解复用从原始图像信号抽取压缩图像信号并且解码压缩图像信号用于显示,该设备包括 显示面板,其在前端配备有视差格栅并被配置为显示立体图像; 显示控制器,其被配置为驱动显示面板; 第一帧缓冲器和第二帧缓冲器,其被配置为分别存储通过显示控制器出现在显示面板上的图像的至少一部分;以及 微处理器,其被配置为控制解复用和解码并且运行程序,该微处理器包括内核层,其被配置为直接控制显示面板;以及应用/中间件层,其被配置为控制内核层以在显示面板上显示移动图片; 其中所述微处理器被配置为 在应用/中间件层生成一个或多个平面图像表面,并在第一帧缓冲器中存储所述一个或多个平面图像表面; 在应用/中间件层的控制下对编码的图像信号进行解码,并还原YUV图像信号以表示立体图像对; 将YUV图像信号转换为RGB图像信号,在内核层混合RGB图像信号的左图像和右图像,并在第二帧缓冲器中存储混合的立体图像信号;以及 在内核层通过叠加以硬件方式对第一帧缓冲器和第二帧缓冲器的信号进行合成,并将合成的信号传输到显不面板。
6.如权利要求5所述的设备,其中所述微处理器被配置为在应用/中间件层生成多个平面图像表面并对其进行合成,并在第一帧缓冲器中存储合成的平面图像。
7.如权利要求5所述的设备,其中所述微处理器被配置为 将YUV图像信号转换为RGB图像信号,并在混合缓冲器中存储RGB图像信号;以及对存储在混合缓冲器中的RGB图像信号的左图像和右图像进行混合,在RGB缓冲器中存储混合的立体图像信号,并将混合的立体图像信号从RGB缓冲器传输到第二帧缓冲器。
8.如权利要求7所述的设备,其中所述微处理器被配置为在内核层将YUV图像信号转换为RGB图像信号,并在混合缓冲器中存储RGB图像信号。
9.一种包括显示设备的记录介质,其中所述显示设备包括 显示面板,其被配置为显示立体图像; 显示控制器,其被配置为驱动显示面板; 第一帧缓冲器和第二帧缓冲器,其被配置为分别存储通过显示控制器出现在显示面板上的图像的至少一部分;以及 微处理器,其被配置为在层的控制下来运行,该微处理器包括内核层,其被配置为直接控制显示面板;以及应用/中间件层,其被配置为控制内核层以在显示面板上显示移动图片; 其中所述微处理器被配置为 在应用/中间件层生成一个或多个平面图像表面,并在第一帧缓冲器中存储所述一个或多个平面图像表面; 在应用/中间件层的控制下对编码的图像信号进行解码,并还原YUV图像信号以表示立体图像对; 将YUV图像信号转换为RGB图像信号,在内核层混合RGB图像信号的左图像和右图像,并在第二帧缓冲器中存储混合的立体图像信号;以及 在内核层通过叠加以硬件方式对第一帧缓冲器和第二帧缓冲器的信号进行合成,并将合成的信号传输到显不面板。
10.如权利要求9所述的记录介质,其中所述微处理器被配置为在应用/中间件层生成多个平面图像表面并对其进行合成,并在第一帧缓冲器中存储合成的平面图像表面。
11.一种在便携式终端设备中处理三维图像信号的方法,该便携式终端设备配备有带有显示面板的硬件装置、直接控制所述硬件装置的内核层、控制内核层以通过硬件装置显示移动图片的应用/中间件层,三维图像显示在显示面板上,该方法包括 在平面图像层缓冲器中生成并存储一个或者多个平面图像表面; 在应用/中间件层对编码的图像信号进行解码,并还原YUV图像信号以表示立体图像对; 在内核层将YUV图像信号转换为RGB图像信号,在应用/中间件层混合RGB图像信号的左图像和右图像,并在立体图像层缓冲器中存储混合的立体图像信号;以及 在应用/中间件层对存储在平面图像层缓冲器和立体图像层缓冲器中的信号进行合成,并将合成的信号传输到显示面板。
12.如权利要求11所述的方法,其中生成和存储的步骤包括 生成多个平面图像表面并在多个平面图像层缓冲器中分别存储所述多个平面图像表面;其中合成和传输的步骤包括对存储在平面图像层缓冲器和立体图像层缓冲器中的信号进行合成。
13.一种便携式三维显示设备,其通过解复用从原始图像信号中抽取压缩的图像信号,并且解码压缩的图像信号用于显示,该设备包括 显示面板,其在前端配备有视差格栅并被配置为显示立体图像; 显示控制器,其被配置为驱动显示面板; 帧缓冲器,其被配置为存储将显示在显示面板上的图像;以及 微处理器,其被配置为控制解复用和解码并且运行程序,该微处理器包括内核层,其被配置为直接控制显示面板;以及应用/中间件层,其被配置为控制内核层以在显示面板上显示移动图片; 其中所述微处理器被配置为 在平面图像层缓冲器中生成并存储一个或多个平面图像表面; 在应用/中间件层的控制下对编码的图像信号进行解码,并还原YUV图像信号以表示立体图像对; 在内核层将YUV图像信号转换为RGB图像信号,在应用/中间件层混合RGB图像信号的左图像和右图像,并在立体图像层缓冲器中存储混合的立体图像信号;以及 在应用/中间件层对存储在平面图像层缓冲器和立体图像层缓冲器中的信号进行合成,并通过帧缓冲器将合成的信号传输到显示面板。
14.如权利要求13所述的设备,其中生成和存储的步骤包括,生成多个平面图像表面并在多个平面图像层缓冲器中分别存储所述多个平面图像表面; 其中合成和传输的步骤包括对存储在平面图像层缓冲器和立体图像层缓冲器中的信号进行合成。
15.一种包括显示设备的记录介质,其中所述显示设备包括 显示面板,其被配置为显示立体图像; 显示控制器,其被配置为驱动显示面板; 帧缓冲器,其被配置为存储通过显示控制器出现在显示面板上的图像的至少一部分;以及 微处理器,其被配置为在层的控制下运行,该微处理器包括内核层,其被配置为直接控制显示面板;以及应用/中间件层,其被配置为控制内核层以在显示面板上显示移动图片; 其中所述微处理器被配置为 在平面图像层缓冲器中生成并存储一个或多个平面图像表面; 在应用/中间件层的控制下对编码的图像信号进行解码,并还YUV图像信号以原表示立体图像对; 在内核层将YUV图像信号转换为RGB图像信号,在应用/中间件层混合RGB图像信号的左图像和右图像,并在立体图像层缓冲器中存储混合的立体图像信号;以及 在应用/中间件层对存储在平面图像层缓冲器和立体图像层缓冲器中的信号进行合成,并通过帧缓冲器将合成的信号传输到显示面板。
16.如权利要求15所述的记录介质,其中生成和存储的步骤包括生成多个平面图像表面并在多个平面图像层缓冲器中分别存储所述多个平面图像表面; 其中 合成和传输的步骤包括对存储在平面图像层缓冲器和立体图像层缓冲器中的信号进行合成。
全文摘要
本发明提供了三维图像处理方法及实施该方法的便携式三维显示设备,其用于基于例如安卓平台之类的移动平台在使用便携式三维显示设备中极少数目的硬件组件的同时通过软件高速率地处理立体图像。该方法适用于便携终端设备,该终端配备有直接控制包括显示面板的硬件装置的内核层和控制内核层以通过硬件装置显示移动图片的应用/中间件层。首先从应用/中间件层生成一个或多个平面图像表面并将其存储在第一帧缓冲器中。在应用/中间件层的控制下对编码的图像信号解码从而还原表示立体图像对的YUV图像信号。随后,将YUV图像信号转换为RGB图像信号,并且在内核层混合RGB图像信号的左图像和右图像。在第二帧缓冲器中存储混合的立体图像信号。
文档编号H04N15/00GK102780892SQ201110397069
公开日2012年11月14日 申请日期2011年12月2日 优先权日2011年5月9日
发明者朴哲, 金正珍 申请人:株式会社3D诺里
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1