CN104883193B - 具有非循序输入的游程长度编码 - Google Patents
具有非循序输入的游程长度编码 Download PDFInfo
- Publication number
- CN104883193B CN104883193B CN201510089942.6A CN201510089942A CN104883193B CN 104883193 B CN104883193 B CN 104883193B CN 201510089942 A CN201510089942 A CN 201510089942A CN 104883193 B CN104883193 B CN 104883193B
- Authority
- CN
- China
- Prior art keywords
- swimming
- distance
- insertion position
- value
- run length
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
-
- 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
- G06F3/0416—Control or interface arrangements specially adapted for digitisers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
- H03M7/48—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind alternating with other codes during the code conversion process, e.g. run-length coding being performed only as long as sufficientlylong runs of digits of the same kind are present
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
一种用于更新游程长度编码(RLE)流的方法包括:接收要在插入位置处插入到RLE流中的具有插入值的元素,插入值具有多个值之一,RLE流具有布置成游程的元素,并且每个元素具有值之一;识别包含插入位置的游程;确定插入值是否与插入位置处的元素的值相同;当插入值不同于插入位置处的元素的值时:确定插入位置是否与游程之中的一个或多个匹配游程邻接,匹配游程的每个元素具有与插入值相同的值;以及当插入位置与匹配游程中的仅一个邻接时,延长匹配游程之一。
Description
相关申请的交叉引用
本申请要求2014年2月27日向美国专利商标局递交的标题为“Run LengthEncoding with Non-Sequential Input”的美国临时专利申请61/945,744号的优先权和权益,这里通过引用并入该申请的全部公开内容。
技术领域
本发明的实施例涉及用于对通信信道中的数据编码和解码的系统和方法。
背景技术
游程长度编码(Run Length Encoding,RLE)是一种流行的无损压缩技术,该技术用“游程”——按一定的扫描顺序具有相同值的元素的数目——来表示数据元素。例如,以下序列“0,0,0,1,1,1,0,0,0,1,1”可由“(0,3),(1,3),(0,3),(1,2)”表示,其中每一对中的第一数字确定游程的元素的值,并且第二数字确定该值的重复次数。在上述示例中,序列开始于三个0(0,3),之后是三个1(1,3),之后又是三个0(0,3),最后是两个1(1,2)。在二进制情况下,元素的值可被省略,并且该表示变成“(3,3,3,2)”,其中RLE序列的第一数字指的是元素“0”的重复次数。
游程长度编码经常通过按光栅扫描顺序操作的硬件使用,例如显示设备和扫描仪。RLE的效率取决于数据的特性。例如,当不同值的数目较小并且当相同的值在邻接元素的群组中经常重复时,RLE提供较高的压缩。通过对数据应用线性扫描顺序或者通过直接在多个维度中对重复次数编码,可将RLE应用到多维数据。通常,RLE编码器对按先后顺序提供并存储在行缓冲器或其他类型的存储器中的数据操作。如果数据是以非先后顺序产生的,则非先后顺序数据一般被缓冲以使数据完整,以便其可按先后顺序被提供给RLE编码器。
发明内容
本发明的实施例的一些方面涉及非循序游程长度编码装置。
根据本发明的一个实施例,一种用于更新游程长度编码流的方法包括:处理器接收要在插入位置处插入到游程长度编码流中的具有插入值的元素,插入值具有多个值之一,游程长度编码流具有布置在位于游程长度编码流的开始位置和结束位置之间的多个游程中的多个元素,并且多个元素中的每一个具有多个值之一和在游程长度编码流中的位置;识别游程长度编码流的游程之中的包含插入位置的游程;处理器确定插入值是否与插入位置处的元素的值相同;当插入值不同于插入位置处的元素的值时:处理器确定插入位置是否与游程长度编码流的游程之中的一个或多个相邻匹配游程邻接,相邻匹配游程的每个元素具有与插入值相同的值;当插入位置与一个或多个相邻匹配游程中的仅一个邻接时,处理器延长一个或多个相邻匹配游程中的一个匹配游程;当插入位置与一个或多个相邻匹配游程中的两个匹配游程邻接时,处理器合并一个或多个相邻匹配游程中的该两个匹配游程;以及当插入位置不与一个或多个相邻匹配游程邻接时,处理器创建新的游程。
确定插入位置是否与一个或多个相邻匹配游程邻接可包括:处理器计算从插入位置到一个或多个相邻匹配游程中的每一个的一个或多个距离,一个或多个相邻匹配游程中的每一个具有左端和右端;当插入位置在一个或多个相邻匹配游程中的两个之间时,处理器计算到一个或多个相邻匹配游程中的第一相邻匹配游程的右端的左距离;以及到一个或多个相邻匹配游程中的第二相邻匹配游程的左端的右距离;当插入位置在一个或多个相邻匹配游程之一与开始位置之间时,处理器计算到开始位置的左距离和到一个或多个相邻匹配游程中的该一个游程的左端的右距离;以及当插入位置在一个或多个相邻匹配游程之一与结束位置之间时,处理器计算到一个或多个相邻匹配游程中的该一个游程的右端的左距离和到结束位置的右距离。
处理器确定插入位置是否与一个或多个相邻匹配游程邻接可包括:当左距离大于1并且右距离为1时,或者当左距离为1并且右距离大于1时,处理器确定插入位置仅与一个相邻匹配游程邻接;当左距离为1并且右距离为1时,处理器确定插入位置在两个匹配游程之间;以及当左距离大于1并且右距离大于1时,处理器确定插入位置不与一个或多个匹配游程邻接。
多个值可包括两个值。
多个值可包括三个值。
识别游程长度编码流的包含插入位置的游程可包括:根据一个或多个先前接收的元素来预测游程长度编码流的该游程。
元素包括多个连续的元素,连续的元素中的每一个具有插入值,并且其中,插入位置包括多个连续的位置,该方法还包括利用与连续的元素的值不同的值来替换游程长度编码流的与多个连续的位置相对应的位置处的值。
游程长度编码序列可被填补以具有零长度的附加游程。
合并两个匹配的游程可包括将附加游程转换成具有非零长度的游程。
根据本发明的一个实施例,一种系统包括:触摸控制器;以及耦合到触摸控制器的游程长度编码器,游程长度编码器被配置为:从触摸控制器接收要在插入位置处插入到游程长度编码流中的具有插入值的元素,插入值具有多个值之一,游程长度编码流具有布置在位于游程长度编码流的开始位置和结束位置之间的多个游程中的多个元素,并且多个元素中的每一个具有多个值之一和在游程长度编码流中的位置;识别游程长度编码流的游程之中的包含插入位置的游程;确定元素的插入值是否与插入位置处的值相同;当插入值不同于插入位置处的元素的值时:确定插入位置是否与游程长度编码流的一个或多个相邻匹配游程邻接,相邻匹配游程的每个元素具有与插入值相同的值;当插入位置与一个或多个相邻匹配游程中的仅一个邻接时,延长一个或多个相邻匹配游程中的一个匹配游程;当插入位置与一个或多个相邻匹配游程中的两个匹配游程邻接时,合并一个或多个相邻匹配游程中的该两个匹配游程;以及当插入位置不与一个或多个相邻匹配游程邻接时,创建新的游程。
游程长度编码器可被配置为通过以下操作来确定插入位置是否与一个或多个相邻匹配游程邻接:计算从插入位置到一个或多个相邻匹配游程中的每一个的一个或多个距离,一个或多个相邻匹配游程中的每一个具有左端和右端;当插入位置在一个或多个相邻匹配游程中的两个之间时,计算到一个或多个相邻匹配游程中的第一游程的右端的左距离;以及到一个或多个相邻匹配游程中的第二游程的左端的右距离;当插入位置在一个或多个相邻匹配游程之一与开始位置之间时,计算到开始位置的左距离和到一个或多个相邻匹配游程中的该一个游程的左端的右距离;以及当插入位置在一个或多个相邻匹配游程之一与结束位置之间时,计算到一个或多个相邻匹配游程中的该一个游程的右端的左距离和到结束位置的右距离。
游程长度编码器可被配置为通过以下操作来确定插入位置是否与一个或多个相邻匹配游程邻接:当左距离大于1并且右距离为1时,或者当左距离为1并且右距离大于1时,确定插入位置仅与一个相邻匹配游程邻接;当左距离为1并且右距离为1时,确定插入位置在两个匹配游程之间;以及当左距离大于1并且右距离大于1时,确定插入位置不与一个或多个匹配游程邻接。
多个值可包括两个值。
多个值可包括三个值。
游程长度编码器可被配置为通过以下操作来识别游程长度编码流的包含插入位置的游程:根据一个或多个先前接收的元素来预测游程长度编码流的该游程。
所述元素可包括多个连续的元素,连续的元素中的每一个具有插入值,其中,插入位置包括多个连续的位置,以及其中,游程长度编码器还被配置为用与连续的元素的值不同的值来替换游程长度编码流的与多个连续的位置相对应的位置处的值。
游程长度编码序列可被填补以具有零长度的附加游程。
游程长度编码器可被配置为通过将附加游程转换成具有非零长度的游程来合并游程。
附图说明
附图与说明书一起阐明了本发明的示范性实施例并且与描述一起用来说明本发明的原理。
图1是图示出原始数据和用游程长度编码来压缩的相同数据的示意图。
图2是图示出包括根据本发明的一个实施例的游程长度编码器的计算设备的框图。
图3A、3B、3C、3D和3E是根据本发明的一个实施例的通过添加新的元素来修改现有数据序列的不同情况的示意图示。
图4是图示出根据本发明的一个实施例的用于向经游程长度编码的数据添加新元素的方法的流程图。
图5A、5B、5C、5D、5E和5F是根据本发明的一个实施例的在各种情况下向经游程长度编码的二进制数据添加多个新元素的方法的示意图示。
图6是图示出根据本发明的一个实施例的用于向经游程长度编码的二进制数据添加新元素的方法的流程图。
具体实施方式
在以下详细描述中,只是以举例说明的方式示出和描述了本发明的某些示范性实施例。正如本领域技术人员将会认识到的,本发明可以以许多不同的形式来实现,而不应当被解释为限于本文记载的实施例。贯穿说明书各处,相似的标号指代相似的元素。
本文使用的术语只是为了描述特定实施例,而并不打算限制发明构思。就本文使用的而言,单数形式“一”和“该”打算也包括复数形式,除非上下文明确地另有指示。还要理解,术语“包括”当在本说明书中使用时指明了所记述的特征、整数、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其他特征、整数、步骤、操作、元素、组件和/或其群组的存在或添加。就本文使用的而言,术语“和/或”包括关联的列出项目中的一个或多个的任意和所有组合。诸如“….中的至少一个”之类的表述当在元素的列表之前时修饰整个元素列表,而不修饰列表中的个体元素。另外,在描述发明构思的实施例时对“可”的使用指的是“发明构思的一个或多个实施例”。另外,术语“示范性”意在指示例或例示。就本文使用的而言,术语“使用”、“在使用”和“被使用”可被认为分别与术语“利用”、“在利用”和“被利用”同义。当第一元素被描述为“耦合”或“连接”到第二元素时,第一元素可直接“耦合”或“连接”到第二元素,或者一个或多个其他居间元素可位于第一元素和第二元素之间。
本发明的实施例的一些方面涉及非循序游程长度编码装置。当与诸如用于触摸屏或触笔操作的2D绘图引擎之类的非循序数据源结合使用时,本发明的实施例使得能够以降低的存储要求和降低的硬件成本来执行数据的游程长度编码。
本发明的实施例的一些方面教导用于执行游程长度编码以使得能够按任意顺序的逐元素编码的系统和方法。本发明的实施例的其他方面涉及一次对多个连续元素编码以降低游程长度编码过程的计算复杂度。另外,本发明的实施例的一些方面涉及降低的或最低限度的用于输入数据的存储器大小(例如,用于缓冲输入数据)并且考虑了存储器大小与计算复杂度之间的工程折衷。
游程长度编码(RLE)是一种无损压缩技术,该技术用“游程”——按一定的扫描顺序具有相同值的元素的数目——来表示数据元素。图1是图示出原始数据和用游程长度编码来压缩的相同数据的示意图。如图1所示,输入的2D二进制阵列10包括表示“1”的突出显示的位置(例如,用黑色填充,带有白色数字)和表示“0”的其他位置(例如,用白色填充,带有黑色数字)。这种2D二进制阵列可以例如是与触摸敏感面板上的被用户触摸的位置相对应的触摸传感器数据。
按光栅扫描顺序(逐行,从最左上元素开始),输入阵列的所有元素如图1所示被赋以索引(如图1所示,阵列10的六十四个元素被标记以从0到63的索引)。阵列10左下的循序输入序列12表示当具有值“1”的元素进入RLE编码器时其索引的顺序。所得到的RLE序列14在阵列10的右下示出为序列(0,5,5,5,5,4,6,2,32,0)——其中第一个“0”指示在该序列的开头没有值为“0”的元素,接下来的“5”指示有五个值为“1”的元素,等等依此类推。在此示例中,省略了元素的值,因为元素只可具有两个可能的值之一(例如,“0”或“1”),并且因为二进制RLE序列中的“0”和“1”的隐含顺序。然而,本发明的实施例不限于此,而是可扩展到元素可具有从多于两个可能值的集合中选择的值的情况(例如,在四个可能值的情况下:“0”、“1”、“2”或“3”)。
当用于编码的输入数据不是按先后顺序组织的时,相关技术的RLE编码器使用额外的存储器来在中间阶段缓冲数据,然后在编码之前循序地整理数据。这种应用的一个示例是将输入触摸事件的坐标转化成在屏幕上描绘的像素的2D绘图引擎或应用。因为用户可按随机顺序对触摸面板的各种部分进行触摸,所以触摸事件的坐标不一定按光栅顺序出现。在这种情况下,相关技术的RLE将需要中间阶段的存储器来存储来自2D绘图引擎的数据,从而增大了这种系统的成本。
图2是图示出根据本发明的一个实施例的系统20中的游程长度编码器28的作用的框图。参考图2,非循序RLE系统和方法可用于屏幕上绘图系统20(例如,诸如平板电脑、智能电话、膝上型电脑或者具有触摸屏界面的其他设备之类的计算设备)中,该系统20如图2所示包括触摸使能显示器22、触摸控制器24、执行2D绘图算法的处理器26、游程长度编码器28、显示覆盖(或低延时视觉加速器)30和显示控制器32。在此示例中,触摸控制器24从触摸面板22接收触摸事件并且对这些触摸事件的2D位置解码。触摸事件被提供给处理器26(在一些实施例中,处理器26和显示覆盖30可以是同一组件)并且被2D绘图算法所分析,该2D绘图算法产生表示要在显示器22上示出的线条的显示坐标的序列。
2D绘图算法产生坐标的顺序不一定对应于显示扫描顺序。例如,显示扫描通常从显示器的顶部到显示器的底部逐行进行,其中每一行被从左到右扫描。然而,用户可沿着不是扫描方向的任何方向(例如,不是直接从左到右的方向)在触摸使能显示器22上触摸和拖曳,从而生成按与扫描顺序不同的顺序到达触摸控制器24和处理器26的触摸事件并且从而使得处理器26按与扫描顺序不同的顺序生成图像数据。
根据本发明的实施例,游程长度编码器28用于将线像素的位置编码成紧凑的表示,该表示被传递到显示覆盖30,显示覆盖30对RLE流解码并且合成由显示控制器32描绘在显示器22上的最终图像。根据本发明的实施例的游程长度编码器28可按各种方式来实现,例如存储在存储器中并由通用处理器执行的程序指令、被配置为执行游程长度编码操作的现场可编程门阵列(field programmable gate array,FPGA)或者被设计为执行游程长度编码操作的专用集成电路(application specific integrated circuit,ASIC)。另外,根据某些实施例,显示器22可以是有机发光二极管(organic light-emitting diode,OLED)显示器或液晶显示器(LCD)。
图3A、3B、3C、3D和3E是根据本发明的一个实施例的在各种情况下向经游程长度编码的二进制数据序列添加新元素的方法的示意图示。二进制数据的序列包括多个元素,其中每个元素可具有两个值(例如,0和1)之一并且其中每个元素位于序列中的特定位置(或索引)。在非二进制情形中,元素可具有多个值之一。例如,在2比特数据的序列中,序列的每个元素可具有四个值之一,而在8比特(一字节)数据的序列中,序列的每个元素可具有256个值之一。具有某个值(或插入值)的新元素可在序列内的插入位置被添加到序列以替换已经位于序列中的该插入位置处的现有元素。为了下面讨论的目的,图3A、3B、3C、3D和3E中图示的序列中的具有白色或无阴影方形的位置被称为具有值“0”,并且序列中的阴影或黑色位置将被认为具有值“1”。图3A、3B、3C、3D和3E图示出具有索引0到13的14个二进制值的样本序列。图3A所示的示例序列具有值11100000000111,因此包括三个游程,并且当被游程长度编码时,可被表示为:(0,3,8,3)。如图3A所示,具有值(或“插入值”)“0”的新元素40正被添加到序列的位置(或索引)7处以替换位置7处的现有元素。新元素40被添加到序列的位置7处,位置7在八个0值的游程idx中。游程idx与游程idx-1和idx+1邻接。
新元素40具有与游程idx-1和idx+1的元素的值匹配的值。这样,游程idx-1可被认为是第一相邻匹配游程并且游程idx+1可被认为是第二相邻匹配游程(例如,如图3A所示,新元素40和游程idx-1和idx+1全都具有相同的匹配值“0”)。在二进制序列的情况下,邻接的游程将具有与插入值相同的值。然而,在非二进制情况下,邻接游程idx-1和idx+1不一定具有与插入值相同的值。从插入位置7到游程idx-1(游程idx左侧的游程)的右端的距离l是5,并且从插入位置7到游程idx+1(第二游程右侧的游程)的左端的距离r是4。
图4是图示出根据本发明的一个实施例的用于向经游程长度编码的二进制数据添加新元素的方法400的流程图。下文中将更详细描述元素具有多于两个不同值的本发明的实施例。
参考图4,在操作402中,更新游程长度编码序列的值的方法通过从现有数据或者从默认值(例如,所有值都为0的序列)生成游程长度编码序列来初始化,其中该序列具有多个编有索引的位置。在图3A、3B、3C和3D所示的示例中,初始的游程长度编码序列是(0,3,8,3)。
假定有一批元素要插入,则在操作404中,选择下一个元素来作为新元素插入(例如,如图3B、3C、3D和3E所示的新元素40)。为了在操作406中插入新元素,游程长度编码器28基于新元素的索引(或者编有索引的位置或位置)识别该元素落入现有游程之中的哪个游程“idx”中。
在确定相应的游程之后,游程长度编码器28确定该元素到游程idx的右侧的距离(“r”)和到游程idx的左侧的距离(“l”),其中l是游程idx中在新元素40的位置与游程idx-1(例如,游程idx左侧的游程或者说具有比游程idx更低的索引的游程)之间的位置的数目,并且其中r是游程idx中在新元素的索引与游程idx+1(例如,游程idx右侧的游程或者说具有比游程idx更高的索引的游程)之间的索引的数目。如果在游程idx左侧没有这种游程,则l表示新元素40的索引与序列的开始之间的位置的数目,而如果没有在游程idx右侧的这种游程,则r表示新元素40的索引与序列的结束之间的位置的数目。此操作可在识别相应索引之后或者在操作408之后立即执行。
在操作408中,游程长度编码器28确定新元素40的值是否与游程idx中的元素的值相同。如果是,则新元素40不对游程长度编码序列作出任何改变,并且游程长度编码器返回到操作404以选择下一个元素来插入。例如,如图3A所示,因为新元素40的值是“0”(由白色方形表示)并且其将被插入在索引7,而索引7已经是“0”值,所以不需要对现有序列作出改变。
如果新元素40具有与游程idx的值不同的值,则有四种不同的处理新元素的插入的情况,这些情况取决于元素到游程的右边界的距离(“r”)和到游程的左边界的距离(“l”),如图3B、3C、3D和3E所示。在下面的讨论中,元素在如下情况下与“相邻游程”(例如,与当前游程idx最近的与该元素具有相同值的游程)“邻接”:当到相邻游程的距离为1时(例如,l=1或r=1)。当到相邻游程的距离大于1时,则其不与相邻游程邻接。
如果如图3B所示,游程长度编码器在操作410中确定插入到“idx”中的元素不与任何现有游程邻接(l>1,r>1),则在操作412中,“分割”当前游程idx并且创建两个附加的游程(减小现有游程的大小)。在此情形中,现有的游程长度编码流需要从新元素的位置移动。这样,游程长度编码序列被从(0,3,8,3)更新到(0,3,4,1,3,3),因为原始的八个0的游程被分解成四个0的游程、一个1的游程和三个0的游程。
如果新元素40与两侧的相邻游程的距离不超过1个单位,则在操作414中,例如如图3C所示,游程长度编码器28确定新元素40是否只与左侧的具有相同值的现有游程邻接(l=1,r>1)。如果是,则在操作416中,游程长度编码器28增长(或者递增或“右侧增长”)邻接的左游程idx-1并且收缩(或者递减)当前游程idx。
在图3C所示的示例中,游程长度编码器28尝试在位置3处向现有的编码序列中添加具有值“1”的新元素40。因为位置3与位置0至2中的具有值“1”和长度3的游程邻接,所以新元素40与相同值的游程邻接。这样,左游程idx-1被转换成具有值“1”和长度4的游程,并且该元素被插入到的值为“0”且长度为8的游程被减小为长度为7的游程。这样,游程长度编码序列被从(0,3,8,3)更新到(0,4,7,3)。
如果新元素不与左侧的游程邻接,那么在操作418中,游程长度编码器确定新元素40是否只与右侧的具有相同值的现有游程邻接。如果是,则按与“右侧增长”操作416类似的方式,游程长度编码器28在操作420中增长(或者递增或“左侧增长”)右侧的现有游程(idx+1)。
参考图3D,当新元素40与右侧的现有游程邻接时(l>1,r=1),则右侧的邻接游程(idx+1)被递增,而游程“idx”被递减。这样,游程长度编码序列被从(0,3,8,3)更新到(0,3,7,4)。
如果游程长度编码器28在操作422中确定新元素40与具有与新元素40相同的值的两个游程邻接,则在操作424中,这两个游程被“合并”,并且游程的总数减少2。在此情况下,合并后的游程可被向左移动或者被填补以“0”。在图3E所示的示例中,原始序列为1111111011111,其可被表示为RLE序列(0,7,1,5)。用值1替换该序列的索引7处的值0将该序列转换成十三个1的序列,此序列在没有填补的情况下可以被表示为RLE序列(0,13)。或者,如果游程长度编码序列被填补以0,则所得到的RLE序列将是(0,13,0,0)。在如图4所示的方法的框图中,最末条件检查422是为了清晰示出的,在技术上不是必需的,因为在二进制场景中这是仅剩的可能情况,因此将由“否则”条件来处理。
根据本发明的一个实施例,非循序游程长度编码器28被一般化为一次对多个连续的相同值元素操作。要插入的元素可以已经被连续地排序,或者可在到达时加以排序。这样,非循序游程长度编码器28可将连续元素分组在一起并且在更少数目的操作中将它们与游程长度编码序列合并。
图5A、5B、5C、5D和5E是根据本发明的一个实施例的在各种情况下向经游程长度编码的二进制数据添加多个新元素42的方法的示意图示。图6是图示出根据本发明的一个实施例的用于向经游程长度编码的二进制数据添加新元素的方法600的流程图。这里将不详细地重复与对于图4描述的那些基本上相似的操作的描述。在操作602中,按与图4所示的操作402类似的方式,更新游程长度编码序列的值的方法通过从现有数据或者从默认值(例如,所有值都为0的序列)生成游程长度编码序列来初始化,其中该序列具有多个编有索引的位置。假定有一批元素要插入,则在操作604中,选择连续元素的下一个集合来插入(例如,如图5A、5B、5C、5D、5E和5F所示的新元素42)。
参考图5A,如果具有值1的额外新元素42将要被添加在位置3至10处,那么根据本发明的一个实施例,要在位置3、4、5、6、7、8、9和10处添加的新元素可在一个操作中被分组在一起并且被插入。
参考图6,在操作606中,非循序游程长度编码器28基于新元素的索引(或者编有索引的位置或者位置)来确定新元素落入现有游程之中的哪个或哪些游程“idx”中。
在操作607中,非循序游程长度编码器28确定新元素是否与游程长度编码序列的所有位置具有相同值。如果是,则什么也不需要做,如图5A所示。
如果不是所有现有位置都具有与新元素42相同的值,则在本发明的一个实施例中,在操作608中,任何重叠的值被用与新元素的值不同的值来替换。例如,如图5B所示,七个“1”值的游程将被添加在游程长度编码序列11100011101111的位置3至10处,该序列可被表达为RLE序列(0,3,3,3,1,4)。这样,位置3至10已经包括游程idxA、idxB和idxC中和一部分游程idx+1中的“0”和“1”值的混合。在本发明的一个实施例中,新元素将要被添加到的所有位置最初被用与新元素的值不同的值来替换以创建具有至少等于新元素的数目的长度的单个游程。在一些情况下,这可使得新游程与邻接游程合并。在图5B所示的示例中,游程idxA、idxB和idxC被合并在一起并且游程idx+1的大小减少1以创建临时序列1110000000111,该序列可被表达为RLE序列(0,3,7,3)。
在本发明的其他实施例中,如果现有位置中的一些但不是全部具有与新元素42相同的值,则新元素42可被一次一个地插入,如上文对于图4所述。然而,本发明的实施例不限于这里描述的特定技术。
在确定相应的游程并且替换值来创建临时序列之后,如果必要,游程长度编码器28在操作609中确定新元素42到游程(例如,图5B的新游程idxk,其是通过合并游程idxA、idxB和idxC来创建的)的右边界的距离(“r”)和到该游程的左边界的距离(“l”)。
在确定距离l和r之后,剩余的操作可按与上文在单元素实施例中所提供的基本上类似的方式来进行。
在操作610中,如果l>1并且r>1,则如图5C所示,分割游程idx并且创建两个附加的游程。在图5C的示例中,给定原始RLE序列(0,3,8,3),长度为8的游程在操作612中被位置4至9处的6个新元素42所分割,并且新的游程长度编码序列是(0,3,1,6,1,3)。这使得能够减少计算工作,因为在单元素情况中,每个新元素42将被一次一个地插入,从而导致例如一个分割操作和五个增长操作。
在操作614中,如果l=1并且r>1,则如图5D所示,在操作616中,左游程idx-1被在右侧增长。在图5D的示例中,给定原始RLE序列(0,3,8,3)并且在位置3至8处添加6个新元素42,则长度为3的左游程idx-1被增长6并且长度为8的游程idx被收缩6,从而生成新的RLE序列(0,9,2,3)。
类似地,在操作618中,如果l>1并且r=1,则如图5E所示,在操作620中,右侧游程idx+1被在左侧增长。在图5E的示例中,给定原始RLE序列(0,3,8,3)并且在位置5至10处添加6个新元素42,则长度为3的右游程idx-1被增长6并且长度为8的游程idx被收缩6,从而生成新的RLE序列(0,3,2,9)。
最后,在操作622中,如果l=1并且r=1,则如图5F所示,在操作624中,所有三个游程idx-1、idx和idx+1被合并在一起成为单个游程。在图5F的示例中,给定原始RLE序列(0,3,8,3)并且在位置3至10处添加8个新元素42,三个游程被合并以生成新的RLE序列(0,13)或者当被填补时为(0,13,0,0)。
在序列不是二进制的情况下(例如,序列的元素可具有多于两个可能值的情形),仅当邻接游程具有与新元素40相同的值时,新元素40才被合并到邻接游程中。与上述基本相同的技术在进行如下修改后可应用在非二进制情形中:距离l和r被计算为到与新元素40具有相同值的最近游程的距离。例如,在非二进制情况中,可以按基本上相同的方式使用相同的“分割”和“合并”操作,其中非二进制情况中的“合并”将在左游程和右游程都具有与插入的元素相同的值时执行。“左侧增长”和“右侧增长”操作将仅适用于右侧相邻游程或者左侧相邻游程分别具有与插入的元素相同的值的情形。在非二进制情况中将引入一种额外的情况,其中在现有游程的边界处创建新的游程(例如,其中l=1并且r>1并且左侧相邻游程的值不同于插入的值,其中r=1并且l>1并且右侧相邻游程的值不同于插入的值,或者其中l=1并且r=1并且左侧和右侧的元素都与插入的值不同)。
可按任何顺序评估或者并行评估不同的情况(非邻接、左侧邻接、右侧邻接和左右都邻接),并且本发明的实施例不限于本文描述的顺序。
虽然已结合某些示范性实施例描述了本发明,但要理解本发明不限于公开的实施例,而是相反,打算涵盖包括在所附权利要求及其等同物的精神和范围内的各种修改和等同布置。
例如,在一个实施例中,对于包含要编码的元素的游程的位置的搜索操作可使用预测。实现预测的一种可能性是从包含最近编码的符号(或元素)的游程开始搜索,这在新的值紧密群集在一起的实施例中可减少搜索时间。此外,可基于最近编码的符号中的一个或多个的位置来预测搜索的方向(例如,左、右、上或下)。
在本发明的一些实施例中,游程长度编码器28可通过利用在例如初始化操作402期间生成的RLE序列中的额外零长度间隔减少数据移动的量来在存储器和计算要求之间进行折衷。在现有游程之间用零填补初始RLE序列不会改变序列的含义,因为长度为零的游程指示在这些现有游程之间没有具有该值的元素,并且消耗额外的存储器。然而,如果现有游程被分割,则RLE序列中的具有0的现有邻接位置可用于表示由分割生成的新游程之一,从而节省了将所有现有游程向右移动的计算工作。对于此额外的计算效率的折衷是未使用的零形式的额外存储器使用。
Claims (18)
1.一种用于更新游程长度编码流的方法,该方法包括:
由处理器接收要在插入位置处插入到所述游程长度编码流中的具有插入值的元素,所述插入值具有多个值之一,所述游程长度编码流具有布置在位于所述游程长度编码流的开始位置和结束位置之间的多个游程中的多个元素,并且所述多个元素中的每一个具有所述多个值之一和在所述游程长度编码流中的位置;
识别所述游程长度编码流的游程之中的包含所述插入位置的游程;
由所述处理器确定所述插入值是否与所述插入位置处的元素的值相同;
当所述插入值不同于所述插入位置处的元素的值时:
由所述处理器确定所述插入位置是否与所述游程长度编码流的游程之中的一个或多个相邻匹配游程邻接,所述相邻匹配游程的每个元素具有与所述插入值相同的值;
当所述插入位置与所述一个或多个相邻匹配游程中的仅一个邻接时,由所述处理器延长所述一个或多个相邻匹配游程中的一个匹配游程;
当所述插入位置与所述一个或多个相邻匹配游程中的两个匹配游程邻接时,由所述处理器合并所述一个或多个相邻匹配游程中的所述两个匹配游程;以及
当所述插入位置不与所述一个或多个相邻匹配游程邻接时,由所述处理器创建新的游程。
2.如权利要求1所述的方法,其中,所述确定所述插入位置是否与一个或多个相邻匹配游程邻接包括:
由所述处理器计算从所述插入位置到所述一个或多个相邻匹配游程中的每一个的一个或多个距离,所述一个或多个相邻匹配游程中的每一个具有左端和右端;
当所述插入位置在所述一个或多个相邻匹配游程中的两个之间时,由所述处理器计算到所述一个或多个相邻匹配游程中的第一相邻匹配游程的右端的左距离,以及到所述一个或多个相邻匹配游程中的第二相邻匹配游程的左端的右距离;
当所述插入位置在所述一个或多个相邻匹配游程之一与所述开始位置之间时,由所述处理器计算到所述开始位置的左距离和到所述一个或多个相邻匹配游程中的该一个游程的左端的右距离;以及
当所述插入位置在所述一个或多个相邻匹配游程之一与所述结束位置之间时,由所述处理器计算到所述一个或多个相邻匹配游程中的该一个游程的右端的左距离和到所述结束位置的右距离。
3.如权利要求2所述的方法,其中,由所述处理器确定所述插入位置是否与一个或多个相邻匹配游程邻接包括:
当所述左距离大于1并且所述右距离为1时,或者当所述左距离为1并且所述右距离大于1时,由所述处理器确定所述插入位置仅与一个相邻匹配游程邻接;
当所述左距离为1并且所述右距离为1时,由所述处理器确定所述插入位置在两个匹配游程之间;以及
当所述左距离大于1并且所述右距离大于1时,由所述处理器确定所述插入位置不与一个或多个匹配游程邻接。
4.如权利要求1所述的方法,其中,所述多个值由两个值组成。
5.如权利要求1所述的方法,其中,所述多个值包括三个值。
6.如权利要求1所述的方法,其中,所述识别所述游程长度编码流的包含所述插入位置的游程包括:
根据一个或多个先前接收的元素来预测所述游程长度编码流的该游程。
7.如权利要求1所述的方法,其中,所述元素包括多个连续的元素,所述连续的元素中的每一个具有所述插入值,并且
其中,所述插入位置包括多个连续的位置,
所述方法还包括利用与所述连续的元素的值不同的值来替换所述游程长度编码流的与所述多个连续的位置相对应的位置处的值。
8.如权利要求1所述的方法,其中,所述游程长度编码序列被填补以具有零长度的附加游程。
9.如权利要求8所述的方法,其中,所述合并两个匹配的游程包括将所述附加游程转换成具有非零长度的游程。
10.一种用于更新游程长度编码流的系统,包括:
触摸控制器;以及
耦合到所述触摸控制器的游程长度编码器,所述游程长度编码器被配置为:
从所述触摸控制器接收要在插入位置处插入到游程长度编码流中的具有插入值的元素,所述插入值具有多个值之一,所述游程长度编码流具有布置在位于所述游程长度编码流的开始位置和结束位置之间的多个游程中的多个元素,并且所述多个元素中的每一个具有所述多个值之一和在所述游程长度编码流中的位置;
识别所述游程长度编码流的游程之中的包含所述插入位置的游程;
确定所述元素的插入值是否与所述插入位置处的值相同;
当所述插入值不同于所述插入位置处的元素的值时:
确定所述插入位置是否与所述游程长度编码流的一个或多个相邻匹配游程邻接,所述相邻匹配游程的每个元素具有与所述插入值相同的值;
当所述插入位置与所述一个或多个相邻匹配游程中的仅一个邻接时,延长所述一个或多个相邻匹配游程中的一个匹配游程;
当所述插入位置与所述一个或多个相邻匹配游程中的两个匹配游程邻接时,合并所述一个或多个相邻匹配游程中的所述两个匹配游程;以及
当所述插入位置不与一个或多个相邻匹配游程邻接时,创建新的游程。
11.如权利要求10所述的系统,其中,所述游程长度编码器被配置为通过以下操作来确定所述插入位置是否与一个或多个相邻匹配游程邻接:
计算从所述插入位置到所述一个或多个相邻匹配游程中的每一个的一个或多个距离,所述一个或多个相邻匹配游程中的每一个具有左端和右端;
当所述插入位置在所述一个或多个相邻匹配游程中的两个之间时,计算到所述一个或多个相邻匹配游程中的第一游程的右端的左距离,以及到所述一个或多个相邻匹配游程中的第二游程的左端的右距离;
当所述插入位置在所述一个或多个相邻匹配游程之一与所述开始位置之间时,计算到所述开始位置的左距离和到所述一个或多个相邻匹配游程中的该一个游程的左端的右距离;以及
当所述插入位置在所述一个或多个相邻匹配游程之一与所述结束位置之间时,计算到所述一个或多个相邻匹配游程中的该一个游程的右端的左距离和到所述结束位置的右距离。
12.如权利要求11所述的系统,其中,所述游程长度编码器被配置为通过以下操作来确定所述插入位置是否与一个或多个相邻匹配游程邻接:
当所述左距离大于1并且所述右距离为1时,或者当所述左距离为1并且所述右距离大于1时,确定所述插入位置仅与一个相邻匹配游程邻接;
当所述左距离为1并且所述右距离为1时,确定所述插入位置在两个匹配游程之间;以及
当所述左距离大于1并且所述右距离大于1时,确定所述插入位置不与一个或多个匹配游程邻接。
13.如权利要求10所述的系统,其中,所述多个值由两个值组成。
14.如权利要求10所述的系统,其中,所述多个值包括三个值。
15.如权利要求10所述的系统,其中,所述游程长度编码器被配置为通过以下操作来识别所述游程长度编码流的包含所述插入位置的游程:
根据一个或多个先前接收的元素来预测所述游程长度编码流的该游程。
16.如权利要求10所述的系统,其中,所述元素包括多个连续的元素,所述连续的元素中的每一个具有所述插入值,
其中,所述插入位置包括多个连续的位置,以及
其中,所述游程长度编码器还被配置为用与所述连续的元素的值不同的值来替换所述游程长度编码流的与所述多个连续的位置相对应的位置处的值。
17.如权利要求10所述的系统,其中,所述游程长度编码序列被填补以具有零长度的附加游程。
18.如权利要求17所述的系统,其中,所述游程长度编码器被配置为通过将所述附加游程转换成具有非零长度的游程来合并游程。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461945744P | 2014-02-27 | 2014-02-27 | |
US61/945,744 | 2014-02-27 | ||
US14/629,415 US9160363B2 (en) | 2014-02-27 | 2015-02-23 | Run length encoding with non-sequential input |
US14/629,415 | 2015-02-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104883193A CN104883193A (zh) | 2015-09-02 |
CN104883193B true CN104883193B (zh) | 2019-08-23 |
Family
ID=53883265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510089942.6A Active CN104883193B (zh) | 2014-02-27 | 2015-02-27 | 具有非循序输入的游程长度编码 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9160363B2 (zh) |
KR (1) | KR102161746B1 (zh) |
CN (1) | CN104883193B (zh) |
TW (1) | TWI657693B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105357532A (zh) * | 2015-11-06 | 2016-02-24 | 苏州博思得电气有限公司 | 一种压缩方法、解压缩方法、压缩装置及解压缩装置 |
CN106507108B (zh) * | 2016-12-07 | 2018-04-17 | 杜昀晓 | 图像编码、解码的方法和装置 |
US10644721B2 (en) * | 2018-06-11 | 2020-05-05 | Tenstorrent Inc. | Processing core data compression and storage system |
US10812102B2 (en) | 2018-06-29 | 2020-10-20 | Apple Inc. | Efficient data encoding |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1551201A (zh) * | 2003-05-20 | 2004-12-01 | ���ǵ�����ʽ���� | 调制要记录在记录介质上的数据的方法和设备及记录介质 |
US6897793B1 (en) * | 2004-04-29 | 2005-05-24 | Silicon Image, Inc. | Method and apparatus for run length limited TMDS-like encoding of data |
JP2006286084A (ja) * | 2005-03-31 | 2006-10-19 | Fujitsu Ltd | 符号器、復号器および符号化方法 |
CN1867077A (zh) * | 2005-05-19 | 2006-11-22 | 佳能株式会社 | 图像编码装置和方法 |
CN101023588A (zh) * | 2004-09-17 | 2007-08-22 | 皇家飞利浦电子股份有限公司 | 将用户比特流转换为编码比特流的方法、检测信号中同步模式的方法、记录载体、信号、记录设备和重放设备 |
CN101729198A (zh) * | 2008-10-27 | 2010-06-09 | 华为技术有限公司 | 一种编解码方法、装置及系统 |
CN102682810A (zh) * | 2011-03-17 | 2012-09-19 | 清华大学 | 游程长度比率调制数据记录方法及其系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9727398D0 (en) * | 1997-12-29 | 1998-02-25 | Sgs Thomson Microelectronics | Run-length encoding |
KR100947399B1 (ko) * | 2001-11-22 | 2010-03-12 | 파나소닉 주식회사 | 부호화 방법 |
US7483585B2 (en) * | 2004-12-01 | 2009-01-27 | Ati Technologies Ulc | Image compression using variable bit size run length encoding |
US8755619B2 (en) | 2009-11-19 | 2014-06-17 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding and decoding image data using run of the image data |
-
2015
- 2015-02-23 US US14/629,415 patent/US9160363B2/en active Active
- 2015-02-26 TW TW104106196A patent/TWI657693B/zh active
- 2015-02-27 KR KR1020150028621A patent/KR102161746B1/ko active IP Right Grant
- 2015-02-27 CN CN201510089942.6A patent/CN104883193B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1551201A (zh) * | 2003-05-20 | 2004-12-01 | ���ǵ�����ʽ���� | 调制要记录在记录介质上的数据的方法和设备及记录介质 |
US6897793B1 (en) * | 2004-04-29 | 2005-05-24 | Silicon Image, Inc. | Method and apparatus for run length limited TMDS-like encoding of data |
CN101023588A (zh) * | 2004-09-17 | 2007-08-22 | 皇家飞利浦电子股份有限公司 | 将用户比特流转换为编码比特流的方法、检测信号中同步模式的方法、记录载体、信号、记录设备和重放设备 |
JP2006286084A (ja) * | 2005-03-31 | 2006-10-19 | Fujitsu Ltd | 符号器、復号器および符号化方法 |
CN1867077A (zh) * | 2005-05-19 | 2006-11-22 | 佳能株式会社 | 图像编码装置和方法 |
CN101729198A (zh) * | 2008-10-27 | 2010-06-09 | 华为技术有限公司 | 一种编解码方法、装置及系统 |
CN102682810A (zh) * | 2011-03-17 | 2012-09-19 | 清华大学 | 游程长度比率调制数据记录方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
KR20150102746A (ko) | 2015-09-07 |
TW201534107A (zh) | 2015-09-01 |
CN104883193A (zh) | 2015-09-02 |
TWI657693B (zh) | 2019-04-21 |
US20150244396A1 (en) | 2015-08-27 |
US9160363B2 (en) | 2015-10-13 |
KR102161746B1 (ko) | 2020-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104883193B (zh) | 具有非循序输入的游程长度编码 | |
US20200151608A1 (en) | Merging feature subsets using graphical representation | |
CN105451026B (zh) | 数据压缩 | |
US8615138B2 (en) | Image compression using sub-resolution images | |
JP2001211081A (ja) | ディジタルアレイ再インデクシング方法及びディジタルデータ圧縮器 | |
CN101930613A (zh) | 将图形路径序列编码和解码成分层方案的方法 | |
EP3007423A1 (en) | Method of color palette coding applicable to electronic device and electronic device using the same | |
KR20200108465A (ko) | 인코딩 방법, 디코딩 방법, 및 디바이스 | |
JP7376881B2 (ja) | 画像処理のためのシステム、方法、および装置 | |
CN112218077B (zh) | 通道间点云属性编码方法、装置以及可读存储介质 | |
CN112188197A (zh) | 通道间点云属性解码方法、装置以及可读存储介质 | |
CN105850132A (zh) | 颜色指数预测的方法和装置 | |
CN110795456B (zh) | 图谱的查询方法、装置、计算机设备以及存储介质 | |
Shynkarenko et al. | Constructive-synthesizing structures and their grammatical interpretations. II. Refining transformations | |
Nagy et al. | A weight sequence distance function | |
CN110598629B (zh) | 超网络的搜索空间构建方法、装置以及电子设备 | |
KR20210086936A (ko) | 데이터 출력 방법, 획득 방법, 장치 및 전자 기기 | |
CN112612762B (zh) | 数据处理方法及相关设备 | |
CN115550030A (zh) | 数据加密方法、装置、存储介质及电子设备 | |
US8270742B1 (en) | Data compression for computer-aided design systems | |
JP2011209801A (ja) | ソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラム | |
US9544608B1 (en) | Lossless image compression for few-colored images | |
CN118101973A (zh) | 一种图像处理方法、系统、设备及存储介质 | |
CN113034625A (zh) | 一种基于图片的无损压缩方法、智能终端及存储介质 | |
Kasumov | Data positioning as an instrument of constructive data compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |