具有非循序輸入的游程長度編碼的制作方法
【專利說明】具有非循序輸入的游程長度編碼
[0001]相關(guān)申請(qǐng)的交叉引用
[0002]本申請(qǐng)要求2014年2月27日向美國專利商標(biāo)局遞交的標(biāo)題為“Run LengthEncoding with Non-Sequential Input”的美國臨時(shí)專利申請(qǐng)61/945,744號(hào)的優(yōu)先權(quán)和權(quán)益,這里通過引用并入該申請(qǐng)的全部公開內(nèi)容。
技術(shù)領(lǐng)域
[0003]本發(fā)明的實(shí)施例涉及用于對(duì)通信信道中的數(shù)據(jù)編碼和解碼的系統(tǒng)和方法。
【背景技術(shù)】
[0004]游程長度編碼(Run Length Encoding,RLE)是一種流行的無損壓縮技術(shù),該技術(shù)用“游程”一一按一定的掃描順序具有相同值的元素的數(shù)目一一來表示數(shù)據(jù)元素。例如,以下序列 “0,0,0,I, I, 1,0,0,0, I, I” 可由“ (O, 3),(1,3), (O, 3),(1,2) ” 表示,其中每一對(duì)中的第一數(shù)字確定游程的元素的值,并且第二數(shù)字確定該值的重復(fù)次數(shù)。在上述示例中,序列開始于三個(gè)O (0,3),之后是三個(gè)I (1,3),之后又是三個(gè)O (0,3),最后是兩個(gè)I (1,2)。在二進(jìn)制情況下,元素的值可被省略,并且該表示變成“(3,3,3,2) ”,其中RLE序列的第一數(shù)字指的是元素“O”的重復(fù)次數(shù)。
[0005]游程長度編碼經(jīng)常通過按光柵掃描順序操作的硬件使用,例如顯示設(shè)備和掃描儀。RLE的效率取決于數(shù)據(jù)的特性。例如,當(dāng)不同值的數(shù)目較小并且當(dāng)相同的值在鄰接元素的群組中經(jīng)常重復(fù)時(shí),RLE提供較高的壓縮。通過對(duì)數(shù)據(jù)應(yīng)用線性掃描順序或者通過直接在多個(gè)維度中對(duì)重復(fù)次數(shù)編碼,可將RLE應(yīng)用到多維數(shù)據(jù)。通常,RLE編碼器對(duì)按先后順序提供并存儲(chǔ)在行緩沖器或其他類型的存儲(chǔ)器中的數(shù)據(jù)操作。如果數(shù)據(jù)是以非先后順序產(chǎn)生的,則非先后順序數(shù)據(jù)一般被緩沖以使數(shù)據(jù)完整,以便其可按先后順序被提供給RLE編碼器。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的實(shí)施例的一些方面涉及非循序游程長度編碼裝置。
[0007]根據(jù)本發(fā)明的一個(gè)實(shí)施例,一種用于更新游程長度編碼流的方法包括:處理器接收要在插入位置處插入到游程長度編碼流中的具有插入值的元素,插入值具有多個(gè)值之一,游程長度編碼流具有布置在位于游程長度編碼流的開始位置和結(jié)束位置之間的多個(gè)游程中的多個(gè)元素,并且多個(gè)元素中的每一個(gè)具有多個(gè)值之一和在游程長度編碼流中的位置;識(shí)別游程長度編碼流的游程之中的包含插入位置的游程;處理器確定插入值是否與插入位置處的元素的值相同;當(dāng)插入值不同于插入位置處的元素的值時(shí):處理器確定插入位置是否與游程長度編碼流的游程之中的一個(gè)或多個(gè)相鄰匹配游程鄰接,相鄰匹配游程的每個(gè)元素具有與插入值相同的值;當(dāng)插入位置與一個(gè)或多個(gè)相鄰匹配游程中的僅一個(gè)鄰接時(shí),處理器延長一個(gè)或多個(gè)相鄰匹配游程中的一個(gè)匹配游程;當(dāng)插入位置與一個(gè)或多個(gè)相鄰匹配游程中的兩個(gè)匹配游程鄰接時(shí),處理器合并一個(gè)或多個(gè)相鄰匹配游程中的該兩個(gè)匹配游程;以及當(dāng)插入位置不與一個(gè)或多個(gè)相鄰匹配游程鄰接時(shí),處理器創(chuàng)建新的游程。
[0008]確定插入位置是否與一個(gè)或多個(gè)相鄰匹配游程鄰接可包括:處理器計(jì)算從插入位置到一個(gè)或多個(gè)相鄰匹配游程中的每一個(gè)的一個(gè)或多個(gè)距離,一個(gè)或多個(gè)相鄰匹配游程中的每一個(gè)具有左端和右端;當(dāng)插入位置在一個(gè)或多個(gè)相鄰匹配游程中的兩個(gè)之間時(shí),處理器計(jì)算到一個(gè)或多個(gè)相鄰匹配游程中的第一相鄰匹配游程的右端的左距離;以及到一個(gè)或多個(gè)相鄰匹配游程中的第二相鄰匹配游程的左端的右距離;當(dāng)插入位置在一個(gè)或多個(gè)相鄰匹配游程之一與開始位置之間時(shí),處理器計(jì)算到開始位置的左距離和到一個(gè)或多個(gè)相鄰匹配游程中的該一個(gè)游程的左端的右距離;以及當(dāng)插入位置在一個(gè)或多個(gè)相鄰匹配游程之一與結(jié)束位置之間時(shí),處理器計(jì)算到一個(gè)或多個(gè)相鄰匹配游程中的該一個(gè)游程的右端的左距離和到結(jié)束位置的右距離。
[0009]處理器確定插入位置是否與一個(gè)或多個(gè)相鄰匹配游程鄰接可包括:當(dāng)左距離大于I并且右距離為I時(shí),或者當(dāng)左距離為I并且右距離大于I時(shí),處理器確定插入位置僅與一個(gè)相鄰匹配游程鄰接;當(dāng)左距離為I并且右距離為I時(shí),處理器確定插入位置在兩個(gè)匹配游程之間;以及當(dāng)左距離大于I并且右距離大于I時(shí),處理器確定插入位置不與一個(gè)或多個(gè)匹配游程鄰接。
[0010]多個(gè)值可包括兩個(gè)值。
[0011]多個(gè)值可包括三個(gè)值。
[0012]識(shí)別游程長度編碼流的包含插入位置的游程可包括:根據(jù)一個(gè)或多個(gè)先前接收的元素來預(yù)測(cè)游程長度編碼流的該游程。
[0013]元素包括多個(gè)連續(xù)的元素,連續(xù)的元素中的每一個(gè)具有插入值,并且其中,插入位置包括多個(gè)連續(xù)的位置,該方法還包括利用與連續(xù)的元素的值不同的值來替換游程長度編碼流的與多個(gè)連續(xù)的位置相對(duì)應(yīng)的位置處的值。
[0014]游程長度編碼序列可被填補(bǔ)以具有零長度的附加游程。
[0015]合并兩個(gè)匹配的游程可包括將附加游程轉(zhuǎn)換成具有非零長度的游程。
[0016]根據(jù)本發(fā)明的一個(gè)實(shí)施例,一種系統(tǒng)包括:觸摸控制器;以及耦合到觸摸控制器的游程長度編碼器,游程長度編碼器被配置為:從觸摸控制器接收要在插入位置處插入到游程長度編碼流中的具有插入值的元素,插入值具有多個(gè)值之一,游程長度編碼流具有布置在位于游程長度編碼流的開始位置和結(jié)束位置之間的多個(gè)游程中的多個(gè)元素,并且多個(gè)元素中的每一個(gè)具有多個(gè)值之一和在游程長度編碼流中的位置;識(shí)別游程長度編碼流的游程之中的包含插入位置的游程;確定元素的插入值是否與插入位置處的值相同;當(dāng)插入值不同于插入位置處的元素的值時(shí):確定插入位置是否與游程長度編碼流的一個(gè)或多個(gè)相鄰匹配游程鄰接,相鄰匹配游程的每個(gè)元素具有與插入值相同的值;當(dāng)插入位置與一個(gè)或多個(gè)相鄰匹配游程中的僅一個(gè)鄰接時(shí),延長一個(gè)或多個(gè)相鄰匹配游程中的一個(gè)匹配游程;當(dāng)插入位置與一個(gè)或多個(gè)相鄰匹配游程中的兩個(gè)匹配游程鄰接時(shí),合并一個(gè)或多個(gè)相鄰匹配游程中的該兩個(gè)匹配游程;以及當(dāng)插入位置不與一個(gè)或多個(gè)相鄰匹配游程鄰接時(shí),創(chuàng)建新的游程。
[0017]游程長度編碼器可被配置為通過以下操作來確定插入位置是否與一個(gè)或多個(gè)相鄰匹配游程鄰接:計(jì)算從插入位置到一個(gè)或多個(gè)相鄰匹配游程中的每一個(gè)的一個(gè)或多個(gè)距離,一個(gè)或多個(gè)相鄰匹配游程中的每一個(gè)具有左端和右端;當(dāng)插入位置在一個(gè)或多個(gè)相鄰匹配游程中的兩個(gè)之間時(shí),計(jì)算到一個(gè)或多個(gè)相鄰匹配游程中的第一游程的右端的左距離;以及到一個(gè)或多個(gè)相鄰匹配游程中的第二游程的左端的右距離;當(dāng)插入位置在一個(gè)或多個(gè)相鄰匹配游程之一與開始位置之間時(shí),計(jì)算到開始位置的左距離和到一個(gè)或多個(gè)相鄰匹配游程中的該一個(gè)游程的左端的右距離;以及當(dāng)插入位置在一個(gè)或多個(gè)相鄰匹配游程之一與結(jié)束位置之間時(shí),計(jì)算到一個(gè)或多個(gè)相鄰匹配游程中的該一個(gè)游程的右端的左距離和到結(jié)束位置的右距離。
[0018]游程長度編碼器可被配置為通過以下操作來確定插入位置是否與一個(gè)或多個(gè)相鄰匹配游程鄰接:當(dāng)左距離大于I并且右距離為I時(shí),或者當(dāng)左距離為I并且右距離大于I時(shí),確定插入位置僅與一個(gè)相鄰匹配游程鄰接;當(dāng)左距離為I并且右距離為I時(shí),確定插入位置在兩個(gè)匹配游程之間;以及當(dāng)左距離大于I并且右距離大于I時(shí),確定插入位置不與一個(gè)或多個(gè)匹配游程鄰接。
[0019]多個(gè)值可包括兩個(gè)值。
[0020]多個(gè)值可包括三個(gè)值。
[0021]游程長度編碼器可被配置為通過以下操作來識(shí)別游程長度編碼流的包含插入位置的游程:根據(jù)一個(gè)或多個(gè)先前接收的元素來預(yù)測(cè)游程長度編碼流的該游程。
[0022]所述元素可包括多個(gè)連續(xù)的元素,連續(xù)的元素中的每一個(gè)具有插入值,其中,插入位置包括多個(gè)連續(xù)的位置,以及其中,游程長度編碼器還被配置為用與連續(xù)的元素的值不同的值來替換游程長度編碼流的與多個(gè)連續(xù)的位置相對(duì)應(yīng)的位置處的值。
[0023]游程長度編碼序列可被填補(bǔ)以具有零長度的附加游程。
[0024]游程長度編碼器可被配置為通過將附加游程轉(zhuǎn)換成具有非零長度的游程來合并游程。
【附圖說明】
[0025]附圖與說明書一起闡明了本發(fā)明的示范性實(shí)施例并且與描述一起用來說明本發(fā)明的原理。
[0026]圖1是圖示出原始數(shù)據(jù)和用游程長度編碼來壓縮的相同數(shù)據(jù)的示意圖。
[0027]圖2是圖示出包括根據(jù)本發(fā)明的一個(gè)實(shí)施例的游程長度編碼器的計(jì)算設(shè)備的框圖。
[0028]圖3A、3B、3C、3D和3E是根據(jù)本發(fā)明的一個(gè)實(shí)施例的通過添加新的元素來修改現(xiàn)有數(shù)據(jù)序列的不同情況的示意圖示。
[0029]圖4是圖示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于向經(jīng)游程長度編碼的數(shù)據(jù)添加新元素的方法的流程圖。
[0030]圖5A、5B、5C、5D、5E和5F是根據(jù)本發(fā)明的一個(gè)實(shí)施例的在各種情況下向經(jīng)游程長度編碼的二進(jìn)制數(shù)據(jù)添加多個(gè)新元素的方法的示意圖示。
[0031]圖6是圖示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于向經(jīng)游程長度編碼的二進(jìn)制數(shù)據(jù)添加新元素的方法的流程圖。
【具體實(shí)施方式】
[0032]在以下詳細(xì)描述中,只是以舉例說明的方式示出和描述了本發(fā)明的某些示范性實(shí)施例。正如本領(lǐng)域技術(shù)人員將會(huì)認(rèn)識(shí)到的,本發(fā)明可以以許多不同的形式來實(shí)現(xiàn),而不應(yīng)當(dāng)被解釋為限于本文記載的實(shí)施例。貫穿說明書各處,相似的標(biāo)號(hào)指代相似的元素。
[0033]本文使用的術(shù)語只是為了描述特定實(shí)施例,而并不打算限制發(fā)明構(gòu)思。就本文使用的而言,單數(shù)形式“一”和“該”打算也包括復(fù)數(shù)形式,除非上下文明確地另有指示。還要理解