避免数据膨胀的数据修改游程编码器的制作方法

文档序号:7511381阅读:407来源:国知局
专利名称:避免数据膨胀的数据修改游程编码器的制作方法
技术领域
请求保护的本发明的实施通常涉及数据压縮方案,特别是,涉及 包含游程编码的数据压縮方案。
背景技术
游程编码(RLE)被应用于数据压縮中已经有很多年。因为RLE 利用数据元素的重复来压縮数据,因此在电视机和计算机的图像显示 方面表现非常理想。例如,在黑白图形图像中,可能会有大量的像素 重复,特别是白像素。因此,对于这样的图像,可以使用RLE来压 縮存储了该图像的帧缓冲器中的数据,并且可以减少,例如,存储器 大小、功耗和/或这样的缓冲器的带宽需求。
关于RLE的一个已知的设计问题是,RLE处理可能导致数据大 小或者数据量的膨胀,而不是压縮数据。通过观察发现,RLE的这个 问题在于使用了多于一个的数据元素(例如,至少一对数据元素)来 描述这两种情况l)数据级或者数值;2)它的游程长度。这对数据 元素有时候被称为"命令对"。如果被游程编码的数据中出现过多的 数据变化,那么与最初包含在数据中的数据元素数量相比,游程编码 将使用更为大量的数据元素(例如,命令对)来描述游程长度和值的 对。这种经过RLE后更大量的数据可以称作"数据膨胀"。
因为这种数据膨胀的可能性,系统和电路的设计者通常会考虑 "最坏情况"的数据膨胀量来设计系统。这种设计惯例可能减少或者 排除了 RLE在一些应用中的使用,因为"最坏情况"的数据膨胀量 可能比根本不使用RLE花费更多的电力,存储器大小和/或带宽。


所附的附图被结合到说明书中并作为说明书的一个组成部分,解
释说明了一个或多个遵照该发明的原理的实施方式,连同描述部分一 起,解释了这些实施方式。附图的重点不在于限定范围,而是阐明发 明原理。在附图中,
图l概念性地解释说明了一个数据压縮和解压縮系统;
图2说明一个改进的游程编码的处理;以及
图3说明一个改进的游程解码的处理。
具体实施例方式
接下来的详细描述涉及到所述附图。在不同的附图中将使用同样 的附图标记来标识同样的或相似的元素。在下面的描述中,目的在于 解释而非限制,陈述了具体的细节,例如特定的结构、构架、接口、 技术等,以便对请求保护的发明的各个方面提供一个全面的理解。然 而,对于知晓本技术领域现有公开技术的技术人员来说,显然可以釆 用与这些具体细节完全不同的其他实施例来实现该请求保护的发明 的不同方面。在某些实例中,将忽略已知的装置、电路和方法的描述, 以避免因不必要的细节给本发明的说明造成混淆。
图1解释说明了一个数据压縮和解压系统100。系统100可以包 括一个可选的预调节器110, 一个改进的游程编码器(MRLE) 120, 一个数据存储器130, 一个改进的游程解码器(MRLD) 140,和一个 目的装置150。尽管为了简化说明将分为多个分离的功能元素进行说 明,但系统100的任何元件或所有元件可以被置于一处和/或用公用 的一组门电路和/或晶体管来实现。在一些实施方式中,元件110-150 中的一些元件都可以被由通用处理器或者专用处理器所执行的指令 来实现。更进一步,任何元素110-150都可以通过软件、固件、硬件 或其任何适当的组合来实现。这些实施方式不限于上下文所提及的内 容。
系统100可以接收数据,该数据可以包括但不限于视频、音频、 软件、图形信息、电视、电影、音乐、金融信息、商业信息、娱乐信 息、通信、或其他任何适合于被系统100和/或处理流程200处理的 数据。为便于参考,输入到系统100的数据在此可以认为是视频或图
形数据,尽管它不限于这些特定的可视信息类型。
在一些实施方式中,具有可选的预调节器110,其用来对数据进
行预调节,从而使其包括更多的可被编码的数据的"游程"。例如,
如果数据包含一个alpha通道(例如,在图形中,为透明度信息而保 留的一部分像素数据),预调节器110可以用零替代任何其alpha值使 其不可见的数据元素。相对于其他方式来说,在这种方式中预调节器 110可以在输入到MRLE120的数据中生成更多的游程。当然,在所 有实施方式中,这样的预调节是值得的,或者甚至是可行的。在如此 的实施方式中,可选的预调节器110可能不出现在系统100中,数据 可以被直接输入到MRLE 120。
MRLE 120可以被设置为执行处理流程200,以有选择地对输入 的数据进行游程编码。在一些实施方式中,MRLE120可以实时操作
(即,当数据流到达时操作数据流),并且实现为用于快速操作的逻 辑电路。MRLE 120将被设置为使其有选择地对它的输入数据进行编 码以防止数据膨胀,尽管其更多操作细节将通过处理流程200来描 述。确切地说,如果某些数据元素使用游程编码后的数据大小将会达 到或者超过那些没有编码的数据,则MRLE 120可以不进行任何变化 地传递这些数据。在这种方式下,MRLE 120可以获益于RLE数据 压縮,同时避免了输入数据的膨胀超过其原始大小。
MRLE 120可被设置为在输入数据的可能值的范围内编码一个
"触发器"(例如,游程长度或命令对的指示部分,其它部分是游程 长度的重复出现次数的值)。MRLE120可以通过保留一个输入值作为
"触发值"然后将任何恰好具有触发值的输入数据修改为另一个值 (例如,相邻值或者相似值)来实现这些。当保留输入值中的一个作 为触发值(并且当输入数据中遇到这个触发值时就改变数据)的时候, MRLE120可能在被压縮的数据中引入小的误差,因此阻碍了无损压 縮。
数据存储器130可以被设置为临时存储来自MRLE 120中的选择 性压縮数据的元素。存储器130可能包括,例如,半导体和/或磁性 存储器,并且可能是可重写的。在一些实施方式中,存储器130可能
包括,例如, 一个被设置为在显示前存储一定量的的视频和/或图形
数据的帧缓冲器。然而,在这些实施方式中,由于MRLE120的存在, 对于一个特定输出分辨率,数据存储器130可以被设计成小于没有 MRLE120时所具有大小。在这些情况下,由更小的存储器130所节 省的电源量、芯片面积(尺寸)和/或带宽可以证明在系统100中包 含MRLE 120禾口/或MRLD 140的正确性。
尽管数据存储器130的一些实施方式中可能包括一个物理存储 装置,例如一个帧缓冲器,但在一些实施方式中,存储器130可以包 括,例如, 一对发射机和接收机,用于通过通信链路(未示出)从 MRLE120到MRLD140远程传递压縮数据。在这些实施方式中,存 储器130可以被概念化为远程(或通过传输媒介临时地)存储被压缩 的数据。在任何情况下,存储器130不是必须被限定为一个本地物理 存储装置,例如一个帧缓冲器。
MRLD140可以被设置为执行操作流程300,以有选择地对其输 入数据进行游程解码。在一些实施方式中,MRLD140可以实时操作 (即,当来自存储器130的数据流被发送到目的装置150时,操作数 据流),为快速操作,还可以将其实现为逻辑电路。MRLD 140可以 被设置为使其通过检测数据中的触发值(以及在触发值中的一个游程 长度)来有选择地对数据进行解码,尽管其进一步的操作细节将通过 流程300来描述。MRLD 140可以根据该游程长度来重复跟随在触发 值后的数据值,以再现由MRLE120编码的相同数量的重复元素。如 果对于在输入数据的一个元素(或多个元素)没有检测到触发值,则 MRLD 140将传输未经改变的输入数据。在这种方式下,MRLD140 可以有选择地解压縮由MRLE 120编码的数据。
目的装置150可以包括系统100中的数据的任何消费者,所述数 据应来自于存储器130。在前述的、存储器130包括一个显示缓冲器 的实施例中,目的装置150可以包括一个显示装置,例如一个监视器、 电视机、综合显示器等等。然而在其他实施方式中,目的装置150不 是必须为输出装置,而是可以包括一个或多个可能是中间媒介的、用 于操作来自存储器130的数据的装置。
图2解释说明了一个可以由MRLE 120来实现的、改进的游程编 码的处理流程200。尽管处理流程200可以通过系统IOO和MRLE 120 来描述,但是它还可以在其他环境中以及由其他元素来实现。流程 200可以开始于向MRLE 120输入一个数据元素[操作210]。
处理由MRLE 120继续,MRLE 120确定该数据元素中是否包含 预定的触发值,如果包含,则通过用其他值来替换该触发值来将其过 滤掉[操作220]。操作220的一个实施例可以在亮度一色度(YUV) 颜色空间进行解释说明,这里,可以选择彩色分量值中极少或者从不 使用的一个值(例如表示V分量的值FF (即,255的十六进制)) 作为触发值。在操作220中,如果存在V分量值为FF的情况,MRLE 120将消除其所遇到的所有的情况,以消除对于MRLD 140的错误触 发器。还是在操作220中,MRLE120可以用一个相似值替换该触发 值,这个相似值最好是用户不易察觉的,例如在上述实施例中使用 FE (254的十六进制)。
在输入数据中用于命令触发器的适合模式可因不同的数据类型 和应用而有所区别。例如,图形的红一绿一蓝(RGB)数据可以使用 在蓝色信道中的"接近黑(nearblack)"(在视觉上不能与黑区分开) 作为触发器。其他数据类型中的其他适合的触发器模式将是显而易见 的。
处理流程200由MRLE 120继续,MRLE 120确定当前的(可能 已被修改的)数据元素是否是对于在前数据元素的重复[操作230]。 如果是,则由MRLE 120增加一个游程计数[操作240],然后返回到 操作210来处理下一个数据元素。对第一个重复的元素,游程计数将 由一增加到二。对第二个重复的元素,游程计数将由二增加到三,以 此类推。
如果操作230遇到一个非重复的数据元素,则MRLE 120可以针 对在前数据元素判断是否当前游程计数大于二[操作250]。在操作250 中,不管游程计数是否大于二, MRLE120都将游程计数重置为1。
如果上述游程计数大于二,则MRLE 120将发送一个命令对到存 储器130[操作260],该命令对指示了长度大于等于三的被游程编码
的数值。MRLE 120可以将重复数据元素的大于二的任何长度编码成 为一个游程长度命令,游程长度数据值紧随其后(例如, 一个命令对)。 例如,在上述YUV实施例中,作为结果的命令对可能具有的形式是 (OO,xx,FF) (YY,UU,VV),其中,第一个命令项具有触发值FF和一 个游程长度xx (如果需要的话,还可能包含具有最重要字节,在这 里是OO)来指示后面的(YY,UU,VV)游程长度数据值连续出现的次 数。为清楚起见,YY字段表示一个从00到FF的十六进制的亮度值, UU表示一个从00到FF的色度值,以及W表示一个从00到FE的 色度值。
如果游程计数不大于二, MRLE120将发送一个或多个数据元素 到存储器130[操作270]并且不将其编码为命令对。在游程长度为一 的情况下(例如,与在前的值不同),操作270将将输入的数据元素 按照原样发送到存储器130。当游程长度是二 (例如,在一行中只有 两个相同的值),操作270将发送这两个未经进一步处理的输入数据 元素到存储器130。然而在这两种情况下,需要注意的是,任何出现 在数据中的触发器(例如,前述示例中的FF)将在操作270之前的 操作220中消除。
在操作250中可以将阈值设置为一而不是二,但这可能对于"仅 有两个相同值"的情况招致额外的编码操作260,这不会给发送到存 储器130的数据长度带来任何相应的减少。换句话说,在操作270中, 这两种情况都将发送两个数据元素——一种情况是经过编码的, 一种 情况是不编码。因此,在操作250中阈值为">2",以避免出现游程 长度=2的临界情况给操作260带来的额外计算。
将通过两个数字示例来进一步解释处理流程200。在第一个示例 中,下面的数据元素(Y,U,V) (16,45,67) (16,45,67) (16,45,67)
(16,45,67) (16,45,67) (16,45,FF) (16,45,67) (16,45,67)将被压縮 成为下面的数据流(00,05,FF) (16,45,67) (16,45,FE) (16,45,67)
(16,45,67)。
前五个重复的值通过操作210 — 260被转换成为一个命令对 (00,05,FF) (16,45,67),这就告知MRLD 140使用(16,45,67)五次。
该命令包括在最重要比特位中的、带有游程长度的OxFF触发器。在 该命令后的数据值,(16,45,67),是要由MRLD 140重复的数值。第 六个数据值(16,45,FF)在操作220中被过滤,以消除错误的触发器, 并采用最接近的值来结束(16,45,FE)。在其之后的剩下的两个值不 能从压縮中获益,因此在操作250和270中将其保持原样(16,45,67) (16,45,67)。处理流程200和MRLE 120可以将具有八个数据元素的 整个字串压縮成五个数据元素,而不会带来任何视觉上可以察觉到的 数据损失。
在第二个实施例中,下面的数据元素(Y,U,V) ( 16,45,67) (16,45,68) (16,45,67) (16,45,68) (16,45,67) (16,45,68) (16,45,67) (16,45,67)不会经处理流程200被压縮,而且将保持同样的数据流 (16,45,67) (16,45,68) (16,45,67) (16,45,68) (16,45,67) (16,45,68) (16,45,67) (16,45,67)。
第二个实施例包含了一种"最坏情况",数据值在每个数据元素 之后都会变换,并将导致典型的RLE方案将数据扩大到16个数据元 素。面对这种"最坏情况",典型的RLE方案将生成八对级别(level) 和游程长度,在处理后会使数据量加倍。与之相反,处理流程200经 过操作210—230、 250和270的操作不会造成数据膨胀。
图3解释说明了一个由MRLD 140实现的改进的游程解码处理流 程300。虽然处理流程300可以通过系统100和MRLD 140来描述, 但是它还可以在其他环境中由其他元素来实现。处理流程300开始于 从存储器130输入一个数据元素到MRLD 140[操作310]。
处理将由MRLD 140继续,MRLD 140检测该数据元素中是否包 含触发值[操作320]。如果该数据元素包含触发值(例如,是一个游 程长度命令),MRLD140就输入下一个元素[操作330],然后将其重 复以生成在该游程长度命令的游程计数部分中所指示的总数目的实 例[操作340]。这个相同元素的游程将由MRLD 140输出到目的装置 150[操作350]。
在操作320中,如果在数据元素中不存在触发值,则MRLD140 可将其不经解码而输出到目的装置150[操作350]。
在前述的一个或多个实施方式的详细说明中,提供了解释和详细 说明,但这并不意味着要穷举或将本发明的范围限制在所公开的精确 方式下。根据上述教导或根据本发明的不同实施方式所得而进行修改 和改变是可能的。
例如,尽管一些实施方式可能包含使用不同的数据替换其他有效 数据(例如, 一个触发值)而导致有损压縮,但在一些实施方式中数 据格式允许插入一个触发值而不会导致丢失数据。在这些实施方式 中,例如,在数据中存在适合于触发值的一个未使用字段的情况下,
可以实现通过RLE进行无损压縮同时避免数据膨胀。
更进一步地说,附图2和3中的至少一些操作可以被实现为可在 机器可读介质中实现的指令或一组指令。
在本申请的描述中使用的元素、操作或指令不应作为本发明的决 定性的或基本的解释,除非像那样明确地说明。同时,在此所使用的 冠词"一个"被规定为一项或多项。在基本上不背离本发明的精神和 原理的基础上,可以对所请求保护的发明的上述实施方式进行变化和 修改。所有这些修改和改变被确认为包含于这份公开的范围之内,并 且受到随附的权利要求的保护。
权利要求
1、一种有选择地对数据进行游程编码的方法,包括如果在一个或多个数据元素中存在触发值,则从所述一个或多个数据元素中移除所述触发值;计算所述一个或多个数据元素的游程长度;当所述游程长度大于二时,将所述一个或多个数据元素编码成命令对,所述命令对包含所述触发值;以及当所述游程长度不大于二时,输出所述一个或多个数据元素,而不对所述一个或多个数据元素进行编码。
2、 如权利要求l所述的方法,其中,所述移除步骤包括 用一个相似但不同的替代值,替换在所述一个或多个数据元素中的所述触发值。
3、 如权利要求2所述的方法,其中,所述替代值是所述触发值 的相邻值。
4、 如权利要求l所述的方法,其中,所述计算步骤包括 判断当前数据元素是否与在前元素相同,以及 如果所述当前数据元素与在前元素相同,则递增游程长度。
5、 如权利要求l所述的方法,其中,所述命令对包括 命令元素,其包含所述触发值和所述游程长度,以及 另一元素,其包含所述一个或多个数据元素的值。
6、 如权利要求l所述的方法,其中,所述编码步骤包括 输出所述命令对。
7、 如权利要求l所述的方法,其中,所述一个或多个数据元素包括在YUV颜色空间或RGB颜色空间中的视频数据或图形数据的 像素。
8、 如权利要求1所述的方法,还包括-存储所述命令对或者所述被输出的一个或多个数据元素。
9、 如权利要求1所述的方法,还包括对数据流中的所有数据元素,重复所述移除、计算、编码和输出 步骤。
10、 一种系统,包括改进的游程编码器,用于根据输入数据生成编码数据,并且其被设置为用替代值替换在所述输入数据中发现的任何触发值,以生 成被修改数据,以及根据所述被修改数据的游程长度,有选择地对所述被修改 数据进行游程编码,或者不对所述被修改数据进行编码,以避免编码 数据相对于所述被修改数据的数据膨胀;存储装置,用来存储所述编码数据;以及 改进的游程解码器,用于根据在所述编码数据中的触发值,有选 择地对所述编码数据进行游程解码,或者不对所述编码数据进行解 码,以生成解码数据。
11、 如权利要求IO所述的系统,其中,所述改进的游程编码器 被进一步设置为,当所述游程长度大于二时,对所述被修改数据进行 游程编码,并且当所述游程长度不大于二时,不对所述被修改数据进 行游程编码。
12、 如权利要求10所述的系统,其中,所述改进的游程编码器 被进一步设置为,当其对所述被修改数据进行游程编码时,在命令值中插入所述触发值和所述游程长度。
13、 如权利要求10所述的系统,其中,所述输入数据包括视频 或者图形数据的像素,并且其中,所述替换值从视觉上无法与所述触发值相区别。
14、 如权利要求13所述的系统,其中,所述存储装置包括帧缓 冲器。
15、 如权利要求13所述的系统,还包括 显示装置,用来显示所述解码数据。
16、 如权利要求IO所述的系统,还包括预调节器,用于通过调节数据来生成所述输入数据,以便在所述 输入数据中得到更高的游程长度。
17、 一种存储颜色数据的方法,包括用在视觉上相似的替代值来替换出现在所述颜色数据中的任何触发值;当所述颜色数据的游程长度大于二时,对所述颜色数据进行游程 编码以生成经过编码的输入数据,所述经过编码的输出数据包括所述 触发值;以及当所述游程长度不大于二时,输出所述颜色数据而不进行修改, 作为未编码的输出数据;以及在帧缓冲器中存储所述经过编码的输出数据和所述未编码的输 出数据。
18、 如权利要求17所述的方法,其中,所述经过编码的输出数 据包括命令元素,其包含所述触发值和所述游程长度,以及另一元素,其包含所述颜色数据的值。
19、 如权利要求17所述的方法,还包括在检测到所述触发值时,将来自所述帧缓冲器的数据游程解码为 目的数据;以及在未检测到所述触发值时,不进行修改地输出来自所述帧缓冲器 的数据,作为目的数据。
20、 如权利要求19所述的方法,还包括 显示所述目的数据。
全文摘要
一种避免数据膨胀的数据修改游程编码器,其实现一种有选择地对数据进行游程编码的方法,包括如果在一个或多个数据元素中存在触发值,则从所述一个或多个数据元素中移除所述触发值,并且计算所述一个或多个数据元素的游程长度。所述方法还包括当所述游程长度大于二时,将所述一个或多个数据元素编码成一个命令对。所述命令对可以包含所述触发值。当所述游程长度不大于二时,可以输出所述一个或多个数据元素,而不对所述一个或多个数据元素进行编码。
文档编号H03M7/46GK101197578SQ200710167658
公开日2008年6月11日 申请日期2007年9月20日 优先权日2006年9月20日
发明者L·利平科特 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1