专利名称:颜色位图归一化的制作方法
技术领域:
本发明涉及一种用于减少颜色位图存储占有的方法与系统,具体地,该系统与方法用于那些必须存储或者通过网络传输位图的系统中。
位图大小是重要的参数,尤其当该位图将被存储或者通过网络传输时。在第一种情况下的存储占有以及后一种情况下的传输速度严重地受到影响。因此,已经开发了许多技术来降低位图的大小以及随后的存储占有与传输速度。此需求十分重要的一种应用程序类型,虽然不仅仅是这一种,为“远程控制”。远程控制程序是一种特殊类型的通信应用程序;它们超出了仅仅将一计算机与另一计算机连接以实际控制它。通过借助电话线与调制解调器的连接或者通过LAN连接,这些程序可以将一般被称为目标的一个数据处理系统(例如个人计算机或者工作站)的所有资源置于一般被称为控制器的另一数据处理系统(例如借助LAN连接的个人计算机或者工作站)的完全控制之下。控制器屏幕复制目标屏幕。控制器的键盘可以直接在目标数据处理系统上输入字符;控制器的鼠标可以在目标屏幕上移动鼠标指针。控制器屏幕连续地接收来自目标数据处理系统屏幕的数据。类似地,当每次敲击按键时控制器的键盘发送数据到目标数据处理系统。对于所有的应用目的,控制器用户恰如坐在目标数据处理系统前。
这种类型的远程控制软件可能在许多场合下是有用的。仅仅作为示例,办公室个人计算机系统可以从家庭个人计算机控制与操作。如果办公室PC保持连接(例如连接到调制解调器),则可以从家庭PC取得控制并且可以远程地控制并使用目标PC的所有资源。更具体的用途为拔入(例如通过调制解调器)到办公室内连接于网络的PC,登录,并且运行网络应用程序或者更新网络上的共享文件。
由传输线引起的瓶颈可以对远程控制操作的速度具有显著的影响。为了提高性能,远程控制程序试图降低并最小化需要通过通信线(例如LAN或者电话电缆)发送的数据量。在目标PC的显示屏幕上的视频图像的刷新,其应该被复制于控制器PC,因为必须发送的大量的信息而构成了传送速度中的主要因素。在过去,远程控制程序通过每不到一秒就向远程PC发送并刷新目标PC屏幕的整个图像来运行。向控制器PC发送屏幕图像的恒定速率被称为屏幕刷新速率。由于在目标PC上的变动将会被包括在下一次屏幕刷新之中,所以控制器PC屏幕准确地反映了目标PC屏幕。当然,由于每次刷新都有极大量的数据要发送,所以就速度而言,这种方法并不令人满意。
通常,图像的改变限于屏幕的一小部分(例如拉下菜单,使对象高亮),并且只有被改变的数据需要被刷新。控制器系统可以使用以前接收的屏幕数据并且只刷新屏幕的被更改部分。通过排除冗余的屏幕刷新数据,远程控制系统可改善响应时间。高速缓冲存储器提高了硬盘驱动器与存储器芯片的速度性能,并且也可以用于远程控制程序。高速缓存的基本思路为在可以迅速访问的暂时存储区域中保存最近所使用的数据。如果马上再次需要数据,则从快速访问暂时存储区域来访问它们比从原始的源检索要快得多。根据此技术,最近所显示的屏幕的元素被存储在扩展存储器中作为高速缓存。从控制器PC屏幕高速缓存刷新整个页,由此消除了对通过调节解调器从目标到控制器PC发送大量信息的需要。经常从屏幕高速缓存刷新的屏幕元素包括位图、文本与字体。
在位像的传送中,最频繁发送的信息之一为每个像素的颜色。在公知的RGB格式中,每个像素的颜色由3个八位组表示(即每个具有8位的3个字节),一个表示红色,一个表示绿色,一个表示蓝色。不同颜色的最大可能数目为16,777,216,即2**24。具有所有可能颜色的表示法被称为“真彩色”。
在远程控制系统中(如同在许多其他场合一样),并不总是需要这样详细的颜色表示,并且所有这些信息的传送通常构成不希望的负担。一般对于控制器系统领域,质量差一些的彩色图像就足够了。由于此原因,许多远程控制系统使用颜色精简算法(color reduction algorithm)来将颜色表示从24(或者16)位降低到8位或者甚至4位。实现这些算法的函数的例子为来自微软的GetDIBits。颜色精简函数现有技术的缺点在于它们需要相对较长的计算时间以执行此颜色精简,这主要是由于关于创建尽可能接近原始图像的精简后的图像的努力。在必须非常频繁地以非常高的速度进行这些运算的远程控制系统中,颜色精简延迟是不可接受的。一项可替换的精简机制由国际商用机器公司的Tivoli Remote Control实现,并且在GB专利申请9917455.9中描述。该机制具有更快处理的优点,该优点是通过在作为结果的“精简后”的颜色与原始颜色之间降低的精度来达到。该被降低的精度一般是可以接受的,尤其在远程控制系统中,并且适用于计算延迟。因此十分需要一种结合速度、处理简便以及结果精度的方法。
本发明的目的在于提供一种克服以上缺点的技术。
根据本发明,提供了一种用来减低位图大小的方法,该位图表示多个像素,每个像素都由位模式表示,该方法包括以下步骤计算包含在该位图中的不同位模式的数目n;为以后复用创建具有至少n项的调色板表,所述不同模式的每一个都具有至少一个包含所述位模式的对应项;在位图中用指向调色板表中对应项的指针来替换位模式;另外,根据本发明,提供了一种包括用于当该程序在计算机上运行时执行以上方法的程序代码部件的计算机程序。
下面将通过示例并参照附图详细描述本发明各种实施方式,其中
图1示意性地显可以被用来实现本发明的方法与系统的的示网络与个人计算机;图2显示了根据现有技术的颜色调色板;图3显示根据本发明优选实施方式的第二级颜色调色板系统的例子;图4显示根据本发明优选实施方式的方法;图1描绘了其中可以实现远程控制系统的典型局域网(LAN)的例子。其包括LAN服务器101,其作为两个或者更多个数据处理系统之间的通信网桥。在其他连接系统中,该服务器的功能可以由以下来实现例如网桥、调制解调器、电缆、或者一般地,任意配置在两个或在更多个数据处理系统之间使其连接的设备。
数据处理系统105是控制器,并且可以交替地控制其他数据处理系统103、107、109之一。
数据处理系统103、105、107、109可以是可在市场上购得的个人计算机或者工作站。它们最好包括按现有技术连接的显示单元与键盘。另外,数据处理系统包括处理器系统单元,可以用来在主处理器与存储器之外还安装硬盘驱动器与软盘驱动器。另外,为了方便使用图形用户界面,数据处理系统最好包括诸如鼠标的图形指向设备,其可被用来在屏幕可视显示之内操纵指向符的位置。
本领域的技术人员应该理解以上所述的数据处理系统可以使用任何现有的个人计算机来实现,诸如由国际商用机器公司生产的个人计算机。
数据处理系统一般都配有图形用户界面(GUI),以使用户能够控制该数据处理系统并且在系统显示上呈现用户动作的结果。在图形用户界面中,应用程序与数据一般被表示为在用户界面上绘制的对象。然后,用户就具有了对于复杂数据处理系统的图形化直观界面,该复杂数据处理系统允许对所绘制对象的图形选择以及对相应于这些对象的应用程序的操纵。
有许多使用上述安排的、可购得的不同的图形用户界面环境。这些环境包括Apple Computer,Inc(苹果计算机公司)开发的System 7操作系统(System 7S为苹果计算机公司的商标),微软公司开发的Windows图形用户界面(Windows为微软公司的商标),以及国际商用机器公司开发的OS/2Presentation Manager(OS/2与Presentation Manager为国际商用机器公司的商标)。
窗口环境一般为操作系统软件的部分,其包括一组用来控制计算机系统100的操作的实用程序。
在图1所示的例子中,系统103被定义为目标系统,并且系统103的所有资源都可以被控制器系统使用与激活。为了实施这种控制,系统105必须能够在其显示上表示目标显示103的准确拷贝。
如上所述,关于位图,量最大的信息之一为原始位图每一像素的颜色。在远程控制系统中,所要求的精度的级别一般不十分高,并且发送完整的颜色信息将浪费传送时间。根据RGB格式,每个像素的颜色由3个八位组表示(即3个字节,每个字节具有8位),一个表示红色,一个表示绿色,一个表示蓝色。16,777,216种可能颜色中的256颜色的子集一般对于任何应用程序都是足够的。对于远程控制系统,有时16种颜色是可以接收的折中方案。这些精简后的表示使用包含通常以“真彩色”表示(即三字节)的所有可能颜色的某种索引(调色板)。一般用于当前系统的另一可能的表示是64k彩色位图。在64k彩色位图中,每个像素都由两个字节表示。在这种情况下,这两个字节不是64k长的调色板中的索引,而是自身表示颜色。这16位被分为三个5位长的组。一个位被忽略。这些组的每一个指定三种基本颜色红、绿、蓝之一的强度。
图2显示现有技术中实现256色位图的调色板。位图201的每个像素为8位长。在这种情况下,8位的像素自身不代表颜色,而是表示包含该系统所使用物理颜色的表203的项。此表被称为调色板。256色位图的调色板必然具有256项每种颜色一项。每个项由三个值构成,代表生成希望的颜色所需的绿、红、蓝的量。使用颜色调色板是一种用来归一化位图并节省大量空间的技术。实际上,每一项都是3字节长(RGB),对应于每个像素所需的1字节(8位)。就是通过这种索引的机制才大大降低了位图的大小。
然而,可能会发生,并且一般会发生这种情况这些颜色的大部分从来不会真正被使用。位图支持的颜色的数目只确定了在该位图中用来表示颜色的位的数目,而不一定确定实际使用的颜色的数目。换而言之,在位图中可以找到的理论上的颜色的数目是一件事情,而在位图中实际使用的颜色的数目是另一件事情。
在理论上,如果其是用“实心刷”绘制的区域,256色位图甚至可以是1种颜色;如果其是用两种颜色刷绘制的或者包含某些字体的区域,则可以是两种颜色。在远程控制系统中,经常发生这种情况,这是因为这是书写页的大部分的典型情况(即当在屏幕上显示字处理器时)。可以将同一概念扩展到4种以及16种颜色。即使对于具有更多数目颜色的位图,也可以使用根据本发明的方法与系统,但是其优势可能减弱甚至消失。
根据本发明,当出现以上情况时(即只有有限数目的颜色在位图内被真正使用),原来的位图可以由“归一化”版本来替代,该“归一化”版本来替代只指向实际被使用颜色。在上面图1作出的例子中,在位图201中只表示了两种颜色256种可能颜色中的第一个(十六进制的00)与最后一个(FF)。这意味着表203的254项将永远不会被该位图使用。位图中的每个像素需要8位来表示指向表203的256项所需的十六进制数字(每位4比特)。在这种情况下,单独一个位就足够表示位图中的所有可能颜色(0与1)。具有两项的表(调色板)可以包含位图201所需的所有颜色,该项中的每个都有三字节。根据本发明的优选实施方式,可以在位图201与调色板203之间安插“第二级调色板”,如图3的例子所示。
在位图301中,像素值00与FF已经被0与1替换,这是因为该位图实际上仅使用了两种颜色(对应于颜色调色板203的第一(00)与最后一个(FF)十六进制项)。图2的原始位图201中的每个像素使用8位,而同样的信息可以由每像素仅1位来表示。一位实际上仅仅表示两个值,在这种情况下这就足够了。问题是如何将1位的这两个值匹配到256颜色调色板中的两个实际项。答案是通过使用第二级调色板303。此第二级调色板为一种相对于实际使用的颜色数目来归一化位图的方式。它是到原始颜色调色板的第二级间接指向(indirection)。换而言之,参见以上的例子,位值0指向第二级调色板的第一项,该项指向原始调色板的第00项。位值1指向第二级调色板的第二项,该项指向原始调色板的第FF项。
上面的例子显示如何用非常简单的运算并且在不丧失原始表示的精度的条件下将原始位图在理论上精简到原来大小的八分之一。在这种情况下,用位值0替换所有字节00以及用位值1替换所有字节FF就足够了。因此,当与其第二级调色板结合时,新的位图就具有了意义。必须通过此第二级调色板才可能重建原始位图。
图4概括地显示根据本发明优选实施方式的方法的步骤。向位图401施加“归一化处理”以产生作为输出的包403,该包可以被(例如)通过网络传送。包403包括归一化位图405和用于“解码”归一化位图405所需的相应调色板407。“逆归一化”过程将接收包403作为输入,并且该过程将生成位图409作为输出。位图409相应于原始位图401。在上面远程控制系统(参看图1)的例子中,位图401必须通过网络(例如LAN)从目标计算机(例如103)传送到控制器计算机105。如果在原始位图中所实际使用的颜色数目为受限的(例如小于16),则这样做是有利的通过施加根据本发明的归一化处理,降低颜色位图401的大小。该归一化处理应该在目标计算机103中进行,并且该处理生成作为输出的归一化位图403以及调色板407。归一化位图具有精简的大小,并且其通过LAN发送到控制器计算机105更容易且更快。当控制计算机105接收到归一化位图403与调色板407时,逆归一化处理能够建立与原始位图401完全相同的位图409。
在之前所作的例子中,系统使用256颜色表示,并且相应的调色板203(参看图2与3)在目标计算机103与控制计算机105中都可用。因此,每个位图401的像素需要8位以能够指向256种不同的颜色。如上所述,经常发生这种情况这256种不同颜色中只有有限的子集被实际使用。在这种情况下,用归一化位图405替换原始位图401是有利的,归一化位图指向“第二级”调色板。根据下表,该第二级调色板具有与可以在归一化调色板中表示的颜色最大数目一样多的项调色板项数颜色数目 每像素位数11 022 143或4 216 4<x<=164256 x>16 8应该注意在第一种情况下不应该实际传送位图,这是因为只需单独一种颜色来再现图像,而在最后一种情况下(使用了>16种颜色),本发明的方法无优势。
根据本发明的优选实施方式,通过以下步骤取得第二级调色板计算待发送位图实际使用的颜色的数目;如果该数目小于16,则创建第二级调色板(具有根据上表的大小)以指向256颜色调色板上这些颜色之一;用归一化的位图替换原始位图,其中像素指向第二级调色板中相应的颜色。
以及针对具有256颜色表示的开始位图详细描述了本发明。本领域的技术人员应该理解这只是一个例子,同样的技术可以无多大区别地应用到各种表示方法上。万一原始位图使用具有更大颜色数目的颜色表示,另一种可能是在上面例子的归一化处理之前进行颜色精简步骤。在许多情况下,这不会是额外的负担,这是因为如上所述,在现有的远程控制系统中经常使用颜色精简技术。根据本发明的优选实施方式,使用GB专利申请9917455.9所公开的颜色精简技术来将64k色位图(甚至“真彩色”位图)转换为256色位图。当进行这种颜色精简时,逐像素地扫描整个位图。本发明的优选实施方式利用这种扫描进行其他操作计算实际使用的颜色数目;建立第二级调色板;显然,不一定修改颜色精简算法,也能找到同样的信息,但是这样做是合理的,以求更高的效率。
以下为在本发明优选实施方式中可以实现上述方法步骤方式的例子。计算颜色的数目。
在256色位图的情况下,分配256字节长的数组与计数器就足够了。将该数组与计数器初始化为零。为了计算颜色的数目,需要扫描位图。每次扫描新像素时,使用该像素作为到该数组的索引。如果相应元素值仍然为0,将其改为1并增加计数器的计数。当扫描完成时,计数器表示位图实际使用的颜色数目。
位图的归一化。
在256色位图的情况下,分配256字节的间接指向数组就足够了。再一次地,显然在可能时此扫描应当利用现有方法的扫描。需要一表示正在添加间接指向索引数组中某一新项的变量。该数组表示第二级调色板中相应调色板项的转换。因此,将发现只有N项被使用,其中N就是颜色数目。其他项采用的值无意义。永远也不会访问这些项,这是因为在原始位图中没有指向这些位置的像素。每次遇到新的颜色,该像素值自身被用作到该数组的索引(计算颜色时所用的类似的处理)并且在归一化位图中相应项用该像素的新值来更新。然后增加计数器的计数。如果这两个过程被结合在一起,则可以使用用来计算颜色的同一计数器。一旦建立了该数组,就易于建立第二级调色板并易于进行位图的归一化,将所有原始像素用间接指向索引的相应项来替换。
虽然在归一化位图处理中使用了间接指向索引,但第二级调色板被用来进行逆处理。因此,第二级调色板必须与归一化位图一起传送,从而可以通过逆处理取得原始位图。
第二级调色板是该逆归一化处理的输出,并且是逆归一化处理的输入。
在归一化位图中,像素比用在原始位图中较少的位表示。该像素被解释为到第二级调色板的索引,其中存储了未归一化位图中像素的扩展后的值或者原始值。
逆归一化处理。
该过程用来从归一化位图与第二级调色板来恢复原始位图。该过程为归一化过程的严格的逆。给定了归一化位图每像素所使用的位数,该过程用第二级调色板的相应项替换每个值。必须注意当以上所述的方法与系统被实现于存储或传输颜色位图(例如远程控制系统)的现有系统中时,以上所述的方法与系统可能受压缩算法影响。因此不容易给出当使用本方法时准确绝对的性能改进大小。然而据估计当位图中使用有限数目的颜色时(例如在256色表示中小于16)时,可取得位图大小20%的减少,以及发送速度比相应的降低。
权利要求
1.一种精简位图大小的方法,所述位图表示多个像素,每个像素由位模式表示,所述方法包括以下步骤计算包含在该位图中的不同位模式的数目n;为以后复用创建具有至少n项的调色板表,所述不同模式的每一个都具有至少一个包含所述位模式的对应项;在所述位图中用指向所述调色板表中对应项的指针来替换所述位模式。
2.如权利要求1所述的方法,其中每个位模式表示三色表示法中的一种颜色。
3.如权利要求1所述的方法,其中所述位模式为指向包含三色表示法中指示的第二级调色板表的指针。
4.一种用来通过网络传送数字图像位图的方法,所述网络连接第一与第二计算机,所述方法包括以下步骤在所述第一计算机中,用任意前述权利要求的方法精简所述位图的大小;向所述第二计算机传送被精简的位图与调色板表;在第二计算机中,借助所述精简的位图与调色板表取得所述数字图像。
5.一种包括用于当该程序在计算机上运行时,执行任意前述权利要求的方法的步骤的程序代码部件的计算机程序。
6.一种包括权利要求5的计算机程序的远程控制产品。
7.一种用来通过网络传送数字图像位图的系统,所述网络连接第一与第二计算机,所述系统包括装置,在所述第一计算机中,用权利要求1的方法精简所述位图的大小;网络装置,向所述第二计算机传送被精简的位图与调色板表;装置,在第二计算机中,借助所述精简的位图与调色板表取得所述数字图像。
8.一种包括权利要求7所述系统的遥控系统。
全文摘要
在远程控制系统(如同在许多场合下一样),就存储占有与传送速度而言,位图的颜色表示是最重要的因素之一。位图经常实际只使用有限数目的颜色,因此单个像素的位模式大于表示所有可能的不同颜色实际所需的位模式。根据本发明,在颜色的数目没有超出预定阙值的情况下,创建包含位图中使用的所有颜色的调色板表。然后,在位图中的像素表示被指向该调色板表中相应项的指针替换。这就可能精简位图的总体大小。然后被精简的位图与相关的调色板表一起传送。借助调色板表,接收计算机(在远程控制系统中的控制器)能够重建原始位图。
文档编号G09G5/06GK1568483SQ02820126
公开日2005年1月19日 申请日期2002年7月11日 优先权日2001年10月11日
发明者萨尔沃·阿利菲, 菲洛米纳·费拉拉 申请人:国际商业机器公司