图像处理方法及装置与流程

文档序号:24061856发布日期:2021-02-26 16:55阅读:72来源:国知局
图像处理方法及装置与流程

[0001]
本公开涉及图像处理领域,尤其涉及一种图像处理方法及装置。


背景技术:

[0002]
在云服务系统中,服务器可以将虚拟机(virtual machine,vm)生成的桌面图像进行编码后通过网络发送给终端设备,终端设备解码并且显示该虚拟桌面图像。
[0003]
一般情况下,服务器的图形处理器(graphic processing unit,gpu)用于对vm生成的桌面图像进行采集并将采集的虚拟桌面图像存储在gpu对应的存储器中。gpu可以位于显卡中。显卡对应的存储器为显存中,即显卡的缓存。cpu可以将存储在gpu对应的存储器中的桌面图像拷贝至cpu对应的内存。之后,cpu对桌面图像进行编码,并将编码得到的桌面图像发送至终端设备。
[0004]
cpu理论上是单核心的,因此一般采用串行的方式进行计算。在完成当前帧桌面图像的编码后,cpu向gpu发送采集指令,该采集指令用于指示gpu采集下一帧桌面图像。cpu将下一帧桌面图像从gpu对应的存储器中拷贝至cpu对应的内存,之后,对该下一帧桌面图像进行编码。
[0005]
当完成当前帧桌面图像的编码之后,对下一帧桌面图像进行采集、拷贝和编码,使得相邻两帧桌面图像之间的时间较长,导致桌面图像的帧率较低。


技术实现要素:

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