CN102222314B - 用并行处理从源位图标识并提取模式来加速位图远程发送 - Google Patents

用并行处理从源位图标识并提取模式来加速位图远程发送 Download PDF

Info

Publication number
CN102222314B
CN102222314B CN201110102140.6A CN201110102140A CN102222314B CN 102222314 B CN102222314 B CN 102222314B CN 201110102140 A CN201110102140 A CN 201110102140A CN 102222314 B CN102222314 B CN 102222314B
Authority
CN
China
Prior art keywords
pixel
image
value
segment
feature
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.)
Expired - Fee Related
Application number
CN201110102140.6A
Other languages
English (en)
Other versions
CN102222314A (zh
Inventor
N·Y·阿布多
V·A·奥布
C·L·泽特尼克三世
M·A·麦克穆伦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102222314A publication Critical patent/CN102222314A/zh
Application granted granted Critical
Publication of CN102222314B publication Critical patent/CN102222314B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本发明揭示了用并行处理从源位图标识并提取模式来加速位图远程发送。揭示了用于通过从源位图中提取模式来加速位图远程发送的系统、方法和计算机可读存储介质。服务器采用了源图像,并对其执行边缘检测操作。从该被边缘检测的图像中,通过并行地对图像执行一小操作的多次迭代-例如,通过对各个非白色像素分配一唯一值,接着对各个像素分配在其本身和其邻居之间的最小值,直到在一迭代中没有像素被分配新值,来确定图像的连接的片断。并行地执行这些操作显著地减少了需要被用以标识连接的片断的时间。当片断被标识时,它们可由客户机高速缓存使得当服务器重新遇到它们时,它们不需要被再次发送到客户机。

Description

用并行处理从源位图标识并提取模式来加速位图远程发送
技术领域
本发明涉及加速位图远程发送,尤其涉及使用并行处理技术从源位图中标识并提取模式来加速位图远程发送。
背景技术
虽然计算机曾经一度是孤立的并且与其他计算机具有最小的或很少的交互,但是现在计算机通过局域网(LAN)、广域网(WAN)、拨号连接等等与各种各样的其他计算机进行交互。随着因特网的广泛增长,计算机之间的连接已经变得更加重要并且已经开发了许多新的应用程序和技术。大规模网络的增长以及低成本个人计算机的广泛可用性已经从根本上改变了许多人工作、交互、通信、以及玩乐的方式。
网络通信的一种日益增加的流行形式一般被称为远程呈现系统,其能使用诸如远程桌面协议(RDP)以及独立计算体系结构(ICA)来与远程客户机共享在服务器上的桌面和在服务器上执行的其他应用。这样的计算系统通常将来自客户机的键盘按压和鼠标点击或选择传送到服务器,通过网络连接(例如,因特网)将屏幕更新转播回另一方向。由此,当实际上仅仅向客户机设备发送如在服务器侧上出现的桌面或应用的屏幕截图时,用户具有好像他的或她的机器正在完全地本地地操作的体验。
两种常用的将图形数据发送到客户机的技术是(1)发送告知客户机侧的子例程要画什么以及如何画的图元和其他操作,(2)向客户机发送位图图像以供显示。通常,发送图元所需要的带宽小于发送该图元的执行的视觉结果。例如,11个字符的串“Helloworld”的文本图元可用11个Unicode字节表示。如果每个字符显示在12像素乘12像素的区域内,那么“Helloworld”的位图表示将需要大约200倍的更多字节来表示,并且由此需要大约200倍的更多带宽来发送。
同样地,不透明矩形以及图像的滚动的图元表示相比于传送它们对应物的位图,需要少于至少一个数量级的带宽。不透明矩形的图元表示一般不需要超过4个字节。等效的位图表示可被高度压缩,但一般依然需要至少几个千字节。同样地,图像滚动(有时称为“屏到屏位块传送”)可用图元表示为占据大约10个字节的命令。移动800像素乘400像素窗口的位图形式可需要多至1.83兆字节(800乘400像素区域乘以每像素3字节,并考虑到旧位置和新位置再被翻倍)或大约空间的10,000倍。
可能存在没有图元可用于发送的时候,诸如当先前存储的图像要被发送时。在这种情况下,在位图帧要被发送到客户机(诸如应用窗口)的情况下,位图帧可被细分成小块。这些小块接着在客户机侧被高速缓存,并且当一小块在两个位图之间重复时,服务器向客户机发送指令以显示被高速缓存的小块而不是重新向客户机发送该小块。这可显著地减少远程呈现会话的带宽成本,尤其在小块是频繁地重复的情况下。
然而,即使使用这些高速缓存位图小块的技术,发送位图的带宽需求依然大大超过发送图元的带宽需求。此外,存在许多高速缓存证明是无效的情况,诸如当窗口被滚动不是小块的尺寸内的像素数量的偶倍数的多个像素时-即使图像依然本质上是相同的,因为其不以相同的方式与小块对齐,已被高速缓存的小块是无用的。
发明内容
因此,减少跨远程呈现会话发送位图图像所需的带宽是对于现有技术的改进。提供使用其能在将服务器侧上的图像发送到客户机之前快速地处理这些图像的并行处理技术是另一改进。这些并行处理技术可利用图形处理单元(GPU)或向量处理器。
在本申请的一实施例中,服务器计算设备分析要在远程呈现会话中发送的图像以寻找可能的重复特征(在图像内重复或在服务器将在会话中发送的多个图像之间重复)。这些特征可包括诸如文本的事物,以及应用的导航按钮(例如,向上箭头的图标)。
服务器通过定位图像内具有重复的最大可能性的片断来标识图像内特征的各个实例。通过在图像处理单元(GPU)上并行地执行操作或通过利用中央处理单元(CPU)的并行指令,标识图像内的片断的该过程可在计算设备上快速地执行。
在存储器的不同部分之间(诸如在主系统存储器和图形处理单元(GPU)的视频存储器之间)移动数据是“昂贵的”操作,即,相对于要在数据上执行的其他操作或相对于可用于处理数据的时间量,这么做需要相当大量的时间。在要被发送到客户机(例如,呈现的屏幕)的图像已经驻留在视频存储器内的情况下,接着将其保留在视频存储器内并使用GPU对其处理可避免需要执行消耗时间的从视频存储器读回图像到系统存储器(其中它可通过逻辑处理器在其上执行)。
除了解决传送时间的问题,在GPU上处理图像而不是在逻辑处理器上还存在另一优点。GPU一般提供非常快速地在图像内的每个像素上执行简单操作的方式。这些GPU技术通常提供超过它们的逻辑处理器技术等效的一个数量级的性能益处。
仅仅使用GPU来处理图像还有另一优点。通过这么做,这样避免使用CPU来执行等效操作,由此解放了CPU来执行其他任务,并增加了系统的处理资源的利用。
继续关于连接的片断,各个这样找到的片断接着被称为特征,并被分配散列签名。接着,服务器使用预定的值来代替由各个特征占据的区域。预定的值可以是区域的主色彩、或相邻像素的重复,使得最大化单色行程长度并因此压缩。接着,服务器将图像划分成小块。
服务器接着高速缓存新的特征和新的小块。服务器确定哪些特征和小块(如果有的话)已经被存储在远程呈现会话的客户机计算设备上。在客户机具有已经被存储的特征或小块的情况下,服务器指令客户机在图像内该特征或小块的合适位置处显示该特征或小块。在客户机没有已经被存储的特征或小块的情况下,服务器向客户机发送特征或小块以及既存储该特征或小块又在图像内该特征或小块的合适位置处显示该特征或小块的指示。
本公开包含用于实现这些教导的系统、方法和计算机可读存储介质。
本领域技术人员将理解,本发明的一个或多个方面可包括但不限于用于实现本发明的本文所述方面的电路和/或编程;该电路和/或编程实质上可以是配置成实现本文所述方面的硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。
尽管本揭示涉及“位图”图像,但是可以理解的是这些技术可被应用到用各种格式表示的图像。
以上是概述,并且因此必然包含细节的简化、一般化及省略。本领域技术人员将明白,本概述只是说明性的并且决不旨在是限制性的。
附图简述
参考附图来进一步描述用于通过从源位图标识并提取模式来加速位图远程发送的系统、方法和计算机可读介质,附图中:
图1示出了可在其中体现了在此描述的技术的示例性通用计算环境。
图2示出了要在远程呈现会话中传送的样本图像。
图3-8示出了用于通过从源位图标识并提取模式来加速位图远程发送的技术。
图3A示出了在将图2的样本图像转换成图像的黑白表示之后的该样本图像。
图3B示出了在将图3A的图像分割以标识一个或多个特征之后的该图像。
图4示出了应用到图2的样本图像的图3B的所标识的特征。
图5A示出了类似于图2的样本图像的另一要在远程呈现会话中传送的样本图像。
图5B示出了图5A的图像的纯文本分割。
图5C示出了图5A的图像的非文本分割。
图6A示出了部分地包括特征的小块。
图6B示出了在将特征移除并用小块的主特性替换之后的图6A的小块。
图7示出了用于服务器通过从源位图提取非网格小块来加速位图远程发送的示例性操作过程。
图8示出了用于客户机通过从源位图提取非网格小块来加速位图远程发送的示例性操作过程。
图9和10示出了用于确定图像内特征的并行处理技术。
图9示出了可被用以在计算设备的图形处理单元上执行图3A和3B描绘的操作的操作过程。
图9A描绘了在其上执行图9的操作过程的图像。
图9B描绘了在执行了图9的一些操作过程的迭代之后的图9A的图像。
图9C描绘了在执行了图9的一些操作过程的迭代之后的图9B的图像。
图9D描绘了在执行了图9的一些操作过程的迭代之后的图9C的图像。
图9E描绘了在执行了图9的一些操作过程的迭代之后的图9D的图像。
图9F描绘了在执行了图9的一些操作过程的迭代之后的图9E的图像。
图10示出了可被用以在计算设备的向量处理器上执行图3A和3B描绘的操作的操作过程。
图10A描绘了在其上执行图10的操作的二进制图像。
图10B描绘了在图10的操作1006内向各个黑色像素分配一值后图10A的二进制图像。
图10C描绘了在图10的操作1006内被转置之后的图10B的图像。
图10D描绘了在图10的操作1008内向各个像素分配一值后图10C的图像。
说明性实施例的详细描述
图1是在其中可实现在此描述的技术的通用计算设备的框图。图1及以下讨论旨在提供可在其中实现本发明的合适计算环境的简要概括描述。
贯穿本发明使用的术语电路可包括诸如硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件。术语“电路”还可包括微处理器、专用集成电路、和/或一个或多个逻辑处理器,例如由固件和/或软件配置的多核通用处理单元的一个或多个核。逻辑处理器可由指令来配置,指令具体化可用于执行从例如RAM(在此称为“系统存储器”)、ROM、固件和/或大容量存储等存储器加载的功能的逻辑。在其中电路包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件实现的功能或软件实现的功能之间几乎没有差别的地步,因而选择硬件还是软件来实现此处描述的功能只是一个设计选择。换言之,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现留给了实现者。
现在参考图1,描绘了示例性计算系统100。计算机系统100可包括逻辑处理器102,如执行核。尽管示出了一个逻辑处理器102,但在其他实施例中,计算机系统100可具有多个逻辑处理器,例如每一处理器基板有多个执行核,和/或各自可具有多个执行核的多个处理器基板。如图所示,各种计算机可读存储介质110可由一个或多个系统总线互联,系统总线将各种系统组件耦合到逻辑处理器102。系统总线可以是几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。在示例实施例中,计算机可读存储介质110可以包括例如随机存取存储器(RAM)104、存储设备106(例如电机硬盘驱动器、固态硬盘驱动器等)、固件108(例如闪速RAM或ROM)、以及可移动存储设备118(例如CD-ROM、软盘、DVD、闪速驱动器、外部存储设备等)。本领域的技术人员应当理解,可使用其他类型的计算机可读存储介质,如磁带盒、闪存卡、数字视频盘和柏努利盒式磁带。
计算机可读存储介质110可以为计算机100提供对处理器可执行指令122、数据结构、程序模块和其他数据的非易失性和易失性存储,实现管理器250的可执行指令在以下附图中描述。基本输入/输出系统(BIOS)120可被存储在固件108中,它包含帮助在诸如启动期间在计算机系统100内的各元件之间传递信息的基本例程。包括操作系统和/或应用程序的多个程序可被存储在固件108、存储设备106、RAM104和/或可移动存储设备118上,并且可由逻辑处理器102来执行。
命令和信息可由计算机100通过输入设备116来接收,输入设备可包括但不限于键盘和定点设备。其它输入设备可以包括话筒、操纵杆、游戏手柄、扫描仪等等。这些和其它输入设备常通过耦合到系统总线的串行端口接口连接到逻辑处理器102,但也可通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器或其他类型的显示设备也可经由接口来连接到系统总线,所述接口是诸如视频适配器等可以是具有对于视频存储器的访问的图形处理器(GPU)112的一部分或可连接到该图形处理器112。除了显示器之外,计算机通常包括其他外围输出设备(未示出),如扬声器和打印机。图1的示例性系统还包括主适配器、小型计算机系统接口(SCSI)总线和连接到SCSI总线的外部存储设备。
计算机系统100可使用至一个或多个远程计算机,如远程计算机的逻辑连接在网络化环境中操作。远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并且通常包括上面关于计算机系统100所述的许多或全部元件。
当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡(NIC)114连接至LAN或WAN。NIC114可以是内置或外置的,其可以连接到系统总线。在联网环境中,相对于计算机系统100所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所描述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。虽然可构想本发明的许多实施例尤其适用于计算机化的系统,然而在本说明中不意味着将本发明限于那些实施例。
图2示出了要在远程呈现会话中传送的样本图像202。图像202既包括文本204又包括子图像206。该图像可包括完整的计算机桌面或诸如应用的窗口等该计算机桌面的某些子集。
图像202可由服务器在GPU(类似图1的GPU112)的视频存储器处接收为所呈现的图像202以供显示。服务器可接着根据以下技术处理图像并将其传送到该服务器正与之进行远程呈现会话的客户机以供在客户机的显示设备上显示。在一实施例中,服务器包括图1的计算设备。
图3A示出了在被转换成图像302的黑白表示之后的图2的样本图像202。这可使用阈值方案来实现。在阈值方案中,图像中低于阈值的所有像素值(例如,亮度值,当以RGB表示时,该亮度值可被计算为像素的红色、绿色和蓝色值的加权和)可被设为黑色(在RGB中,这可被表示为0x000000),而图像中高于阈值的所有像素可被设为白色(在RGB中,这可被表示为0xFFFFFF)。
图3B示出了在将图3A的图像302分割以标识一个或多个特征302b之后的该图像。在一实施例中,服务器可直接分割图像202。根据总的会话系统的细节-诸如可用的客户机和服务器的处理资源和带宽-会话性能的最佳特征大小可以变化。在各实施例中,特征可以是单词、单词的某个子集(包括字母)、应用的导航图标(诸如“打印文档”按钮)、或要在远程呈现会话中被发送的图像中的子图像(诸如当web浏览器窗口要在会话中被发送时、通过该web浏览器显示的图像)。特征可被认为具有边界-围绕该特征的周界。在所描绘的实施例中,边界形状上是矩形的。然而,结合各种形状的边界来使用本技术是可能的。
在一实施例中,在此讨论的客户机可包括图1的计算设备。
在一实施例中,服务器和客户机在远程呈现会话期间通信来确定所要使用的特征粒度。这可当服务器和客户机启动远程呈现会话时被协商。这也可在远程呈现会话期间如会话的参数改变期间(诸如如果客户机的可用处理资源被减少)被重新协商。
在一实施例中,服务器通过使用连接的片断算法来处理图像302以确定包括各个连接的片断的一组像素来标识图像302的特征(诸如关于图9和10被讨论的)。连接的片断算法确定图像的特征的边界框。这些边界框可接着被应用回图像302来总体上确定相对于图像302的各个特征的边界。
服务器可如下地执行连接的片断算法。通过使用强度阈值,连接的片断算法将图像302的各个像素标记为文本或背景的一部分-如果像素是黑色的或接近于黑色,其被考虑为文本,否则其被考虑为背景(如果图像包括在深色背景上的浅色文本,这将反过来)。服务器接着寻找那些被确定为文本的像素的所有四连接的像素组。如果一像素紧靠在被确定为文本的一像素的右边、左边、上面或下面,该像素被考虑为四连接的。在一实施例中,服务器寻找所有八连接的像素组(四连接的组,加上那些仅仅对角连接的组)而不是所有四连接的像素组。服务器可接着确定文本像素的各个四连接的组的边界框。在一实施例中,边界框是由围绕四连接的像素组的水平和垂直线构成的矩形,使得不存在更小的边界框。
图4示出了将所标识的图像302b的特征应用到图像202的图像402。当特征相对于原始图像202被标识时,接着该图像202可被处理以将图像的剩余部分和特征分离。
图5A示出了类似于图2的样本图像的另一要在远程呈现会话中传送的样本图像502。
图5B示出了图5A的图像502的纯文本分割502b。其可帮助在此揭示的技术来分离图像202的文本和图像部分并接着在各个子图像上执行操作。在该分割操作被执行的实施例中,可通过在图像上执行光学字符识别(OCR)算法并从图像中移除任何不是所识别的字符的事物来执行纯文本分割。
图5C示出了图5A的图像502的非文本分割502c。在服务器执行在图5B的详细描述中描述的OCR算法的情况下,服务器可通过移除OCR算法所标识的各个字符来产生图像502c。
图6A示出了小块602,该小块的一部分包括特征604的一部分。字母“h”包括特征604。特征604的一部分扩展到小块602上面。对象606也在小块602内。在一实施例中,对象606可被标识为特征、或特征604的一部分。
图6B示出了在将特征604移除并用小块的主特性替换之后的图6A的小块602。在此使用的“主特性”是要表示如果被用以代替小块中的特征、将协助压缩小块的图像。通常,小块的主特性是小块的主颜色-在小块未被特征占据的部分中所找到的最常用的一种颜色。在本实施例中,尽管存在对象606,主特性是占据小块大部分的白色背景,所以特征604被全白替换。
在特征占据整个小块的实施例中,小块可被认为不具有主特性,不具有可从中确定这样的主特性的未被特征占据的部分。在这种情况下,特征可被诸如纯色等可被容易压缩的图像替换。对于所有完全由特征占据的这样的小块使用相同的主特性是有益的,因为这将增加小块的高速缓存命中数量,并因此减少需要被发送到客户机的小块的数量。
图7示出了用于服务器通过从源位图提取非网格小块来加速位图远程发送的示例性操作过程。在讨论该图和其他图描绘的操作过程中,应该可以理解不是每个操作必需在本申请的每个实施例中执行,但是这些操作过程的许多功能子集和改变可被实现。
操作702描绘了标识诸如图像202的图像的特征的边界,该特征对应于针对图像的小块方案(tilingscheme)的至少一个小块。这可例如通过使用先前关于图3和4讨论的技术来实现。在一实施例中,小块方案涉及将图像划分成矩形小块的网格。一特征不限于该网格并可发生在多个小块的所有或部分上、单个小块的部分上或正好占据一个小块。
在一实施例中,标识图像的特征的边界是基于特征粒度并由主通信设备执行。特征粒度可以是影响特征如何被识别的某些事物,诸如大小。在一实施例中,特征粒度可指示各个字母要作为分开的特征来对待。在一实施例中,特征粒度可指示各个单词要作为分开的特征来对待。
在一实施例中,特征粒度可通过服务器(或“主通信设备”)、客户机(或“通信设备”)或通信网络的特性来确定。主通信设备、通信设备或通信网络的特性可以是影响远程呈现会话的性能的某些事物,诸如跨通信网络发送的分组大小、或主通信设备的系统架构的特性。
在一实施例中,标识边界包括如上关于图3讨论的产生图像的黑白表示。在一实施例中,产生图像的黑白表示包括如上关于图3讨论的根据阈值方案来处理图像。在一实施例中,标识特征的边界包括如上关于图4讨论的使用连接的片段算法来处理图像。
在一实施例中,特征包括文本,并且标识特征的边界包括使用光学字符识别(OCR)算法来处理图像。所得到的文本可从图像中剥离,诸如通过使用图像的各个小块的主特性来代替图像的各个小块中的文本,如在以下详细讨论的。接着小块可与文本(诸如以信息交换的美国标准代码-ASCII格式表示的)以及要覆盖小块上哪里的文本的指示被一起发送,如在以下详细讨论的。
在一实施例中,特征包括水平或垂直线。服务器可既垂直地又水平地在图像上执行行程长度计数算法。该算法将确定匹配的或接近匹配的线性像素的串(诸如那些均高于或低于阈值的像素)。这些线可接着从图像的各个小块中提取,诸如通过将图像的各个小块的主特性来代替图像的各个小块内的线,如在以下详细讨论的。这些线可接着被分别编码(诸如通过指示图像内的起始和终止坐标、线条颜色、以及线条宽度)并被发送到客户机以供结合小块显示,如在以下详细讨论的。
在一实施例中,特征包括诸如当窗口被滚动时屏到屏移动(或“屏到屏位块传送”),并且标识特征的边界包括处理图像以确定图像的一部分相对于先前图像的一部分的移动向量。服务器可匹配被发送、或要被发送到客户机的多个图像之间的移动向量。服务器可通过确定诸如文本和线条(如使用以上技术在图像中确定的)的图像特性被移动到哪里的模式来匹配移动向量。这可接着通过使用大大少于发送各个小块的带宽来向客户机表示,诸如通过指示图像朝哪个方向移动以及图像移动了多远。
这些关于特征的技术可以组合运行-例如,文本和线条均能从被滚动的图像中提取。
操作704描绘了当特征尚未被存储在高速缓存中时、在该高速缓存中存储该特征。服务器可诸如通过在其遇到的各个特征上执行散列算法并基于散列算法的结果在高速缓存中存储特征的签名以及特征将在客户机高速缓存内被存储的对应的位置,来维持特征的高速缓存。可存储特征的签名而不是特征本身以最小化存储需求。通过这样,当遇到各个新特征时,服务器可确定该特征是否已经在先前遇到过,所以只有对于该特征的引用才必须发送到客户机(在确定了高速缓存命中,并且进一步确定了该特征与存储在高速缓存中引起该命中的特征相同的情况下)、或该特征先前没有遇到过,所以该特征本身必需发送到客户机(在没有高速缓存命中,其指示先前没有遇到过相同的特征的情况下)。
在一实施例中,高速缓存具有最大大小,并由此具有有限范围。因此,当高速缓存到达其最大大小时,做出关于哪些特征和/或小块必须被移除以空出空间的确定。该确定可基于哪些特征和/或小块是最不可能重复的并因此将其保存在高速缓存中是最无益处的推断来做出。类似地,在高速缓存已经到达其最大大小或可能到达其最大大小的情况下,可做出关于是否向高速缓存添加新特征和/或小块的类似确定。
在一实施例中,高速缓存包括高度结构化的(分层的)高速缓存。这样高度结构化的高速缓存可基于粒度的不同等级(诸如特征、特征组、以及特征组的组)被组织。例如,在遇到类似“a”、“n”以及“d”的特征的情况下,这些特征的组-单词“and”也能遇到。并且包括这样的特征组的组-诸如包括单词“and”的短语也能遇到。除了这些特征本身,这些特征组也可被高速缓存。
操作706描绘了根据小块方案来对图像进行划分以产生类似于图6的小块的至少一个小块。在一实施例中,小块具有12像素乘12像素的尺寸,除非图像不具有是12像素偶倍数的尺寸。在那种情况下,各个列内不多于一个小块以及各个行内一个小块可具有小于12像素乘12像素的尺寸。
操作708描绘了对于对应于特征的各个小块,使用该小块的图像来代替由该特征占据的该小块的一部分。这可例如通过使用先前关于图6A和6B讨论的技术来实现。
操作710描绘了在高速缓存中存储尚未被存储在高速缓存内的各个小块。在一实施例中,类似于如在操作704讨论的存储特征来实现存储小块。在一实施例中,小块和特征被存储在分开的高速缓存中。在一实施例中,小块和特征被存储在分开的高速缓存中。由于相比于小块与特征彼此之间,小块更可能与一小块冲突而特征更可能与一特征冲突,特定系统使用两个高速缓存是有性能益处的。同样地,给定系统的特性可偏爱使用单个高速缓存。
操作712描绘了基于高速缓存确定是否通信设备具有各个小块和特征。在一实施例中,该通信设备是客户机。随着服务器发送小块和特征到客户机,客户机将这些小块和特征高速缓存在其自己的一个或多个高速缓存中。客户机高速缓存可包括存储的小块或特征以及对应的在该小块或特征上执行的散列算法的结果。所以,如果服务器确定表示与当前小块或特征所表示的图像相同的图像的小块或特征已经存在在其高速缓存内(通过观察特征签名来完成),服务器确定客户机已经在其高速缓存内具有该小块或特征(或该小块或特征将在当前图像的传送数据内被发送)。如果没有高速缓存命中,那么客户机不具有该小块或特征。如果有高速缓存命中并且服务器确定(在高速缓存范围内)引起该命中的先前高速缓存的小块或特征中没有与当前的小块或特征相同,那么客户机不具有该小块或特征。否则,服务器确定客户机确实(或马上将)具有该小块或特征。
操作714描绘了通过通信网络将通信设备不具有的各个小块和特征发送到计算设备以供显示。可根据操作712的技术来确定客户机不具有的各个小块和特征。在一实施例中,各个小块和特征被发送为活动的远程呈现会话的上下文内分开的图像。在一实施例中,服务器可通过将特征一起组合成特征和/或小块的单个位图并将该合成位图以及该合成位图的哪个部分对应于各个特征和小块的指示发送到客户机来改善会话性能。在一实施例中,分开的合成位图可用于特征和用于小块中的各个。这种特征和小块的编码以及对于其的指示可被称为“流”。
在一实施例中,发送到客户机的至少某些小块和特征在它们被发送之前首先被压缩,并且接着在客户机接收到它们之后由客户机解压缩。
操作716描绘了通过通信网络将通信设备确实具有的各个小块和特征的指示发送到计算设备以供显示。可根据操作712的技术来确定客户机具有的各个小块和特征。例如,小块可伴有两个整数值-一个指示在左上角下的该小块的左上角要被放置的像素数量,并且一个指示在左上角右边的该小块的左上角要被放置的像素数量。
在一实施例中,根据操作714和716的技术发送的小块、特征和它们的指示与客户机将要在其重新创建的图像内将对应的小块或特征放置在何处的指示一起发送。
图8示出了用于客户机通过从源位图提取非网格小块来加速位图远程发送的示例性操作过程。可以理解的是不是每个操作必需在本申请的每个实施例中执行,但是这些操作过程的许多功能子集和改变可被实现。
操作802描绘了接收多个小块指示,各个小块指示包括小块或小块在高速缓存内的位置,以及在网格上显示各个小块指示的位置。
操作804描绘了接收特征指示,特征指示包括特征或特征在高速缓存内的位置,以及显示特征的位置。
在特征指示包括多个特征(如关于图7更详细讨论的)以及在特征指示内各个特征的位置的指示的实施例中,客户机可基于各个特征的位置的各个指示来确定特征指示内的各个特征。
在一实施例中,特征包括文本、线条、或在图像和先前接收到的图像之间的移动。在一实施例中,在特征包括文本的情况下,特征指示包括使用其来显示文本的字体的指示。
操作806描绘了显示一图像,该图像包括在被特征覆盖的网格上的各个小块指示。
图9示出了可被用以在计算设备的图形处理单元上并行执行图3A和3B描绘的操作的操作过程。计算设备可包括在图1中描绘的计算设备100。GPU可包括图1中描绘的GPU112。
在MICROSOFT(微软)操作系统中,这可包括执行使用11像素着色器或等效的GPU编程模型(诸如CUDA(计算机统一设备架构)或OpenCL(开放计算语言))的算法的GPU管道。对于管道的输入可以是要在远程呈现会话中被传送的图像(诸如屏幕视频表面),并且输出可以是一组压缩的或已经在GPU上被处理过的预压缩的连接的片断。这些连接的片断可被当作“特征”,如在本申请别处所讨论的。
操作902描绘了服务器将其桌面的内容呈现给GPU的视频存储器内的屏幕外视频表面。桌面可包括要被传送到客户机的图像。可从包括屏幕已经被更新的GPU的图形子系统接收该呈现发生的指示。该指示可在触发周期性定时器或来自操作系统的屏幕内容已经变化的显式通知时被接收。该通知可包括对于表示屏幕内容的视频存储器表面的引用或指针。在MICROSOFT(微软)中,该表面可以是表面。
操作904描绘了在接收到的图像上执行GPU像素着色器的边缘检测操作以产生被边缘检测的图像。该被边缘检测的图像可包括二进制(例如,黑白)图像。
在图像被转换成该图像的二进制表示的情况下,该功能能通过像素着色器完整地完成。当在计算设备(类似图1的计算机100)上执行以下C-式样句法的编程代码,可实现该功能。应该理解的是结合该代码以及揭示的其他实例代码,代码的使用是用于示例目的而非将本技术限制为单个实施例。也可以理解的是在该代码中表示的操作可完全在硬件中实现,或通过硬件和在其上执行的代码的某些组合中实现。
“pix”表示正在被处理的像素,并且“r”、“g”、和“b”表示该像素RGB颜色值的分量(可以理解的是本技术可在以其他方式表示像素颜色的情况下使用,诸如YPbPr)。
另一种边缘检测图像而不是将其转换成二进制图像的方式是在GPU上执行Sobel-算子-类型边缘处理。这样的处理计算在各个像素处的图像强度的图像梯度变化,给出从亮到暗的最大可能增加的方向以及在该方向上的变化率。结果因此显示在该点处图像变化有多“陡峭”或“平滑”,并因此显示有多大可能图像的该部分表示边缘以及该边缘有多大可能被定向。
用于实现该功能的像素着色器可被实现为计算机可执行代码,该计算机可执行代码执行类似于那些以以下具有C-式样句法的伪编程代码表示的逻辑操作:
操作906-910描绘了分割被边缘检测的图像以确定图像的连接的片断,以及为各个这样连接的片断确定边界框。有边界的连接的片断(边界框包括包含于其中的连接的片断)可被用作图7的操作过程中的特征。
操作906描绘了向各个黑色像素分配唯一值。
各个黑色像素(图像是黑白的;在背景主要是黑色的而在其上的特征是白色的情况下,这些操作可代之以在白色像素上执行)被分配一唯一值。各个像素占据唯一空间,所以像素的坐标包括该像素的唯一值。例如,表示像素的相对x-坐标(诸如相对于图像的左上角)的16比特整数可被附加有表示像素的相对y-坐标的16比特整数。所以,如果像素的x-坐标是0x0004并且其y-坐标是0x000F,那么得到的唯一值可以是32比特的0x0004000F。可以理解存在多种向各个像素分配唯一值的方式(诸如顺序地向第一个遇到的像素分配0,并且最后一个遇到的像素被分配等于像素的数量的值),并且该实施例仅仅是示例性的。
各个白色像素可被分配在连续的操作中可被忽略的空值,诸如0xFFFFFFFF(假设图像在两个维度上都小于65,535,使得在(65,535,65,535)处的黑色像素不被分配该值)。
操作908描绘了基于在操作906中确定的像素的唯一值来确定图像的连接的片断。
各个黑色像素现在具有唯一值,对各个像素执行一操作的多次迭代以使用这些唯一值来确定连接的片断(在连接的片断是足够小的实施例中,所有连接的片断可通过一次迭代被确定)。各个迭代将当前像素的值和相邻的8个像素中的各个像素进行比较(如果当前像素是在图像的边缘处,则将具有更少的相邻像素;在一实施例中,本技术使用8连接的像素组),并向该像素分配这9个像素中的最小值(在一实施例中,可分配所分配的像素的最大值;无论最小或最大,所选的值可被认作“极端值”)。在此考虑的像素的值是在迭代开始处的像素的值,而不是在对当前像素执行迭代之前在本次迭代过程中分配给相邻像素的任何值。
这些迭代可被执行直到执行一其中没有像素被分配新值的迭代。此时,连接的片断内的所有像素将具有相同的值,并且连接的片断的像素都将具有相对任何其他连接的片断的像素而言唯一的值。
在一实施例中,可执行更少的迭代,诸如如果存在对于在其间可执行迭代的时间量的限制。当出现这种情况(以及关于关于图10讨论的迭代),本操作过程依然可用作产生连接的片断。与一整体式连接的片断不同,这样的有限迭代技术可分配给一连接的片断几个唯一值,使得该连接的片断基于哪些像素具有这几个唯一值中的哪些被细分成连接的片断的各个部分。这样的“子连接的片断”可依然被用于所公开的特征提取和高速缓存。
在更少迭代被执行的实施例中,这些更少的迭代可基于例如定时器的到期或指定数量的迭代。
操作910描绘了为各个连接的片断确定边界框。在确定连接的片断后,接着可标识连接的片断的边界框。连接的片断的各个像素可被遍历以寻找具有最大和最小x-坐标以及最大和最小y-坐标的像素。边界框的左上角是所有像素的最小x-坐标外加所有像素的最小y-坐标。边界框的右下角是所有像素的最大x-坐标外加所有像素的最大y-坐标。可以理解的是右上角(最大x-坐标和最小y-坐标)和左下角(最小x-坐标和最大y-坐标)也可被用以定义边界框。
例如,关于图9F,其将在以下详细描述中更详细的描述,任何具有值2的像素的最小和最大x-坐标分别是0和2。任何具有值2的像素的最小和最大y-坐标分别是1和6。因此,具有值2的连接的片断的边界框可以通过具有在(0,1)处的左上角和在(2,6)处的右下角来定义。注意的是,该边界框包括不是连接的片断本身的部分的白色像素。
在第一连接的片断的边界框包括第二连接的片断的边界框所规定的区域的情况下,边界框可重叠。在这种情况下,这些边界框可保持重叠并包括冗余数据。在另一实施例中,可发生边界框的冲突检测,并且可重新计算边界框使得它们不重叠。
操作906-910可通过在GPU上像素着色器的使用来实现,类似于关于操作904所讨论的。通过这么做,可在不将图像数据传送到视频存储器外的情况下执行操作906-910。如关于操作912所讨论的,连接的片断从视频存储器发送到系统存储器。该操作可在操作906-910中的一个或多个之前发生,并且在其之后接着发生的操作可发生在逻辑处理器上,类似图1的逻辑处理器102。可在操作914的返回系统存储器的第二传送之前在操作906-910内发生返回视频存储器的传送,并且这将不响应性能,其中在这些传送中失去的时间可经由通过在系统存储器内或视频存储器内执行一操作或多个操作的所有或部分相对于其他存储器的所增加的处理速度来获得。
操作912描绘了将连接的片断从视频存储器发送到系统存储器。可以理解的是操作902-910的主要处理发生在GPU上,使得在那些在GPU的视频存储器和系统存储器之间传送图像数据的操作中存在时间消耗,其中传送图像数据可由CPU处理。在操作902-910之后,在操作910中数据图像被传送到系统存储器,在此发生进一步处理。
操作914描绘了将这些所标识的连接的片断高速缓存为特征,对流进行编码以表示这些特征的高速缓存命中的发生以代替图像中的位图内容,如图4和7所描绘的。
操作916描绘了将所编码的流发送到远程呈现会话中的客户机,如图7所描绘的。
可以理解的是操作914-916对图像数据好像其在系统存储器内一样进行操作。由此,由于操作902-910对图像数据好像其存储在视频存储器内一样进行操作,在执行操作902-916中只需要在视频存储器和系统存储器之间(在两个方向中的任一方向上)发生一次图像数据的传送,相比于发生多次这样的传送而言节省了时间。
图9A描绘了在其上执行图9的操作过程的图像。图像具有沿着水平轴的10个像素,从左到右被标记为0-9,以及沿着垂直轴的7个像素,从上到下被标记为0-6。由此,在左上角的像素的位置可被认为是(0,0),在右下角的像素的位置可被认为是(9,6)。图像描绘了字符“t”和“e”。
图9B描绘了在执行了图9的操作过程906之后的图9A的图像。图9A中各个黑色像素在此已经被分配了唯一值。这通过将像素的x-坐标附加其y-坐标来实现。例如,“t”在(1,1)处的最上面一个像素已经被分配了值“11”,并且在其正下方(1,2)处的像素已经被分配了值“12”。
图9C描绘了在执行了图9的操作过程908的迭代之后的图9B的图像。对各个被分配唯一值的像素进行操作。各个这样的像素被分配在其在图9B中所具有的值与在图9B中各个相邻像素所具有的值之间的最小值。在最小值是像素本身的值的情况下,不需要执行分配操作,但是像素的值可不变。可能像素没有任何相邻像素,因为其在图像的边缘处。例如,在(0,2)处的像素仅仅具有5个相邻像素,因为其在图像的左侧边。
对当前图像应用这个,可看见在(1,1)处的像素被分配值2,因为其与具有值2的在(0,2)处像素相邻,并且没有其他相邻像素具有更小的值。使用类似的逻辑,在(1,2)以及(1,3)处的像素也被分配值2。
图9D描绘了在执行了图9的操作过程908的迭代之后的图9C的图像。各个像素再次被分配其在前次迭代后所具有的值(在此,图9C中所显示的)与在前次迭代中各个相邻像素所具有的值之间的最小值。可以注意到值2在包括“t”的像素中传播而值43在包括“e”的像素中传播,因为它们分别是各个字母的最小值。
图9E描绘了在执行了图9的操作过程908的迭代之后的图9D的图像。此时,是“e”的一部分的各个像素已经被分配了值43,但是,并不是“t”的部分的每个像素都已经被分配了值2。
图9F描绘了在执行了图9的操作过程908的迭代之后的图9E的图像。在这个迭代中,“e”没有被改变,是“t”的部分的各个像素现在已经被分配了值2。可以注意到,由于各个像素初始地被分配一唯一值,在这些迭代结束时,各个连接的片断将具有唯一值。可发生一次进一步的迭代,并且在确定在此次迭代中没有像素被分配新值后(例如,通过在运行该阶段之前将一标记设置为FALSE(假),并在一个像素的值一旦被更改时将其设置为TRUE(值),接着在该阶段结束时,检测该标记以查看该标记是否依然是FALSE(假)),迭代可停止。
图10示出了可被用以在计算设备的向量处理器上执行图3A和3B描绘的操作的操作过程。在一实施例中,向量处理器包括图1的逻辑处理器102。
图10的操作类似于图9中的那些使用并行CPU操作来确定图像的连接的片断的操作。它们均能通过以下方式来实现图像的连接的片断的确定:对图像的各个黑色像素分配唯一值,接着执行对各个黑色像素分配其当前的值和其邻居在前次迭代结束时的值之间的最小值的迭代。图10中的操作与图9中那些涉及对图像的列进行操作、并对图像进行转置使得行变成接着被操作的列的操作不同。
可以理解的是图9中替换实施例的讨论应用于图10。例如,图像不需要是黑白图像,并且对像素分配的值不需要是最小值。
存在已知为向量处理器的处理器类别,该向量处理器在其指令集体系结构(ISA)中具有单指令多数据(SIMD)指令。诸如在某些INTELTMx86ISA处理器(类似于NEHALEMTM处理器)中的SSE4.2指令的流化SIMD扩展(SSE)是这些SIMD指令的一种形式。这些处理器能够加快某些类型的数据的处理,因为它们能一次对大量数据块进行操作。例如,当图像正在被处理时,SIMD处理器可使用单个指令并行地对多个像素进行操作,而不是一次对单个像素进行操作。这不仅仅提升了处理指令本身的性能,这也减少了花费在从存储器取得数据的时间。
在图10的讨论中,将使用一次可处理128位的示例向量处理器,各个像素的示例数据大小将是16位(使得向量处理器一次对8个像素进行操作)。可以理解的是这些技术可被应用到一次对不同数量的位(例如,64位)以及对各个像素的不同的数据大小(例如,16位的像素)进行操作的向量处理器。
操作1002描绘了服务器将其桌面的内容呈现给GPU的视频存储器内的屏幕外视频表面。这可类似于图9中的操作902发生。
操作1004描绘了对接收到的图像进行操作以产生被边缘检测的图像。其中这可在GPU上完成,这可类似于图9的操作904中所描绘的那样发生。
在操作1002中桌面图像被呈现给视频存储器,并且当图像在系统存储器内时向量处理CPU在操作1008中对该图像进行操作,如在以下详细讨论的。居间操作1004和1006可在GPU、CPU或两者组合上发生,并且只要曾经被复制到系统存储器的图像不被复制回视频存储器中(并且接着在操作1008返回系统存储器),那么只有一次这样的复制必须发生(相对于三次或更多)。此外,通过在GPU上处理而不是在向量处理器上处理(或反之亦然)所节省的时间可克服该传送消耗。
操作1006描绘了向各个黑色像素分配一值。在这可在GPU上完成的情况下,这可类似于图9的操作906所描绘的那样发生(但,注意操作906的技术涉及对各个黑色像素分配唯一值,而本操作1006涉及对像素的各个垂直连续的组-或单独的像素-分配唯一值)。
在通过使用GPU的处理来发生操作1006的实施例中,在操作1006之后并在操作1008之前,图像从视频存储器传送到系统存储器使得可通过使用向量处理器的处理来对图像的像素分配值。
在操作1006发生在向量处理CPU上的情况下,操作开始于上方最左面8像素宽的列,并且对该列向下进行操作直到已经对该列中的所有像素进行了操作,然后移动到上方下一个最左面8像素宽的列,直到遍历了所有列。可以理解的是这些技术可被应用于多个变换中,诸如从右到左(或从中间向外缘)以及从下到上。
在图像的宽度不是可由列的宽度均匀可除的情况下(例如,相对于8像素宽度的列,65像素宽度的图像将产生一个剩余像素),可使用以下技术来处理该“较小的”列或忽略该“较小的”列。在忽略较小的列的情况中,在较小的列中所呈现的连接的片断将不被确定和高速缓存(虽然它们将依然被发送到客户机),但是在连接的片断一部分在“较小的”列中而一部分在“较小的”列的外部的情况下,在“较小的”列的外部的部分可根据这些技术被确定并高速缓存。
如所述的,操作开始于上方最左边8像素宽的列。这8个像素中的各个黑色像素被分配唯一值。接着,操作移动到紧靠其下的8个像素。对8个像素中的各个黑色像素,如果一黑色像素紧靠在像素的上方,那么该像素被分配该紧靠在其上方的那个像素的值。如果一白色像素紧靠在黑色像素上方,则该像素被分配一唯一值。
可通过例如对像素的各个列分配一唯一起始值来分配唯一值。该唯一起始值可以是例如,将图像中的行数除以2并舍入,再乘以当前列左边的列数加1。即,如果图像中有51行,那么第5列将被分配(ceiling(51/2)=26)*(4+1=5)=130的唯一起始值。接着,在第5列,在像素的第一垂直连续的组中的各个黑色像素将被分配130,在像素的第二垂直连续的组中的各个黑色像素将被分配131,等等。
注意的是在这种情况中,分配给像素的一组值将是不连续的(例如,值129可不在行4中分配)。
在完成了一列后,开始另一列,直到对图像的所有列执行了操作。
可由向量处理CPU执行的具有C-式样句法的示例指令可如下。如结合图9的示例GPU着色器,其强调了这仅仅是实现操作的一种方式,并且操作可由硬件、或硬件和计算机可执行指令的某些组合来实现。
当该分配完成时,图像可被转置。例如,图像可经由采用图像的镜像图像、并接着将镜像图像向左旋转90度使得以前在顶部的行现在是最左边的列的操作来转置。
该转置操作可以是分离的操作或可随着像素被分配值而发生。例如,可创建表示所转置的图像的系统存储器空间。随着各个像素与其上的一个像素进行比较,该像素将具有的值(无论是其先前的值还是新值)可被写入在该其他系统存储器空间内其被转置的位置处。当对各个像素已经完成这些分配操作时,新的系统存储器空间将包括所转置的图像。
操作1008描绘了基于在操作1006中确定的像素的值来确定图像的连接的片断。
如在操作908中的,在操作1008中,算法的多个迭代被用以向像素分配值。在此,如在操作1006中那样,像素的列被处理(但,操作不需要开始于与操作1006开始时相同的图像部分;例如,操作1006可开始于上方左列并向下移动通过该列然后移动到右边,而操作1008可开始于底部作列并向上移动通过该列然后移动到右边)。各个黑色像素被分配其本身和直接位于其上方的像素之间的最小值。对于在图像的不具有在其之上的像素的顶行中的像素,这些像素不被分配值。
在具有剩余数量个像素的情况下,如在操作1006中描述的,操作1008不在这些像素上执行。
当完成该分配时,该图像可被转置,类似于关于操作1006所讨论的。
操作1008的连续迭代可发生直到没有像素在一迭代中被分配值(表明各个连接的片断被识别为共享相同值的每个像素)、或可发生较少次数的迭代(类似于关于操作908所讨论的)。
在迭代结束并且图像不是在其初始方向的情况下,图像可被转置到其初始方向-使得开始在图像的左上角中的像素再次被置于图像的左上角。
该向像素分配值的迭代可通过以下在向量处理CPU上执行的C-式样句法来实现:
换言之,这可被表示为IdNew=IdCurrent*aux+min(IdCurrent,IdNeigh)*(1-aux)。在此,IdCurrent是如由前次迭代或初始值分配所建立的在当前像素位置处的值。IdNeigh是紧靠在当前像素之上的像素处的值,aux{0,1}是被计算为aux=0xFF-saturated(0xFE+IdNeigh)的辅助值。
操作1010描绘了为各个连接的片断确定边界框。这可类似于关于图9的操作910所讨论的那样来执行。
操作1012描绘了将这些所标识的连接的片断高速缓存为特征,对流进行编码以表示这些特征的高速缓存命中的发生以代替图像中的位图内容。这可类似于图9中的操作914所描绘的那样发生。
操作1014描绘了将所编码的流发送到远程呈现会话中的客户机,如图7所描绘的。这可类似于图9中的操作916所描绘的那样发生。
图10A描绘了在其上执行图10的操作过程的二进制图像。那些被分配二进制值1的像素可被认为黑色或“开”-对这些像素将进行图10的比较分配操作。那些被分配二进制值0的像素可被认为白色或“关”-对这些像素将不进行图10的比较分配操作。
在图像中存在三列和12行。尽管图10使用了8像素宽度的列,但是该较小的三像素宽度的列可有助于示例性目的,并且技术可被应用到各个。
图10B描绘了在图10的操作1006内向各个黑像素分配一值后图10A的二进制图像。第一列开始于唯一起始值1并且将其分配给其遇到的第一个黑色像素。将该值再一次分配给第二行中的黑色像素,因为其与在其之上的黑色像素相邻,并且基于相同理由向第三行中的黑色像素分配该值。
在行4或5没有黑色像素,因此它们不被分配值。在遇到行4中的白色像素后,该列的唯一起始标识符可从1增加到2,使得下一个遇到的黑色像素将被分配2。
在行6找到该下一个遇到的黑色像素,其中其被分配2,以及在其之下三个像素。在行10找到白色像素,所以其不被分配值并且唯一起始标识符再次被递增,从2到3。接着,在行11和12的黑色像素被分配3。
对列2和3中的像素发生类似的操作(并且由于操作并行地发生,第一行的所有三个像素在第二行的任一像素被处理之前被处理)。列2开始于不能被分配给在任一其他列中的像素的唯一起始标识符-在此表示为“A”(并且被递增到“B”、“C”和“D”)。列3类似地开始于唯一起始标识符-在此表示为“X”(并被递增到“Y”、“Z”和“W”)。
图10C描绘了在图10的操作1006内被转置之后的图10B的图像。组成图像的最左列的那12个像素现在组成图像的顶行,而左上角内的像素保持其位置(并且右下角内的像素保持其位置)。
图10D描绘了在图10的操作1008内向各个像素分配一值后图10C的图像。各个像素被分配其本身和直接在其之上的像素之间的最小值(忽略0,因为它们表示白色像素,并且由此将不是黑色像素的连接的片断的部分)。在本实施例中,首先对左上8个像素和紧靠在这些像素之下的第二行中的8个像素分配值(顶行不被分配值,因为其不具有在其之上用于比较像素值的行,但是顶行被用于相对于第二行进行比较)。接着,第三行中的8个像素(那些紧靠在那些先前在第二行中讨论的像素之下的像素)被分配值。在8个像素的第一列中的三行被分配值,类似的操作可以类似的方式在4个像素的最右列上执行。
没有在图10A-D中描绘的是进一步的转置和像素分配操作,其可被计算直到在其中没有像素被分配值的一迭代,或某些较少的周期(诸如设置数量个迭代,或直到已经经过了一周期时间)。
结论
尽管已经结合各附图所示的较佳方面描述了本发明,但要理解,可使用其它相似方面或者可对所述方面进行修改或添加来执行本发明的相同功能而不脱离本发明。因此,本发明不应该仅限于任何单个方面,而是应该在根据所附权利要求书的广度和范围内解释。例如,本文描述的各种过程可用硬件或软件、或两者的组合来实现。因此,所公开的各实施例的方法和装置或其某些方面或部分可采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其他机器可读存储介质等有形介质中的程序代码(即,指令)的形式。当程序代码被加载到诸如计算机等机器并由其执行时,该机器变为被配置成实施所公开的各实施例的装置。除了此处明确阐述的具体实现之外,考虑此处所公开的说明书,其它方面和实现将对本领域的技术人员是显而易见的。说明书和所示实现旨在仅被认为是示例。

Claims (12)

1.一种用于确定图像内特征的方法,包括:
确定图像的一组像素,该组像素包括是连接的片断的一部分的所述图像的各个像素(904);
对该组像素的各个像素分配一值(906);
确定所述图像的连接的片断,所述连接的片断包括共享一值的所述图像的各个像素(908),
其中确定连接的片断包括通过经由使用图形处理单元(GPU)的像素着色器的使用并行地对所述图像的各个像素进行操作来确定存储在所述GPU的视频存储器内的连接的片断,进一步包括:
确定极端值,所述极端值包括最大值或最小值;以及
对所述图像执行迭代,所述迭代包括:
对该组像素中的各个像素分配一值,分配的值为该像素的值和该像素的邻接像素的值的极端值;以及
将所述连接的片断存储在存储器中。
2.如权利要求1所述的方法,其中各个像素具有x-坐标和y-坐标,进一步包括:
确定所述连接的片断的边界框,所述边界框包括所述连接的片断的像素的最大x-坐标、所述连接的片断的像素的最小x-坐标、所述连接的片断的像素的最大y-坐标、以及所述连接的片断的像素的最小y-坐标;以及
将所述边界框的指示存储在存储器中。
3.如权利要求1所述的方法,其特征在于,分配给各个像素的值是唯一的。
4.如权利要求3所述的方法,其特征在于,各个像素具有x-坐标和y-坐标,并且分配给像素的值包括像素的x-坐标和像素的y-坐标。
5.如权利要求1所述的方法,其特征在于,还包括:
在所述图像上执行迭代直到确定一迭代被执行而没有分配给任何像素新值。
6.如权利要求1所述的方法,其特征在于,还包括:
在所述图像上执行迭代直到已经执行了指定数量的迭代或直到已经到达了时间。
7.如权利要求1所述的方法,其特征在于,将所述连接的片断存储在存储器中包括:
将所述连接的片断存储在计算设备的系统存储器中。
8.一种用于确定图像内特征的系统,包括:
用于确定图像的一组像素的装置,该组像素包括是连接的片断的一部分的所述图像的各个像素(904);
用于对该组像素的各个像素分配一值(906)的装置;
用于确定所述图像的连接的片断的装置,所述连接的片断包括共享一值的所述图像的各个像素(908),其中用于确定连接的片断的装置包括:
用于确定极端值的装置,所述极端值包括最大值或最小值;以及
用于对所述图像执行迭代的装置,所述迭代包括:
对该组像素中的各个像素分配一值,分配的值为该像素的值和该像素的邻接像素的值的极端值;以及
用于将所述连接的片断存储在存储器中的装置。
9.如权利要求8所述的系统,其特征在于,用于确定连接的片断的装置包括:用于通过经由使用包括在所述系统中的计算设备的向量处理器的单指令多数据(SIMD)指令来并行地对所述图像的像素进行操作来确定存储在所述计算设备的系统存储器内的连接的片断的装置。
10.如权利要求8所述的系统,其特征在于,所述图像包括一列像素,并且其中用于对该组像素的各个像素分配一值的装置包括:
用于当该组像素的第一像素与该组像素中一已经被分配一值的像素相邻时,向所述第一像素分配所述列中与其相邻的像素的值的装置。
11.如权利要求10所述的系统,其特征在于,所述图像的各个列具有唯一起始值,并且对所述第一像素分配一值是基于所述第一像素的所述列的所述唯一起始值。
12.如权利要求8所述的系统,其特征在于,用于对所述图像执行迭代的装置包括:
用于转置所述图像的装置。
CN201110102140.6A 2010-04-15 2011-04-14 用并行处理从源位图标识并提取模式来加速位图远程发送 Expired - Fee Related CN102222314B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/761,282 2010-04-15
US12/761,282 US8768067B2 (en) 2010-04-15 2010-04-15 Accelerating bitmap remoting by identifying and extracting patterns from source bitmaps through parallel processing techniques

Publications (2)

Publication Number Publication Date
CN102222314A CN102222314A (zh) 2011-10-19
CN102222314B true CN102222314B (zh) 2016-02-10

Family

ID=44778859

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110102140.6A Expired - Fee Related CN102222314B (zh) 2010-04-15 2011-04-14 用并行处理从源位图标识并提取模式来加速位图远程发送

Country Status (2)

Country Link
US (1) US8768067B2 (zh)
CN (1) CN102222314B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9007405B1 (en) * 2011-03-28 2015-04-14 Amazon Technologies, Inc. Column zoom
US8823770B2 (en) * 2012-01-26 2014-09-02 Meditory Llc Device and methods for fabricating a two-dimensional image of a three-dimensional object
EP2979225B1 (en) 2013-03-28 2018-08-29 Intuit Inc. Method and system for creating optimized images for data identification and extraction
US20150030241A1 (en) * 2013-07-24 2015-01-29 Intuit Inc. Method and system for data identification and extraction using pictorial representations in a source document
WO2015012820A1 (en) * 2013-07-24 2015-01-29 Intuit Inc. Method and system for data identification and extraction using pictorial representations in a source document
US9298780B1 (en) * 2013-11-01 2016-03-29 Intuit Inc. Method and system for managing user contributed data extraction templates using weighted ranking score analysis
US10915984B2 (en) 2014-01-21 2021-02-09 Elektraglide Ltd Method and system for interactive graphics streaming
EP3097539B1 (en) * 2014-01-21 2023-03-08 Mythical Games UK Ltd A method and system for interactive graphics streaming
US10163217B2 (en) * 2014-02-17 2018-12-25 General Electric Copmany Method and system for processing scanned images
CN105338359B (zh) * 2015-11-02 2018-10-16 浪潮金融信息技术有限公司 一种处理视频数据的方法及装置
US10719902B2 (en) * 2017-04-17 2020-07-21 Intel Corporation Thread serialization, distributed parallel programming, and runtime extensions of parallel computing platform
US11495038B2 (en) 2020-03-06 2022-11-08 International Business Machines Corporation Digital image processing
US11556852B2 (en) 2020-03-06 2023-01-17 International Business Machines Corporation Efficient ground truth annotation
US11494588B2 (en) 2020-03-06 2022-11-08 International Business Machines Corporation Ground truth generation for image segmentation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848185A (en) * 1994-12-28 1998-12-08 Canon Kabushiki Kaisha Image processing apparatus and method
CN101014831A (zh) * 2004-03-23 2007-08-08 咕果公司 数字地图描绘系统
CN101401087A (zh) * 2006-03-15 2009-04-01 微软公司 交替图形集的高效编码

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8913680D0 (en) * 1989-06-14 1989-08-02 Crosfield Electronics Ltd Method and apparatus for generating a binary representation of an image
US6154754A (en) 1997-09-25 2000-11-28 Siemens Corporate Research, Inc. Automatic synthesis of semantic information from multimedia documents
AU2002325380A1 (en) 2001-10-11 2003-04-28 International Business Machines Corporation Color bitmap normalization
US7171444B2 (en) 2001-11-14 2007-01-30 Sharp Laboratories Of America, Inc. Remote desktop protocol compression system
JP2004030596A (ja) * 2002-05-10 2004-01-29 Canon Inc 画像階調変換方法、画像階調変換装置、システム、プログラム及び記憶媒体
US7567252B2 (en) * 2003-12-09 2009-07-28 Microsoft Corporation Optimizing performance of a graphics processing unit for efficient execution of general matrix operations
CN103398718B (zh) * 2004-03-23 2017-04-12 咕果公司 数字地图描绘系统
US8423673B2 (en) 2005-03-14 2013-04-16 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment using compression
US7653749B2 (en) 2005-08-31 2010-01-26 Microsoft Corporation Remote protocol support for communication of large objects in arbitrary format
US8108799B2 (en) 2007-03-30 2012-01-31 Microsoft Corporation Remoting of windows presentation framework based applications in a non-composed desktop
US20080250424A1 (en) 2007-04-04 2008-10-09 Ms1 - Microsoft Corporation Seamless Window Implementation for Windows Presentation Foundation based Applications
US8140610B2 (en) 2007-05-31 2012-03-20 Microsoft Corporation Bitmap-based display remoting
US8924512B2 (en) 2007-06-15 2014-12-30 Microsoft Corporation Extensible remote display infrastructure with dynamic virtual channels
US20090189892A1 (en) 2008-01-27 2009-07-30 Nitin Desai Methods and systems for detecting a dirty region within a frame encompassing three dimensional graphics
US8139061B2 (en) * 2008-08-01 2012-03-20 International Business Machines Corporation Floating point execution unit for calculating a one minus dot product value in a single pass
US8194977B2 (en) * 2008-12-09 2012-06-05 Microsoft Corporation Remote desktop protocol compression acceleration using single instruction, multiple dispatch instructions
US8432403B2 (en) * 2008-12-15 2013-04-30 Leonovus Usa Inc. Media action script acceleration apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848185A (en) * 1994-12-28 1998-12-08 Canon Kabushiki Kaisha Image processing apparatus and method
CN101014831A (zh) * 2004-03-23 2007-08-08 咕果公司 数字地图描绘系统
CN101401087A (zh) * 2006-03-15 2009-04-01 微软公司 交替图形集的高效编码

Also Published As

Publication number Publication date
CN102222314A (zh) 2011-10-19
US20110255791A1 (en) 2011-10-20
US8768067B2 (en) 2014-07-01

Similar Documents

Publication Publication Date Title
CN102222314B (zh) 用并行处理从源位图标识并提取模式来加速位图远程发送
CN103412701B (zh) 远程桌面图像处理方法及装置
US9875519B2 (en) Overlap aware reordering of rendering operations for efficiency
US10068518B2 (en) Method, apparatus and system for dithering an image
CN105718420B (zh) 数据处理装置及其操作方法
CN102713973B (zh) 通过从源位图中标识并提取2d模式来加速位图远程传送
CN111221596B (zh) 字体渲染方法、装置及计算机可读存储介质
JP2012519327A (ja) Simd命令を用いるrdpビットマップハッシュアクセラレーション
CN111902807A (zh) 应用于纹理压缩或放大的机器学习
US9679530B2 (en) Compressing graphics data rendered on a primary computer for transmission to a remote computer
CN1924794B (zh) 数字文件处理系统、数据处理系统和外围设备
US8854385B1 (en) Merging rendering operations for graphics processing unit (GPU) performance
US20140161173A1 (en) System and method for controlling video encoding using content information
JP2005055573A (ja) 高速表示処理装置
CN115705668A (zh) 一种视图绘制的方法、装置及存储介质
CN114596374A (zh) 一种图像压缩方法及装置
JP2010146055A (ja) 画像処理装置、方法及びプログラム
WO2024087971A1 (zh) 用于图像处理的方法、装置及存储介质
CN117079077A (zh) 一种适用于电力图像样本预处理的方法及系统
CN117392304A (zh) 贴图处理方法、装置、电子设备及存储介质
CN114581541A (zh) 一种图像压缩方法及装置
CN112419145A (zh) 一种图像数据处理方法、装置、设备及存储介质
CN115222859A (zh) 图像动画化
CN117076799A (zh) 前端资源的缓存方法、设备以及存储介质
WO2018224152A1 (en) Devices and methods for displaying characters

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150727

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150727

Address after: Washington State

Applicant after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160210