专利名称::普适环境下的远程桌面同步方法
技术领域:
:本发明属于计算机应用领域,具体涉及一种普适环境下的远程桌面同步方法ASTR(TheAssociationofSpatio-TemporalRedundancyReductions),该方法特别适合于带宽和客户端计算能力有限的普适环境。
背景技术:
:近年来,出现了许多基于服务器计算(SBC,server-basedcomputing)的应用,例如VNC,PCAnywhere,Netmeeting,使得我们能像访问本地机器一样很方便地访问远程计算机中的资源。在这些应用中,图形化屏幕的压缩和传输是远程桌面同步(RSS,remotescreensynchronization)方法中最关键的步骤。然而,服务器屏幕通常会频繁发生变化,产生大量图像数据,这些数据的传输会消耗大量带宽。为了减少传输过程中带宽(bandwidth)的消耗,出现了许多编码方式,例如Hextile,Zlib,Tight,FCE等。早期,采用一些相对简单的方法来处理服务器屏幕数据,例如Raw,RRE,Hextile。随后,在TridiaVNC上实现了两种被称为Zlib和ZlibHex的算法。它们都使用了流行的免费“Zlib”库来实现对Raw和Hextile编码的数据进行额外的数据压缩。这些方法使需要传输的数据量有所减少。然而,带宽问题仍然十分突出。随后,研究者提出了一些更复杂的方法来压缩和传输图形屏幕数据。Tight是一种新的有效的编码方法,该方法通过应用数据分析器来决定输入数据的统计特性,从而决定采用哪种预处理过滤器来处理数据。在用Zlib压缩前,不同的数据过滤器被用来预处理不同类型的图像数据。这种方法试图找到一些特殊图像(例如单色图像)以减少最终传输的压缩数据。这种方法对一些有许多空白区域的简单图形是有效的,但对复杂图形,效率不高。OLI(OptimalLinearInterpolation)通过应用优化线性插值提出了一种新的基于象素的屏幕更新编码算法。服务器只发送一小部分象素样点来表示屏幕的更新,通过象素样点,客户端使用分段线性插值(piecewiselinearinterpolation)来恢复更新的全部区域。基于OLI,产生了一种2-D无损线性插值(2DLI)。然而,这种方法仍然需要单独地将每个区域作为静态图像来处理。最近,研究者又提出了一种新的屏幕编码方法-FCE(fastcontentexpression),这种编码方法是在给定方形区域内构造一个唯一象素值表,并将区域中的每个值转换为一个索引。这种方法仍然没有考虑在不同时间更新不同区域的时间冗余。此外,还有一些应用于特殊场合的特殊方法。如,对于嵌入式平台,研究者提出了一种应用于简单屏幕处理的方法-μVNC。然而,它只适合非常简单的屏幕,例如VCR(VideoCassetteRecorder)的控制板。在传统的图像处理方法中,BME(BlockMotionEstimate)用来完成宏块的运动估计和绝对误差和的计算。SSC-APDS(SubsamplingSearchCandidatesinAdjustablePartialDistortionSearch)算法(提供一份文献)是目前提出的一个高效方法,它对候选位移搜索点和宏块象素点同时进行抽样。该算法精度高、速度快。然而,由于最佳位置的搜索总是从搜索区域的中间点开始,不够灵活。由于存在大量因滚动条的运动,窗口的移动导致的平移运动,在用户界面图像中许多相邻宏块倾向于有相同或相似的运动。如果我们从搜索区域中心开始估计每个宏块的运动,而它的最佳点远离中心,这将花费很长时间到达最佳的点,因为在到达最佳点之前需要沿着螺旋扫描路径进行许多误差和的比较。另一方面,在传统的SSC-APDS算法中,有时即使相邻宏块有相同运动,SSC-APDS的计算结果也可能不同,特别当一个宏块有多个最佳运动点时。由上可知,传统方式是采用各种静态图像处理方法来压缩和传输更新的服务器屏幕。当屏幕一些区域由于某些原因发生变化,例如用户拖动滚动条,窗口切换,系统消息触发等,这些区域的图像将会被获取,通过Hextile,Tight或者FCE等方法进行压缩,并发送到客户端。如果屏幕频繁发生变化,压缩后的静态图像数据将非常巨大,导致相当大的数据传输开销。这些方式比较适合拥有较大带宽的场合,如本地局域网,校园网。即使在这些情况下,在高峰时刻,仍然可能遇到带宽问题,例如,当多个用户同时请求相同的资源。传统的图像处理方法,例如Hextile,Zlib,Tight,FCE等仅仅考虑了减少空间冗余,因而仍然需要传输大量冗余数据。最近,在普适环境下基于服务器计算的应用越来越多。然而,普适环境的网络带宽通常相对较窄而且不稳定,因而传输大量屏幕压缩数据越来越成为瓶颈。另一方面,由于要传输的图像是一系列具有用户界面风格的屏幕持续改变的区域,在两个连续屏幕图像之间通常存在大量的时间冗余。尤其在计算机图形界面中,平移是一种经常发生的动作,这也是产生时间冗余的一个重要因素。因此,可以应用这些潜在的时间冗余来进一步减少图像数据的传输。
发明内容本发明的目的在于提供一种普适环境下的远程桌面同步方法,该方法可以减少图像数据和减少带宽消耗。本发明提供的一种普适环境下的远程桌面同步方法,其步骤包括(1)当服务器端屏幕发生变化时,服务器获取包含变化的子域,子域是指包含变化区域的最小矩形;(2)将上述子域划分为一系列宏块,再将子域划分如下a、b和c类型的子区,a为没有发生改变的子区、b为只含有平移运动的子区,其它子区为c;其步骤为(2.1)将包含运动的子域划分为一系列的宏块;(2.2)按照下述计算公式计算最合适的搜索起点再采用SSC-APDS算法,通过与前一帧相应图像区域进行比较,根据变化的程度将子域划分如下a、b和c类型的子区,a为没有发生改变的子区、b为只含有平移运动的子区,其它子区为c;Vρ=11+λ(1nΣi=1nVρ1i+λ1mΣj=1mVρ2j)]]>其中,为最靠近宏块的运动向量,最靠近宏块是指与当前宏块相邻的宏块,为与最靠近宏块相邻的宏块的运动向量,n,m分别为和的数目,λ为影响因子;(3)对上述子区进行规范化,使子区成为规则的矩形,其步骤为(3.1)选择子区的左上宏块,将它作为当前矩形;(3.2)做水平延伸,搜索最右边所有宏块的相邻宏块,将搜索到的相邻宏块添加到当前矩形中;(3.3)做垂直延伸,搜索最下方所有宏块的相邻宏块,将搜索到的相邻宏块添加到当前矩形中;;(3.4)重复上述步骤(3.2)和(3.3),直到不能继续为止;(3.5)从子区中移去当前矩形;(3.6)重复步骤(3.1)至(3.5),直到子区为空;(4)服务器将屏幕变化的信息发送到客户端,客户端重构相应的子域。本发明考虑屏幕变化区域在相邻两帧中的时间冗余,将屏幕变化区域根据不同时间冗余进行分类处理,从而达到减少图像数据的目的。采用改进的运动估计方法实现对变化区域进行运动估计和分类,最后达到减少带宽消耗的目的。具体而言,本发明具有以下特点。(1)减少了带宽消耗在传统方法中,对服务器屏幕的处理通常采用静态图像压缩方式,即将变化的子域视为静态图像,采用Hextile,Zlib,Tight,FCE等方法对图像进行压缩、传输。ASTR则将子域划分为3种类型的子区,并进行相应的处理,而不是发送整个静态图像,因此减少了需要传输的数据量,节省了带宽。(2)降低了客户端的开销由于客户端从服务器接收的需要处理的数据比其它方法少,客户端的处理开销也减小。(3)适合普适环境ASTR能比其他方法节省更多带宽,并且减少客户端的开销。由于需进行BME处理,服务器端开销将一定程度上加大。不过,如果应用中含有大量平移运动,服务器开销会明显降低。一般地,这种方法非常适合于带宽和客户端的计算能力受限的普适环境。图1为本发明方法的主流程框图;图2为子区划分及重构示意图;图3为改进的SSC-APDS算法示意图,其中,(a)传统SSC-APDS算法的搜索路径,(b)改进的SSC-APDS算法的搜索路径,(c)决策的宏块;图4为对子区进行规范化示意图,其中,(a)获取子域,(b)在获取子域中找到的子区,(c)将子区划分为规则矩形;图5为对子区进行规范化流程图;图6为客户端重构子域示意图。具体实施例方式本发明根据对SSC-APDS算法进行改进,将服务器屏幕变化的子域划分为不同3种类型的子区,并进行相应的处理,从而达到减少带宽消耗和降低客户端开销的目的。下面结合附图和实例对本发明作详细的说明。如图1所示,本发明远程桌面同步方法的实现步骤如下(1)当服务器端屏幕发生变化时,服务器获取包含变化的子域,子域是指包含变化区域的最小矩形。屏幕变化通常发生在局部区域,而不是整个屏幕。传统的屏幕同步方法已经能够获取发生变化的屏幕局部区域。(2)将各子域划分为一系列宏块(进行分类的基本图像区域单元,例如16×16大小的块),采用改进的SSC-APDS算法划分为3种类型的子区(具有相同时间冗余类型的宏块组成的区域)。3种类型的的子区为类型a没有发生改变的子区(如图2中D)。由于我们用一个矩形来描述包含运动的区域,与以前的相应区域比较也许存在一些没有发生变化的子区,对这些子区不必处理。类型b只含有平移运动的子区(如图2中A和C)。这意味着这个分区能够由前一帧中相应子区的原始位置和当前位置的运动向量来表示。在传统的方法中,这种分区也作为静态图片进行压缩并发送。这里仅发送运动向量的元数据和子区的位置而不是整个图像区域,这将减少发送的数据。在许多情况下,对于用户界面风格,用户倾向于拖动滚动条,点击PageDown,PageUp,移动窗口等等,从而产生大量平移运动。所以通过一些元数据来表示这种区域的运动很有意义。类型c除(a)和(b)以外的其他子区(如图2中B)。这时我们不能在前一帧中找到一个与当前子区相同的相应区域。我们需要通过补偿块和它的运动来描述这种类型的子区。当然,我们应当在前一帧中当前子区位置的附近寻找一个最相似的子区来简化补偿块。然后采用传统静态图像压缩方法来压缩补偿块。步骤(2)的具体步骤如下(2.1)将包含运动的子域划分为一系列的宏块,通常是16×16。为了识别不同类型的子区,获取的子域被划分为一系列标准的宏块(通常是16×16),并利用BME来完成宏块的运动估计和绝对误差和的计算。为了提高BME的速度并使宏块更加适合合并,我们通过将搜索起点从中心移动到最合适的位置,对SSC-APDS算法进行了改进。传统的SSC-APDS算法选择搜索区域的中心作为起点,如图3(a)。改进的SSC-APDS算法选择最合适的搜索起点,如图3(b)。(2.2)按照下述计算公式寻求最合适的搜索起点,再采用SSC-APDS算法,通过与前一帧相应图像区域进行比较,根据变化的程度将子域划分为3种类型的子区,即没有发生改变的子区、只含有平移运动的子区和其它。当前宏块周围的一些宏块的运动被用来决定最适合的起点。其中,最合适的搜索起点计算如下Vρ=11+λ(1nΣi=1nVρ1i+λ1mΣj=1mVρ2j)]]>是最合适的搜索起点(如图3(b)),为最靠近的当前宏块的周边各宏块的运动向量,为第二靠近的周边宏块(即与最靠近宏块相邻的宏块)的运动向量。n,m分别为和的数目。λ为影响因子,λ的值可设为0.5。其中尚未被计算的宏块不予考虑,如图3(c)。(3)对上述子区进行规范化,使子区成为规则的矩形(如图4)。由于每个子区经常是难于描述的不规则区域,因此有必要将它划分为一些规则矩形。规范化的流程图如图5所示,规范化的步骤如下(3.1)选择子区的左上宏块,将它作为当前矩形。(3.2)做水平延伸,搜索最右边所有宏块的相邻宏块,如果这些相邻宏块存在,将它们添加到当前矩形中。(3.3)做垂直延伸,搜索最下方所有宏块的相邻宏块,如果这些相邻宏块存在,将它们添加到当前矩形中。(3.4)交替重复上述步骤(3.2)和(3.3)直到不能继续为止。(3.5)从子区中移去当前矩形。(3.6)重复步骤(3.1)至(3.5),直到子区为空。(4)服务器向客户端发送相关信息,客户端重构相应的子域(如图6)。具体步骤如下(4.1)对于不同类型的子区,服务器发送不同的消息。通过上述步骤将子域划分为上述3种类型子区,从而使得时间冗余得到充分考虑。在获得这些子区后,服务器发送相关数据给客户端。对于类型a,服务器端不需传送任何数据。对于类型b,服务器端只需传输一些元数据,包括运动向量和原始子区的位置到客户端。对于类型c,服务器端需要传输更多的数据。除了元数据,补偿块也需要一起被压缩和发送。(4.2)客户端根据服务器发送的消息,对客户端前一帧中相应的子域进行重构。通过上述分析,很明显的是,客户端和服务器需要分别保存整个屏幕的前一帧。当客户端接收到一个需要更新的子域的一系列数据时,它根据数据的类型搜索相关子区,并重构这个区域。对于类型a,客户端不需进行任何操作。对于类型b,客户端只需根据运动向量将客户端前一帧中的相应子区复制到当前位置。对于类型c,客户端解压缩补偿块,与客户端前一帧中相应子区来产生当前子区。由上可知,补偿块的压缩方式决定了客户端获得的屏幕是有损还是无损的。如果采用无损压缩方式,例如Zlib,则更新后的屏幕是无损的。否则,如果采用有损压缩方式,例如JPEG,更新后的屏幕则是有损的。在一些以前提出的方法中,为了满足一些窄带宽环境的需要。有损方式经常被作为首选。然而,ASTR减少了需要发送的数据。无损方式可以作为首选,这将为客户端提供更清晰的屏幕。当获取的服务器当前屏幕的变化区域和前一帧的相应区域非常相似时,ASTR将非常高效。然而,如果前一帧的相应区域很大且与当前区域的区别很大,这将会花费大量时间来进行子区的分类,因为BME会消耗大量时间。在这里,采用一个折中的方法来避免这个问题。当我们开始处理获取区域时,首先采用改进的SSC-APDS算法分析少量的分散宏块。从它们的运动和绝对误差和,我们能够判断当前获取的区域是否和前一区域相似程度。如果差别很大,则采用传统的方法(如Tight)而不是ASTR来压缩这个区域。实例系统配置如下服务器IBM手提电脑,操作系统WindowsXP,CPUPentiumM1.7GHz,内存512MB客户端Asus手提电脑,操作系统WindowsXP,CPUPentiumM1.4GHz,内存256MB网络802.11b无线局域网,带宽10Mb/s。根据上述的实施步骤,采用下述测试程序对其进行测试,其带宽消耗,服务器开销和客户端开销如表1所示,表1还列出了使用Hextile,Tight和FCE时的相关数据。测试程序S1在阅读器中打开一个PDF文件并且以每150ms/行的速度自动滚动。测试程序S2执行WindowsXP系统中的应用程序tour.exe。表1四种方法的结果比较ASTR方法比其他方法占用更少带宽。表1列出了4种方法各自的平均带宽。在运行测试程序S1,Hextile方法的平均带宽大约为865KB/s,这比其他方法多因为它只是进行简单的处理,仅仅将图像划分为许多小块,而不进行压缩。Tight和FCE采用复杂的算法来减少空间冗余。它们占用的带宽明显减少,分别为191KB/s和109K3/s。此外,ASTR考虑了时间冗余和空间冗余。所以带宽进一步减少,只有58KB/s。从运行测试程序S2的结果中,可以得出相似的结论。表1中列出了采用4种方法服务器的CPU平均消耗。对于运行测试程序S2,ASTR比其他方法花费更多的CPU时间是合理的,因为对于子区分类的BME过程是非常耗时的步骤。然而,对于运行测试程序S1,出乎意料的是,我们发现ASTR比Tight和FCE花费更少的CPU时间。导致这个结果的主要原因是在运行测试程序S1时,屏幕滚动产生了许多平移运动,这极大地加速了BME处理。同时,因为极少补偿块需要处理,静态图像压缩花费的时间也明显减少。所以,ASTR比Tight和FCE花费CPU的时间更少。表1也给出了通过4种方法服务器和客户端的CPU消耗。从表中,我们可以发现,在客户端,ASTR通常比Tight和FCE占用更少的CPU时间来重构屏幕,因为客户端需要解压的图像数据更少。当然,在客户端,Hextile通常花费最少CPU时间,由于客户端不需要解压缩数据。上述实验结果表明ASTR能明显减少传输数据的带宽和客户端的开销。权利要求1.一种普适环境下的远程桌面同步方法,其步骤包括(1)当服务器端屏幕发生变化时,服务器获取包含变化的子域,子域是指包含变化区域的最小矩形;(2)将上述子域划分为一系列宏块,再将子域划分如下a、b和c类型的子区,a为没有发生改变的子区、b为只含有平移运动的子区,其它子区为c;其步骤为(2.1)将包含运动的子域划分为一系列的宏块;(2.2)按照下述计算公式计算最合适的搜索起点,再采用SSC-APDS算法,通过与前一帧相应图像区域进行比较,根据变化的程度将子域划分如下a、b和c类型的子区,a为没有发生改变的子区、b为只含有平移运动的子区,其它子区为c;Vρ=11+λ(1nΣi=1nV1iρ+λ1mΣj=1mV2jρ)]]>其中,为最靠近宏块的运动向量,最靠近宏块是指与当前宏块相邻的宏块,为与最靠近宏块相邻的宏块的运动向量,n,m分别为和的数目,λ为影响因子;(3)对上述子区进行规范化,使子区成为规则的矩形,其步骤为(3.1)选择子区的左上宏块,将它作为当前矩形;(3.2)做水平延伸,搜索最右边所有宏块的相邻宏块,将搜索到的相邻宏块添加到当前矩形中;(3.3)做垂直延伸,搜索最下方所有宏块的相邻宏块,将搜索到的相邻宏块添加到当前矩形中;(3.4)重复上述步骤(3.2)和(3.3),直到不能继续为止;(3.5)从子区中移去当前矩形;(3.6)重复步骤(3.1)至(3.5),直到子区为空;(4)服务器将屏幕变化的信息发送到客户端,客户端重构相应的子域。2.根据权利要求1所述的方法,其特征在于步骤(4)包括以下步骤(4.1)对于不同类型的子区,服务器按照不同类型发送不同的消息;对于类型a的子区,服务器端不传送数据;对于类型b的子区,服务器端传输包括运动向量和原始子区的位置的元数据到客户端;对于类型c的子区,服务器端传输元数据和补偿块;(4.2)客户端根据服务器发送的消息,对客户端前一帧中相应的子域进行重构;对于类型a的子区,客户端不进行操作;对于类型b的子区,客户端根据运动向量将客户端前一帧中的相应子区复制到当前位置;对于类型c的子区,客户端解压缩补偿块,与客户端前一帧中相应子区来产生当前子区。全文摘要本发明公开了一种普适环境下的远程桌面同步方法,步骤包括①当服务器端屏幕发生变化时,服务器获取包含变化的子域,子域是指包含变化区域的最小矩形;②将子域划分为宏块,再将子域a、b和c类型的子区;③对子区进行规范化,使子区成为规则的矩形;④服务器将屏幕变化的信息发送到客户端,客户端重构相应的子域。本发明考虑屏幕变化区域在相邻两帧中的时间冗余,将屏幕变化区域根据不同时间冗余进行分类处理,从而达到减少图像数据的目的。采用改进的运动估计方法实现对变化区域进行运动估计和分类,最后达到减少带宽消耗的目的,降低了客户端的开销;适合普适环境。文档编号G06F3/14GK101014127SQ20071005140公开日2007年8月8日申请日期2007年1月26日优先权日2007年1月26日发明者金海,蒋文斌,朱漳楠,叶启伟,刘伟,甘泉,项国富申请人:华中科技大学