CN107368269A - 传输屏幕图像的方法、装置和*** - Google Patents
传输屏幕图像的方法、装置和*** Download PDFInfo
- Publication number
- CN107368269A CN107368269A CN201610312522.4A CN201610312522A CN107368269A CN 107368269 A CN107368269 A CN 107368269A CN 201610312522 A CN201610312522 A CN 201610312522A CN 107368269 A CN107368269 A CN 107368269A
- Authority
- CN
- China
- Prior art keywords
- encoder
- rectangle
- area
- data
- ordinate
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1454—Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请公开了传输屏幕图像的方法、装置和***。所述方法的一具体实施方式包括:接收图像更新请求;获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域;将所述一个以上矩形动态区域合并为矩形区域;从屏幕区域中去除所述矩形区域,得到静态区域;采用第一编码器对所述矩形区域和填充为纯色的所述静态区域进行编码,得到第一编码数据;采用第二编码器对所述静态区域和填充为所述纯色的所述矩形区域进行编码,得到第二编码数据,其中,所述第一编码器的压缩比大于所述第二编码器的压缩比;向用户端发送所述第一编码数据和所述第二编码数据。该实施方式有效改善了传输动态图像时由于压缩率过低带来的卡顿、延迟等。
Description
技术领域
本申请涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及传输屏幕图像的方法、装置和***。
背景技术
虚拟桌面技术是一款远程控制软件,分为服务端和用户端。服务端启动后运行于后台,用户端通过TCP/IP协议连接服务端成功后,能够在窗口中实时呈现服务端所在机器的桌面图像,并能够向用户端提供远程操作服务端桌面的功能。
相关技术中,虚拟桌面技术在通信时采用的是请求更新方式:一方面,用户端会定时向服务端请求图像更新,服务端收到更新后对屏幕显示的图像进行编码,打包发送给用户端,用户端在收到图像信息后解码,显示在窗口上;另一方面,键盘和鼠标等控制信息由用户端进行转码,发送到服务端,服务端再解码并执行。对于图像的编码方式主要有以下几种:原始数据Raw编码、CopyRectangle编码、RRE(rise and run length encoding)编码、Hextile编码和ZRLE(ZlibRun-Length)编码等。
采用上述几种编码方案对静态的、大量规则色块以及色块平移较多的窗口图像效果比较好,然而,上述的几种编码方式用于传输动态的、颜色丰富且变化不规则的动态图像时的压缩比例较低,从而导致使用虚拟桌面播放视频或玩游戏时占用大量的带宽,在网络状况不好时出现网络拥塞、延迟增加,并且TCP的重传机制会进一步加剧拥塞,最终出现画面掉帧。
发明内容
本申请的目的在于提出一种改进的传输屏幕图像的方法、装置和***,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种传输屏幕图像的方法,所述方法包括:接收图像更新请求;获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域;将所述一个以上矩形动态区域合并为矩形区域;从屏幕区域中去除所述矩形区域,得到静态区域;采用第一编码器对所述矩形区域和填充为纯色的所述静态区域进行编码,得到第一编码数据;采用第二编码器对所述静态区域和填充为所述纯色的所述矩形区域进行编码,得到第二编码数据,其中,所述第一编码器的压缩比大于所述第二编码器的压缩比;向用户端发送所述第一编码数据和所述第二编码数据。
第二方面,本申请提供了一种传输屏幕图像的方法,所述方法包括:发送图像更新请求;接收第一编码数据和第二编码数据,其中,所述第一编码数据为采用第一编码器编码的矩形区域和填充为纯色的静态区域,所述第二编码数据为采用第二编码器编码的所述静态区域和填充为所述纯色的所述矩形区域,所述第一编码器的压缩比大于所述第二编码器的压缩比;采用第一解码器解码所述第一编码数据,得到第一解码数据,其中,所述第一解码器与所述第一编码器采用第一编解码标准;采用第二解码器解码所述第二编码数据,得到第二解码数据,其中,所述第二解码器与所述第二编码器采用第二编解码标准;根据填充的所述纯色对所述第一解码数据和所述第二解码数据进行位运算,得到更新后的图像。
第三方面,本申请提供了一种传输屏幕图像的装置,所述装置包括:接收模块,用于接收图像更新请求;获取模块,用于获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域;合并模块,用于将所述一个以上矩形动态区域合并为矩形区域;去除模块,用于从屏幕区域中去除所述矩形区域,得到静态区域;第一编码模块,用于采用第一编码器对所述矩形区域和填充为纯色的所述静态区域进行编码,得到第一编码数据;第二编码模块,用于采用第二编码器对所述静态区域和填充为所述纯色的所述矩形区域进行编码,得到第二编码数据,其中,所述第一编码器的压缩比大于所述第二编码器的压缩比;发送模块,用于向用户端发送所述第一编码数据和所述第二编码数据。
第四方面,本申请提供了一种传输屏幕图像的装置,所述装置包括:发送模块,用于发送图像更新请求;接收模块,用于接收第一编码数据和第二编码数据,其中,所述第一编码数据为采用第一编码器编码的矩形区域和填充为纯色的静态区域,所述第二编码数据为采用第二编码器编码的所述静态区域和填充为所述纯色的所述矩形区域,所述第一编码器的压缩比大于所述第二编码器的压缩比;第一解码模块,用于采用第一解码器解码所述第一编码数据,得到第一解码数据,其中,所述第一解码器与所述第一编码器采用第一编解码标准;第二解码模块,用于采用第二解码器解码所述第二编码数据,得到第二解码数据,其中,所述第二解码器与所述第二编码器采用第二编解码标准;运算模块,用于根据填充的所述纯色对所述第一解码数据和所述第二解码数据进行位运算,得到更新后的图像。
第五方面,本申请提供了一种传输屏幕图像的***,所述***包括:用户端,用于发送图像更新请求;接收第一编码数据和第二编码数据,其中,所述第一编码数据为采用第一编码器编码的矩形区域和填充为纯色的静态区域,所述第二编码数据为采用第二编码器编码的所述静态区域和填充为所述纯色的所述矩形区域,第一编码器的压缩比大于第二编码器的压缩比;采用第一解码器解码所述第一编码数据,得到第一解码数据,其中,所述第一解码器与所述第一编码器采用第一编解码标准;采用第二解码器解码所述第二编码数据,得到第二解码数据,其中,所述第二解码器与所述第二编码器采用第二编解码标准;以及根据填充的所述纯色对所述第一解码数据和所述第二解码数据进行位运算,得到更新后的图像;服务端,用于接收图像更新请求;获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域;将所述一个以上矩形动态区域合并为矩形区域;从屏幕区域中去除所述矩形区域,得到静态区域;采用第一编码器对所述矩形区域和填充为纯色的所述静态区域进行编码,得到第一编码数据;采用第二编码器对所述静态区域和填充为所述纯色的所述矩形区域进行编码,得到第二编码数据,其中,所述第一编码器的压缩比大于所述第二编码器的压缩比;向用户端发送所述第一编码数据和所述第二编码数据。
本申请提供的传输屏幕图像的方法、装置和***,通过响应于接收图像更新请求,获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域,之后将获取的一个以上矩形动态区域合并为矩形区域,之后从屏幕区域中去除矩形区域,得到静态区域,之后采用第一编码器对所述矩形区域和填充为纯色的所述静态区域进行编码,得到第一编码数据,之后采用第二编码器对所述静态区域和填充为所述纯色的所述矩形区域进行编码,得到第二编码数据,其中,第一编码器的压缩比大于第二编码器的压缩比,最后向用户端发送第一编码数据和第二编码数据,从而根据窗口图像的更新速度,对需要传输的屏幕图像的矩形区域和静态区域分别采用了不同的编码器进行压缩,提高了对于动态图像的压缩比例,进而减少了传输屏幕图像所需的带宽,有效改善了传输动态图像时由于压缩率过低带来的卡顿、延迟等,减少了画面掉帧。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性***架构图;
图2是根据本申请的用于服务端的传输屏幕图像的方法的一个实施例的流程图;
图3是根据本申请的获取单个动态窗口中未被其它窗口遮挡的一个以上矩形动态区域的方法的一个实施例的流程图;
图4a是根据本申请的获取一个以上矩形动态区域的方法的一个应用场景的一个示意图;
图4b是对图4a中的矩形区域进行编码的方法的一个应用场景的示意图;
图4c是对图4a中的静态区域进行编码的方法的一个应用场景的示意图;
图5是根据本申请的用于用户端的传输屏幕图像的方法的一个实施例的流程图;
图6是根据本申请的用于服务端的传输屏幕图像的装置的一个实施例的结构示意图;
图7是根据本申请的用于用户端的传输屏幕图像的装置的一个实施例的结构示意图;
图8是根据本申请的传输屏幕图像的***的一个实施例的结构示意图;
图9是适于用来实现本申请实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的传输屏幕图像的***的实施例的示例性***架构100。
如图1所示,***架构100可以包括终端设备101、102、103,网络104和服务器105、106。网络104用以在终端设备101、102、103和服务器105、106之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105、106交互,以连接到服务器105、106上生成的运行独立桌面***的虚拟机上。终端设备101、102、103上可以安装有各种通讯用户端应用,例如视频类应用、游戏类应用、购物类应用、搜索类应用、即时通信工具、邮箱用户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持虚拟桌面连接协议的各种电子设备,包括但不限于瘦客户机、PC和移动设备等等。
服务器105、106可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的内容提供支持的后台服务器。后台服务器可以对接收到的请求等数据进行分析等处理,并将处理结果(例如编码后的数据)反馈给终端设备。
需要说明的是,本申请实施例所提供的传输屏幕图像的方法可以分别由终端设备101、102、103和服务器105、106执行,相应地,传输屏幕图像的***一般包括终端设备101、102、103和服务器105、106。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。本申请的传输屏幕图像的方法、装置和***可以应用于任意需要传输动态数据的电子设备之间,例如,可以应用于采用虚拟桌面技术的终端和服务器之间,其中,虚拟桌面技术可以包括但不限于以下任意一项:虚拟化软件思杰(Citrix)的桌面虚拟化解决方案(XenDesktop)、微软的***管理程序虚拟化技术(Hyper-V)和虚拟机软件威睿(VMare)的虚拟化平台(vSphere)等,这些虚拟桌面技术采用的虚拟桌面连接协议可以包括但不限于以下任意一项:虚拟网络计算机(Virtual Network Computer,缩写为VNC)、远程桌面协议(remotedesktop protocol,缩写为RDP)、威睿虚拟桌面(VMare View)和独立计算环境简单协议(SPICE)等。
请参考图2,示出了根据本申请的传输屏幕图像的方法的一个实施例的流程图。如图2所示,传输屏幕图像的方法200,通常应用于提供屏幕图像传输服务的服务端中,可以包括以下步骤:
步骤210,接收图像更新请求。
在本实施例中,传输屏幕图像的方法运行于其上的电子设备(例如图1所示的服务器或终端设备)可以通过有线连接方式或者无线连接方式从用户使用的终端设备接收图像更新请求。在这里,上述无线连接方式可以包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接以及其它现在已知或将来开发的无线连接方式。
步骤220,获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域。
在本实施例中,传输屏幕图像的方法运行于其上的电子设备(例如图1所示的服务器或终端设备)响应于接收到图像更新请求,可以获取每一个动态窗口中未被其它窗口遮挡的一个以上矩形动态区域。这里的动态窗口是指正在播放的视频、游戏等可以随时间变换画面的窗口。
在获取动态窗口时,可以采用操作***本身提供的应用程序编程接口(API)来查找、定位视频窗口或游戏窗口。这里的操作***,可以为现有技术中用于虚拟桌面技术的操作***,例如微软操作***(windows)、通用操作***(debian)、乌班图操作***(ubuntu)等。这里以windows操作***为例说明如何查找、定位视频窗口或游戏窗口:windows提供了一个FindWindow的API,其函数原型如下:HWNDFindWindow(LPCSTR lpClassName,LPCSTR lpWindowName),在该函数中,参数lpClassName表示窗口类类名,参数lpWindowName表示窗口名字,传入两个参数中的一个即可得到相应窗口的句柄,而得到窗口句柄后就可以通过其它API得到窗口的位置信息。如果相应窗口类名的窗口不存在,则函数返回NULL。一般情况下,程序发布后,所有窗口类的类名是固定不变的。在这里,为了方便查找、定位视频窗口或游戏窗口,可以在内存中存放一个常用视频播放软件或游戏程序主窗口类名列表,通过将列表中的所有类名遍历传入FindWindow函数调用,如果返回不为NULL,则表明相应窗口在桌面上存在,记录下窗口的坐标;否则认为相应窗口在桌面上不存在。
在获取动态窗口之后,虽然得到了动态窗口在桌面上的位置,但有可能动态窗口被遮挡或者只是遮挡了一部分,在这种情形下,windows操作***提供了EnumWindow函数,该函数以Z轴顺序枚举所有窗口,过滤掉最小化的窗口即可得到所有位于指定视频窗口之上的窗口。因为有可能窗口被遮挡后得到的图像不规则,这就需要特定的扫描算法来将位于桌面上的窗口分割为一个个小矩形,从而获取动态窗口未被其它窗口遮挡的一个以上矩形动态区域。
应当理解,在其它操作***中,也存在类似于windows***中的FindWindow的API和类似于EnumWindow的函数,通过各操作***查找、定位视频窗口或游戏窗口的API和得到所有位于指定视频窗口之上的窗口的函数,即可得到动态窗口和位于指定动态窗口之上的窗口。
在本实施例的一些可选实现方式中,在获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域时,可以获取单个动态窗口,将单个动态窗口的左上角作为起始的扫描点,执行扫描步骤以获取所述单个动态窗口中未被其它窗口遮挡的一个以上矩形动态区域;其中,扫描步骤包括:响应于扫描点未超出单个动态窗口的右边界,执行第一判断步骤;第一判断步骤包括:判断扫描点是否被其它窗口遮挡或位于已扫描到的矩形动态区域内,若否,响应于扫描点首次未被其它窗口遮挡且未位于已扫描到的矩形动态区域内,将扫描点作为P1,响应于扫描点非首次未被其它窗口遮挡且未位于已扫描到的矩形动态区域内,执行第二判断步骤;第二判断步骤包括:将扫描点的横坐标加1,判断扫描点是否超出单个动态窗口的右边界或被其它窗口遮挡或位于已扫描到的矩形动态区域内,若是,则将上一个扫描点作为矩形动态区域的右上角P2,将P1的纵坐标加1得到P3,将P2的纵坐标加1得到P4,对P3和P4,执行第三判断步骤;第三判断步骤包括:判断P3和P4连线上的所有点是否超出单个动态窗口的右边界或被其它窗口遮挡或位于已扫描到的矩形动态区域内,若是,将P3的纵坐标减1作为矩形动态区域的左下角,将P4的纵坐标减1作为矩形动态区域的右下角,记录矩形动态区域。
在本实施例的一些可选实现方式中,上述的扫描步骤还可以包括以下一项或多项:在记录矩形动态区域之后,将P2的横坐标加1作为新的起始的扫描点,执行扫描步骤;响应于所述扫描点已超出单个动态窗口的右边界,执行第四判断步骤,第四判断步骤包括:判断扫描点的纵坐标加1是否大于单个动态窗口的下边界,若是,则结束对单个动态窗口执行扫描步骤,若否,则将下一行的左边界点作为新的起始的扫描点,执行扫描步骤;第一判断步骤还包括:若是,则将扫描点的横坐标加1,执行扫描步骤;第二判断步骤还包括:若否,则继续执行第二判断步骤;第三判断步骤还包括:若否,将P3的纵坐标加1后作为新的P3的纵坐标,将P4的纵坐标加1后作为新的P4的纵坐标,执行第三判断步骤。
继续参见图3,图3示出了获取所述单个动态窗口中未被其它窗口遮挡的一个以上矩形动态区域的方法的一个实施例的流程图。
如图3所示,获取单个动态窗口中未被其它窗口遮挡的一个以上矩形动态区域的方法包括:
在步骤301中,将动态窗口的左上角作为扫描点P开始扫描,之后对P执行步骤302;
在步骤302中,判断P的横坐标是否大于窗口的右边界,若是,则执行步骤315,若否,则执行步骤303;
在步骤303中,判断P是否被其它窗口遮挡或位于已扫描到的矩形内,若是,则执行步骤304,若否,则执行步骤305;
在步骤304中,将P的横坐标加1后作为新的扫描点P,之后执行步骤302;
在步骤305中,判断P是否第一次未被其它窗口遮挡或位于已扫描到的矩形内,若是,则执行步骤306,若否,则执行步骤307;
在步骤306中,将P作为矩形动态区域的左上角P1,之后执行步骤307;
在步骤307中,将P的横坐标加1后作为新的扫描点P,之后执行步骤308;
在步骤308中,判断P是否超出动态窗口右边界或被其它窗口遮挡或位于已扫描到的矩形内,若是,则执行步骤309,若否,则执行步骤307;
在步骤309中,响应于P超出动态窗口右边界或被其它窗口遮挡或位于已扫描到的矩形内,将P的横坐标-1作为矩形动态区域的右上角P2,之后执行步骤310;
在步骤310中,将P1的纵坐标+1设定为P3,将P2的纵坐标+1设定为P4,之后执行步骤311;
在步骤311中,判断P3P4连线上所有点是否超出动态窗口的右边界或被其它窗口遮挡或位于已扫描到的矩形动态区域内,若否,则执行步骤312,若是,则执行步骤313;
在步骤312中,将P3的纵坐标+1设定为新的P3,将P4的纵坐标+1设定为新的P4,之后执行步骤310;
在步骤313中,将P3的纵坐标-1,得到未被遮挡视频窗口的矩形动态区域左下角,将P4的纵坐标-1得到矩形动态区域的右下角,之后执行步骤314;
在步骤314中,将矩形动态区域记录至矩形动态区域集合,之后执行步骤315;
在步骤315中,将P2的横坐标+1设定为新的扫描点P,之后执行步骤302;
在步骤316中,判断P的纵坐标+1是否大于动态窗口的下边界,若是,则执行步骤318,若否,则执行步骤317;
在步骤317中,将P设定为下一行的左边界点,之后执行步骤302;
在步骤318中,结束对单个动态窗口执行扫描步骤。
应当理解,在具体的应用场景中,根据遮挡窗口与被遮挡窗口的位置关系不同,可以应用图3中的部分或所有步骤以获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域。
返回图2,步骤230,将一个以上矩形动态区域合并为矩形区域。
在本实施例中,编码器在编码之前需要进行初始化,设定如图像大小、编码压缩率和编码质量等参数,而每次初始化需要发送一帧完整图像。为了防止一个以上矩形动态区域的大小变化所带来的编码器重新初始化,可以通过将一个以上矩形动态区域合并为矩形区域,以保证每次编码的矩形大小都是一致的。因此,可以基于上述步骤220中获取的一个以上动态窗口中未被其它窗口遮挡的一个以上矩形动态区域,对获取的矩形动态区域进行合并以得到矩形区域。
将一个以上矩形动态区域合并为矩形区域的方法,可以为现有技术或未来发展的技术中的将多个矩形区域合并为一个矩形区域的方法,本申请对此不做限定。
在本实施例的一个可选实现方式中,将一个以上矩形动态区域合并为矩形区域可以包括但不限于:获取每一个矩形动态区域的左上角坐标和右下角坐标;从左上角坐标中获取横坐标的最小值和纵坐标的最小值,将横坐标的最小值和纵坐标的最小值作为矩形区域的左上角的坐标;从右下角坐标中获取横坐标的最大值和纵坐标的最大值,将横坐标的最大值和纵坐标的最大值作为矩形区域的右下角的坐标;根据矩形区域的左上角的坐标和矩形区域的右下角的坐标,确定矩形区域。
步骤240,从屏幕区域中去除矩形区域,得到静态区域。
步骤250,采用第一编码器对矩形区域和填充为纯色的静态区域进行编码,得到第一编码数据。
在本实施例中,第一编码器可以为压缩比较大的适于压缩动态图像的编码器,例如H.264编码器、MPEG-4第十部分、AVS或VC-1等。这里的用于填充的纯色,至少可以为黑色或白色。
步骤260,采用第二编码器对静态区域和填充为纯色的矩形区域进行编码,得到第二编码数据,其中,所述第一编码器的压缩比大于所述第二编码器的压缩比。
在本实施例中,第二编码器可以为压缩比较小的适于压缩静态图像的编码器,例如VNC编码器中的原始数据Raw编码、CopyRectangle编码、RRE(rise and run length encoding)编码、Hextile编码和ZRLE(Zlib Run-Length)编码等。这里的用于填充的纯色,需要与步骤250中填充的纯色相同。
步骤270,向用户端发送第一编码数据和第二编码数据。
在本实施例中,基于在步骤250和步骤260中分别得到的第一编码数据和第二编码数据,可以向用户端发送第一编码数据和第二编码数据,以便用户端采用第一解码器解码第一编码数据,采用第二解码器解码第二编码数据。这里的第一解码器和第一编码器采用第一编解码标准,第二解码器和第二编码器采用第二编解码标准。
以下结合传输屏幕图像的方法的具体应用场景,说明用于服务端的传输图像的方法。
请参考图4a,图4a是根据本申请实施例的获取一个以上矩形动态区域的方法的一个应用场景的一个示意图。在图4a的应用场景中,可以应用图3中的所有步骤获取动态窗口被其它窗口遮挡后的一个以上矩形动态区域。
在图4a的应用场景中,以windows操作***为例,服务端通过windows API获得动态窗口得到屏幕显示的图像410上的动态窗口A(P1,P6,P3,P8),并且已知屏幕显示的图像410上的矩形B是其它窗口,遮挡了一部分动态窗口,这里需要获取的就是三个小矩形C(P1,P2,P3,P4)、D(P9,P10,P4,P7)、E(P5,P6,P7,P8)的坐标。在获取这三个小矩形的坐标时,可以通过以下步骤获取:
首先,对应步骤301,从将P1点作为起始扫描点P,这里假定P1点的坐标是(x1,y1);
接着,对应步骤302,判断P的横坐标x1未大于窗口的右边界,执行步骤303;
接着,对应步骤303,判断P未被矩形B窗口遮挡或也未位于已扫描到的矩形内,执行步骤305;
接着,对应步骤305,判断P为第一次未被矩形B窗口遮挡或也未位于已扫描到的矩形内,执行步骤306;
接着,对应步骤306,将P作为矩形动态区域的左上角P1,之后执行步骤307继续向右扫描;
接着,对应步骤307,扫描下一个扫描点P是(x1+1,y1),之后执行步骤308;
接着,对应步骤308,判断该扫描点未超出动态窗口右边界也未被矩形B窗口遮挡也未位于已扫描到的矩形内,返回执行步骤307直到扫描点被矩形B窗口遮盖,执行步骤309;
接着,对应步骤309,将未被矩形B窗口遮盖的上一个扫描点作为矩形动态区域的右上角P2点,P2点坐标为(x2,y2),其中y1=y2,再向右的点被矩形B窗口遮盖,无法在桌面上显示,此时得到矩形C的左上角是P1,右上角是P2。
接着,对应步骤310,令P3=P1纵坐标+1、P4=P2纵坐标+1,开始下一行扫描,之后执行步骤311;
接着,对应步骤311,即从(x1,y1+1)开始,再向右扫描,如果直到(x2,y2+1),其中没有任何一个点均处于动态画面窗口中,且没有被遮挡,之后执行步骤312;
接着,对应步骤312,令P3=P3纵坐标+1、P4=P4纵坐标+1,继续执行步骤311,如此一行接一行向下扫描,当扫描到(x3,y3+1)和(x4,y4+1)时,该点不在矩形动态区域范围内了,于是扫描停止,执行步骤313;
接着,对应步骤313,将(x3,y3)作为矩形动态区域的左下角P3,将(x4,y4)作为矩形动态区域的右下角,其中x3=x1,x4=x2,y3=y4,之后执行步骤314;
接着,对应步骤314,得到了已扫描到的矩形C的坐标(P1,P2,P3,P4),之后执行步骤315;
接着,对应步骤315,将P2的横坐标+1作为新的扫描点,执行步骤302;
接着,对应步骤302,P的横坐标未大于动态窗口右边界,执行步骤303;
接着,对应步骤303,P的横坐标被矩形B窗口遮挡,执行步骤304;
接着,对应步骤304,将P的横坐标加1作为新的扫描点P,执行步骤302,直至未被矩形B遮挡的点P5,执行步骤305;
接着,对应步骤305,从P5开始,重复步骤305至步骤314,得到新的扫描到的矩形E(新P1,新P2,新P3,新P4),为了与扫描到的矩形C进行区分,将矩形E记为(P5,P6,P7,P8);
接着,对应步骤315,将P6的横坐标加1作为新的扫描点P,执行步骤302;
接着,对应步骤302,判断P的横坐标大于动态窗口右边界,执行步骤316;
接着,对应步骤316,判断P的纵坐标加1未大于动态窗口的右边界,执行步骤317;
接着,对应步骤317,将动态窗口下一行的左边界点也就是P1的下方点(x1,y1+1)作为扫描点P,执行步骤303;
接着,对应步骤303,判断扫描点P(x1,y1+1)位于已扫描到的矩形C内,执行步骤304;
接着,对应步骤304,将P的横坐标加1作为新的扫描点P(x1+1,y1+1),执行步骤302,进行下一轮扫描,P1至P6下一行的所有的扫描点要么位于矩形C中,要么被矩形B遮挡,要么位于矩形E中,直至扫描点为P9时,此时P9既不位于任何已扫描到的矩形,也没有被矩形B窗口遮挡,所以从P9开始重复步骤305至步骤314,得到已扫描到的矩形D(新P1,新P2,新P3,新P4),为了与上述的矩形C和矩形E区分,将矩形D记为(P9,P10,P4,P7),之后执行步骤315;
接着,对应步骤315,将P10的横坐标加1作为新的扫描点P,对新的扫描点P依次执行步骤302、303和304,直至扫描点P的横坐标大于动态窗口右边界,执行步骤316;
接着,对应步骤316,判断P的纵坐标加1未大于动态窗口的下边界,依次执行步骤317、303、304和302直至P8的右边一点作为新的扫描点大于动态窗口的右边界,执行步骤316;
接着,对应步骤316,判断P的纵坐标加1大于动态窗口下边界,执行步骤318;
最后,对应步骤318,结束对该动态窗口执行扫描步骤。
在将图4中得到的一个以上矩形动态区域C、D、E,合并为矩形区域(P1,P6,P3,P8)之后,可以对矩形区域和除矩形区域之外的静态区域分别进行编码。
之后在图4b中,示出了对图4a中的矩形区域进行编码的方法的一个应用场景的示意图。
如图4b所示,可以采用H.264编码矩形区域,也即将矩形(P1,P6,P3,P8)以外的部分填充为黑色后对屏幕显示的图像410进行H.264编码。
之后在图4c中,示出了对图4a中的静态区域进行编码的方法的一个应用场景的示意图。
如图4c所示,可以采用VNC编码方式编码除矩形(P1,P6,P3,P8)之外的静态区域,也即将矩形B填充为黑色后对屏幕显示的图像410进行VNC编码。
本申请的上述实施例提供的方法通过根据窗口图像的更新速度,对需要传输的屏幕图像的动态区域和静态区域分别采用了不同的编码器进行压缩,从而提高了对于动态图像的压缩比例,减少了传输屏幕图像所需的带宽,有效改善了传输动态图像时由于压缩率过低带来的卡顿、延迟等,减少了画面掉帧。
进一步参考图5,其示出了根据本申请的传输屏幕图像的方法的一个实施例的流程500。该传输屏幕图像的方法的流程500,通常用于接收屏幕图像传输服务的用户端中,可以包括以下步骤:
步骤510,发送图像更新请求。
在本实施例中,传输屏幕图像的方法运行于其上的电子设备(例如图1所示的终端设备)可以通过有线连接方式或者无线连接方式向提供屏幕图像传输服务的终端或服务器发送图像更新请求,从而获取更新后的图像数据。
步骤520,接收第一编码数据和第二编码数据,其中,第一编码数据为采用第一编码器编码的矩形区域和填充为纯色的静态区域,第二编码数据为采用第二编码器编码的静态区域和填充为纯色的矩形区域,第一编码器的压缩比大于第二编码器的压缩比。
在本实施例中,接收的第一编码数据和第二编码数据与图2中服务端发送的第一编码数据和第二编码数据相对应,在此不再赘述。
步骤530,采用第一解码器解码第一编码数据,得到第一解码数据,其中,第一解码器与第一编码器采用第一编解码标准。
步骤540,采用第二解码器解码第二编码数据,得到第二解码数据,其中,第二解码器与第二编码器采用第二编解码标准。
在本实施例中,第一编解码标准的压缩率大于第二编解码标准的压缩率。
示例性的,与图2中第一编码器采用H.264编码器相对应,第一解码器可以采用H.264解码器;与图2中第二编码器采用VNC编码器相对应,第二编码器可以采用VNC解码器。
步骤550,根据填充的纯色对第一解码数据和第二解码数据进行位运算,得到更新后的图像。
在本实施例中,与图2的方法中填充的纯色相对应,在接收到第一编码数据和第二编码数据之后,可以对第一编码数据和第二编码数据进行解码,得到第一解码数据和第二解码数据,之后根据图2的方法中填充的纯色,对第一解码数据和第二解码数据进行位运算,以得到服务端更新后的图像。
示例性的,若图2的方法中填充的纯色为黑色,则根据填充的黑色对第一解码数据和第二解码数据进行按位或运算,得到更新后的图像;或若图2的方法中填充的纯色为白色,则根据填充的白色对第一解码数据和第二解码数据进行按位与运算,得到更新后的图像。
应当理解,用户端在根据收到的编码数据还原完整图像时,由于图像更新基于上一次更新后屏幕的完整图像,所以还原过程是一个组合、覆盖的过程。
从图5中可以看出,与图2对应的实施例相比,本实施例中的传输屏幕图像的方法的流程500为与图2中的流程200相对应的传输屏幕图像的方法。由此,本实施例描述的方案可以根据填充的纯色对解码第一编码数据和第二编码数据得到的第一解码数据和第二解码数据进行位运算,从而得到更新后的图像,由于传输中采用了部分高压缩比的编码器,有效改善了传输动态图像时由于压缩率过低带来的卡顿、延迟等,减少了画面掉帧。
进一步参考图6,作为对上述各图所示方法的实现,本申请提供了一种传输屏幕图像的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于提供屏幕图像传输服务的各种电子设备中。
如图6所示、本实施例所述的传输屏幕图像的装置600包括:接收模块610、获取模块620、合并模块630、去除模块640、第一编码模块650、第二编码模块660和发送模块670。
其中,接收模块610,用于接收图像更新请求;获取模块620,用于获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域;合并模块630,用于将一个以上矩形动态区域合并为矩形区域;去除模块640,用于从屏幕区域中去除矩形区域,得到静态区域;第一编码模块650,用于采用第一编码器对矩形区域和填充为纯色的静态区域进行编码,得到第一编码数据;第二编码模块660,用于采用第二编码器对静态区域和填充为纯色的矩形区域进行编码,得到第二编码数据,其中,第一编码器的压缩比大于第二编码器的压缩比;发送模块670,用于向用户端发送第一编码数据和第二编码数据。
在本实施例的一些可选的实现方式中,上述获取模块620进一步用于:获取单个动态窗口,将单个动态窗口的左上角作为起始的扫描点,执行扫描步骤以获取所述单个动态窗口中未被其它窗口遮挡的一个以上矩形动态区域,扫描步骤包括:响应于扫描点未超出单个动态窗口的右边界,执行第一判断步骤,第一判断步骤包括:判断扫描点是否被其它窗口遮挡或位于已扫描到的矩形动态区域内,若否,响应于扫描点首次未被其它窗口遮挡且未位于已扫描到的矩形动态区域内,将扫描点作为P1,响应于扫描点非首次未被其它窗口遮挡且未位于已扫描到的矩形动态区域内,执行第二判断步骤,第二判断步骤包括:将扫描点的横坐标加1,判断扫描点是否超出单个动态窗口的右边界或被其它窗口遮挡或位于已扫描到的矩形动态区域内,若是,则将上一个扫描点作为矩形动态区域的右上角P2,将P1的纵坐标加1得到P3,将P2的纵坐标加1得到P4,对P3和P4,执行第三判断步骤,第三判断步骤包括:判断P3和P4连线上的所有点是否超出单个动态窗口的右边界或被其它窗口遮挡或位于已扫描到的矩形动态区域内,若是,将P3的纵坐标减1作为矩形动态区域的左下角,将P4的纵坐标减1作为矩形动态区域的右下角,记录矩形动态区域。
在本实施例的一些可选的实现方式中,获取模块620中的扫描步骤还包括以下一项或多项:在记录矩形动态区域之后,将P2的横坐标加1作为新的起始的扫描点,执行扫描步骤;响应于所述扫描点已超出单个动态窗口的右边界,执行第四判断步骤,第四判断步骤包括:判断扫描点的纵坐标加1是否大于单个动态窗口的下边界,若是,则结束对单个动态窗口执行扫描步骤,若否,则将下一行的左边界点作为新的起始的扫描点,执行扫描步骤;第一判断步骤还包括:若是,则将扫描点的横坐标加1,执行扫描步骤;第二判断步骤还包括:若否,则继续执行第二判断步骤;第三判断步骤还包括:若否,将P3的纵坐标加1后作为新的P3的纵坐标,将P4的纵坐标加1后作为新的P4的纵坐标,执行第三判断步骤。
在本实施例的一些可选的实现方式中,合并模块630进一步用于:获取每一个矩形动态区域的左上角坐标和右下角坐标;从左上角坐标中获取横坐标的最小值和纵坐标的最小值,将横坐标的最小值和纵坐标的最小值作为矩形区域的左上角的坐标;从右下角坐标中获取横坐标的最大值和纵坐标的最大值,将横坐标的最大值和纵坐标的最大值作为矩形区域的右下角的坐标;根据矩形区域的左上角的坐标和矩形区域的右下角的坐标,确定矩形区域。
在本实施例的一些可选实现方式中,上述第一编码模块650与第二编码模块660用于填充矩形区域的纯色可以为白色或黑色。
本领域技术人员可以理解,上述传输屏幕图像的装置600还包括一些其它公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图6中未示出。
应当理解,装置600中记载的诸模块与参考图2描述的方法中的各个步骤相对应。由此,上文针对传输屏幕图像的方法描述的操作和特征同样适用于装置600及其中包含的模块,在此不再赘述。装置600中的相应模块可以与终端设备和/或服务器中的模块相互配合以实现本申请实施例的方案。
进一步参考图7,作为对上述各图所示方法的实现,本申请提供了一种传输屏幕图像的装置的一个实施例,该装置实施例与图5所示的方法实施例相对应,该装置具体可以应用于接收屏幕图像传输服务的各种电子设备中。
如图7所示,本实施例所述的传输屏幕图像的装置700包括:发送模块710、接收模块720、第一解码模块730、第二解码模块740、和运算模块750。
其中,发送模块710,用于发送图像更新请求;接收模块720,用于接收第一编码数据和第二编码数据,其中,第一编码数据为采用第一编码器编码的矩形区域和填充为纯色的静态区域,第二编码数据为采用第二编码器编码的静态区域和填充为纯色的矩形区域,第一编码器的压缩比大于第二编码器的压缩比;第一解码模块730,用于采用第一解码器解码第一编码数据,得到第一解码数据,其中,第一解码器与第一编码器采用第一编解码标准;第二解码模块740,用于采用第二解码器解码第二编码数据,得到第二解码数据,其中,第二解码器与第二编码器采用第二编解码标准;运算模块750,用于根据填充的纯色对第一解码数据和第二解码数据进行位运算,得到更新后的图像。
在本实施例的一些可选实现方式中,运算模块750进一步用于:根据填充的黑色对第一解码数据和第二解码数据进行按位或运算,得到更新后的图像;或根据填充的白色对第一解码数据和第二解码数据进行按位与运算,得到更新后的图像。
本领域技术人员可以理解,上述传输屏幕图像的装置700还包括一些其它公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图7中未示出。
应当理解,装置700中记载的诸模块与参考图5描述的方法中的各个步骤相对应。由此,上文针对传输屏幕图像的方法描述的操作和特征同样适用于装置700及其中包含的模块,在此不再赘述。装置700中的相应模块可以与终端设备中的模块相互配合以实现本申请实施例的方案。
进一步参考图8,作为对上述各图所示方法的实现,本申请提供了一种传输屏幕图像的***的一个实施例,该***实施例与图2和图5所示的方法实施例相对应,该***可以包括图6和图7中所述的装置。
如图8所示,本实施例所述的传输屏幕图像的***800包括:用户端810和服务端820。
其中,用户端810,用于发送图像更新请求;接收第一编码数据和第二编码数据,其中,第一编码数据为采用第一编码器编码的矩形区域和填充为纯色的静态区域,第二编码数据为采用第二编码器编码的静态区域和填充为纯色的矩形区域,第一编码器的压缩比大于第二编码器的压缩比;采用第一解码器解码第一编码数据,得到第一解码数据,其中,第一解码器与第一编码器采用第一编解码标准;采用第二解码器解码第二编码数据,得到第二解码数据,其中,第二解码器与第二编码器采用第二编解码标准;以及根据填充的纯色对第一解码数据和第二解码数据进行位运算,得到更新后的图像;
服务端820,用于接收图像更新请求;获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域;将一个以上矩形动态区域合并为矩形区域;从屏幕区域中去除矩形区域,得到静态区域;采用第一编码器对矩形区域和填充为纯色的静态区域进行编码,得到第一编码数据;采用第二编码器对静态区域和填充为纯色的矩形区域进行编码,得到第二编码数据,其中,第一编码器的压缩比大于第二编码器的压缩比;向用户端发送第一编码数据和第二编码数据。
应当理解,***800中记载的用户端与参考图5描述的方法相对应,由此,上文针对图5中传输屏幕图像的方法描述的操作和特征同样适用于***800中的用户端810;***800中记载的服务端与参考图2描述的方法相对应,由此,上文针对图2中传输屏幕图像的方法描述的操作和特征同样适用于***800中的服务端820,在此不再赘述。
在本申请的上述实施例中,第一编码器和第二编码器仅代表采用不同编解码标准的两个编码器。本领域技术人员应当理解,其中的第一或第二并不构成对编码器的特殊限定。
在本申请的上述实施例中,第一编码数据和第二编码数据仅代表用于编码的数据和所采用编码器不同,其中,第一编码数据用于编码的数据为矩形区域和填充为纯色的静态区域,采用第一编码器对矩形区域和填充为纯色的静态区域进行编码,第二编码数据用于编码的数据为静态区域和填充为纯色的矩形区域,采用第二编码器对静态区域和填充为纯色的矩形区域进行编码。本领域技术人员应当理解,其中的第一或第二并不构成对编码数据的特殊限定。
在本申请的上述实施例中,第一判断步骤、第二判断步骤、第三判断步骤和第四判断步骤仅代表判断的对象和条件不同。本领域技术人员应当理解,其中的第一或第二并不构成对判断步骤的特殊限定。
在本申请的上述实施例中,第一解码器和第二解码器仅代表采用不同编解码标准的两个解码器。本领域技术人员应当理解,其中的第一或第二并不构成对解码器的特殊限定。
在本申请的上述实施例中,第一解码数据和第二解码数据仅代表用于解码的数据和所采用解码器不同,其中,第一解码数据用于解码的数据为第一编码数据,采用第一解码器对第一编码数据进行解码,第二解码数据用于解码的数据为第二编码数据,采用第二解码器对第二编码数据进行解码。本领域技术人员应当理解,其中的第一或第二并不构成对解码数据的特殊限定。
在本申请的上述实施例中,第一编解码标准和第二编解码标准仅代表两个不同的编解码标准。本领域技术人员应当理解,其中的第一或第二并不构成对编解码标准的特殊限定。
在本申请的上述实施例中,第一编码模块和第二编码模块仅代表两个不同的编码模块。本领域技术人员应当理解,其中的第一或第二并不构成对编码模块的特殊限定。
在本申请的上述实施例中,第一解码模块和第二解码模块仅代表两个不同的解码模块。本领域技术人员应当理解,其中的第一或第二并不构成对解码模块的特殊限定。
下面参考图9,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机***900的结构示意图。
如图9所示,计算机***900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有***900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块、获取模块、合并模块、去除模块、第一编码模块、第二编码模块和发送模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,接收模块还可以被描述为“接收图像更新请求的模块”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:接收图像更新请求;获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域;将一个以上矩形动态区域合并为矩形区域;从屏幕区域中去除矩形区域,得到静态区域;采用第一编码器对矩形区域和填充为纯色的静态区域进行编码,得到第一编码数据;采用第二编码器对静态区域和填充为纯色的矩形区域进行编码,得到第二编码数据,其中,第一编码器的压缩比大于第二编码器的压缩比;向用户端发送第一编码数据和第二编码数据。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (13)
1.一种传输屏幕图像的方法,其特征在于,所述方法包括:
接收图像更新请求;
获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域;
将所述一个以上矩形动态区域合并为矩形区域;
从屏幕区域中去除所述矩形区域,得到静态区域;
采用第一编码器对所述矩形区域和填充为纯色的所述静态区域进行编码,得到第一编码数据;
采用第二编码器对所述静态区域和填充为所述纯色的所述矩形区域进行编码,得到第二编码数据,其中,所述第一编码器的压缩比大于所述第二编码器的压缩比;
向用户端发送所述第一编码数据和所述第二编码数据。
2.根据权利要求1所述的传输屏幕图像的方法,其特征在于,所述获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域包括:
获取单个动态窗口,将所述单个动态窗口的左上角作为起始的扫描点,执行扫描步骤以获取所述单个动态窗口中未被其它窗口遮挡的一个以上矩形动态区域;
其中,所述扫描步骤包括:响应于所述扫描点未超出所述单个动态窗口的右边界,执行第一判断步骤;
所述第一判断步骤包括:判断所述扫描点是否被其它窗口遮挡或位于已扫描到的矩形动态区域内,若否,响应于所述扫描点首次未被其它窗口遮挡且未位于已扫描到的矩形动态区域内,将所述扫描点作为P1,响应于所述扫描点非首次未被其它窗口遮挡且未位于已扫描到的矩形动态区域内,执行第二判断步骤;
所述第二判断步骤包括:将所述扫描点的横坐标加1,判断所述扫描点是否超出所述单个动态窗口的右边界或被其它窗口遮挡或位于已扫描到的矩形动态区域内,若是,则将上一个扫描点作为矩形动态区域的右上角P2,将所述P1的纵坐标加1得到P3,将所述P2的纵坐标加1得到P4,对所述P3和P4,执行第三判断步骤;
所述第三判断步骤包括:判断所述P3和P4连线上的所有点是否超出所述单个动态窗口的右边界或被其它窗口遮挡或位于已扫描到的矩形动态区域内,若是,将P3的纵坐标减1作为所述矩形动态区域的左下角,将P4的纵坐标减1作为所述矩形动态区域的右下角,记录所述矩形动态区域。
3.根据权利要求2所述的传输屏幕图像的方法,其特征在于,所述扫描步骤还包括以下一项或多项:
在记录所述矩形动态区域之后,将所述P2的横坐标加1作为新的起始的扫描点,执行所述扫描步骤;
响应于所述扫描点已超出所述单个动态窗口的右边界,执行第四判断步骤,所述第四判断步骤包括:判断所述扫描点的纵坐标加1是否大于所述单个动态窗口的下边界,若是,则结束对所述单个动态窗口执行所述扫描步骤;若否,则将下一行的左边界点作为新的起始的扫描点,执行所述扫描步骤;
所述第一判断步骤还包括:若是,则将所述扫描点的横坐标加1,执行所述扫描步骤;
所述第二判断步骤还包括:若否,则继续执行所述第二判断步骤;
所述第三判断步骤还包括:若否,将P3的纵坐标加1后作为新的P3的纵坐标,将P4的纵坐标加1后作为新的P4的纵坐标,执行所述第三判断步骤。
4.根据权利要求1-3任意一项所述的传输屏幕图像的方法,其特征在于,所述将所述一个以上矩形动态区域合并为矩形区域包括:
获取每一个所述矩形动态区域的左上角坐标和右下角坐标;
从所述左上角坐标中获取横坐标的最小值和纵坐标的最小值,将所述横坐标的最小值和所述纵坐标的最小值作为所述矩形区域的左上角的坐标;
从所述右下角坐标中获取横坐标的最大值和纵坐标的最大值,将所述横坐标的最大值和所述纵坐标的最大值作为所述矩形区域的右下角的坐标;
根据所述矩形区域的左上角的坐标和所述矩形区域的右下角的坐标,确定所述矩形区域。
5.根据权利要求1所述的传输屏幕图像的方法,其特征在于,所述纯色为白色或黑色。
6.一种传输屏幕图像的方法,其特征在于,所述方法包括:
发送图像更新请求;
接收第一编码数据和第二编码数据,其中,所述第一编码数据为采用第一编码器编码的矩形区域和填充为纯色的静态区域,所述第二编码数据为采用第二编码器编码的所述静态区域和填充为所述纯色的所述矩形区域,所述第一编码器的压缩比大于所述第二编码器的压缩比;
采用第一解码器解码所述第一编码数据,得到第一解码数据,其中,所述第一解码器与所述第一编码器采用第一编解码标准;
采用第二解码器解码所述第二编码数据,得到第二解码数据,其中,所述第二解码器与所述第二编码器采用第二编解码标准;
根据填充的所述纯色对所述第一解码数据和所述第二解码数据进行位运算,得到更新后的图像。
7.根据权利要求6所述的传输屏幕图像的方法,其特征在于,所述根据填充的所述纯色对所述第一解码数据和所述第二解码数据进行位运算,得到更新后的图像包括:
根据填充的黑色对所述第一解码数据和所述第二解码数据进行按位或运算,得到更新后的图像;或
根据填充的白色对所述第一解码数据和所述第二解码数据进行按位与运算,得到更新后的图像。
8.一种传输屏幕图像的装置,其特征在于,所述装置包括:
接收模块,用于接收图像更新请求;
获取模块,用于获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域;
合并模块,用于将所述一个以上矩形动态区域合并为矩形区域;
去除模块,用于从屏幕区域中去除所述矩形区域,得到静态区域;
第一编码模块,用于采用第一编码器对所述矩形区域和填充为纯色的所述静态区域进行编码,得到第一编码数据;
第二编码模块,用于采用第二编码器对所述静态区域和填充为所述纯色的所述矩形区域进行编码,得到第二编码数据,其中,所述第一编码器的压缩比大于所述第二编码器的压缩比;
发送模块,用于向用户端发送所述第一编码数据和所述第二编码数据。
9.根据权利要求8所述的传输屏幕图像的装置,其特征在于,所述获取模块进一步用于:
获取单个动态窗口,将所述单个动态窗口的左上角作为起始的扫描点,执行扫描步骤以获取所述单个动态窗口中未被其它窗口遮挡的一个以上矩形动态区域,所述扫描步骤包括:
响应于所述扫描点未超出所述单个动态窗口的右边界,执行第一判断步骤,所述第一判断步骤包括:判断所述扫描点是否被其它窗口遮挡或位于已扫描到的矩形动态区域内,若否,响应于所述扫描点首次未被其它窗口遮挡且未位于已扫描到的矩形动态区域内,将所述扫描点作为P1,响应于所述扫描点非首次未被其它窗口遮挡且未位于已扫描到的矩形动态区域内,执行第二判断步骤,所述第二判断步骤包括:将所述扫描点的横坐标加1,判断所述扫描点是否超出所述单个动态窗口的右边界或被其它窗口遮挡或位于已扫描到的矩形动态区域内,若是,则将上一个扫描点作为矩形动态区域的右上角P2,将所述P1的纵坐标加1得到P3,将所述P2的纵坐标加1得到P4,对所述P3和P4,执行第三判断步骤,所述第三判断步骤包括:判断所述P3和P4连线上的所有点是否超出所述单个动态窗口的右边界或被其它窗口遮挡或位于已扫描到的矩形动态区域内,若是,将P3的纵坐标减1作为所述矩形动态区域的左下角,将P4的纵坐标减1作为所述矩形动态区域的右下角,记录所述矩形动态区域。
10.根据权利要求9所述的传输屏幕图像的装置,其特征在于,所述获取模块中的所述扫描步骤还包括以下一项或多项:
在记录所述矩形动态区域之后,将所述P2的横坐标加1作为新的起始的扫描点,执行所述扫描步骤;
响应于所述扫描点已超出所述单个动态窗口的右边界,执行第四判断步骤,所述第四判断步骤包括:判断所述扫描点的纵坐标加1是否大于所述单个动态窗口的下边界,若是,则结束对所述单个动态窗口执行所述扫描步骤,若否,则将下一行的左边界点作为新的起始的扫描点,执行所述扫描步骤;
所述第一判断步骤还包括:若是,则将所述扫描点的横坐标加1,执行所述扫描步骤;
所述第二判断步骤还包括:若否,则继续执行所述第二判断步骤;
所述第三判断步骤还包括:若否,将P3的纵坐标加1后作为新的P3的纵坐标,将P4的纵坐标加1后作为新的P4的纵坐标,执行所述第三判断步骤。
11.根据权利要求8-10任意一项所述的传输屏幕图像的装置,其特征在于,所述合并模块进一步用于:
获取每一个所述矩形动态区域的左上角坐标和右下角坐标;从所述左上角坐标中获取横坐标的最小值和纵坐标的最小值,将所述横坐标的最小值和所述纵坐标的最小值作为所述矩形区域的左上角的坐标;从所述右下角坐标中获取横坐标的最大值和纵坐标的最大值,将所述横坐标的最大值和所述纵坐标的最大值作为所述矩形区域的右下角的坐标;根据所述矩形区域的左上角的坐标和所述矩形区域的右下角的坐标,确定所述矩形区域。
12.一种传输屏幕图像的装置,其特征在于,所述装置包括:
发送模块,用于发送图像更新请求;
接收模块,用于接收第一编码数据和第二编码数据,其中,所述第一编码数据为采用第一编码器编码的矩形区域和填充为纯色的静态区域,所述第二编码数据为采用第二编码器编码的所述静态区域和填充为所述纯色的所述矩形区域,所述第一编码器的压缩比大于所述第二编码器的压缩比;
第一解码模块,用于采用第一解码器解码所述第一编码数据,得到第一解码数据,其中,所述第一解码器与所述第一编码器采用第一编解码标准;
第二解码模块,用于采用第二解码器解码所述第二编码数据,得到第二解码数据,其中,所述第二解码器与所述第二编码器采用第二编解码标准;
运算模块,用于根据填充的所述纯色对所述第一解码数据和所述第二解码数据进行位运算,得到更新后的图像。
13.一种传输屏幕图像的***,其特征在于,所述***包括:
用户端,用于发送图像更新请求;接收第一编码数据和第二编码数据,其中,所述第一编码数据为采用第一编码器编码的矩形区域和填充为纯色的静态区域,所述第二编码数据为采用第二编码器编码的所述静态区域和填充为所述纯色的所述矩形区域,第一编码器的压缩比大于第二编码器的压缩比;采用第一解码器解码所述第一编码数据,得到第一解码数据,其中,所述第一解码器与所述第一编码器采用第一编解码标准;采用第二解码器解码所述第二编码数据,得到第二解码数据,其中,所述第二解码器与所述第二编码器采用第二编解码标准;以及根据填充的所述纯色对所述第一解码数据和所述第二解码数据进行位运算,得到更新后的图像;
服务端,用于接收图像更新请求;获取动态窗口中未被其它窗口遮挡的一个以上矩形动态区域;将所述一个以上矩形动态区域合并为矩形区域;从屏幕区域中去除所述矩形区域,得到静态区域;采用第一编码器对所述矩形区域和填充为纯色的所述静态区域进行编码,得到第一编码数据;采用第二编码器对所述静态区域和填充为所述纯色的所述矩形区域进行编码,得到第二编码数据,其中,所述第一编码器的压缩比大于所述第二编码器的压缩比;向用户端发送所述第一编码数据和所述第二编码数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610312522.4A CN107368269B (zh) | 2016-05-11 | 2016-05-11 | 传输屏幕图像的方法、装置和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610312522.4A CN107368269B (zh) | 2016-05-11 | 2016-05-11 | 传输屏幕图像的方法、装置和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107368269A true CN107368269A (zh) | 2017-11-21 |
CN107368269B CN107368269B (zh) | 2019-03-26 |
Family
ID=60304401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610312522.4A Active CN107368269B (zh) | 2016-05-11 | 2016-05-11 | 传输屏幕图像的方法、装置和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107368269B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111402363A (zh) * | 2020-06-04 | 2020-07-10 | 广东睿江云计算股份有限公司 | 一种框架图片色彩填充的方法和*** |
CN111428069A (zh) * | 2020-03-11 | 2020-07-17 | 中交第二航务工程局有限公司 | 一种铣槽机施工数据获取方法 |
CN111510742A (zh) * | 2020-04-21 | 2020-08-07 | 北京仁光科技有限公司 | 用于至少两个视频信号的传输和显示的***和方法 |
CN111510741A (zh) * | 2020-04-21 | 2020-08-07 | 北京仁光科技有限公司 | 用于至少两个视频信号的传输和分布式显示的***和方法 |
WO2023024563A1 (zh) * | 2021-08-23 | 2023-03-02 | 中兴通讯股份有限公司 | 视频处理方法、服务器和计算机可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1128457A (zh) * | 1994-12-28 | 1996-08-07 | 现代电子产业株式会社 | 活动图像专家组4图像设备的物体背景信息编码设备和方法 |
CN1700774A (zh) * | 2004-05-18 | 2005-11-23 | 松下电器产业株式会社 | 运动图像编码方法和设备 |
CN1914915A (zh) * | 2004-04-23 | 2007-02-14 | 住友电气工业株式会社 | 活动图像数据的编码方法、解码方法及实施这些方法的终端装置、以及双向对话型*** |
CN1949872A (zh) * | 2005-10-13 | 2007-04-18 | 联想(北京)有限公司 | 动静态混合画面的投影方法和投影*** |
CN100388775C (zh) * | 1999-12-24 | 2008-05-14 | 三洋电机株式会社 | 数码相机、存储器控制设备、图像处理装置及其方法 |
US20110109797A1 (en) * | 2004-09-23 | 2011-05-12 | Dunton Randy R | Screen Filled Display of Digital Video Content |
CN103294438A (zh) * | 2013-06-21 | 2013-09-11 | 镇江冈山电子有限公司 | 虚拟桌面图像的控制传输方法及*** |
CN103581733A (zh) * | 2012-07-23 | 2014-02-12 | 三菱电机株式会社 | 远程显示装置 |
-
2016
- 2016-05-11 CN CN201610312522.4A patent/CN107368269B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1128457A (zh) * | 1994-12-28 | 1996-08-07 | 现代电子产业株式会社 | 活动图像专家组4图像设备的物体背景信息编码设备和方法 |
CN100388775C (zh) * | 1999-12-24 | 2008-05-14 | 三洋电机株式会社 | 数码相机、存储器控制设备、图像处理装置及其方法 |
CN1914915A (zh) * | 2004-04-23 | 2007-02-14 | 住友电气工业株式会社 | 活动图像数据的编码方法、解码方法及实施这些方法的终端装置、以及双向对话型*** |
CN1700774A (zh) * | 2004-05-18 | 2005-11-23 | 松下电器产业株式会社 | 运动图像编码方法和设备 |
US20110109797A1 (en) * | 2004-09-23 | 2011-05-12 | Dunton Randy R | Screen Filled Display of Digital Video Content |
CN1949872A (zh) * | 2005-10-13 | 2007-04-18 | 联想(北京)有限公司 | 动静态混合画面的投影方法和投影*** |
CN103581733A (zh) * | 2012-07-23 | 2014-02-12 | 三菱电机株式会社 | 远程显示装置 |
CN103294438A (zh) * | 2013-06-21 | 2013-09-11 | 镇江冈山电子有限公司 | 虚拟桌面图像的控制传输方法及*** |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111428069A (zh) * | 2020-03-11 | 2020-07-17 | 中交第二航务工程局有限公司 | 一种铣槽机施工数据获取方法 |
CN111510742A (zh) * | 2020-04-21 | 2020-08-07 | 北京仁光科技有限公司 | 用于至少两个视频信号的传输和显示的***和方法 |
CN111510741A (zh) * | 2020-04-21 | 2020-08-07 | 北京仁光科技有限公司 | 用于至少两个视频信号的传输和分布式显示的***和方法 |
CN111402363A (zh) * | 2020-06-04 | 2020-07-10 | 广东睿江云计算股份有限公司 | 一种框架图片色彩填充的方法和*** |
WO2023024563A1 (zh) * | 2021-08-23 | 2023-03-02 | 中兴通讯股份有限公司 | 视频处理方法、服务器和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107368269B (zh) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107368269A (zh) | 传输屏幕图像的方法、装置和*** | |
CN105677279B (zh) | 桌面区域共享方法、***及相应的共享端和观看端 | |
US20200219285A1 (en) | Image padding in video-based point-cloud compression codec | |
CN1856819B (zh) | 通过分布式应用程序的图形数据的网络传输的***和方法 | |
US8559709B1 (en) | Method and apparatus for progressive encoding for text transmission | |
US11210812B2 (en) | Single-pass boundary detection in video-based point cloud compression | |
CN113272867A (zh) | 占用图精度的自适应选择 | |
CN109040792B (zh) | 一种视频重定向的处理方法、云终端和云桌面服务器 | |
US20150123902A1 (en) | Method and apparatus for synchronizing virtual and physical mouse pointers on remote kvm systems | |
CN110419224A (zh) | 用于封装和流传输虚拟现实媒体内容的方法和装置 | |
CN110636305B (zh) | 图像渲染和编码方法及相关装置 | |
JP5995864B2 (ja) | 表示データの符号化方法及びシステム | |
US11922663B2 (en) | Decision-making rules for attribute smoothing | |
CN113946402A (zh) | 基于渲染分离的云手机加速方法、***、设备及存储介质 | |
KR20140066194A (ko) | 복잡도가 낮은 원격 프리젠테이션 세션 인코더 | |
CN105959724A (zh) | 一种视频数据处理方法以及装置 | |
CN107665128A (zh) | 图像处理方法、***、服务器及可读存储介质 | |
CN109922347A (zh) | 视频编译码方法及其图像处理装置 | |
US20120218292A1 (en) | System and method for multistage optimized jpeg output | |
WO2020128652A1 (en) | Point cloud auxiliary information coding | |
CN104469400A (zh) | 一种基于rfb协议的图像数据压缩方法 | |
CN111930233A (zh) | 一种全景视频图像显示方法及显示设备 | |
US20170289547A1 (en) | Video decoding using point sprites | |
US20040215742A1 (en) | Image perfection for virtual presence architecture (VPA) | |
CN116966546A (zh) | 图像处理方法、装置、介质、设备和程序产品 |
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 |