图像处理方法和服务器与流程

文档序号:24061865发布日期:2021-02-26 16:57阅读:148来源:国知局
图像处理方法和服务器与流程

[0001]
本公开涉及图像处理领域,尤其涉及一种图像处理方法和服务器。


背景技术:

[0002]
在云服务系统中,服务器可以将虚拟机(virtual machine,vm)生成的桌面图像进行编码后通过网络发送给终端设备,终端设备解码并且显示该虚拟桌面图像。
[0003]
一般情况下,服务器的图形处理器(graphic processing unit,gpu)用于对vm生成的桌面图像进行采集并将采集的虚拟桌面图像存储在gpu对应的存储器中。gpu可以位于显卡中。显卡对应的存储器为显存中,即显卡的缓存。
[0004]
cpu可以将存储在gpu对应的存储器中的桌面图像拷贝至cpu对应的内存。之后,cpu对桌面图像进行编码,并将编码得到的桌面图像发送至终端设备。
[0005]
将gpu对应的存储器中存储的桌面图像拷贝至cpu的内存,需要较长的时间,严重影响终端设备显示的桌面图像的帧率。


技术实现要素:

[0006]
本公开实施例提供一种图像处理方法及装置,能够解决云服务系统中服务器采集桌面图像到发送桌面图像所需时间较长的问题。技术方案如下:
[0007]
根据本公开实施例的第一方面,提供一种图像处理方法,应用于服务器,所述服务器包括图像处理器gpu,所述方法包括:所述gpu采集桌面图像;所述gpu对所述桌面图像进行编码,以得到桌面数据,所述桌面数据用于传输至终端设备。
[0008]
通过服务器中的gpu进行桌面图像的采集和编码,能够有效降低图像处理所需的时间,提高桌面图像的帧率。
[0009]
与gpu采集桌面图像,cpu进行桌面图像的方式相比,通过服务器中的gpu进行桌面图像的采集和编码,一方面可以减少从gpu对应的存储器需要拷贝的数据量,从而减少图像处理时间;另一方面,减少对cpu资源的占用,充分利用gpu的并行处理数据的性能,从而减少图像处理时间。
[0010]
在一些实施例中,所述服务器还包括cpu,所述桌面数据存储在所述 gpu对应的存储器中,所述方法还包括:所述cpu将所述桌面数据从所述 gpu对应的存储器拷贝至所述cpu对应的存储器;所述cpu向所述终端设备发送所述cpu对应的存储器中存储的所述桌面数据。
[0011]
在对gpu对应的存储器存储的桌面数据进行传输时,可以由cpu将所述桌面数据拷贝至cpu对应的存储器,之后由cpu向终端设备发送存储于 cpu对应的存储器中的桌面数据。
[0012]
通过cpu调用服务器的通信接口实现与终端设备的数据传输,是一种更简便的数据传输方式。
[0013]
在一些实施例中,所述gpu对所述桌面图像进行编码,包括:所述gpu 对采集的红
绿蓝rgb格式的桌面图像进行编码。
[0014]
一般情况下,gpu采集的桌面图像的格式是rgb格式,rgb对rgb 格式的桌面图像进行编码,无需对桌面图像的格式进行转换,提高编码效率。
[0015]
在一些实施例中,所述gpu对所述桌面图像进行编码,包括:所述gpu 对采集的桌面图像进行格式的转换;所述gpu将格式转换后的桌面图像进行编码。
[0016]
也就是说,gpu也可以对采集的桌面图像进行格式的转换,并对格式转换后的桌面图像进行编码。
[0017]
是否对桌面图像进行格式的转换,可以根据编码方式确定。例如,h264 编码方式不支持对rgb格式的图像进行编码,而h265编码方式支持对rgb 格式的图像进行编码。
[0018]
也就是说,为了减小图像处理的时间,gpu可以选择支持对rgb格式的图像进行编码的编码方式,或者,可以对gpu进行设置以使得gpu采用选择支持对rgb格式的图像进行编码的编码方式。
[0019]
在一些实施例中,所述方法还包括:当完成对一个所述桌面图像的编码时,所述gpu对获取的至少一个所述桌面图像中的待编码图像进行编码。
[0020]
与完成对一个桌面图像的编码时,开始采集下一帧桌面图像并在采集后进行编码的方式相比,通过在完成对一个桌面图像的编码时,开始对已经获取的其他桌面图像进行编码,使得桌面图像的采集和桌面图像的编码互不干扰,并行进行,减小了图像处理的时间,能够提高桌面图像的帧率,提高用户体验。
[0021]
在一些实施例中,所述gpu采集桌面图像,包括:每经过预设时间间隔,所述gpu进行一次所述桌面图像的采集。
[0022]
每经过预设时间间隔处理器采集一个桌面图像,是一种使得桌面图像的采集与桌面图像的编码相互解耦,互不干扰的方式。
[0023]
第二方面,提供一种服务器,包括:存储模块和图像处理器gpu;所述存储模块用于存储程序;
[0024]
当所述程序在所述gpu中运行时,所述gpu用于:采集桌面图像;对所述桌面图像进行编码,以得到桌面数据,所述桌面数据用于传输至终端设备。
[0025]
通过服务器中的gpu进行桌面图像的采集和编码,能够有效降低图像处理所需的时间,提高桌面图像的帧率。
[0026]
与gpu采集桌面图像,cpu进行桌面图像的方式相比,通过服务器中的gpu进行桌面图像的采集和编码,一方面可以减少从gpu对应的存储器需要拷贝的数据量,从而减少图像处理时间;另一方面,减少对cpu资源的占用,充分利用gpu的并行处理数据的性能,从而减少图像处理时间。
[0027]
在一些实施例中,所述服务器还包括cpu,所述桌面数据存储在所述 gpu对应的存储器中,所述cpu用于,将所述桌面数据从所述gpu对应的存储器拷贝至所述cpu对应的存储器;所述cpu还用于,向所述终端设备发送所述cpu对应的存储器中存储的所述桌面数据。
[0028]
在对gpu对应的存储器存储的桌面数据进行传输时,可以由cpu将所述桌面数据拷贝至cpu对应的存储器,之后由cpu向终端设备发送存储于cpu对应的存储器中的桌面数据。
[0029]
通过cpu调用服务器的通信接口实现与终端设备的数据传输,是一种更简便的数据传输方式。
[0030]
在一些实施例中,所述gpu还用于,对采集得到的红绿蓝rgb格式的桌面图像进行编码。
[0031]
一般情况下,gpu采集的桌面图像的格式是rgb格式,rgb对rgb 格式的桌面图像进行编码,无需对桌面图像的格式进行转换,提高编码效率。
[0032]
在一些实施例中,所述gpu对所述桌面图像进行编码,包括:所述gpu 对采集的桌面图像进行格式的转换;所述gpu将格式转换后的桌面图像进行编码。
[0033]
也就是说,gpu也可以对采集的桌面图像进行格式的转换,并对格式转换后的桌面图像进行编码。
[0034]
是否对桌面图像进行格式的转换,可以根据编码方式确定。例如,h264 编码方式不支持对rgb格式的图像进行编码,而h265编码方式支持对rgb 格式的图像进行编码。
[0035]
也就是说,为了减小图像处理的时间,gpu可以选择支持对rgb格式的图像进行编码的编码方式,或者,可以对gpu进行设置以使得gpu采用选择支持对rgb格式的图像进行编码的编码方式。
[0036]
在一些实施例中,所述gpu还用于,当完成对一个所述桌面图像的编码时,获取的至少一个所述桌面图像中的待编码图像进行编码。
[0037]
与完成对一个桌面图像的编码时,开始采集下一帧桌面图像并在采集后进行编码的方式相比,通过在完成对一个桌面图像的编码时,开始对已经获取的其他桌面图像进行编码,使得桌面图像的采集和桌面图像的编码互不干扰,并行进行,减小了图像处理的时间,能够提高桌面图像的帧率,提高用户体验。
[0038]
在一些实施例中,所述gpu还用于,每经过预设时间间隔,所述gpu 进行一次所述桌面图像的采集。
[0039]
每经过预设时间间隔处理器采集一个桌面图像,是一种使得桌面图像的采集与桌面图像的编码相互解耦,互不干扰的方式。
[0040]
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
[0041]
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0042]
图1是本公开实施例提供的一种云服务系统的示意图;
[0043]
图2是本公开实施例提供的一种图像处理方法的流程图;
[0044]
图3是本公开实施例提供的另一种图像处理方法的交互图;
[0045]
图4是本公开实施例提供的又一种图像处理方法的示意性流程图;
[0046]
图5是本公开实施例提供的又一种图像处理方法的示意性流程图;
[0047]
图6是本公开实施例提供一种图像处理设备的结构图。
[0048]
图7是本申请实施例提供的另一种图像处理设备的结构图。
具体实施方式
[0049]
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及
附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0050]
为便于理解本公开实施例,首先以图1为例详细说明适用于本公开实施例的云服务系统。云服务系统也可以称为虚拟图像传输系统或图传系统等。图1是云服务系统的示意图。
[0051]
图1所示的云服务系统中包括终端设备11和服务器12,终端设备11与用户相对应,即用户可以在终端设备11上进行相应的操作。终端设备11例如可以是计算机、手机、平板电脑、笔记本电脑、电视机机顶盒、个人数字处理(personal digital assistant,pda)、车载设备、可穿戴设备或物联网、车联网中的终端设备等。本公开实施例对图像传输系统所包括的终端设备11 的数量不做限定,例如可以为1个、2个或者更多个。服务器12可以是单个服务器,也可以是服务器集群。终端设备11也可以称为虚拟图像传输协议 (virtual graph transmission protocol,vgtp)接收端。服务器12也可以称为虚拟桌面服务器(virtual desktop server)。终端设备11与服务器12之间的数据传输可以基于局域网或广域网等。
[0052]
终端设备11与服务器12建立远程桌面连接,终端设备11接收用户相应操作(例如通过键盘、鼠标或者触摸屏的输入),并将操作信息传输至服务器12。
[0053]
服务器12中运行有多个虚拟机(virtual machine,vm),每个虚拟机可以对应于一个终端设备。服务器12将终端设备11发送的操作信息发送至对应的vm,该vm进行处理得到相应的虚拟桌面图像。服务器采集vm生成的虚拟桌面图像,并对虚拟桌面图像进行编码,之后通过网络传输给终端设备11。终端设备11对编码后的虚拟图像进行解码、恢复,之后进行显示。该虚拟图像可以是虚拟桌面图像。
[0054]
服务器的图形处理器(graphic processing unit,gpu)用于对vm生成的桌面图像进行采集并将采集的虚拟桌面图像存储在gpu对应的存储器中。 gpu可以位于显卡中。显卡对应的存储器为显存中,即显卡的缓存。
[0055]
cpu可以将存储在gpu对应的存储器中的桌面图像拷贝至cpu对应的内存。之后,cpu对桌面图像进行编码,并将编码得到的桌面图像发送至终端设备。
[0056]
将gpu对应的存储器中存储的桌面图像拷贝至cpu的内存,需要较长的时间,严重影响终端设备显示的桌面图像的帧率。
[0057]
为了解决上述问题,本公开实施例提供了一种图像处理方法。
[0058]
本公开实施例提供一种图像处理方法,如图2所示。该图像处理方法200 可以由终端设备11执行。终端设备用于显示所述服务器生成的图像。
[0059]
该图像处理方法应用于服务器,该服务器包括gpu,该图像处理方法包括步骤210至步骤220。
[0060]
210、gpu采集桌面图像。
[0061]
图形处理器可以是显卡中的处理器。
[0062]
显卡(英文可以称为video card、display card、graphics card或video adapter 等)是计算机的组成部分之一。显卡用于将计算机系统需要的显示信息进行转换,从而能够驱动显示器,并向显示器提供逐行或隔行扫描信号,控制显示器的正确显示。显卡是连接显示器和计算机主板的重要组件,是“人机”的重要设备之一,其内置的并行计算能力现阶段
也用于深度学习等运算。
[0063]
显示中的处理器是显卡的主要处理单元,又称为图形处理器。
[0064]
220、gpu对所述桌面图像进行编码,以得到桌面数据,所述桌面数据用于传输至终端设备。
[0065]
桌面数据可以用于存储或传输。也就是说,图2所示的图像处理方法,可以应用在云服务系统中,服务器可以执行步骤210至步骤220。
[0066]
gpu对应的存储器可以将桌面数据发送至cpu对应的存储器。当然,桌面数据从gpu对应的存储器中的拷贝可以由cpu控制,也可以由其他处理器控制。
[0067]
所述桌面数据存储在所述gpu对应的存储器中。服务器还可以包括 cpu。cpu可以将所述桌面数据从所述gpu对应的存储器拷贝至所述cpu 对应的存储器。cpu可以向终端设备发送所述cpu对应的存储器中存储的所述桌面数据。
[0068]
cpu将所述桌面数据从gpu对应的存储器拷贝至cpu对应的存储器,可以理解为,cpu控制桌面数据从gpu对应的存储器拷贝至cpu对应的存储器的拷贝。
[0069]
当然,也可以由其他处理器控制桌面数据从gpu对应的存储器的拷贝和转发。
[0070]
在对gpu对应的存储器存储的桌面数据进行传输时,可以由cpu将所述桌面数据拷贝至cpu对应的存储器,之后由cpu向终端设备发送存储于 cpu对应的存储器中的桌面数据。
[0071]
通过cpu调用服务器的通信接口实现与终端设备的数据传输,是一种更简便的数据传输方式。
[0072]
终端设备可以对接收的数据进行解码仪还原桌面图像,并通过显示器显示还原的桌面图像。
[0073]
gpu可以对采集的桌面图像进行格式的转换,并对格式转换后的桌面图像进行编码。
[0074]
gpu也可以对采集的红绿蓝rgb格式的桌面图像进行编码。
[0075]
一般情况下,gpu采集的桌面图像的格式是rgb格式,rgb对rgb 格式的桌面图像进行编码,无需对桌面图像的格式进行转换,提高编码效率。
[0076]
是否对桌面图像进行格式的转换,可以根据编码方式确定。例如,h264 编码方式不支持对rgb格式的图像进行编码,而h265编码方式支持对rgb 格式的图像进行编码。
[0077]
也就是说,为了减小图像处理的时间,gpu可以选择支持对rgb格式的图像进行编码的编码方式,或者,可以对gpu进行设置以使得gpu采用选择支持对rgb格式的图像进行编码的编码方式。
[0078]
gpu可以在完成对一个桌面图像的编码时,开始采集下一帧桌面图像并在采集后进行编码。
[0079]
或者,当完成对一个所述桌面图像的编码时,gpu可以对获取的至少一个所述桌面图像中的待编码图像进行编码。
[0080]
与完成对一个桌面图像的编码时,开始采集下一帧桌面图像并在采集后进行编码的方式相比,通过在完成对一个桌面图像的编码时,开始对已经获取的其他桌面图像进行编码,使得桌面图像的采集和桌面图像的编码互不干扰,并行进行,减小了图像处理的时间,能够提高桌面图像的帧率,提高用户体验。
[0081]
每经过预设时间间隔,gpu可以进行一次所述桌面图像的采集。
[0082]
每经过预设时间间隔处理器采集一个桌面图像,是一种使得桌面图像的采集与桌面图像的编码相互解耦,互不干扰的方式。
[0083]
不同的预设时间间隔的长度可以对应于不同情况下对帧率的需求。也就是说,预设时间间隔可以是根据当前所需的帧率确定的。从而使得预设时间间隔的长度设置更加灵活。
[0084]
当积压桌面图像的数量大于或等于预设值时,所述处理器丢弃所述积压桌面图像中获取时间最早的一个或多个所述积压桌面图像,所述积压桌面图像为所述处理器已经获取且未进行或未完成编码的所述桌面图像。
[0085]
当积压桌面图像的数量较多时,丢弃其中采集时间较早的桌面图像,使得处理器的处理能力受限的情况下,编码后的桌面图像能够反映vm等桌面图像生成装置最新生成的桌面图像的情况,提高用户体验。
[0086]
对积压桌面图像的丢弃,可以通过对积压桌面图像的数量的周期性检测进行。但是检测周期的确定较为困难。检测周期过长,可能导致在进行检测之前已经存在较为严重的桌面图像的积压。检测时间过短,将会增加处理器的负担。
[0087]
优选地,积压桌面图像的丢弃可以在完成对一个所述桌面图像的编码并且在对获取的至少一个桌面图像中的待编码图像进行编码之前进行,从而使得当前的编码得到的桌面数据与vm或其他生成桌面图像的设备当前生成的桌面图像的时间差较小,提高用户体验。
[0088]
cpu理论上是单核心的,因此一般采用串行的方式进行计算。在完成当前帧桌面图像的编码后,cpu向gpu发送采集指令,该采集指令用于指示 gpu采集下一帧桌面图像。cpu将下一帧桌面图像从gpu对应的存储器中拷贝至cpu对应的内存,之后,对该下一帧桌面图像进行编码。
[0089]
gpu例如可以是显卡中的处理器。
[0090]
显卡(英文可以称为video card、display card、graphics card或video adapter 等)是计算机的组成部分之一。显卡用于将计算机系统需要的显示信息进行转换,从而能够驱动显示器,并向显示器提供逐行或隔行扫描信号,控制显示器的正确显示。显卡是连接显示器和计算机主板的重要组件,是“人机”的重要设备之一,其内置的并行计算能力现阶段也用于深度学习等运算。
[0091]
显卡可以用于用户采集vm等装置生成的桌面图像。
[0092]
与gpu采集桌面图像,cpu进行桌面图像的方式相比,通过gpu进行桌面图像的采集和编码,一方面可以减少从gpu对应的存储器需要拷贝的数据量,从而减少图像处理时间;另一方面,减少对cpu资源的占用,充分利用gpu的并行处理数据的性能,从而减少图像处理时间。
[0093]
本公开实施例提供的图像处理方法,通过步骤210至步骤220,服务器中的gpu进行桌面图像的采集和编码,能够有效降低图像处理所需的时间,提高桌面图像的帧率。
[0094]
基于上述图2对应的实施例提供的图像处理方法,本公开另一实施例提供一种图像处理方法,该方法可以应用于云服务系统。服务器包括gpu、gpu 对应的存储器、cpu、cpu对应的存储器。每个处理器对应的存储器中,可以存储该处理器的待处理数据,也可以存储
该处理器的数据处理结果。
[0095]
参照图3所示,本实施例提供的图像处理方法包括以下步骤301至步骤 304。
[0096]
gpu对应的存储器可以包括多个存储单元。在图像处理的过程中,每个存储器理解为在采集队列和编码队列之间移动。当存储单元的状态为空闲,即该存储单元中未存储有效的桌面图像时,该存储单元位于采集队列中。
[0097]
如图4中的(a)所示,在初始时刻t0,存储单元1-4均为空闲状态,且均位于采集队列中。
[0098]
gpu可以是显存中的处理器,gpu对应的存储器可以是显存。
[0099]
301、gpu中的采集模块每经过预设时间间隔采集一次桌面图像,采集的桌面图像存储在空闲的存储单元中。
[0100]
应当理解,桌面图像可以是服务器中的vm中的操作系统生成的,也可以是个人计算机中的操作系统生成的。操作系统可以是视窗(windows)操作系统,例如win7、win10等。
[0101]
gpu中的采集模块可以基于快速截屏录屏(directx graphicsinfrastructure,dxgi)技术对桌面图像进行采集。
[0102]
gpu中的采集模块可以将每次采集到的桌面图像存储在一个存储单元中。
[0103]
具体地,gpu中的采集模块可以判断该多个存储单元中是否存在状态为空闲的存储单元。之后,gpu中的采集模块可以将采集的桌面图像存储在状态为空闲的存储单元中,并将该存储单元的状态更新为占用。
[0104]
如图4中的(b)所示,在时刻t1,gpu中的采集模块采集的桌面图像存储在存储单元1,存储单元1的状态为占用,其他存储单元的状态依然为空闲,存储单元1-4均位于采集队列中。
[0105]
需要说明的是,gpu对应的存储器还可以包括等待区域。当前采集队列中存在状态为空闲的存储容器时,可以将该桌面图像存储到采集队列中状态为空闲的存储容器。而当前采集队列中不存在状态为空闲的存储容器时,可以先将采集到的桌面图像存储在gpu对应存储器的等待区域中,直到采集队列中出现状态为空闲的存储单元,可以将等待区域中的桌面图像存储到空闲状态的存储单元中。
[0106]
等待区域、存储单元1-4可以均为预设的。存储单元的数量可以根据gpu 中编码模块的处理能力来确定。当采集模块按照预设时间间隔采集桌面图像时,编码模块的处理能够较强,存储单元的数量可以适当增多;反之,编码模块的处理能力较差,存储单元的数量可以适当减少。
[0107]
302、gpu中的采集模块将占用状态的存储单元移动到编码队列中。
[0108]
gpu中的采集模块可以判断采集队列中是否存在状态为占用的存储单元。如果采集队列中存在状态为占用的存储单元,则将该存储单元移动到编码队列中。
[0109]
如图4中的(c)所示,gpu中的采集模块可以将存储单元1移动到编码队列中。
[0110]
在完成步骤301并经过预设时间间隔时,采集单元可以再次进行桌面图像的采集,采集得到的桌面图像可以存储在空闲的存储单元2,并将存储单元2的状态更新为占用,将存储单元2移动到编码队列中。
[0111]
应当理解,gpu中的采集模块可以实时检测采集队列中是否存在状态为占用的存储单元。从而及时将状态为占用的存储单元移动至编码队列中。因此,当完成对桌面图像的
存储,就可以将存储该桌面图像的存储单元移动至编码队列。
[0112]
当然,gpu中的采集模块可以按照一定周期,对采集队列中的存储单元的状态进行检测。在桌面图像的帧率较高的情况下,gpu中的采集模块检测是否存在状态为占用的存储单元的检测周期可能大于采集桌面图像的预设时间间隔。当采集周期大于该预设时间间隔,可能出现采集模块同时将采集队列中多个状态为占用的存储容器移动到编码队列的现象。
[0113]
303、gpu中的编码模块判断编码队列中是否存在存储单元。
[0114]
当编码队列中存在存储单元时,进行步骤304;当编码队列中不存在存储单元时,重新进行步骤303。
[0115]
在初始时刻t0,编码队列中不存在存储单元。当编码队列中出现存储单元时,采集模块已经采集到桌面图像,编码模块可以开始对该桌面图像进行编码处理。
[0116]
304、gpu中的编码模块判断编码队列中存储单元的数量是否大于或等于预设值。
[0117]
当编码队列中存储单元的数量大于或等于预设值时,进行步骤305;当编码队列中存储单元的数量小于预设值时,进行步骤306。
[0118]
该预设值用于确定已采集但尚未进行编码的桌面图像的数量是否在合理范围内。
[0119]
当存储单元的数量大于或等于预设值时,可以认为已采集但尚未进行编码的桌面图像的积攒过多。为了避免出现由于桌面图像积攒过多导致的终端设备显示的桌面图像更新不及时等影响用户体验的情况出现,可以丢弃部分过时的桌面图像。
[0120]
305、gpu中的编码模块丢弃编码队列中最早接收到的一个或多个存储单元中的桌面图像,将丢弃数据后的存储单元状态更新为空闲,并移动至采集队列。最早接收到的存储单元中,存储有采集时间最早的桌面图像,也就是说最早接收到的存储单元中存储的桌面图像的存储时间最长。
[0121]
在一些实施例中,编码模块可以将编码队列中的多个存储单元中,除最晚移动到编码队列的一个存储单元以外的其他存储单元均清空,并将清空后的存储单元的状态更新为空闲,将更新状态后的存储容器移动至采集队列。
[0122]
在本步骤中,当编码队列中的存储单元的数量不在合理范围内时,为了保证终端设备能够及时显示最新的桌面图像,编码模块可以将编码队列中的多个存储单元中的桌面图像丢弃,不再对这些桌面图数据进行编码,而只对采集时间最晚的桌面图像进行编码处理,从而使得终端设备能够及时接收并显示桌面图像。
[0123]
当存储单元1-4中的三个或三个以上的存储单元位于编码队列中,可以将除最晚移动到编码队列的一个存储单元以外的其他存储单元中存储的数据均丢弃。如图4中的(e)所示,存储单元1-4均位于编码队列中,存储单元 4中为最晚移动到编码队列的存储单元。如图4中的(f)所示,可以将存储单元1-3中的桌面图像丢弃,将存储单元1-3的状态更新为空闲,将存储单元1-3移动至采集队列。
[0124]
在步骤305之后,可以进行步骤306。
[0125]
306、gpu中的编码模块选取编码队列中最早接收到的存储单元中的桌面图像进行编码处理,生成桌面数据,并清空该存储单元,将该存储容器的状态更新为空闲,将该存储容器移动至采集队列。
[0126]
也就是说,当编码队列中的存储单元的数量在合理范围内时,gpu中的编码模块可
以按照接收的时间先后顺序,对存储单元中的桌面图像进行编码处理。
[0127]
可以在对存储单元中桌面图像的编码处理完成之后,gpu中的编码模块可以清空该存储单元,将存储单元的状态更新为空闲;再将该存储容器发送回采集队列。
[0128]
通过将编码完成的桌面图像对应的存储单元状态更新为空闲并移动至采集队列,gpu中的采集模块可以将新采集到的桌面图像存储在该存储单元中。
[0129]
如图4中的(d)所示,存储单元2已经移动至编码队列并且存储单元2 中的桌面图像正在进行编码。对存储单元1中的桌面图像编码完成后,可以清空存储单元1,将存储单元1的状态设置为空闲,并将存储单元1移动至采集队列。
[0130]
307、服务器向终端设备发送桌面数据。
[0131]
终端设备的解码器对接收的桌面数据进行解码,还原桌面图像。终端设备通过显示设备显示还原的桌面图像。
[0132]
cpu理论上是单核心的,因此一般采用串行的方式进行计算。近年出了多核cpu,即使是多核cpu并行度依然较低。而gpu提供了多核并行计算的基础结构,且核心数非常多,可以支撑大量并行计算。并且与cpu相比, gpu拥有更高的访存速度和更高的浮点运算能力。因此,通过gpu对桌面图像进行采集和编码,可以提高gpu的利用率,减少cpu的任务量,降低图像处理所需的时间。
[0133]
多个存储单元在编码队列和采集队列之间的移动,可以使得gpu中的采集模块与编码模块的工作可以多线程并行进行,互不干扰。与完成上一帧桌面图像的编码之后再进行下一帧桌面图像的采集的方式相比,本公开实施例提供的图像处理方法提高桌面图像的帧率,满足游戏等应用情况下用户对画面质量的较高要求,提高用户体验。
[0134]
本公开实施例提供的图像处理方法,通过服务器中的gpu对桌面图像进行采集和编码,并使得桌面图像的采集和编码相互独立,互不干扰,减少了图像处理所需的时间,从而能够提高帧率,提高用户体验。
[0135]
完成对一个桌面图像的编码时开始采集下一帧桌面图像并在采集后进行编码的方式,桌面图像的帧率仅能达到30每秒传输帧数(frames per second, fps)。
[0136]
而通过本公开实施例提供的图像处理方法,桌面图像的帧率能达到144 fps。
[0137]
基于上述图2和图3对应的实施例提供的图像处理方法,本公开另一实施例提供一种图像处理方法,该方法可以应用于云服务系统。服务器包括 gpu、gpu对应的存储器、cpu、cpu对应的存储器。每个处理器对应的存储器中,可以存储该处理器的待处理数据,也可以存储该处理器的数据处理结果。
[0138]
参照图5所示,本实施例提供的图像处理方法包括以下步骤:
[0139]
701、gpu采集桌面图像。
[0140]
应当理解,桌面图像可以是服务器中的vm中的操作系统生成的,也可以是个人计算机中的操作系统生成的。操作系统可以是视窗(windows)操作系统,例如win7、win10等。
[0141]
gpu可以基于快速截屏录屏(directx graphics infrastructure,dxgi) 技术对桌面图像进行采集。
[0142]
gpu可以将采集到的桌面图像存储在gpu对应的存储器中。
[0143]
gpu可以是显卡中的处理器。显卡将采集到的桌面图像存储在显存(即显卡缓存)中,并得到该桌面图像的镜像的指针(buffer)。应当理解,gpu 对应的存储器中指针指示的
区域,即为存储该桌面图像的区域。
[0144]
一般情况下,gpu采集的桌面图像的图像数据的格式为蓝-绿-红-不透明(bgra)或绿-蓝-红-不透明(rgba)格式。
[0145]
702、gpu将采集到的桌面图像存储从指针指示的区域拷贝到渲染区。
[0146]
通过步骤702,可以防止下一次采集的桌面图像会覆盖当前的桌面图像。
[0147]
将桌面图像存储从指针指示的区域拷贝到渲染区之后,可以将指针指示的区域释放,或者说,可以将该指针释放。
[0148]
gpu可以通过资源拷贝(copyresource),将采集到的桌面图像存储从指针指示的区域拷贝到渲染区。
[0149]
703、gpu对存储在渲染区的桌面图像进行格式的转换。
[0150]
gpu可以包括编码器。转换后的格式为该编码器支持的格式。例如,转换后的格式可以是nv12、yuv420、yuv444等。
[0151]
当然,如果编码器支持对进行转换之前的桌面图像的格式(如bgra或 rgba格式)进行编码,可以不再进行步骤703。
[0152]
704、gpu对格式转换后的桌面图像进行编码,以得到桌面数据。
[0153]
gpu可以将格式转化后的桌面图像,资源映射(mapresource)到编码器中,并配置该桌面图像的编码参数(例如,该桌面图像是否为即时解码刷新(instantaneous decoding refresh,idr)帧、该桌面图像是否为帧间预测编码(p)帧等,不同的帧类型对应于不同的编码参数),调用应用程序接口 (application programming interface,api)对编码器中的桌面图像执行编码操作。
[0154]
其中,资源映射(mapresource)是指允许硬核编码器读取渲染区中的数据。
[0155]
在步骤704中,gpu通过调用api,利用编码器,读取渲染去中的桌面图像,对读取到的桌面图像进行编码,以得到桌面数据。
[0156]
在编码完成后,gpu可以对桌面数据进行锁定码流(lockbitsream)的操作。
[0157]
705、将桌面数据从gpu对应的存储器拷贝至cpu对应的存储器。
[0158]
cpu对应的存储器例如可以是cpu的内存。
[0159]
cpu可以对桌面数据进行解锁码流(unlockbitsream)的操作。
[0160]
gpu可以对编码器进行解除映射(unmapresource)的操作,从而,可以防止步骤704中资源映射(mapresource)的操作对下一时刻采集的桌面图像编码造成影响。
[0161]
706,cpu向终端设备发送cpu对应的存储器中存储的桌面数据。
[0162]
终端设备接收终端设备的解码器对桌面数据进行解码,还原桌面图像。
[0163]
终端设备可以通过显示器显示该桌面图像。
[0164]
通过步骤701至步骤706,gpu对应的存储器拷贝至cpu对应的存储器的数据是对桌面图像进行编码之后得到的桌面数据,减小了拷贝的数据量,从而降低了拷贝所需的时间。
[0165]
另外,cpu理论上是单核心的,因此一般采用串行的方式进行计算。近年出了多核cpu,即使是多核cpu并行度依然较低。而gpu提供了多核并行计算的基础结构,且核心数非常多,可以支撑大量并行计算。并且与cpu 相比,gpu拥有更高的访存速度和更高的浮点运算能力。因此,通过gpu 对桌面图像进行采集和编码,可以提高编码所需的时间。
[0166]
本公开实施例提供的图像处理方法,通过服务器中的gpu对桌面图像进行采集和
编码,减少了服务器对桌面图像的采集到发送所需的时间,从而能够提高帧率,提高用户体验。
[0167]
基于上述图2至图5对应的实施例中所描述的图像处理方法,本公开实施例还提供一种服务器,如图6所示。
[0168]
服务器600包括存储器601和gpu 602。
[0169]
存储器601用于存储程序。
[0170]
当所述程序在gpu 602中执行时,所述gpu 602用于执行前文中的图像处理方法。
[0171]
gpu 602用于,采集桌面图像;
[0172]
gpu 602还用于,对所述桌面图像进行编码,以得到桌面数据,所述桌面数据用于传输至终端设备。
[0173]
可选地,所述服务器还包括cpu,所述桌面数据存储在gpu 602对应的存储器中。
[0174]
所述cpu用于,将所述桌面数据从gpu 602对应的存储器拷贝至所述 cpu对应的存储器。
[0175]
所述cpu还用于,向所述终端设备发送所述cpu对应的存储器中存储的所述桌面数据。
[0176]
可选地,gpu 602还用于,对采集得到的红绿蓝rgb格式的桌面图像进行编码。
[0177]
可选地,gpu 602还用于,当完成对一个所述桌面图像的编码时,获取的至少一个所述桌面图像中的待编码图像进行编码。
[0178]
可选地,gpu 602还用于,每经过预设时间间隔,所述gpu进行一次所述桌面图像的采集。
[0179]
基于上述图2至图5对应的实施例中所描述的图像处理方法,本公开实施例还提供一种服务器,如图7所示。
[0180]
图像处理装置500包括存储模块501和处理模块502。
[0181]
存储模块501用于存储程序。
[0182]
当所述程序在处理模块602中执行时,所述处理模块502用于执行前文中的图像处理方法。
[0183]
处理模块502包括gpu,gpu用于采集桌面图像。
[0184]
gpu还用于,对所述桌面图像进行编码,以得到桌面数据,所述桌面数据用于传输至终端设备。
[0185]
可选地,处理模块502还包括cpu,所述桌面数据存储在gpu对应的存储器中。
[0186]
所述cpu用于,将所述桌面数据从gpu对应的存储器拷贝至所述cpu 对应的存储器。
[0187]
所述cpu还用于,向所述终端设备发送所述cpu对应的存储器中存储的所述桌面数据。
[0188]
可选地,gpu还用于,对采集得到的红绿蓝rgb格式的桌面图像进行编码。
[0189]
可选地,gpu还用于,当完成对一个所述桌面图像的编码时,获取的至少一个所述桌面图像中的待编码图像进行编码。
[0190]
可选地,gpu还用于,每经过预设时间间隔,所述gpu进行一次所述桌面图像的采集。
[0191]
基于上述图2至图5对应的实施例中所描述的图像处理方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:read only memory,rom)、随机存取存储器(英文:random access memory,ram)、cd-rom、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述图2和图3对应的实施例中所描述的应用于终端设备或服务器的图像处理方法,此处不再赘述。
[0192]
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0193]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1