CN111935471B - 基于云服务的远程立体图形生成系统及方法 - Google Patents
基于云服务的远程立体图形生成系统及方法 Download PDFInfo
- Publication number
- CN111935471B CN111935471B CN202010817071.6A CN202010817071A CN111935471B CN 111935471 B CN111935471 B CN 111935471B CN 202010817071 A CN202010817071 A CN 202010817071A CN 111935471 B CN111935471 B CN 111935471B
- Authority
- CN
- China
- Prior art keywords
- eye image
- buffer area
- unit
- grabbing
- right eye
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/20—Image signal generators
- H04N13/204—Image signal generators using stereoscopic image cameras
- H04N13/239—Image signal generators using stereoscopic image cameras using two 2D image sensors having a relative position equal to or related to the interocular distance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/05—Geographic models
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/161—Encoding, multiplexing or demultiplexing different image signal components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/194—Transmission of image signals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Remote Sensing (AREA)
- Processing Or Creating Images (AREA)
- Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
Abstract
本发明涉及一种基于云服务的远程立体图形生成系统,包括抓取单元、传输单元和显示单元,抓取单元,设置在云端,用于抓取立体图形,并完成左眼图像和右眼图像的渲染;传输单元,用于将所述抓取单元渲染得到的左眼图像和右眼图像传输至显示单元;显示单元,设置在本地,用于接收所述传输单元传输的左眼图像和右眼图像,并生成和显示立体图形。本发明还提供一种基于云服务的远程立体图形生成方法。本发明解决了已有的本地立体视觉技术均无法对虚拟桌面架构进行支持的问题。
Description
技术领域
本发明涉及地理信息系统领域,尤其涉及一种基于云服务的远程立体图形生成系统及方法。
背景技术
人眼产生立体视觉主要是由于双眼的位置不同,观看同一物体会产生视差。
立体图形显示的原理是:通过一定的技术方法,例如显示器、投影机等显示设备搭配立体眼镜、同步信号发射器或连接线,使观察者双眼分别看到不同的图像,从而形成视差,产生立体视觉。
产生视差的技术手段目前主要有如下几种:
1.主动快门式:使用高刷新率显示器(通常为100Hz-240Hz)配合主动式快门立体眼镜及配套信号同步设备,显示器分别快速切换左右眼图像,同时通过信号同步立体眼镜进行左右眼镜片的透光度调整以分别允许左右眼的图像通过,从而使左右眼分别观看到对应的图像;
2.被动偏振光式:使用偏振光显示器、双机投影仪结合偏振片、双显示器结合偏振片在显示器或荧幕上叠加同时显示左右眼的图像,此时由于左右眼图像的光偏振方向正交,可使用偏振立体眼镜滤光即可使观察者左右眼分别看到对应的图像;
3.被动色差式:使用普通的显示器或投影仪等显示设备,使用红绿或红蓝等互补色分别显示左右眼图像,而立体眼镜也是互补色的滤光片,从而使得观察者左右眼分别看到对应的图像;
4.裸眼式:通过光栅或透镜将显示器或荧幕显示的图像进行分光,从而使观察者左右眼分别看到对应的图像。
计算机实现立体图形显示主要由图形处理器厂商提供相关方案,例如NVIDIA 3DVision、AMD HD3D。方案中会提供一套立体显示解决方案,包含立体显示设备、立体眼镜(及其同步设备)、应用程序开发SDK、图形处理器硬件、图形处理器驱动以及建议的操作系统环境。本文将这些方案称之为“本地立体视觉方案”,“本地”的主要含义有:
1.需要显示立体视觉的应用程序(下文简称应用程序)运行在使用者本地;
2.应用程序使用的计算资源,如中央处理器、图形处理器、内存等设备在本地;
3.使用本地的图形处理器渲染应用程序需要显示的图形;
4.应用程序立体图形显示在本地,从而使使用者产生立体视觉。
一般地,本地立体视觉方案通常是指使用者使用立体视觉技术时操作的计算机软硬件系统及其对应的立体显示设备均在本地,立体视觉应用过程中没有云端的资源进行支持,通常也称本地为“桌面端”,与“云端”对应。
在云计算时代,对系统的应用性能的提升和运维管理的简化有着较高的要求,而虚拟桌面(VDI)等技术的应用起到了很大的帮助,在虚拟桌面架构下实现立体视觉,在很多行业中成为了刚需,而上述已有的“本地立体视觉方案”均无法对虚拟桌面架构进行支持,因此,本发明实现了一种基于云服务的远程立体图形生成系统及方法,以在虚拟桌面架构中支持立体视觉。
发明内容
本发明的目的是提供一种基于云服务的远程立体图形生成系统及方法,以解决已有的本地立体视觉技术均无法对虚拟桌面架构进行支持的问题。
本发明提供一种基于云服务的远程立体图形生成系统,包括:
抓取单元,设置在云端,用于抓取立体图形,并完成左眼图像和右眼图像的渲染;
传输单元,用于将所述抓取单元渲染得到的左眼图像和右眼图像传输至显示单元;
显示单元,设置在本地,用于接收所述传输单元传输的左眼图像和右眼图像,并生成和显示立体图形。
进一步的,所述抓取单元包括抓取API,用于执行以下操作:
使用所述抓取API设置左眼图像后缓冲区,并在所述左眼图像后缓冲区中使用应用程序的图形API渲染希望显示的左眼图像;
使用所述抓取API设置右眼图像后缓冲区,并在所述右眼图像后缓冲区中使用应用程序的图形API渲染希望显示的右眼图像;
将所述渲染得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元。
进一步的,所述抓取单元包括抓取API,用于执行以下操作:
使用所述抓取API设置一个双眼图像后缓冲区,在所述双眼图像后缓冲区中使用应用程序的图形API渲染希望显示的左眼图像和右眼图像;
将所述渲染得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元。
进一步的,所述抓取单元用于执行以下操作:
使用应用程序的图形API设置左眼图像后缓冲区,并在所述左眼图像后缓冲区中渲染希望显示的左眼图像;
使用应用程序的图形API设置右眼图像后缓冲区,并在所述右眼图像后缓冲区中渲染希望显示的右眼图像;
将所述渲染得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元。
进一步的,所述抓取单元用于执行以下操作:
使用应用程序的图形API设置一个双眼图像后缓冲区,并在所述双眼图像后缓冲区中渲染希望显示的左眼图像和右眼图像;
将所述渲染得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元。
进一步的,所述抓取单元用于执行以下操作:
使用应用程序的图形API设置左眼图像后缓冲区,将右眼图像后缓冲区复制到临时缓冲区中,并使用应用程序的图形API渲染希望显示的左眼图像;
使用应用程序的图形API设置右眼图像后缓冲区,将左眼图像后缓冲区复制到临时缓冲区中,并使用应用程序的图形API渲染希望显示的右眼图像;
将所述临时缓冲区中渲染得到的左眼图像和右眼图像输出给传输单元。
进一步的,所述传输单元包括编码装置和传输装置,编码装置用于对所述渲染的左眼图像和右眼图像进行编码,传输装置用于将编码的左眼图像和右眼图像传输至显示单元。
进一步的,所述显示单元包括解码装置和显示装置,解码装置用于解码从所述传输单元接收的左眼图像和右眼图像,显示装置用于根据解码的左眼图像和右眼图像生成立体图形并显示。
进一步的,所述显示单元显示的立体图形是通过裸眼观看的立体图形或通过立体眼镜观看的立体图形。
本发明还提供一种基于云服务的远程立体图形生成的方法,包括:
S1:在云端抓取立体图形,并完成左眼图像和右眼图像的渲染;
S2:对上述抓取并渲染的左眼图像和右眼图像进行编码操作,并传输给显示单元;
S3:对接收的左眼图像和右眼图像进行解码操作,生成与显示立体图形后发送给立体显示设备进行显示。
本发明的主要特征为:
1.需要显示立体视觉的应用程序运行在云端,通常运行在数据中心的计算机;
2.应用程序使用的计算资源,如中央处理器、图形处理器、内存等设备在云端,不在本地;
3.使用云端的图形处理器渲染应用程序需要显示的图形而非本地的图形处理器;
4.应用程序立体图形显示在本地,从而让使用者产生立体视觉。
本发明的有益效果为:
1.使立体图形的渲染计算与显示分离,渲染计算在云端,立体图形显示在本地。实现了远程立体图形传输协议,本地通过不同于云端的一套计算机软硬件系统及其对应的立体显示设备来接收并显示云端发送的立体图形。
2.相比于本地立体图形视觉技术,本发明在虚拟桌面架构中实现了立体视觉,使得需要立体图形显示的行业应用可以受益于虚拟桌面架构。而虚拟桌面架构的应用,解决了立体视觉显示需要将中央处理器、图形处理器、内存等计算资源放置于本地的问题,而本地通常计算机设备采用图形工作站,发热、噪音、维护、空间占用等方面均会影响使用体验。云立体视觉方案结合虚拟桌面架构,使中央处理器、图形处理器、内存等计算资源放在云端,本地只需要很小的瘦客户端设备即可驱动立体显示设备实现立体视觉,大大提升了桌面端的使用体验。
3.对于GIS地理信息系统行业应用,本发明亦对工作效率和流程有显著提升。GIS地理信息系统行业应用中主要使用立体视觉方案对卫星影像、航拍影像进行立体测图,以更直观的方式对影像进行加工处理,大大提升了作业精确度。而GIS地理信息系统行业应用中的数据量较大,使用本发明的基于云服务的远程立体图形生成系统后,数据交换通路变短,只在云端数据中心内部完成数据交换,交换效率相比于传统本地立体视觉方案和图形工作站可提升25倍以上。使得GIS地理信息系统行业应用实现由“数据在本地”向“数据在云端、像素到桌面”的生产方式转变,极大的提升了作业生产效率,使得GIS地理信息系统行业应用全面上云,彻底云化。
附图说明
图1为本发明一种基于云服务的远程立体图形生成系统的总流程示意图;
图2为本发明一种基于云服务的远程立体图形生成系统的详细流程示意图;
图3为本发明一种基于云服务的远程立体图形生成的方法示意图。
具体实施方式
下面将结合附图为本发明一种基于云服务的远程立体图形生成系统及方法的实施技术方案进一步做清楚、完整的解释描述。需要说明的是,所描述的实施例是本发明一部分实施例,并非全部实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例均属于本发明的保护范围。
本发明为一种基于云服务的远程立体图形生成系统及方法,如图1所示,为本发明一种基于云服务的远程立体图形生成系统的总流程示意图,所述系统主要包括抓取单元、传输单元和显示单元三个模块:
抓取单元,设置在云端,用于抓取立体图形,并完成左眼图像和右眼图像的渲染;
传输单元,用于将所述抓取单元渲染得到的左眼图像和右眼图像传输至显示单元;
显示单元,设置在本地,用于接收所述传输单元传输的左眼图像和右眼图像,并生成和显示立体图形。
所述传输单元还包括编码装置和传输装置,所述显示单元还包括解码装置和显示装置。
下面将分别对上述各个单元模块进行详细完整地描述:
所述抓取单元是通过对应用程序提供抓取API或截获应用程序的图形API的调用此两种方式来抓取应用程序中希望显示的立体图形。此抓取API主要包括三个功能操作:
1.设置左/右眼图像缓冲区;
2.设置右/左眼图像缓冲区;
3.完成左、右眼的图像渲染。
应用系统中常用的图形API主要为OpenGL、Vulkan、Direct3D、DXGI等或其他图形API。
OpenGL译为“开放图形库”或者“开放式图形库”,是用于渲染2D、3D矢量库图形的跨语言、跨平台的应用程序编程接口,这个接口由多个函数调用组成,用来绘制从简单的图形比特到复杂的三维景象。
Vulkan是一个跨平台的2D和3D绘图应用程序接口,具有独特的跨OS支持和自动兼容GCN架构.
Direct3D简称D3D,是微软公司在Windows操作系统上所研发的一套3D绘图接口,与OpenGL同为电脑绘图软体和电脑游戏常用的两套绘图编程接口之一。
DXGI是Windows系统中用户模式下最底层的图形设备接口,直接与硬件驱动进行交互操作。
这些图形API中设置了后缓冲区和前缓冲区,应用程序在渲染图像时,需先指定需要渲染的后缓冲区,通常一组对应的左、右眼图像渲染和显示的过程有两种:
其中一种图像渲染和显示的过程为:
先设置左眼图像的后缓冲区,并使用对应的图形API渲染希望显示的左眼图像;
再设置右眼图像的后缓冲区,并使用对应的图形API渲染希望显示的右眼图像;
交换前缓冲区和后缓冲区,使显示单元接收到显示立体图像的需求,图形处理器驱动会将左右眼图像的后缓冲区交换到对应的前缓冲区中,结合立体显示设备的需求对立体显示设备发送对应指令,例如对主动快门式立体显示方案中的同步信号设备发送左右眼切换信号,显示左右眼图像产生立体视觉。
另外一种图像渲染和显示的过程为:
先设置左眼图像的后缓冲区,并使用对应的图形API渲染希望显示的左眼图像;
交换左眼图像的前缓冲区和后缓冲区,显示左眼图像;如果立体显示设备有需要,发送左眼显示切换信号;
再设置右眼图像的后缓冲区,并使用对应的图形API渲染希望显示的右眼图像;
交换右眼图像的前缓冲区和后缓冲区,显示右眼图像;如果立体显示设备有需要,发送右眼显示切换信号。
上述图形API的左右眼图像渲染和显示过程中,左眼图像和右眼图像的操作顺序可以颠倒,即先处理右眼图像,再处理左眼图像。
另外,在例如Direct3D/DXGI中不会使用两个独立的左右眼图像后缓冲区,而是将左右眼图像一并存放在一个双倍宽度或双倍高度的后缓冲区,此时,在使用抓取API和应用系统的图形API时直接设置双眼图像缓冲区,然后渲染左眼和右眼的图像。
抓取单元在使用抓取API的方式抓取立体图形时,需要修改应用程序来调用抓取API,此种抓取方式需对应用程序做较小的修改,其兼容性较好,适用于OpenGL、Vulkan、Direct3D、DXGI API。
对于OpenGL和Vulkan API,图像渲染和抓取过程如下:
1.使用抓取API设置左眼图像后缓冲区,并在所述左眼图像后缓冲区中使用应用程序的图形API渲染希望显示的左眼图像;
2.使用抓取API设置右眼图像后缓冲区,并在所述右眼图像后缓冲区中使用应用程序的图形API渲染希望显示的右眼图像;
3.将所述渲染得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元。
上述图形API的左右眼图像渲染和显示过程中,左眼图像和右眼图像的操作顺序可以颠倒,即先处理右眼图像,再处理左眼图像,在下面将要描述的其他实施例中,同样如此,针对左眼图像和右眼图像的操作顺序并没有特别限定,先处理左眼图像或者先处理右眼图像都可以实现本发明的目的和技术效果。
对于Direct3D和DXGI API,图像渲染和抓取过程如下:
1.使用抓取API设置一个双眼图像后缓冲区,在所述双眼图像后缓冲区中使用应用程序的图形API渲染希望显示的左眼图像和右眼图像;
2.将所述渲染得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元。
抓取单元以通过截获应用程序中的现有图形API的方式进行抓取操作时,以通过API Hook进行截获的方式或通过操作系统中的设备驱动进行获取,在使用OpenGL、Vulkan、Direct3D、DXGI API时适用本抓取过程,使用API Hook进行截获操作或使用操作系统中的设备驱动获取的方法为现有技术,故不在赘述。
对于OpenGL和Vulkan API,图像渲染和抓取过程如下:
1.使用应用程序的图形API设置左眼图像后缓冲区,并在所述左眼图像后缓冲区中渲染希望显示的左眼图像;
2.使用应用程序的图形API设置右眼图像后缓冲区,并在所述右眼图像后缓冲区中渲染希望显示的右眼图像;
3.使用应用程序的图形API交换前缓冲区和后缓冲区,此时抓取单元截获此操作,将所述渲染得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元。
上述图形API的左右眼图像渲染和显示过程中,左眼图像和右眼图像的操作顺序可以颠倒,即先处理右眼图像,再处理左眼图像。
对于Direct3D和DXGI API,图像渲染和抓取过程如下:
1.使用应用程序的图形API设置一个双眼图像后缓冲区,并在所述双眼图像后缓冲区中渲染希望显示的左眼图像和右眼图像;
2.将所述渲染得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元。
上述方式属于懒惰拷贝模式,在交换缓冲区进行拷贝,在另一优选实施例中,还可以预先在使用图形API设置左右眼图像的后缓冲区时,拷贝图形API对应的左右眼后缓冲区,也就是预先拷贝模式,在使用OpenGL/Vulkan API时适用本抓取过程,即:
1.使用应用程序的图形API设置左眼图像后缓冲区,此时截获图形API,将右眼图像后缓冲区复制到临时缓冲区中,并使用应用程序的图形API渲染希望显示的左眼图像;
2.使用应用程序的图形API设置右眼图像后缓冲区,此时截获图形API,将左眼图像后缓冲区复制到临时缓冲区中,并使用应用程序的图形API渲染希望显示的右眼图像;
3.使用应用程序的图形API交换前缓冲区和后缓冲区的图像数据,抓取单元截获此操作,将所述临时缓冲区中渲染得到的左眼图像和右眼图像输出给传输单元。
上述图形API的左右眼图像渲染和显示过程中,左眼图像和右眼图像的显示可以颠倒,即先处理右眼图像,再处理左眼图像。
以上是抓取单元的三种抓取方式。本抓取单元的优点是:适用于常用的多种图形API,兼容性好,且渲染和抓取等过程在云端服务器完成,对本地设备要求较低。
在实际的应用场景中,应用通常以窗口化方式来展示立体图形。窗口化显示的处理方式和全屏化的处理方式不同。本发明的抓取单元准备将左眼图像和右眼图像交付给传输单元之前,需要针对窗口化和全屏化两种场景进行立体图像合成。
全屏化场景:全屏化场景的立体图像合成比较简单,抓取单元直接将左眼图像和右眼图像同时交付给传输单元,显示单元进行全屏显示即可。
窗口化场景:无论通过抓取API还是图形API Hook的方式获取到的左眼图像和右眼图像,在应用程序希望窗口化显示时,抓取单元需要借助云端的操作系统进行窗口合成,正确处理窗口间的遮挡关系。此时可通过如下三种方法处理:
方法1.修改操作系统的窗口合成器
如果操作系统开源,例如Linux发行版,可通过修改X11或Wayland及窗口合成器的代码(例如mutter、metacity),在应用程序希望显示立体图形的目标窗口合成时,分别使用获得的左眼图像、右眼图像进行合成,并得到针对左右眼的两个合成图像,此时将合成图像交付给传输单元。
方法2.Hook操作系统窗口合成器的窗口合成过程相关函数,导出窗口合成结果
方法2主要针对如Windows一类闭源操作系统,通过Hook操作系统的窗口合成器,如Windows的DWM,对窗口合成器分别输入获取的左右眼图像,得到合成图像并交付给传输单元。
方法3.通过云端操作系统的虚拟显示器传递窗口合成结果
方法3可提升对操作系统的兼容性,对于大多数操作系统都适用。抓取单元在应用程序希望显示立体图像时,获取到左眼图像和右眼图像,对左眼图像和右眼图像进行标记,便于后续过程中区分左右眼图像。标记方法可通过左眼图像和右眼图像的四个像素点,此时记录标记像素点在整个屏幕的坐标coord。像素通常是RGB格式,可将R分量置0表示左眼图像,R分量置255表示右眼图像;使用G分量的值来标明左右眼图像的序列号,方便后续过程保持左右眼图像的同步。左右眼图像标记后,抓取单元继续调用图形API的显示方法,例如OpenGL中的SwapBuffers方法和Direct3D中的Present方法,分别序列化交替显示标记后的左眼图像和右眼图像,此时操作系统的窗口合成器会分别在云端的虚拟显示器中交替显示合成图像。抓取单元进一步通过操作系统或图形API、GPUAPI进行合成图像的抓取,例如在Windows操作系统通过GDI、Direct3D、DXGI Desktop Duplication、NVIDIA NvFBC、AMDAPP SDK等方式抓取,Linux通过DMABUF、X11、Wayland、NVIDIA NvFBC等方式进行抓取。此时抓取单元可交替的抓取到标记后的合成图像,使用坐标coord定位标记像素,使用R分量确定左右眼图像,由于抓取方式不同,可能会漏抓某几帧合成图像,此时通过对左右眼图像标记像素的G分量的值确定对应的左右眼像素对,确保从操作系统抓取到的左右眼图像是同步的。此时抓取单元获取到正确的合成图像,交付给传输单元。
本系统的传输单元是对所述抓取单元获得的左、右眼图像进行编码和传输,主要包括编码装置和传输装置。
所述编码装置是使用图形处理器的硬件编码器或中央处理器的软件编码器,对左、右眼图像进行编码,可以使用MJPEG、H.264/AVC、H.265/HEVC、H.266/VVC、VP8、VP9等编码算法,亦可使用特定的自研编码算法。
所述传输装置是将编码后的图像通过以太网进行传输,可使用TCP和UDP协议或特定的自研网络协议,将编码后的图像传输给显示单元。
上述传输单元运行在云端服务器和本地服务器,用于将云端抓取的立体图形传输给本地的显示单元。
本系统的显示单元是对所述传输单元送达的左、右眼图像进行解码和显示,主要包括解码装置和显示装置。
所述解码装置是使用本地端的图形处理器的硬件解码器或本地端的中央处理器的软件解码器,对左、右眼的图像进行解码,解码时使用的算法需与传输单元的编码算法相对应。
所述显示装置是将解码后的图像发送给立体显示设备进行显示,形成立体视觉。
本发明可适用多种立体显示设备,如主动快门式、被动偏光式(单显示器)、被动偏光式(双显示器或双投影机)、被动色差式和裸眼式设备等,所述显示单元的显示过程针对不同的立体显示设备其显示方式不同。
在用于主动快门式立体显示设备时:先输出左眼图像到显示器或投影机,控制信号同步设备发送左眼图像同步信号到立体眼镜;再输出右眼图像到显示器或投影机,控制信号同步设备发送右眼图像同步信号到立体眼镜;上述左右眼切换输出显示和同步过程可颠倒,即先处理右眼图像,再处理左眼图像。
在用于被动偏光式(单显示器)立体显示设备时:将解码后的左右眼图像,调整为显示设备对应的行交错或列交错格式,即一行(列)显示左(右)眼图像的一行(列)像素,下一行(列)显示右(左)眼图像的一行(列)像素,然后输出到显示器,显示器的像素针对左右眼图像以行交错或列交错的方式分别显示,并发出正交偏振光;使用者或观察者佩戴偏振光立体眼镜,即感受到立体视觉。
在用于被动偏光式(双显示器或双投影机)立体显示设备时:将解码后的左右眼图像,一同分别输出到左右眼对应的显示器或投影机,即左眼图像输出到左眼显示器或投影机,右眼图像输出到右眼显示器或投影机;使用者或观察者佩戴偏振光立体眼镜,即感受到立体视觉。
双显示器或双投影机采取左右眼图像合成叠加的实施方式。左眼图像的显示器或投影机发出的光经过左眼起偏镜,转换为左眼偏振光,右眼图像的显示器或投影机发出的光经过右眼起偏镜,转换为右眼偏振光。左眼起偏镜和右眼起偏镜的偏振方向正交,从而左眼偏振光和右眼偏振光亦正交。
对于双显示器,左右眼的正交偏振光需要一并投射到显示合成片中,使用者或观察者佩戴偏振光立体眼镜,观看合成片合成后的立体图像。
对于双投影机,双投影机一同将图像投射到荧幕,使用者或观察者佩戴偏振光立体眼镜,观看荧幕合成后的立体图像。
在用于被动色差式立体显示设备时:将解码后的左右眼图像分别转换为互补色,如红和绿或红和蓝。例如左眼转换为红色调,有眼转换为绿色调;使用者或观察者佩戴对应的色差立体眼镜,即感受到立体视觉。
在用于裸眼式立体显示设备时:将解码后的左右眼图像,调整为裸眼立体显示设备对应的行交错或列交错格式,再输出给裸眼立体显示器;有的裸眼立体显示设备格式为左右格式或上下格式,显示单元相应调整为对应的左右格式或上下格式输出给显示设备;使用者或观察者裸眼直接观看显示器,即感受到立体视觉。
上述显示单元运行在本地服务器,用于接收传输单元传输的立体图形并进行显示,本显示单元可使得立体图形在多种显示设备上显示。
如图2所示,为本发明的一种基于云服务的远程立体图形生成系统的详细流程图:
在使用抓取API抓取立体图形时,本系统的详细流程为:
对于应用程序A,本系统提供抓取API,使用例如zvapi_3d_set_fb接口分别设置左眼和右眼的后缓冲区并对图像进行渲染,然后使用例如zvapi_3d_present()接口将立体图形在本地进行显示,抓取单元获得后台缓冲区的图像数据,将其拷贝到临时缓冲区,临时缓冲区将立体图形交付到传输单元;
例如在OpenGL图形API环境中,抓取API在初始化时,内部创建左眼和右眼的临时缓冲区,使用OpenGL的FBO(Frame Buffer Object)机制。在这里定义左眼的后缓冲区为lFBO,右眼的后缓冲区为rFBO。应用程序首先使用zvapi_3d_set_fb设置左眼的后缓冲区,抓取API会通过OpenGL中的glBindFramebufferEXT和glDrawBuffer接口,将lFBO设置为实际生效的后缓冲区,应用程序随后将左眼图像渲染到lFBO中。然后应用程序使用zvapi_3d_set_fb设置右眼的后缓冲区,抓取API会通过glBindFramebufferEXT和glDrawBuffer接口,将rFBO设置为实际生效的后缓冲区。此时经过一轮渲染过程,lFBO和rFBO中存放的即为应用程序针对左右眼图像的渲染结果。进行立体图形显示时,应用程序希望显示这一组立体图像时,使用zvapi_3d_present接口,抓取API会将抓取单元中的lFBO和rFBO交付给传输单元,从而完成后续在本地显示单元中的立体图形显示。
在另一实施例中,针对Direct3D图形API环境,抓取API在初始化时,内部创建双倍宽度的Surface平面,将其记作bSurface。应用程序使用zvapi_3d_set_fb时,传递应用程序的渲染目标rSurface,可能为RenderTarget或离屏的Surface平面。此时抓取API记录rSurface供后续流程使用。应用程序渲染完毕左眼图像和右眼的图像时,调用zvapi_3d_present接口进行立体图像显示。此时抓取API将rSurface的内容拷贝到bSurface,从而交付给传输单元,完成后续在本地显示单元中的立体图形显示。
传输单元首先使用编码器对立体图形进行编码,然后通过以太网传输编码后的立体图形,在编码时可使用H.264、H.265等公开编码算法,亦可使用特定的自研编码算法;
显示单元在本地接受传输单元发送的立体图形,使用解码器对立体图形进行解码,并将解码后的图像传输到立体显示设备,控制立体显示设备进行立体图形显示,显示单元的解码器需与传输单元的编码算法相互匹配,本显示单元可支持主动式快门、被动偏光式、被动色差式和裸眼式等多种立体显示设备。
在使用截获应用程序中的现有图形API的方式进行抓取操作,且拷贝模式为懒惰拷贝模式时,本系统的详细流程为:
对于应用程序B(使用OpenGL或VulkanAPI),首先用glDrawBuffer(GL_BACK_LEFT)设置左眼的后缓冲区并进行渲染,然后用glDrawBuffer(GL_BACK_RIGHT)设置右眼的后缓冲区并进行渲染,最后使用SwapBuffers()显示立体图形,上述流程也可首先设置右眼的后缓冲区进行渲染与拷贝,再设置左眼的后缓冲区进行渲染与拷贝,抓取单元通过截获API调用的方式截获SwapBuffers,拷贝后缓冲区的左眼和右眼数据到临时缓冲区,缓冲区将立体图形交付到传输单元;
传输单元首先使用编码器对立体图形进行编码,然后通过以太网传输编码后的立体图形,在编码时可使用H.264、H.265等公开编码算法,亦可使用特定的自研编码算法;
显示单元在本地接受传输单元发送的立体图形,使用解码器对立体图形进行解码,并将解码后的图像传输到立体显示设备,控制立体显示设备进行立体图形显示,显示单元的解码器需与传输单元的编码算法相互匹配,本显示单元可支持主动式快门、被动偏光式、被动色差式和裸眼式等多种立体显示设备。
对于应用程序B(使用D3D或DXGI API),首先用CreateSwapChain()设置立体标志,使用SetRenderTarget设置渲染目标,使用应用系统的图形API-StretchRect将渲染目标拷贝到后缓冲区,然后使用Present()显示立体图形,抓取单元通过截获API调用的方式截获Present,拷贝后缓冲区的左眼和右眼数据到临时缓冲区,缓冲区将立体图形交付到传输单元;
传输单元首先使用编码器对立体图形进行编码,然后通过以太网传输编码后的立体图形,在编码时可使用H.264、H.265等公开编码算法,亦可使用特定的自研编码算法;
显示单元在本地接受传输单元发送的立体图形,使用解码器对立体图形进行解码,并将解码后的图像传输到立体显示设备,控制立体显示设备进行立体图形显示,显示单元的解码器需与传输单元的编码算法相互匹配,本显示单元可支持主动式快门、被动偏光式、被动色差式和裸眼式等多种立体显示设备。
在使用截获应用程序中的现有图形API的方式进行抓取操作,且拷贝模式为预先拷贝模式时,本系统的详细流程为:
对于应用程序C(使用OpenGL或Vulkan API),首先用glDrawBuffer(GL_BACK_LEFT)设置左眼的后缓冲区并进行渲染,然后用glDrawBuffer(GL_BACK_RIGHT)设置右眼的后缓冲区并进行渲染,最后使用SwapBuffers()显示立体图形,抓取单元截获glDrawBuffer,即在设置GL_BACK_LEFT时拷贝右眼的缓冲区数据,在设置GL_BACK_RIGHT时拷贝左眼的缓冲区数据,将拷贝的图像数据放至临时缓冲区,抓取单元截获SwapBuffers,在应用程序调用SwapBuffers时,将缓冲区中立体图形交付到传输单元,上述流程也可首先设置右眼的后缓冲区进行渲染与拷贝,再设置左眼的后缓冲区进行渲染与拷贝;
传输单元首先使用编码器对立体图形进行编码,然后通过以太网传输编码后的立体图形,在编码时可使用H.264、H.265等公开编码算法,亦可使用特定的自研编码算法;
显示单元在本地接受传输单元发送的立体图形,使用解码器对立体图形进行解码,并将解码后的图像传输到立体显示设备,控制立体显示设备进行立体图形显示,显示单元的解码器需与传输单元的编码算法相互匹配,本显示单元可支持主动式快门、被动偏光式、被动色差式和裸眼式等多种立体显示设备。
需要说明的是,上述实施例中抓取单元的各个接口的名称仅为说明本系统的流程而使用,如zvapi_3d_set_fb()、zvapi_3d_present()、glDrawBuffer(GL_BACK_LEFT)、glDrawBuffer(GL_BACK_RIGHT)、SwapBuffers()等,非固定名称,在实际使用过程中,若接口起到的实质性作用与本系统接口的功能内容相同皆在在本发明的保护范围内。
如图3所示,本发明还提供一种基于云服务的远程立体图形生成的方法,包括:
S1:在云端抓取立体图形,并完成左眼图像和右眼图像的渲染;
S2:对上述抓取并渲染的左眼图像和右眼图像进行编码操作,并传输给显示单元;
S3:对接收的左眼图像和右眼图像进行解码操作,生成与显示立体图形后发送给立体显示设备进行显示。
具体的实现方法已在上述对应系统中的各个实施例中详细描述,该系统的各个实施例均可以对应实现为远程立体图形生成方法,故在此不再作详细地描述说明。
本发明实现了在虚拟桌面架构中显示立体视觉,使得需要立体图形显示的行业应用可以受益于虚拟桌面架构,解决了本地立体视觉将计算资源放置于本地的问题,本地只需很小的瘦客户端设备即可驱动立体显示设备实现立体视觉,大大提升桌面端的使用感。
另外,对于数据量较大的GIS地理信息系统行业,本发明使得数据交换通路变短,工作效率和流程得到显著提升,作业精确度明显提高,使得GIS地理信息系统行业应用全面上云,彻底云化。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (4)
1.一种基于云服务的远程立体图形生成系统,其特征在于,包括:
抓取单元,设置在云端,用于抓取立体图形,并完成左眼图像和右眼图像的渲染;所述抓取单元包括抓取API,用于执行以下操作:
使用所述抓取API设置左眼图像后缓冲区,并在所述左眼图像后缓冲区中使用应用程序的图形API渲染希望显示的左眼图像;
使用所述抓取API设置右眼图像后缓冲区,并在所述右眼图像后缓冲区中使用应用程序的图形API渲染希望显示的右眼图像;
应用程序窗口化显示立体图形,抓取单元通过修改操作系统的窗口合成器或Hook操作系统窗口合成器的窗口合成过程相关函数或通过云端操作系统的虚拟显示器传递窗口合成结果进行窗口合成操作;
将渲染并窗口合成得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元;
传输单元,用于将所述抓取单元渲染得到的左眼图像和右眼图像传输至显示单元;
显示单元,设置在本地,用于接收所述传输单元传输的左眼图像和右眼图像,并生成和显示立体图形。
2.一种基于云服务的远程立体图形生成系统,其特征在于,包括:
抓取单元,设置在云端,用于抓取立体图形,并完成左眼图像和右眼图像的渲染;所述抓取单元包括抓取API,用于执行以下操作:
使用所述抓取API设置一个双眼图像后缓冲区,在所述双眼图像后缓冲区中使用应用程序的图形API渲染希望显示的左眼图像和右眼图像;
应用程序窗口化显示立体图形,抓取单元通过修改操作系统的窗口合成器或Hook操作系统窗口合成器的窗口合成过程相关函数或通过云端操作系统的虚拟显示器传递窗口合成结果进行窗口合成操作;
将渲染并窗口合成得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元;
传输单元,用于将所述抓取单元渲染得到的左眼图像和右眼图像传输至显示单元;
显示单元,设置在本地,用于接收所述传输单元传输的左眼图像和右眼图像,并生成和显示立体图形。
3.一种基于云服务的远程立体图形生成系统,其特征在于,包括:
抓取单元,设置在云端,用于抓取立体图形,并完成左眼图像和右眼图像的渲染;所述抓取单元通过截获应用程序中的现有图形API的方式进行抓取操作,用于执行以下操作:
使用应用程序的图形API设置左眼图像后缓冲区,并在所述左眼图像后缓冲区中渲染希望显示的左眼图像;
使用应用程序的图形API设置右眼图像后缓冲区,并在所述右眼图像后缓冲区中渲染希望显示的右眼图像;
使用应用程序的图形API交换前缓冲区和后缓冲区,此时抓取单元截获此操作,将所述渲染得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元;
在应用程序希望窗口化显示立体图形时,抓取单元通过修改操作系统的窗口合成器或Hook操作系统窗口合成器的窗口合成过程相关函数或通过云端操作系统的虚拟显示器传递窗口合成结果进行窗口合成操作;
将渲染并窗口合成得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元;
传输单元,用于将所述抓取单元渲染得到的左眼图像和右眼图像传输至显示单元;
显示单元,设置在本地,用于接收所述传输单元传输的左眼图像和右眼图像,并生成和显示立体图形。
4.一种基于云服务的远程立体图形生成系统,其特征在于,包括:
抓取单元,设置在云端,用于抓取立体图形,并完成左眼图像和右眼图像的渲染;所述抓取单元通过截获应用程序中的现有图形API的方式进行抓取操作,用于执行以下操作:
使用应用程序的图形API设置一个双眼图像后缓冲区,并在所述双眼图像后缓冲区中渲染希望显示的左眼图像和右眼图像;
使用应用程序的图形API交换前缓冲区和后缓冲区,此时抓取单元截获此操作,将所述渲染得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元;
在应用程序希望窗口化显示立体图形时,抓取单元通过修改操作系统的窗口合成器或Hook操作系统窗口合成器的窗口合成过程相关函数或通过云端操作系统的虚拟显示器传递窗口合成结果进行窗口合成操作;
将渲染并窗口合成得到的左眼图像和右眼图像复制到临时缓冲区中,并输出给传输单元;
传输单元,用于将所述抓取单元渲染得到的左眼图像和右眼图像传输至显示单元;
显示单元,设置在本地,用于接收所述传输单元传输的左眼图像和右眼图像,并生成和显示立体图形。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010817071.6A CN111935471B (zh) | 2020-08-14 | 2020-08-14 | 基于云服务的远程立体图形生成系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010817071.6A CN111935471B (zh) | 2020-08-14 | 2020-08-14 | 基于云服务的远程立体图形生成系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111935471A CN111935471A (zh) | 2020-11-13 |
CN111935471B true CN111935471B (zh) | 2021-04-06 |
Family
ID=73310925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010817071.6A Active CN111935471B (zh) | 2020-08-14 | 2020-08-14 | 基于云服务的远程立体图形生成系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111935471B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101859580A (zh) * | 2009-04-03 | 2010-10-13 | 索尼公司 | 信息处理设备、信息处理方法和程序 |
CN102402462A (zh) * | 2010-09-30 | 2012-04-04 | 微软公司 | 用于对启用gpu的虚拟机进行负载平衡的技术 |
CN103679813A (zh) * | 2013-12-18 | 2014-03-26 | 深圳先进技术研究院 | 三维数字地球的构建方法以及三维数字地球系统 |
CN111443814A (zh) * | 2020-04-09 | 2020-07-24 | 深圳市瑞云科技有限公司 | 一种基于云渲染的ar眼镜系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8860785B2 (en) * | 2010-12-17 | 2014-10-14 | Microsoft Corporation | Stereo 3D video support in computing devices |
-
2020
- 2020-08-14 CN CN202010817071.6A patent/CN111935471B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101859580A (zh) * | 2009-04-03 | 2010-10-13 | 索尼公司 | 信息处理设备、信息处理方法和程序 |
CN102402462A (zh) * | 2010-09-30 | 2012-04-04 | 微软公司 | 用于对启用gpu的虚拟机进行负载平衡的技术 |
CN103679813A (zh) * | 2013-12-18 | 2014-03-26 | 深圳先进技术研究院 | 三维数字地球的构建方法以及三维数字地球系统 |
CN111443814A (zh) * | 2020-04-09 | 2020-07-24 | 深圳市瑞云科技有限公司 | 一种基于云渲染的ar眼镜系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111935471A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10839591B2 (en) | Stereoscopic rendering using raymarching and a virtual view broadcaster for such rendering | |
US8471898B2 (en) | Medial axis decomposition of 2D objects to synthesize binocular depth | |
US10497180B1 (en) | System and method for display of augmented reality | |
CA2896240C (en) | System and method for role-switching in multi-reality environments | |
US20170359571A1 (en) | Method, apparatus, and device for realizing virtual stereoscopic scene | |
US20090207167A1 (en) | Method and System for Remote Three-Dimensional Stereo Image Display | |
EP2248108A2 (en) | Non-linear depth rendering of stereoscopic animated images | |
CN115552451A (zh) | 用于增强现实的多层二次投影技术 | |
EP1782636A1 (en) | System and method for transferring video information | |
CN113099204A (zh) | 一种基于vr头戴显示设备的远程实景增强现实方法 | |
KR20110093828A (ko) | 3d 이미지 신호를 인코딩하기 위한 방법 및 시스템, 인코딩된 3d 이미지 신호, 3d 이미지 신호를 디코딩하기 위한 방법 및 시스템 | |
JP2008522270A (ja) | 単体三次元レンダリングの複合ビュー表示のためのシステムと方法 | |
CN107562185B (zh) | 一种基于头戴vr设备的光场显示系统及实现方法 | |
JP2009163724A (ja) | グラフィックスインターフェイス、グラフィックスデータをラスタ化する方法およびコンピュータ読み取り可能な記録媒体 | |
US20150179218A1 (en) | Novel transcoder and 3d video editor | |
WO2021110036A1 (zh) | 多视点3d显示屏、多视点3d显示设备 | |
CN102005062A (zh) | 用于三维立体显示的三维图像的产生方法及装置 | |
WO2012007867A1 (en) | Signaling for multiview 3d video | |
US20120062560A1 (en) | Stereoscopic three dimensional projection and display | |
CN111935471B (zh) | 基于云服务的远程立体图形生成系统及方法 | |
WO2011079393A1 (en) | Three-dimensional video display system with multi-stream sending/receiving operation | |
WO2022028684A1 (en) | Improved split rendering for extended reality (xr) applications | |
CN101520719B (zh) | 画面分享系统以及画面分享方法 | |
US20160094837A1 (en) | Distributed stereoscopic rendering for stereoscopic projecton and display | |
EP4254959A1 (en) | Computer-implemented method for generating augmented image data, computer-implemented streaming method, image streaming system, and augmented image data stream |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 430050 No. 1, 14 / F, HUAFA Siji phase II office building, No. 19, Meilin East Road, Hanyang District, Wuhan City, Hubei Province Patentee after: Wuhan zeta cloud Technology Co.,Ltd. Address before: 100041 room a-0572, 2nd floor, building 3, yard 30, Shixing street, Shijingshan District, Beijing Patentee before: BEIJING ZETTAKIT TECHNOLOGY Co.,Ltd. |
|
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Zha Qian Inventor after: Fan Wenyi Inventor before: Fan Wenyi |