欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于堆處理并行處理器的系統(tǒng)及方法

文檔序號(hào):6413604閱讀:208來(lái)源:國(guó)知局
專利名稱:用于堆處理并行處理器的系統(tǒng)及方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理。

背景技術(shù)
并行處理 當(dāng)所需的算法有窄的數(shù)據(jù)寬度、串行數(shù)據(jù)依賴性、或頻繁的控制指令(例如“if”、“for”、“while”指令)時(shí),對(duì)并行處理器進(jìn)行高容量編程是不容易的。有三種類型的并行機(jī)制可用來(lái)解決處理器中這樣的問(wèn)題。
第一種類型的并行機(jī)制由多功能單元來(lái)支持,并且它允許進(jìn)行數(shù)據(jù)處理以同時(shí)在每一個(gè)功能單元內(nèi)進(jìn)行。超級(jí)計(jì)數(shù)處理器結(jié)構(gòu)和超長(zhǎng)指令字(VLIW)處理器結(jié)構(gòu)允許指令在同一循環(huán)中被發(fā)布到多個(gè)功能單元中的每一個(gè)。一般來(lái)說(shuō),此等待時(shí)間,或完成時(shí)間,在每一種類型的功能單元中都是不同的。最簡(jiǎn)單的功能(例如位級(jí)AND)通常在一個(gè)循環(huán)內(nèi)即可完成,而一個(gè)浮點(diǎn)加法則需要3次或更多次的循環(huán)來(lái)完成。
第二種類型的并行處理由流水線式操作的獨(dú)立功能單元來(lái)支持。例如,一個(gè)浮點(diǎn)ADD可在3次循環(huán)內(nèi)完成,并使用串連3個(gè)只需1次循環(huán)的子功能來(lái)實(shí)現(xiàn)。通過(guò)在子功能之間放置流水線寄存器,第二浮點(diǎn)加法可以在同一循環(huán)內(nèi)被起動(dòng)進(jìn)入第一子功能中,在此循環(huán)中,前一個(gè)浮點(diǎn)加法可被起動(dòng)進(jìn)入進(jìn)第二子功能中。利用這種方法,即使任一單獨(dú)的浮點(diǎn)加法需要3次循環(huán)來(lái)完成,一個(gè)浮點(diǎn)加法也可在每個(gè)循環(huán)內(nèi)被起動(dòng)并完成。
第三種類型的并行處理使用一個(gè)字中不同的字段分區(qū)來(lái)實(shí)施同一計(jì)算的不同實(shí)例。例如,32位處理器上的32位的字可以被分成4個(gè)8位的字段分區(qū)。如果此數(shù)據(jù)項(xiàng)足夠小從而能放入8位內(nèi),則利用同一單一指令將可以用來(lái)處理所有4個(gè)數(shù)值。
在每一個(gè)循環(huán)中,還可能處理的數(shù)據(jù)項(xiàng)數(shù)目等于字段分區(qū)的數(shù)目乘以功能單元初始化的次數(shù)。
循環(huán)展開(kāi) 一般來(lái)講,有一種對(duì)多和/或流水線功能單元進(jìn)行編程的傳統(tǒng)和一般方法找到同一計(jì)算方法的多個(gè)實(shí)例,并根據(jù)每一個(gè)實(shí)例一起執(zhí)行相應(yīng)的操作。這些實(shí)例可通過(guò)已知的循環(huán)展開(kāi)技術(shù)或其它同樣的計(jì)算方法來(lái)產(chǎn)生。
雖然循環(huán)展開(kāi)是一種普遍使用的技術(shù),具體的例子對(duì)了解此方法的優(yōu)點(diǎn)有所幫助。例如,考慮下面的程序A。
程序A for i=0:1:255,{S(i)}; 其中程序體S(i)是依賴于i的一序列運(yùn)算{S1(i);S2(i);S3(i);S4(i);S5(i);},并且其中計(jì)算S(i)完全獨(dú)立于計(jì)算S(j),j≠i。不假設(shè)運(yùn)算S1(i);S2(i);S3(i);S4(i);S5(i);彼此獨(dú)立。相反地,假設(shè)從一個(gè)運(yùn)算到下一個(gè)運(yùn)算的依賴性禁止重新排序。
同時(shí),還假設(shè)此依賴性要求下一個(gè)運(yùn)算在前一個(gè)運(yùn)算結(jié)束后才能開(kāi)始。如果此流水線運(yùn)算需要兩個(gè)循環(huán)來(lái)完成(即使此流水線的執(zhí)行單元在每一循環(huán)中產(chǎn)生一個(gè)新的結(jié)果),該5個(gè)序列的運(yùn)算將需要10個(gè)循環(huán)來(lái)完成。另外,此循環(huán)分支需要每個(gè)循環(huán)附加的3個(gè)循環(huán),除非編程工具可以重疊S4(i);S5(i);和分支延遲。因此,如果此分支延遲是被重疊的,則程序A需要640(256/4*10)次循環(huán)來(lái)完成;如果此分支延遲不被重疊,則需要832(256/4*13)次循環(huán)來(lái)完成。
以下的程序B與程序A等同。
程序B for n=0:4:255,{S(n);S(n+1);S(n+2);S(n+3);}; 此循環(huán)已經(jīng)被“展開(kāi)”四次。這就將昂貴的流程控制改變的數(shù)目減少了4倍。更重要的是,它提供了可以重新將四個(gè)S(i)中每一個(gè)的運(yùn)算要素重新排序的機(jī)會(huì)。所以,程序A和程序B等同于程序C。
程序C for n=0:4:255,{S1(n);S2(n);S3(n);S4(n);S5(n); S1(n+1);S2(n+1);S3(n+1);S4(n+1);S5(n+1); S1(n+2);S2(n+2);S3(n+2);S4(n+2);S5(n+2); S1(n+3);S2(n+3);S3(n+3);S4(n+3);S5(n+3); }; 利用以上有關(guān)依賴性和獨(dú)立性的假設(shè)集合,則可產(chǎn)生等同的程序D。
程序D for n=0:4:255,{S1(n);S1(n+1);S1(n+2);S1(n+3); S2(n);S2(n+1);S2(n+2);S2(n+3); S3(n);S3(n+1);S3(n+2);S3(n+3); S4(n);S4(n+1);S4(n+2);S4(n+3); S5(n);S5(n+1);S5(n+2);S5(n+3); }; 在第一循環(huán)內(nèi)可以發(fā)出(issue)S1(n);S1(n+1);,在第二循環(huán)內(nèi)可以發(fā)出S1(n+2);S1(n+3);。在第三循環(huán)開(kāi)始時(shí),S1(n);S1(n+1);已經(jīng)完成(已經(jīng)經(jīng)過(guò)了兩次循環(huán)),所以可以發(fā)出S2(n);S2(n+1);。
因此,接下來(lái)的兩個(gè)運(yùn)算可在每一個(gè)后續(xù)循環(huán)內(nèi)發(fā)出,因此,可以在相同的10次循環(huán)內(nèi)執(zhí)行整個(gè)程序體。程序D在少于程序A運(yùn)算時(shí)間的四分之一中進(jìn)行運(yùn)算。因此,闡明了公知的循環(huán)展開(kāi)的效用。
大多數(shù)并行處理器必須具有條件分支指令,此分支指令需要在指令本身和分支實(shí)際發(fā)生的點(diǎn)之間的多次循環(huán)延遲。在此延遲期間,其它指令可被執(zhí)行。只要足夠早地知道此分支條件并且編譯器或其它編程工具支持在此延遲期間指令的執(zhí)行,則此分支可以花費(fèi)小到一個(gè)指令發(fā)布時(shí)機(jī)的時(shí)間。這項(xiàng)技術(shù)甚至可以被應(yīng)用到程序A,因?yàn)榉种l件(i=255)在循環(huán)的頂部就已知。
然而,過(guò)多的展開(kāi)可能產(chǎn)生負(fù)面作用。首先,一旦利用了所有的起動(dòng)時(shí)機(jī)(如在程序D中),附加的展開(kāi)并不增加速度。第二,每一輪(turn)展開(kāi)的循環(huán)通常需要附加的寄存器來(lái)保存該具體輪的狀態(tài)。所需的寄存器的數(shù)目與展開(kāi)輪的數(shù)目成線性比例。如果所需寄存器的數(shù)目的總和超過(guò)可利用的數(shù)目,一些寄存器會(huì)溢出到高速緩沖存儲(chǔ)器中,然后,在下一個(gè)循環(huán)輪中被恢復(fù)。需要發(fā)出指令以支持溢出并且重新載入加長(zhǎng)了程序的運(yùn)行時(shí)間。所以,存在最優(yōu)的次數(shù)來(lái)展開(kāi)這種循環(huán)。
包含異常處理的展開(kāi)循環(huán) 現(xiàn)在考慮程序A’。
程序A’ for i=0:1:255,{S(i);if C(i)then T(I(i))}; 其中C(i)是僅依賴于S(i)的很少存在的異常條件(例如,1/64);,T(I(i))是一個(gè)過(guò)長(zhǎng)的異常處理,例如有1024個(gè)操作。I(i)是由異常處理所需的S(i)計(jì)算的信息。例如,可以假定T(I(i))平均在程序A的每個(gè)循環(huán)輪內(nèi)增加16個(gè)運(yùn)算,此數(shù)目超過(guò)了循環(huán)的主程序體內(nèi)的4個(gè)運(yùn)算。這種罕見(jiàn)但過(guò)長(zhǎng)的異常處理是一個(gè)編程的普遍問(wèn)題,不清楚應(yīng)該怎么處理該問(wèn)題而不會(huì)失去展開(kāi)的優(yōu)點(diǎn)。
保護(hù)指令 處理這種問(wèn)題的一種方法是通過(guò)使用在許多處理器上便于使用的保護(hù)指令(guarded instruction)。保護(hù)指令指定一個(gè)布爾值作為附加的操作數(shù),其中意味著此指令總是占用期望的功能單元,但是,如果此保護(hù)指令是假,則抑制結(jié)果的保留。
在實(shí)現(xiàn)“if-then-else”中,此保護(hù)被作為“if”的條件。由“if”的條件保護(hù)“then”語(yǔ)句的指令,由“if”的相反條件保護(hù)“else”語(yǔ)句的指令。在任何情況下,兩條語(yǔ)句都被執(zhí)行?!皌hen”語(yǔ)句的結(jié)果只更新保護(hù)是“真”的實(shí)例。此外,“else”語(yǔ)句的結(jié)果只更新保護(hù)是“假”的實(shí)例。所有的實(shí)例都執(zhí)行兩條語(yǔ)句的指令,承受該損失好于在控制流程中條件變化所需的流水線延遲損失。
如果,例如在程序A’中該保護(hù)很多時(shí)候是“真”并且“else”語(yǔ)句較大,則保護(hù)方法會(huì)遭受較大的損失。在這種情況下,所有實(shí)例都要為該較大的“else”語(yǔ)句付出代價(jià),即使只有幾個(gè)狀態(tài)受到此語(yǔ)句的影響。如果具有由條件C保護(hù)的操作S,則可以將其編程為guard(C,S); 第一展開(kāi) 如下所示,程序A’可被展開(kāi)成程序D’ for n=0:4:255,{S1(n);S1(n+1);S1(n+2);S1(n+3);  S2(n);S2(n+1);S2(n+2);S2(n+3);  S3(n);S3(n+1);S3(n+2);S3(n+3);  S4(n);S4(n+1);S4(n+2);S4(n+3);  S5(n);S5(n+1);S5(n+2);S5(n+3);  if C(n)then T(I(n));  if C(n+1)then(I(n+1));  if C(n+2)then(I(n+2));  if C(n+3)then T(I(n+3));  }; 假設(shè)使用上述例子中的參數(shù),在77%的循環(huán)輪中不會(huì)執(zhí)行T(I(n)),可能在21%循環(huán)中執(zhí)行一個(gè)T(I(n)),并且只在2%的循環(huán)中執(zhí)行多個(gè)T(I(n))。顯然,交叉運(yùn)算T(I(n)),T(I(n+1)),T(I(n+2)),和T(I(n+3))并沒(méi)有多少好處。
因此,需要處理異常的改進(jìn)技術(shù)。
編解碼器 編碼器是一種按照以下方式將符號(hào)的輸入序列映射為另一個(gè)已編碼的符號(hào)序列的處理被稱作解碼器的另一個(gè)處理能夠根據(jù)已編碼的序列符號(hào)來(lái)重構(gòu)輸入的符號(hào)序列。編碼器和解碼器合稱為“編解碼器”。
作為簡(jiǎn)寫,通常將符號(hào)的有限序列稱為流,因此,可以將流稱為輸入流和已編碼流。從輸入符號(hào)I的相關(guān)有限字母表來(lái)形成輸入流的每一個(gè)符號(hào)。同樣,從代碼符號(hào)C的相關(guān)有限字母表來(lái)形成已編碼流的每一個(gè)符號(hào)。
每一個(gè)字母表包含可區(qū)分符號(hào),稱為<end>符號(hào)。每一個(gè)流在與之相關(guān)的<end>符號(hào)處終止,并且<end>符號(hào)只能出現(xiàn)在每個(gè)流的末端。使用<end>符號(hào)的目的是能夠有序地暫停編解碼器的處理。
可以將能夠確定輸入或代碼流的末端的任意方法用于合成真實(shí)或虛擬的<end>符號(hào)的效果。例如,在許多應(yīng)用程序中,輸入和/或代碼流的長(zhǎng)度是已知的,該信息可用于替換文字的<end>流。
可以用Φ表示編碼器映射,以便如果u是輸入流,v是相對(duì)應(yīng)的已編碼流,則此關(guān)系可寫成v=Φ(u)。同樣,解碼器映射由Ψ表示,可以寫成u=Ψ(v),其中需要u=Ψ(Φ(u))。
不需要Φ(Ψ(v))來(lái)重構(gòu)v。如果相關(guān)的字母表I和C每個(gè)除了<end>符號(hào)之外僅包含兩個(gè)符號(hào),則將編解碼器(Φ,Ψ)稱為二進(jìn)制編解碼器。如果a,b,和<end>是二進(jìn)制字母表中的三個(gè)符號(hào),則將有用函數(shù)~定義為~a=b,~b=a,~<end>=<end>。
如到目前所述,當(dāng)輸入流的數(shù)目(和代碼流的數(shù)目)無(wú)限時(shí),編解碼器沒(méi)有實(shí)際的實(shí)現(xiàn)。如果沒(méi)有對(duì)編解碼器設(shè)置更多的結(jié)構(gòu)和限制,其將無(wú)法靈活地在有限機(jī)內(nèi)實(shí)現(xiàn),實(shí)際的實(shí)現(xiàn)則更少。
實(shí)際上可以由眾所周知的有限狀態(tài)轉(zhuǎn)換器來(lái)實(shí)現(xiàn)相當(dāng)部分的編解碼器的子集。有限狀態(tài)轉(zhuǎn)換器(FST)是一種能夠從其起始符號(hào)到終止符號(hào)<end>順序地處理流的自動(dòng)裝置,并且當(dāng)序列化時(shí)寫入代碼流的符號(hào)。從輸入流的符號(hào)順序地獲得信息并最終表示在代碼流中。
為了橋接從輸入流獲得信息和在代碼流中表示之間的延遲,F(xiàn)ST在序列化時(shí)保持并更新?tīng)顟B(tài)。從被稱為狀態(tài)空間的可能狀態(tài)的有限集合中選擇出所述狀態(tài)。狀態(tài)空間包含兩個(gè)被稱作<start>和<finish>的可區(qū)分狀態(tài)。FST在<start>狀態(tài)開(kāi)始其處理并在<finish>狀態(tài)完成其處理。直到已經(jīng)從輸入流中讀取了<end>符號(hào)并且已經(jīng)將<end>符號(hào)附在代碼流上,才到達(dá)<finish>狀態(tài)。
由于狀態(tài)空間是有限的,不可能將每一個(gè)編碼器都表示為FST。為了實(shí)用,本說(shuō)明集中于編碼器和解碼器都可被描述和執(zhí)行為FST的編解碼器。如果能夠?qū)⒕幋a器Φ實(shí)現(xiàn)為FST,則可以通過(guò)更新函數(shù)來(lái)指定。來(lái)自輸入流的第一個(gè)輸入符號(hào)a與當(dāng)前狀態(tài)s1結(jié)合并產(chǎn)生下一個(gè)狀態(tài)s2。有條件地從輸入流的開(kāi)始去除第一個(gè)符號(hào)。有條件地將所產(chǎn)生的代碼符號(hào)b附到代碼流中。
如果當(dāng)前狀態(tài)是<finish>且FST終止了序列化,則函數(shù)是未定義。概括為(s2,b)=(s(s1,a),b(s1,a))=(s1,a)。這里,將s(s1,a)定義為(s1,a)的第一分量,將b(s1,a)定義為(s1,a)的第二分量。
對(duì)于包括熵編碼的許多應(yīng)用程序,利用馬爾可夫概率結(jié)構(gòu)來(lái)配備FST是有用的。假設(shè)狀態(tài)s1和輸入符號(hào)a,則存在概率Prob(a/s1),假設(shè)FST處于狀態(tài)s1,a將是下一個(gè)要讀取的符號(hào)。根據(jù)應(yīng)用程序,此概率可以被設(shè)定,可以靜態(tài)地從歷史數(shù)據(jù)中估計(jì),或者可以動(dòng)態(tài)地從FST的最近操作中被估計(jì)。在后者的情況下,可以在狀態(tài)空間內(nèi)編碼概率估計(jì)所基于的信息。
因此,能夠計(jì)算假設(shè)FST處于狀態(tài)s1,F(xiàn)ST接下來(lái)處于狀態(tài)s2的概率Prob(s2/s1)。這可以通過(guò)以下分析計(jì)算Prob(s2/s1)=(s(s1,a)=s2)Prob(a/s1)+(s(s1,~a)=s2)Prob(~a/s1)。
可以將該馬爾可夫狀態(tài)轉(zhuǎn)移概率的集合組合為隨機(jī)矩陣M,其中Mij=Prob(sj/si)??梢杂?jì)算漸近(asymptotic)狀態(tài)概率P(s),作為與最大本征值1相對(duì)應(yīng)的M的右特征向量(right eigenvector)的元素。
視覺(jué)方面 視頻“編解碼器”(壓縮器/解壓縮器)通過(guò)在圖像質(zhì)量、處理器需要(即,成本/功率消耗)和壓縮比(即,結(jié)果數(shù)據(jù)率)之間進(jìn)行平衡來(lái)減少數(shù)據(jù)通信流所需的數(shù)據(jù)率。目前可用的壓縮方法提供了不同程度的折中,并衍生出多個(gè)編解碼器的概況(profile),其中優(yōu)化每一個(gè)概況來(lái)滿足具體程序的需要。
有失真數(shù)字視頻壓縮系統(tǒng)對(duì)數(shù)字化的視頻序列進(jìn)行操作以產(chǎn)生更小的數(shù)字表述。重構(gòu)的可視結(jié)果看上去很像原始視頻,但通常不會(huì)完全匹配。對(duì)這些系統(tǒng),重要的是,在此處理中丟失的信息與觀眾不容易注意或不容易看到的視頻方面相對(duì)應(yīng)。
典型的數(shù)字視頻壓縮系統(tǒng)在一系列級(jí)中進(jìn)行操作,包括變換級(jí)、量化級(jí)和熵編碼級(jí)。例如MPEG和其它基于DCT的編解碼器算法的某些壓縮系統(tǒng)添加了其它級(jí),例如運(yùn)動(dòng)補(bǔ)償搜索等。二維和三維的小波是當(dāng)前基于DCT的編解碼器算法的另一選擇。由于其令人滿意的圖像質(zhì)量和靈活的壓縮比,小波已經(jīng)受到高度關(guān)注,促使JPEG委員會(huì)在JPEG2000靜態(tài)圖像標(biāo)準(zhǔn)中采取了小波算法。
當(dāng)在視頻壓縮器中使用小波變換作為變換級(jí)時(shí),這種算法如同一系列濾波器對(duì)進(jìn)行操作,將數(shù)據(jù)分離為高通或低通分量或波段。標(biāo)準(zhǔn)小波變換按照二維方式在單個(gè)圖像的空間范圍上進(jìn)行運(yùn)算。通過(guò)結(jié)合水平工作的濾波器和垂直工作的濾波器來(lái)處理二維情況。典型地,這些濾波器按照交替的序列進(jìn)行操作,H-V-H-V,盡管不需要嚴(yán)格的交替?,F(xiàn)有技術(shù)中已知在時(shí)間(temporal)方向也使用小波濾波器對(duì)實(shí)時(shí)來(lái)自連續(xù)圖像的采樣進(jìn)行運(yùn)算。此外,小波變換可以獨(dú)立地用于視頻信號(hào)的亮度或輝度(luma)、顏色差異或色度(chroma)分量。
對(duì)于二維空間,可以使用DCT或其它非小波空間,并且在時(shí)間方向上使用小波類型的變換。這種混合三維變換用于與小波變換相同的目的。同時(shí),對(duì)于三維DCT變換,可以在時(shí)間方向上使用短時(shí)DCT。
通常,三維小波變換的時(shí)間部分因?yàn)楦潭c空間部分不同。典型的空間變換大小是水平720個(gè)像素和垂直480個(gè)像素;空間變換的典型大小是二、四、八或十五幀。這些時(shí)間長(zhǎng)度較小,因?yàn)楫?dāng)進(jìn)行處理時(shí),在過(guò)程中處理多個(gè)幀會(huì)導(dǎo)致不希望的較長(zhǎng)延遲,此外需要存儲(chǔ)幀,這是昂貴的。
當(dāng)觀眾觀看畫面或視頻序列以判斷其質(zhì)量時(shí),或當(dāng)觀眾在視覺(jué)上比較兩個(gè)畫面或兩個(gè)視頻序列時(shí),某些缺陷或不同會(huì)比其它缺陷或不同更難察覺(jué)。這是人類的視覺(jué)系統(tǒng)對(duì)于其看到的某些視覺(jué)方面比其它方面具有更高敏感度的結(jié)果。例如,只有當(dāng)處于高對(duì)比度時(shí),才可以看到非常細(xì)微的細(xì)節(jié),但是卻能看到處于非常精密對(duì)比度的中等大小的細(xì)節(jié)。對(duì)壓縮來(lái)講,這些區(qū)別是重要的。設(shè)計(jì)壓縮處理,用于使這些區(qū)別和錯(cuò)誤盡可能的不被注意。因而,壓縮處理可以在亮度對(duì)比度的中等范圍產(chǎn)生較好的逼真度,同時(shí)細(xì)微的細(xì)節(jié)中出現(xiàn)更多的錯(cuò)誤。
因此,存在對(duì)于開(kāi)發(fā)不同的心理物理學(xué)機(jī)會(huì)的持續(xù)需要,以改進(jìn)壓縮算法,而不會(huì)明顯地?fù)p失所感知的質(zhì)量。
前面所述的壓縮系統(tǒng)通常用于個(gè)人視頻記錄器、數(shù)字視頻記錄器、有線機(jī)頂盒等。這些應(yīng)用和其他的共同特點(diǎn)是用戶具有暫停視頻的可能性,在延長(zhǎng)的時(shí)間內(nèi)保持單個(gè)幀的顯示,作為靜態(tài)圖像。
在現(xiàn)有技術(shù)中已知處理視頻序列或其它圖像序列,來(lái)得到比輸入圖像分辨率更高的單個(gè)圖像。然而,這種處理在計(jì)算中是非常昂貴的,因?yàn)槠浔仨氉R(shí)別或匹配場(chǎng)景中的運(yùn)動(dòng)目標(biāo)、攝像機(jī)運(yùn)動(dòng)、光線轉(zhuǎn)移和其它變化,并且單個(gè)地或結(jié)合地補(bǔ)償每一個(gè)變化。然而,目前的應(yīng)用程序還不支持這種用于簡(jiǎn)單暫停功能的計(jì)算浪費(fèi)。
因此,存在對(duì)于開(kāi)發(fā)不同的心理物理學(xué)機(jī)會(huì)的持續(xù)需要,以表示實(shí)質(zhì)上比由簡(jiǎn)單重復(fù)解壓縮縮視頻幀產(chǎn)生的圖像具有更高視覺(jué)質(zhì)量的暫停圖像。


發(fā)明內(nèi)容
異常處理 提出了一種用于處理異常的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。首先,在循環(huán)中處理計(jì)算操作。此外,在處理所述計(jì)算操作的同時(shí)識(shí)別并存儲(chǔ)異常。然后,獨(dú)立于循環(huán)處理這種異常。
在一個(gè)實(shí)施例中,計(jì)算操作可以涉及非重要的數(shù)值。例如,此計(jì)算操作可以包括對(duì)多個(gè)零值進(jìn)行計(jì)數(shù)。此外,此計(jì)算操作可以包括剪輯(clipping)和/或飽和(saturating)操作。
在另一個(gè)實(shí)施例中,所述異??梢园ㄖ匾臄?shù)值。例如,所述異??梢园ǚ橇銛?shù)據(jù)。
作為選擇,例如,至少可以在使用數(shù)據(jù)壓縮系統(tǒng)的變換模塊、量化模塊和/或熵編碼模塊的部分中處理該計(jì)算操作。因此,該處理可用于壓縮數(shù)據(jù)。可選地,可以利用小波變換、離散余弦變換和/或其它類型的解相關(guān)變換來(lái)壓縮所述數(shù)據(jù)。
編解碼器 提出了一種包括可變模數(shù)(variable modulus)的編碼器和/或解碼器系統(tǒng)和方法。
在一個(gè)實(shí)施例中,所述模數(shù)可以反映與壓縮算法相關(guān)聯(lián)的概率分布曲線的陡度。例如,此模數(shù)可以包括概率分布的負(fù)指數(shù)。作為選擇,所述概率分布與編解碼器相關(guān)聯(lián)。
在另一個(gè)實(shí)施例中,所述模數(shù)可以取決于一組先前數(shù)據(jù)的內(nèi)容。此外,所述模數(shù)可以避免作為運(yùn)行長(zhǎng)度(即,序列中的多個(gè)相同位)而增大。
在另一個(gè)實(shí)施例中,設(shè)計(jì)編解碼器,用于使用提供了預(yù)定希望的性能水平的最小計(jì)算復(fù)雜度。
視覺(jué)方面 提出了一種用于壓縮數(shù)據(jù)的系統(tǒng)和方法。在使用中,根據(jù)第一預(yù)定速率更新幀的亮度,同時(shí)根據(jù)小于第一速率的第二預(yù)定速率更新所述幀的色度數(shù)據(jù)。
因此,增大了壓縮數(shù)目。為了實(shí)現(xiàn)此目的,在一個(gè)實(shí)施例中,可以省略色度數(shù)據(jù)的一個(gè)或多個(gè)頻帶。此外,可以使用濾波器省略一個(gè)或多個(gè)頻帶。這種濾波器可以包括小波濾波器。因此,當(dāng)視頻數(shù)據(jù)被解壓縮時(shí),可以對(duì)色度數(shù)據(jù)的省略部分進(jìn)行插值。
提出了用于壓縮數(shù)據(jù)的另一種系統(tǒng)和方法。這種系統(tǒng)和方法涉及壓縮視頻數(shù)據(jù)并在已壓縮的數(shù)據(jù)中插入暫停信息。因此,當(dāng)在回放期間暫停視頻數(shù)據(jù)時(shí),可以使用該暫停信息。
在一個(gè)實(shí)施例中,暫停信息可以用于提高暫停操作期間視頻數(shù)據(jù)的質(zhì)量。此外,暫停信息可以包括高分辨率幀。此外,暫停信息包括能夠用于構(gòu)造高分辨率幀的數(shù)據(jù)。



圖1示出了根據(jù)一個(gè)實(shí)施例的用于壓縮/解壓縮數(shù)據(jù)的框架。
圖2示出了根據(jù)一個(gè)實(shí)施例的用于處理異常的方法。
圖3示出了圖2中方法的操作序列的例子。
圖4-9示出了根據(jù)不同實(shí)施例的與多個(gè)操作特征相關(guān)聯(lián)的多個(gè)圖形和表。
圖10是計(jì)算復(fù)雜度對(duì)性能水平圖,示出了當(dāng)前所述二元/一元(DM)編解碼器框架和其它算法的關(guān)系。
圖11是示出了根據(jù)一個(gè)實(shí)施例的編碼器和解碼器更新功能的轉(zhuǎn)移表。
圖12示出了根據(jù)一個(gè)實(shí)施例的具有色度(chroma)時(shí)間速率減小的壓縮數(shù)據(jù)的方法。
圖12A示出了根據(jù)一個(gè)實(shí)施例的在回放期間具有高質(zhì)量暫停能力的壓縮數(shù)據(jù)的方法。
圖13示出了根據(jù)一個(gè)實(shí)施例的壓縮/解壓縮數(shù)據(jù)的方法。
圖14示出了執(zhí)行圖13中方法時(shí)使用的數(shù)據(jù)結(jié)構(gòu)。
圖15示出了根據(jù)一個(gè)實(shí)施例的壓縮/解壓縮數(shù)據(jù)的方法。

具體實(shí)施例方式 圖1顯示根據(jù)一個(gè)實(shí)施例的用于壓縮/解壓縮數(shù)據(jù)的框架100。包括在該框架100內(nèi)的是編碼器部分101和解碼器部分103,兩者一起形成“編解碼器”。編碼器部分101包括變換模塊102、量化器104和用于壓縮數(shù)據(jù)并存儲(chǔ)到文件108中的熵碼編碼器106。為了執(zhí)行這種文件108的解壓,解碼器部分103包括逆變換模塊114、解量化器111和用于解壓縮數(shù)據(jù)以使用(即,觀看視頻數(shù)據(jù)的情況等)的熵解碼器110。
在使用中,為了解相關(guān)的目的,變換模塊102執(zhí)行可逆并且通常是線性的多個(gè)象素的解相關(guān)變換(即,視頻數(shù)據(jù)的情況)。接下來(lái),量化器104進(jìn)行變換數(shù)值的量化,然后,熵編碼器106進(jìn)行響應(yīng),用于已量化的變換模數(shù)的熵編碼。解碼器部分103的不同部分實(shí)質(zhì)上進(jìn)行這種處理的逆處理。
圖2示出了根據(jù)一個(gè)實(shí)施例的用于處理異常的方法。在一個(gè)實(shí)施例中,該方法200可以在圖1的框架100的環(huán)境中運(yùn)行。然而,應(yīng)該注意的是,方法200也可以在任何希望的環(huán)境中執(zhí)行。
首先,在操作202中,在循環(huán)內(nèi)處理計(jì)算操作。在本說(shuō)明的環(huán)境下,計(jì)算操作可以涉及非重要的數(shù)值。例如,計(jì)算操作可以包括對(duì)多個(gè)零值進(jìn)行計(jì)數(shù),此操作經(jīng)常在數(shù)據(jù)壓縮期間被執(zhí)行。另外,此計(jì)算操作還可包括剪輯和/或飽和操作。在任意情況下,此計(jì)算操作可以包括處理相對(duì)于其它數(shù)值重要性較低的任何數(shù)值。
當(dāng)在循環(huán)中執(zhí)行計(jì)算操作時(shí),在操作204-206中識(shí)別并存儲(chǔ)異常。可選地,存儲(chǔ)可以包括存儲(chǔ)處理異常所需的任何相關(guān)數(shù)據(jù)。在本說(shuō)明的環(huán)境下,異??梢园ㄖ匾臄?shù)值。例如,異常可以包括非零數(shù)據(jù)。在任意情況下,異常可以包括處理相對(duì)于其它數(shù)值重要性較高的任何數(shù)值。
因此,獨(dú)立于循環(huán)來(lái)處理異常。參見(jiàn)操作208。在這方面,通過(guò)使能夠展開(kāi)循環(huán)并因此提高了在分支中出現(xiàn)的性能,異常的處理不會(huì)中斷循環(huán)的“堆(pile)”處理。具體地,本實(shí)施例能夠進(jìn)行過(guò)長(zhǎng)異常語(yǔ)句的并行執(zhí)行。這可以通過(guò)向/從存儲(chǔ)器寫入和重新讀取適當(dāng)數(shù)目的數(shù)據(jù)來(lái)實(shí)現(xiàn)。關(guān)于與此技術(shù)和“堆”處理相關(guān)的多種選擇的更多信息將在以下詳細(xì)描述。
作為選擇,至少可以在使用數(shù)據(jù)壓縮系統(tǒng)的變換模塊、量化模塊和/或熵編碼模塊的部分中處理多種計(jì)算操作202-208。例如,參見(jiàn)圖1中框架100的多個(gè)模塊。因此,可以執(zhí)行操作202-208,以壓縮/解壓縮數(shù)據(jù)??蛇x地,可以使用小波變換、離散余弦變換(DCT),和/或任何其它希望的解相關(guān)變換來(lái)壓縮數(shù)據(jù)。
圖3示出了圖2的方法200的操作300的示例。盡管現(xiàn)在本發(fā)明是在圖2的方法200的環(huán)境中來(lái)描述的,應(yīng)該注意的是,典型操作300可在任何一種希望的環(huán)境中實(shí)現(xiàn)。
如圖所示,設(shè)置了計(jì)算操作304的第一棧302,用于在循環(huán)306中的處理。當(dāng)流程通過(guò)計(jì)算操作304的第一棧302時(shí),可以識(shí)別多種異常308。當(dāng)被識(shí)別時(shí),將這種異常308存儲(chǔ)到分離的棧中并可以獨(dú)立地處理。例如,異常308可以在獨(dú)立的循環(huán)310的環(huán)境中被處理。
可選的實(shí)施例 現(xiàn)在將說(shuō)明關(guān)于在圖2的操作環(huán)境中可以被執(zhí)行的這種“堆”處理的多種可選特征的更多信息。在本說(shuō)明的環(huán)境下,“堆”是一種可以被存儲(chǔ)在存儲(chǔ)器內(nèi)(即,隨機(jī)存取存儲(chǔ)器)的連續(xù)存儲(chǔ)對(duì)象。堆可用于被順序地寫入并隨后從起始被順序地讀取。對(duì)于堆對(duì)象定義了多種方法。
對(duì)于堆和要在并行處理環(huán)境種實(shí)現(xiàn)的其方法,其實(shí)現(xiàn)可以是幾個(gè)內(nèi)嵌(即,沒(méi)有返回子程序的分支)代碼的指令。該內(nèi)嵌代碼還可以不包含分支指令。將在以下描述這種方法實(shí)現(xiàn)。這種實(shí)現(xiàn)可以使堆特別地具有優(yōu)點(diǎn)。
表1示出了根據(jù)一個(gè)實(shí)施例的可實(shí)現(xiàn)堆處理的各種操作。
表1 1)由“Creat_Pile(P)”方法來(lái)建立堆。這分配了存儲(chǔ)器并初始化內(nèi)部狀態(tài)變量。
2)寫入堆的基本方法是“Conditional_Append(pile,condition,record)”。如果條件是真,該方法將記錄附在堆中。
3)當(dāng)已經(jīng)完整地寫了一個(gè)堆,準(zhǔn)備由“Rewind_Pile(P)”方法讀取。這調(diào)整內(nèi)部變量,以便從被寫入的第一記錄開(kāi)始讀取。
4)方法“EOF(P)”產(chǎn)生布爾值,指示了是否已經(jīng)讀取了堆的所有記錄。
5)方法“Pile_Read(P,Record)”從堆P中讀取下一個(gè)連續(xù)記錄。
6)方法“Destroy_Pile(P)”通過(guò)重新分配(deallocating)所有的狀態(tài)變量來(lái)破壞堆P。
使用堆來(lái)分離條件處理 因此,可以通過(guò)堆P將程序D’(見(jiàn)背景部分)轉(zhuǎn)換為以下程序E’。
程序E’ Creat_Pile(P)  For n=0:4:255,{S1(n);S1(n+1);S1(n+2);S1(n+3);  S2(n);S2(n+1);S2(n+2);S2(n+3);  S3(n);S3(n+1);S3(n+2);S3(n+3);  S4(n);S4(n+1);S4(n+2);S4(n+3);  S5(n);S5(n+1);S5(n+2);S5(n+3);  Conditional_Append(P,C(n),I(n));  Conditional_Append(P,C(n+1),I(n+1));  Conditional_Append(P,C(n+2),I(n+2));  Conditional_Append(P,C(n+3),I(n+3));  };  Rewind_Pile(P);  While not EOF(P){  Pile_Read(P,I);  T(I);  };  Destroy_Pile(P); 程序E’通過(guò)在堆P中保存異常計(jì)算T所需的信息I來(lái)操作。寫入與異常條件C(n)相對(duì)應(yīng)的記錄I,以使P中記錄I的數(shù)目(例如,16)少于在原始程序A中的循環(huán)輪的數(shù)目(例如,256)(參見(jiàn)背景部分)。
之后,獨(dú)立的“while”循環(huán)讀取執(zhí)行所有異常計(jì)算T的堆P。因?yàn)镻只包含在C(n)是真的情況下的記錄I,只處理這些情況。
盡管在此例子中數(shù)目平均是16,因?yàn)榈诙h(huán)輪的數(shù)目是不確定的,因此第二循環(huán)可能比第一循環(huán)更困難。所以,可以使用“while”循環(huán)而不是“for”循環(huán),當(dāng)文件末端(EOF)方法指示已經(jīng)從堆中讀取了所有記錄時(shí),終止循環(huán)。
如上和下文所述,可以內(nèi)嵌且無(wú)分支地實(shí)現(xiàn)“Conditional_Append”方法調(diào)用。這意味著仍然以有效的方式展開(kāi)第一循環(huán),同時(shí)具有很少的無(wú)價(jià)值發(fā)布機(jī)會(huì)。
展開(kāi)第二循環(huán) 沒(méi)有展開(kāi)上述程序E’中的第二循環(huán),因此該程序仍是低效率。然而,可通過(guò)四個(gè)堆P1、P2、P3、P4將程序E’轉(zhuǎn)換為下面的程序F’。其結(jié)果是程序F’同時(shí)具有展開(kāi)的循環(huán)和伴隨的效率提高。
程序F’ Creat_Pile(P1);Creat_Pile(P2);Creat_Pile(P3);Creat_Pile(P4);  for n=0:4:255,{S1(n);S1(n+1);S1(n+2);S1(n+3);  S2(n);S2(n+1);S2(n+2);S2(n+3);  S3(n);S3(n+1);S3(n+2);S3(n+3);  S4(n);S4(n+1);S4(n+2);S4(n+3);  S5(n);S5(n+1);S5(n+2);S5(n+3);  Conditional_Append(P1,C(n),I(n));  Conditional_Append(P2,C(n+1),I(n+1));  Conditional_Append(P3,C(n+2),I(n+2));  Conditional_Append(P4,C(n+3),I(n+3));  };  Rewind_Pile(P1);Rewind_Pile(P2);Rewind_Pile(P3);  Rewind_Pile(P4);  While not EOF(Pi){  Pile_Read(P1,I1);Pile_Read(P2,I2);Pile_Read(P3,  I3);Pile_Read(P4,I4);  guard(not EOF(P1),S);T(I1);  guard(not EOF(P2),S);T(I2);  guard(not EOF(P3),S);T(I3);  guard(not EOF(P4),S);T(I4);  );  Destroy_Pile(P1);Destroy_Pile(P2);Destroy_Pile(P3);<!-- SIPO <DP n="15"> --><dp n="d15"/>  Destroy_Pile(P4); 程序F’是具有第二展開(kāi)循環(huán)的程序E’。通過(guò)將程序E’的單個(gè)堆劃分成四個(gè)堆來(lái)實(shí)現(xiàn)此展開(kāi),能夠獨(dú)立于其它堆來(lái)處理每一個(gè)堆。程序F’的第二循環(huán)的每一輪處理來(lái)自這四堆中每一個(gè)的一個(gè)記錄。由于獨(dú)立地處理每一個(gè)記錄,每一個(gè)T的操作能夠與其它三個(gè)T的操作相交錯(cuò)。
可以修改“while”循環(huán)的控制,使之進(jìn)行循環(huán),直到已經(jīng)處理了所有堆。此外,可以保護(hù)在“while”循環(huán)體內(nèi)的T’,因?yàn)橥ǔ2槐卦谕谎h(huán)輪中完成所有的堆。只要兩個(gè)堆的記錄數(shù)目彼此區(qū)別很大,效率可能會(huì)低一些,但是,從概率(即,大數(shù)定律)上講,所述堆可以包含相似數(shù)目的記錄。
當(dāng)然,可以遞歸地應(yīng)用該堆技術(shù)。如果T本身包含一個(gè)過(guò)長(zhǎng)的條件語(yǔ)句T’,可將T’從具有一些附加堆的第二循環(huán)中分離出來(lái),并展開(kāi)第三循環(huán)。許多實(shí)際應(yīng)用具有多個(gè)這種嵌套的異常語(yǔ)句。
實(shí)現(xiàn)堆處理 可以保持該堆對(duì)象的實(shí)現(xiàn)及其方法的簡(jiǎn)單,以便滿足上述的實(shí)施準(zhǔn)則。例如,除了Creat_Pile和Destroy_Pile,此方法實(shí)現(xiàn)可能只有少量的內(nèi)嵌碼的指令。此外,所述實(shí)現(xiàn)不包含分支指令。
在其核心部分,堆可包括存儲(chǔ)器(即,RAM)中的已分配線性數(shù)組和指針,其當(dāng)前值是下一個(gè)要讀或?qū)懙挠涗浀奈恢盟饕?。?shù)組的寫大小sz是一個(gè)指針,其數(shù)值是在堆的寫入期間的索引的最大值。EOF方法可以作為內(nèi)嵌條件(sz≤index)來(lái)實(shí)現(xiàn)。指針的基值是指向堆中第一寫入位置的數(shù)值??捎蒀reat_Pile方法來(lái)設(shè)置。
Conditional_Append方法將記錄復(fù)制到從索引的數(shù)值開(kāi)始的堆數(shù)組中。然后,將索引增加零或記錄的大小(sz_record)的計(jì)算量。由于參數(shù)條件具有對(duì)于真是1,對(duì)于假是0的數(shù)值,能夠如下計(jì)算此索引而不使用分支index=index+condition*sz_record。
當(dāng)然,此計(jì)算存在許多不同的變體,許多變體不涉及變量的給定特定數(shù)值的相乘。還可以利用以下保護(hù)來(lái)計(jì)算 guard(condition,index=index+sz_record)。
應(yīng)當(dāng)注意的是,可以將記錄復(fù)制到堆中而與條件無(wú)關(guān)。如果條件是假,該記錄可能被下一個(gè)記錄重寫。如果此條件是真,在當(dāng)前記錄之后寫下一個(gè)記錄。下一記錄可能會(huì)或不會(huì)被其之后的記錄重寫。結(jié)果,通常最優(yōu)的是盡可能少的寫入堆中,既使這意味著當(dāng)讀取和處理記錄時(shí)會(huì)重新計(jì)算(即,冗余)某些數(shù)據(jù)。
Rewind方法可以簡(jiǎn)單地通過(guò)sz=index;index=base來(lái)實(shí)現(xiàn)。該操作記錄針對(duì)EOF方法寫入的數(shù)據(jù)量,然后,將索引復(fù)位到起始。
Pile_Read方法將堆的下一部分(長(zhǎng)度為sz_record)復(fù)制到I,然后如下增加索引index=index+sz_record。Destroy_Pile重新分配該堆的存儲(chǔ)??梢栽趲讉€(gè)內(nèi)嵌指令且無(wú)分支地實(shí)現(xiàn)所有這些技術(shù)(除Create_Pile和Destroy_Pile)。
利用字段分區(qū)編程 在很大但“else”很少的語(yǔ)句的情況下,保護(hù)處理的另一種選擇是堆處理。當(dāng)每一個(gè)示例開(kāi)始時(shí),“else”語(yǔ)句將輸入數(shù)據(jù)傳送到可尋址存儲(chǔ)器(即,高速緩沖存儲(chǔ)器或RAM)中的堆中。在一種環(huán)境中,堆如同附在輸入數(shù)據(jù)的文件進(jìn)行操作。這通過(guò)寫入存儲(chǔ)器中由指針給定的地址來(lái)實(shí)現(xiàn)。然后,在文件處理中,將指針增加所寫入數(shù)據(jù)的大小,以使下一個(gè)寫入的數(shù)據(jù)被附到前一個(gè)已完成的數(shù)據(jù)上。在堆處理中,可以有保護(hù)條件地進(jìn)行指針的增加。如果保護(hù)為真,則可以將下一個(gè)寫入的數(shù)據(jù)附在前一個(gè)已完成數(shù)據(jù)上。如果保護(hù)為假,則指針不會(huì)被增加并且下一個(gè)寫入將覆蓋前一個(gè)已完成的數(shù)據(jù)。在保護(hù)很少是真的情況下,堆較短,具有“else”操作的堆的后續(xù)處理會(huì)花費(fèi)與真保護(hù)的數(shù)目(即,if條件假)不是示例的總數(shù)成比例的時(shí)間。此折衷是“else”語(yǔ)句的操作與增加寫入和讀取的額外開(kāi)銷的節(jié)省。
許多處理器具有能夠在一個(gè)字的分離的字段分區(qū)中獨(dú)立且并行地執(zhí)行各種算術(shù)和邏輯運(yùn)算的特定指令。當(dāng)前的說(shuō)明涉及在每一個(gè)字段分區(qū)中處理“一次一個(gè)位(bit-at-a-time)”的方法。作為運(yùn)行的示例,考慮包括具有四個(gè)8位字段分區(qū)的32位字的示例。選擇字段分區(qū)的8位,使其在字中連續(xù),因此能夠在單個(gè)字段分區(qū)中執(zhí)行“加法”并且“攜帶(carry)”傳播(propagate)。普通的可用算術(shù)字段分區(qū)指令禁止從一個(gè)字段分區(qū)的最高有效位(MSB)到下一個(gè)最高有效字段分區(qū)的最低有效位(LSB)的攜帶。
例如,假設(shè)所有長(zhǎng)度都等于B,一個(gè)字長(zhǎng)度的除數(shù)。此外,字段分區(qū)可以專用于算法的獨(dú)立實(shí)例。以下是利用每一個(gè)指令同時(shí)處理一個(gè)字的所有字段分區(qū)的一些技術(shù)和代碼序列。這些技術(shù)和代碼序列使用表2的技術(shù)來(lái)避免控制的變化。
表2 A)用邏輯/算術(shù)計(jì)算代替控制的變化。例如, if(a<0)thyn c=b else c=d 可以被替換為 c=(a<0?b:d) 然后可以被替換為 c=b*(a<0)+d*(1-(a<0)) B)使用邏輯值來(lái)有條件地抑制可變數(shù)值的替換 if(a<0)then c=b 變?yōu)? c=b*(a<0)+c*(1-(a<0)) 處理器通常配備有實(shí)現(xiàn)該技術(shù)的保護(hù)指令。
C)使用邏輯指令來(lái)施加條件 b*(a<0) 成為 b&(a<0?0xffff:0x0000)(示例字段是16位,并且常數(shù)是十六進(jìn)制) D)將邏輯值應(yīng)用到存儲(chǔ)地址和數(shù)組下標(biāo)的計(jì)算。這包括聚堆(piling)技術(shù),該技術(shù)有條件地抑制一個(gè)被順序?qū)懭氲臄?shù)組索引的增加。例如 if(a<0)then{c[i]=b;i++} 變?yōu)? c[i]=b;i+=(a<0) 在這種情況下,兩段代碼并不完全等同。數(shù)組c可能在結(jié)尾處需要額外的保護(hù)索引。通過(guò)檢查i的最終值,用戶知道是否丟棄c中最后的值。
增加/移位 具有分區(qū)算術(shù)的處理器經(jīng)常具有在每一個(gè)字段獨(dú)立執(zhí)行的ADD指令。這些處理器中的某些具有其它類型的逐字段指令(例如,向右移位的分區(qū)右移算術(shù)不會(huì)從一個(gè)字段移到另一個(gè),并且不會(huì)將該字段的MSB(符號(hào)位)復(fù)制到剛剛空出的MSB)。
比較和字段掩蔽(mask) 一些處理器具有逐字段比較指令,產(chǎn)生多個(gè)條件位。如果沒(méi)有,通常使用分區(qū)的減法指令來(lái)用于此功能。在這種情況下,計(jì)算a<b,作為a-b,其中減號(hào)表示真,加號(hào)表示假。字段的其它位是不相關(guān)的。利用具有足夠長(zhǎng)移位的算術(shù)右移,對(duì)于真是全1或?qū)τ诩偈侨?的字段掩蔽,與表2的C)中示例使用的相同。這導(dǎo)致兩個(gè)指令中的多字段比較。
如果分區(qū)的算術(shù)右移是可用的,利用在當(dāng)代所有處理器上的四個(gè)指令,能夠根據(jù)符號(hào)位來(lái)創(chuàng)建字段掩蔽。這些如表3所示。
表3 1.通過(guò)u=u&0x8000將不相關(guān)位設(shè)為零 2.移到字段的LSB v=u>>15(用于16位字段的邏輯右移) 3.使字段掩蔽w=(u-v)|u 4.由x+0x7fff執(zhí)行在正字段x內(nèi)的分區(qū)的零檢測(cè),因此,當(dāng)且僅當(dāng)x是零時(shí),符號(hào)位是零。如果此字段有符號(hào),使用x|x+0x7fff。將符號(hào)位轉(zhuǎn)換為如上所述的字段掩蔽。
當(dāng)然,可以通過(guò)將字段的字的總體(沒(méi)有分區(qū)的)與零進(jìn)行比較來(lái)測(cè)試單一指令中所有字段是零的條件。
表述(representation) 定義一些常數(shù)是有用的。將每一個(gè)字段分區(qū)的MSB位置中除了“1”的零字稱為MSB。將每一個(gè)字段分區(qū)的LSB位置中除了“1”的零字稱為L(zhǎng)SB。在位分區(qū)中的比特?cái)?shù)是B。除非另外說(shuō)明,所有字都是無(wú)符號(hào)(Uint),并且所有右移是其中在左邊填零的邏輯右移。
多比特字段分區(qū)中的單一信息能夠按照許多不同的方式表示。掩蔽表達(dá)使給定字段分區(qū)的所有位彼此相等并且等于信息位。當(dāng)然,信息位可以從字中的字段分區(qū)變化為另一個(gè)。
另一個(gè)有用的表述是MSB表述。信息位被存儲(chǔ)在對(duì)應(yīng)字段分區(qū)的MSB位置上并且字段分區(qū)位的剩余部分是零。類似地,LSB表述具有LSB位置上的信息位,且所有其它位是零。
另一個(gè)有用的表述是ZNZ表述,其中在字段分區(qū)中的每一個(gè)位,由零來(lái)表示零信息位,否則信息位為“1”。所有掩蔽、MSB和LSB表述都是ZNZ表述,但反之則不必要。
轉(zhuǎn)換 表述之間的轉(zhuǎn)換需要一個(gè)到幾個(gè)字長(zhǎng)的指令,但是這些指令同時(shí)處理所有的字段分區(qū)。
MSB->LSB 例如,通過(guò)使用字邏輯右移指令y=((Uint)x>>B),能夠?qū)SB表述x轉(zhuǎn)換為L(zhǎng)SB表述y。通過(guò)使用字邏輯左移指令y=((Unit)<<x),能夠?qū)SB表述x轉(zhuǎn)換為MSB表述y。
掩蔽->LSB 通過(guò)清除非MSB位能夠掩蔽表述m轉(zhuǎn)換為MSB表述。在大多數(shù)處理器中,在單個(gè)“andnot”指令(m∧~MSB)中,可以將一個(gè)字的所有字段分區(qū)從從掩蔽變換到MSB。同樣,通過(guò)單個(gè)“andnot”指令(m∧~MSB),可以將掩蔽表述轉(zhuǎn)換為L(zhǎng)SB表述。
MSB->掩蔽 利用字長(zhǎng)度指令,利用以下過(guò)程可以實(shí)現(xiàn)從MSB表述x到掩蔽表述z的轉(zhuǎn)換。見(jiàn)表4。
表4 1.將MSB表述x轉(zhuǎn)換為L(zhǎng)SB表述y。
2.從字x減去字y得到v。這是除了作為零的MSB的掩蔽。
3.字v OR字x得到掩蔽結(jié)果z??傔^(guò)程是z=(x-(x>>B))vx。
ZNZ->MSB 如下可以將字的所有字段分區(qū)從ZNZ x轉(zhuǎn)換到MSB y??梢允褂米旨臃ㄖ噶顏?lái)在MSB位置將ZNZ字加零位,而在其它位置加“1”。加法的結(jié)果可使在MSB位置具有適當(dāng)?shù)奈?,而其它位位置具有任意位。這可以通過(guò)應(yīng)用“andnot”指令來(lái)清除非-MSB位來(lái)補(bǔ)救。y=(x+~msb)∧~MSB。
其它 從如上所述的MSB表述能夠得到其它表述。
位輸出 在一些應(yīng)用程序中(例如,熵編解碼器),可能希望通過(guò)將給定位逐一地附在位流的末端來(lái)形成位流。當(dāng)前的說(shuō)明將闡述如何按照字段分區(qū)并行的方式完成此功能。字段分區(qū)和有關(guān)的位流可以獨(dú)立彼此,每一個(gè)代表一個(gè)并行的實(shí)例。
此過(guò)程按照以下表5所述工作。
表5 1.以掩蔽表述提供輸入位和有效條件。
2.有條件地(即,條件是有效真)添附信息位,直到填滿字段分區(qū)。
3.當(dāng)填滿字段分區(qū)時(shí),將其添附在對(duì)應(yīng)字段分區(qū)流的末端。通常,該字段分區(qū)的長(zhǎng)度全部相等并且是字長(zhǎng)度的除數(shù)。
還沒(méi)有完全填滿的獨(dú)立字段分組被保存在被稱為累加器的單字內(nèi)。存在相關(guān)的位指針字,其中該字的每一個(gè)字段分區(qū)包含一個(gè)“1”位(即,其余為零)。該“1”位位于與累加器內(nèi)接收用于該字段分區(qū)的下一個(gè)添附位相對(duì)應(yīng)的位位置。如果累加器的字段分區(qū)已被完全填滿,將字段分區(qū)添附到對(duì)應(yīng)的字段分區(qū)流并將累加器字段分區(qū)復(fù)位為零。
信息位輸出 (有條件地)添附輸入的信息位是靈活的。將輸入位掩蔽、有效掩蔽和位指針逐字地″相加″在一起,然后逐字地與累加器″相與″。在大多數(shù)處理器上,這需要3個(gè)指令執(zhí)行每字。
位指針更新 假設(shè)將位添附在位流的LSB末端,字段分區(qū)的LSB中的非更新位指針位指示填滿了該字段分區(qū)。在任何情況下,此位指針字可通過(guò)將每一個(gè)有效字段分區(qū)的位指針向右旋轉(zhuǎn)一個(gè)位置而被更新。下面的表6中是用于實(shí)現(xiàn)此操作的方法。
表6 a)將位指針?lè)蛛x為L(zhǎng)SB位和非LSB位。(2字AND指令) b)將非LSB位字邏輯右移一位。(1字SHIFT指令) c)將非LSB位字字邏輯左移到MSB位置。(1字SHIFT指令) d)字OR b)和c)的結(jié)果。(1字OR指令) e)逐位多路復(fù)用d)的結(jié)果和原始的位指針。使用有效掩蔽來(lái)控制多路復(fù)用(在大多數(shù)的處理器上,1個(gè)XOR,2個(gè)AND,和1個(gè)OR字指令) 累加器已填滿 如上所述,如果位指針p的相應(yīng)字段分區(qū)在LSB分區(qū)是“1”,則字段分區(qū)被填滿。由只有位指針p非零的LSB位的字來(lái)指示累加器填滿的任意字段分區(qū)。f=(p∧LSB);full=(f≠0) 通常,被填滿的可能性明顯小于0.5,因此聚堆(piling)的應(yīng)用程序是適當(dāng)?shù)摹J褂锰顫M作為條件,將累加器a和f聚成堆A1。堆A1的長(zhǎng)度可明顯小于添附操作的位數(shù)目。設(shè)計(jì)聚堆,以使除了那些整個(gè)處理循環(huán)的變化,處理不必涉及到控制流程的變化。
之后,通過(guò)循環(huán)A1中的項(xiàng)來(lái)處理堆A1。對(duì)于A1中的每一項(xiàng),按順序掃描字段分區(qū)。每字的字段分區(qū)的數(shù)目較小,因此通過(guò)沒(méi)有控制變化的直線編碼來(lái)執(zhí)行該序列。
可以希望平均來(lái)說(shuō),字內(nèi)只有一個(gè)字段分區(qū)被填滿。所以,應(yīng)該使用(對(duì)堆A2)另一個(gè)聚堆的應(yīng)用程序。使用對(duì)應(yīng)的f字段分區(qū)作為堆寫入條件,將字段分區(qū)a和a2的每一個(gè)與對(duì)應(yīng)字段分區(qū)索引i一起,聚堆到A2。最后,A2只包含那些已填滿的字段分區(qū)。
之后,通過(guò)A2中項(xiàng)的循環(huán)來(lái)處理堆A2。索引I用于選擇應(yīng)當(dāng)添附對(duì)應(yīng)a2的位流數(shù)組。文件分區(qū)的位大小,B,通常被選擇為方便的二的冪(例如,8或16位)。存儲(chǔ)用于8或16位數(shù)值的指令使這些長(zhǎng)度變得便利。在上述處理中,除基本循環(huán)以外的控制變化不是必需的。
位字段掃描 編解碼器所需的共同操作是在字的字段中順序讀取位。由bit_pointer指定從字段x提取的位,bit_pointer是除了單個(gè)“1”位其余為零的字段值(例如,0x0200)。將“1”位與被提取的位對(duì)準(zhǔn),以便根據(jù)所讀取位的數(shù)值來(lái)使x&bit_pointer是零或非零。如上所述,可以將此轉(zhuǎn)換為字段掩蔽。該序列中每一個(gè)指令可以同時(shí)處理在一個(gè)字內(nèi)的所有字段。
通過(guò)沿適當(dāng)方向移動(dòng)bit_pointer并重復(fù)直到適當(dāng)?shù)慕K止條件來(lái)完成順序掃描。由于不是所有字段都可以在同一位位置終止,可以修改上述過(guò)程,以便被終止的字段沒(méi)有產(chǎn)生輸出同時(shí)未終止的字段產(chǎn)生輸出。這通過(guò)產(chǎn)生有效字段掩蔽來(lái)完成,如果未終止字段,掩蔽全是“1”,或如果字段已被終止則全是“0”。該有效字段掩蔽用作輸出條件。持續(xù)實(shí)際的掃描,直到終止了所有區(qū)間,這由全零字的有效來(lái)指示。
終止條件通常是bit_pointer中的位,所述bit_pointer到達(dá)了由terminal_bit_pointer的字段中“1”位指示的位置。這可以由bit_pointer&terminal_bit_pointer中的“1”位指示。如上所述,這些字段可被轉(zhuǎn)換成有效字段掩蔽。
盡管本說(shuō)明看起來(lái)依賴于順序并且對(duì)于所掃描的每一個(gè)位位置都有控制流程變化,可以展開(kāi)循環(huán)以使所需的實(shí)際計(jì)算時(shí)間最少。在位字段掃描的實(shí)際應(yīng)用中,所有字段均具有相同的位數(shù),導(dǎo)致對(duì)于所有字段的循環(huán)終止條件都相同。
字段分區(qū)的一致子區(qū)間 如果希望將字w的每個(gè)字段分區(qū)的位位置c:d添附到相應(yīng)位流上,可以使每一個(gè)字段分區(qū)的位位置c中的常數(shù)c是只有一個(gè)“1”的零字。同樣,使每一個(gè)字段分區(qū)的位位置d中的常數(shù)d是只有一個(gè)“1”的零字。此外,可執(zhí)行以下操作。參見(jiàn)表7。
表7 A)初始化bit_pointer q到c q=c; A1)初始化COND,使之為全真 B)逐字bitand q和w u=q∧w u是ZNZ表述 C)將u從ZNZ表述轉(zhuǎn)換到掩蔽表述v D)如上所述,現(xiàn)在可以位流輸出v。使用全真的COND。
E)如果cond(q==d)則處理完成;否則逐字地邏輯右移q一位(q>>1)循環(huán)回到步驟B) 對(duì)于熵編解碼器應(yīng)用,(d-c)的平均值經(jīng)常是相當(dāng)小的。操作E)中的測(cè)試可與操作B)一起開(kāi)始,其中延遲到操作E)和操作B)-D)分支是可用的,以覆蓋分支流水線的延遲。此外,由于子字段是一致的,展開(kāi)多個(gè)字的處理來(lái)覆蓋用于字段分區(qū)的單個(gè)字的指令中的順序依賴性比較容易。
字段分區(qū)的非一致子區(qū)間 在字段分區(qū)c和d的區(qū)間不同的情況下,c和d保持如上所述,但是上述的測(cè)試操作E)會(huì)因區(qū)域的不同變化,而不是所有字節(jié)中的區(qū)域都一樣。在這種情況下,可能希望停止已完成字段分區(qū)的掃描輸出,直到所有的區(qū)間都已經(jīng)完成。可能需要用表8中的以下方式來(lái)修改上述過(guò)程。
表8 1)步驟D)需要其中對(duì)于已完成的字段分區(qū)是假,對(duì)于未完成的字段分區(qū)是真的條件。這通過(guò)添附將cond字與COND“andnot”的操作到操作E)上來(lái)完成。COND=(COND∧~cond) 2)需要將步驟E)中if條件修改為循環(huán)返回B),除非COND是全假。
因此,操作變成 A)初始化bit_pointer q到c q=c; A1)初始化COND,使之為全真 B)逐字地bitand q和w u=q∧w u使用ZNZ表述 C)將u從ZNZ表述變換到掩蔽表述v D)如上所述,v現(xiàn)在可以被位流輸出。使用為全真的COND。
E1)cond(q==d);COND=(COND∧~cond); E2)如果COND==0處理已完成;否則,逐字地邏輯右移q一位(q>>1)循環(huán)回到步驟B) 二元到一元位字段倒計(jì)數(shù) 在熵編程中的一個(gè)共同操作是將字段從二元變換到一元,從而對(duì)于其數(shù)值是n的字段,產(chǎn)生n個(gè)一后面跟隨一個(gè)零的流。在大多數(shù)應(yīng)用中,希望數(shù)值n具有均值是1的負(fù)指數(shù)分布,從而平均來(lái)講,希望除了輸出末端的零以外,只有一個(gè)“1”。
用于首位為零的正字段的字段分區(qū)并行方法如下所述。如上所述,設(shè)c是除了在字x的每個(gè)字段的MSB位置上有一個(gè)“1”的全零常數(shù)。設(shè)d是除了在字x的每個(gè)字段的LSB位置上有一個(gè)“1”的全零常數(shù)。設(shè)diff=c-d。初始化掩蔽到diff。
此程序是倒計(jì)數(shù)(并行地)所討論的字段,同時(shí)創(chuàng)建最初MSB位置為零的c。如果在減法之后的MSB位置是“1”,則此字段的先前值不是零此外,應(yīng)該輸出“1”。如果在減法之后MSB位置是零,則區(qū)間的先前值是零且應(yīng)該輸出零。在任何情況下,MSB位置包含要輸出的位,用于字X的對(duì)應(yīng)字段分區(qū)。
一旦字段到達(dá)零并且輸出了第一個(gè)零,可以抑制其它零的輸出。由于X的不同字段分區(qū)具有不同的值并輸出不同數(shù)目的位,抑制來(lái)自具有較小數(shù)值的字段分區(qū)的輸出,直到所有字段數(shù)值都到達(dá)零。利用輸入到位輸出過(guò)程中的掩蔽來(lái)實(shí)現(xiàn)該抑制,如先前所描述。一旦已經(jīng)輸出了字段分區(qū)的第一個(gè)零,掩蔽的對(duì)應(yīng)字段分區(qū)變?yōu)榱?,從而抑制進(jìn)一步的輸出。
在對(duì)于每一個(gè)字段分區(qū)的diff是相同的通常情況下,不必將diff變到零。否則,將diff與掩蔽相AND。參見(jiàn)表9。
表9 While mask≠0 X=X+diff Y=ZNZ_2_mask(c∧X);其中ZNZ_2_mask是如上所述從ZNZ到掩蔽的轉(zhuǎn)換 X=X∧~c 如上所述輸出具有掩蔽的Y mask=mask∧ Y 在典型用于跳轉(zhuǎn)的流水線延遲的情況下,可以根據(jù)所估計(jì)的輪數(shù)的概率分布來(lái)決定以上展開(kāi)上述循環(huán)。
對(duì)于分區(qū)計(jì)算最優(yōu)化循環(huán)展開(kāi) 如果存在以下形式的循環(huán)while c,{s},在第i次迭代運(yùn)算時(shí),c==true的概率是Pi,計(jì)算c和循環(huán)跳回的代價(jià)是C(c),計(jì)算s的代價(jià)是C(s)??梢约僭O(shè),s的額外執(zhí)行不會(huì)影響計(jì)算的輸出,但是會(huì)對(duì)每一個(gè)代價(jià)C(s)有影響。
可以將此循環(huán)展開(kāi)n次,從而此計(jì)算變換為s;s;s;…s;whilec,{s},其中在while循環(huán)之前有n次s的執(zhí)行。于是,總的代價(jià)如表10所示。
表10 nC(s)+(C(c)+Pn(C(s)+C(c)+Pn+1(…)))=nC(s)+C(c)+(Pn+PnPn+1+…)(C(c)+C(s))≈≈(n-1)α+Un=TC(n,α) 其中,Un=(Pn+PnPn+1+...);<math> <mrow> <mi>&alpha;</mi> <mo>=</mo> <mfrac> <mrow> <mi>C</mi> <mrow> <mo>(</mo> <mi>s</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mi>C</mi> <mrow> <mo>(</mo> <mi>c</mi> <mo>)</mo> </mrow> <mo>+</mo> <mi>C</mi> <mrow> <mo>(</mo> <mi>s</mi> <mo>)</mo> </mrow> </mrow> </mfrac> </mrow> </math> 作為例子,可以假設(shè)每個(gè)字有k個(gè)獨(dú)立的字段,并且P是每個(gè)字段循環(huán)跳回的概率。然后,Pn=1-(1-Pn)k。
圖4示出了根據(jù)一個(gè)實(shí)施例的圖解Pn的圖表400。圖5示出了根據(jù)一個(gè)實(shí)施例的圖解Un的圖表500。每個(gè)圖表中的曲線對(duì)應(yīng)于k的數(shù)值,而灰線對(duì)應(yīng)k=1)。
圖6和7示出了圖表600和700,分別指示了當(dāng)α=0.3和α=0.7時(shí)的歸一化總代價(jià)TC(n,α)。圖8是根據(jù)一個(gè)實(shí)施例的圖800,指示了最小總代價(jià)min(TC(n,α))=TC(α),(虛線),和此初始循環(huán)展開(kāi)的最優(yōu)數(shù)目n(α), 示例 在熵編碼的應(yīng)用程序中,輸出位是一的概率是0.5,是零的概率是0.5。其還是獨(dú)立的。利用這些假設(shè),則可以進(jìn)行以下計(jì)算。
給定字段分區(qū)要求n或者更少輸出位(包括終止零)的概率P(n)是P(n)=(1-0.5-n)。設(shè)每個(gè)字中字段分區(qū)的數(shù)目是m。則循環(huán)中所要求的輪數(shù)是n或更小的概率是(P(n))m=(1-0.5-n)m。圖9示出了根據(jù)一個(gè)實(shí)施例的表900,其中包括前述方程中的各種數(shù)值。如上所示,循環(huán)展開(kāi)2-4次應(yīng)該是正常的。
編解碼器 在一個(gè)實(shí)施例中,圖1所示的編碼部分101和/或解碼部分103可以包括可變模數(shù)。在本說(shuō)明的情況下,此模數(shù)反映了與編解碼器框架100所使用的壓縮算法相關(guān)聯(lián)的概率分布曲線的陡度。例如,此模數(shù)可以包括概率分布的負(fù)指數(shù)。
雖然此模數(shù)可以作為任何希望參數(shù)的函數(shù)而變化,在一個(gè)實(shí)施例中,此模數(shù)可以取決于先前一組數(shù)據(jù)的內(nèi)容,其中這組數(shù)據(jù)指正在被編解碼器框架100的多個(gè)模塊處理的位集合。此外,模數(shù)可以避免作為運(yùn)行長(zhǎng)度(即,序列中的多個(gè)相同位)的函數(shù)而增大。
因此,設(shè)置了二元/一元(DM)的編解碼器框架。將會(huì)在以下詳細(xì)闡明有關(guān)其中模數(shù)取決于先前一組數(shù)據(jù)的內(nèi)容的選擇方式、模數(shù)可以避免作為運(yùn)行長(zhǎng)度的函數(shù)而增大等的更多信息。
圖10是計(jì)算復(fù)雜度對(duì)性能水平的圖形1000,示出了本二元/一元的編解碼器框架和其它算法的關(guān)系(即,Huffman,Rice Golomb、算術(shù)等)。如圖所示,可以設(shè)計(jì)DM編解碼器,以使用提供了預(yù)定性能水平的最小計(jì)算復(fù)雜度。
現(xiàn)在將說(shuō)明有關(guān)在圖1的編解碼器框架環(huán)境中實(shí)現(xiàn)的多個(gè)可選特征的更多信息。在一個(gè)實(shí)施例中,通過(guò)說(shuō)明其狀態(tài)空間和更新函數(shù)來(lái)指定DM編解碼器(參見(jiàn)背景技術(shù)部分)。
每一個(gè)狀態(tài)具有五個(gè)分量位置P、context、shift、Aregister和Cregister。如上所述,此模數(shù)可以根據(jù)先前一組數(shù)據(jù)而變化。根據(jù)滿足前述“context”的定義的特定實(shí)施例,本context包括在輸入字母表上長(zhǎng)度為k的位流(總共2k個(gè)狀態(tài))。每一個(gè)Aregister和Cregister可以保存小于1的非負(fù)倍數(shù)2-n(每一個(gè)總共2n個(gè)狀態(tài))。在<start>和<finish>狀態(tài)中,Aregister和Cregister的值是零。用于<start>狀態(tài)的內(nèi)容值,雖然是任意,但有必要對(duì)于編碼器和解碼器是相同的。<start>狀態(tài)中的P值是開(kāi)始,在<finish>狀態(tài)中是結(jié)束。shift值與<start>和<finish>狀態(tài)無(wú)關(guān)。
作為更新函數(shù)φ的的部分說(shuō)明,存在一些指定的固定函數(shù)。參見(jiàn)表11。
表11 1.函數(shù)mps將每個(gè)context值映射到輸入字母表I中的數(shù)值。目的在于在給定context的情況下,mps是概率更大的I中的符號(hào)。
2.函數(shù)delta將2k個(gè)context數(shù)值的每一個(gè)映射到2-m,其中,0<m≤n。函數(shù)delta的目的是量化地捕獲下一個(gè)符號(hào)的數(shù)值概率的信息。
可以根據(jù)DM的限制來(lái)選擇這兩個(gè)函數(shù)。這些限制和概率信息一起,可以被用來(lái)選擇mps和delta,并且在重要的應(yīng)用程序中,能夠?qū)崿F(xiàn)算法簡(jiǎn)單化和熵編碼效率的有用結(jié)合。
在一個(gè)實(shí)施例中,DM限制如表12中所述。
表12 1)二元限制 delta(context)=2-m,0<m≤n 其中m和n是整數(shù),需要delta是二的負(fù)整數(shù)次冪。目的在于delta(context)近似了下一個(gè)符號(hào)不必是由mps(context)給出的條件概率。1-Prob(a==mps(context)|context)≈delta(context)。
2)一元限制 (1-delta(context))≤(1-delta(2*contextmod2k)+mps(context)))不等式的右手邊近似是假設(shè)先前讀取的符號(hào)還具有最大可能性時(shí),讀取最可能符號(hào)的概率。該一元限制反映可能的情況,其中最可能的符號(hào)不會(huì)減少下一個(gè)符號(hào)是最可能符號(hào)的概率。
這兩個(gè)限制提供了有效的熵編解碼器。
圖11示出了根據(jù)一個(gè)實(shí)施例的轉(zhuǎn)移表1100,示出了用于編碼器和解碼器的更新函數(shù)。每一行代表一組狀態(tài),其中組中的狀態(tài)都滿足所在判定列的每一個(gè)條件。每一行形成了可允許狀態(tài)的一部分。
在識(shí)別了用于初始狀態(tài)的行之后,執(zhí)行該行右手邊部分的動(dòng)作。所使用的所有數(shù)值是處于初始狀態(tài)的數(shù)值,所以,在行中的動(dòng)作序列不必是發(fā)出。新?tīng)顟B(tài)的每一個(gè)分量可以接收唯一數(shù)值。整個(gè)空白意味著沒(méi)有改變此狀態(tài)的分量。
對(duì)于編碼器,執(zhí)行來(lái)自列的“公共”組的更新動(dòng)作和來(lái)自列的“編碼器”組的更新動(dòng)作。對(duì)于解碼器,從列的“公共”和“解碼器”組中選擇動(dòng)作。在狀態(tài)轉(zhuǎn)移表1100的底部,設(shè)置了動(dòng)作的準(zhǔn)確定義。
DM條件的效果在于Aregister總是上一個(gè)相加的detla的倍數(shù)(在F13處)。二元條件保證了delta的二進(jìn)制的表示準(zhǔn)確地具有一個(gè)“1”位。一元條件保證了delta不會(huì)變大,直到產(chǎn)生了代碼符號(hào),因此delta中的位只會(huì)保持在相同位置或向右移動(dòng)。保持這種情況,直到產(chǎn)生代碼符號(hào),此時(shí)Aregister變?yōu)?(準(zhǔn)確說(shuō)是因?yàn)橹槐A袅松弦粋€(gè)delta右邊的Aregister位)。
結(jié)果,提供了表13的以下一組特征。
表13 a)A是delta的倍數(shù) b)在寫入代碼符號(hào)后,A是零 c)在寫入代碼符號(hào)后,不需要重新歸一化 因?yàn)橥瑯拥脑颍珼M編碼器中不必使用普通算術(shù)編碼中所需的Cregister。緊接在產(chǎn)生代碼符號(hào)后,此context中捕獲之前狀態(tài)序列的整個(gè)存儲(chǔ)。由于context是之前的k個(gè)輸入符號(hào),DM編解碼器具有短期存儲(chǔ)器,因此很快適應(yīng)輸入流的局部統(tǒng)計(jì)。
本框架的各種實(shí)際應(yīng)用是存在的。例如,在考慮有效函數(shù)(significant function)的環(huán)境下;圖像、視頻和信號(hào)處理經(jīng)常涉及到變換,變換的目的是將此信號(hào)“濃縮“,即,產(chǎn)生幾個(gè)大的系數(shù)和多個(gè)可以忽略的系數(shù)(通過(guò)用零代替來(lái)丟棄此類系數(shù))。非可忽略系數(shù)的識(shí)別(或位置)通常與該系數(shù)的數(shù)值一樣重要。通常在“有效函數(shù)”中捕獲該信息,該函數(shù)將非可忽略系數(shù)映射為“1”而將可忽略系數(shù)映射為“0”。
通過(guò)按照適當(dāng)?shù)捻樞驅(qū)@些系數(shù)及其有效位進(jìn)行列表,可以從其前面的數(shù)值準(zhǔn)確地預(yù)測(cè)有效位。如果該順序列表將此系數(shù)根據(jù)希望的大小以降序排列,則可以得到以“1”顯著開(kāi)始并以“1”顯著結(jié)束的有效位流。這種統(tǒng)計(jì)信息隨著流的進(jìn)行而改變的流被稱為非穩(wěn)定(non-stationary)。這種流的有效的熵編碼需要緊接之前的存儲(chǔ)器。該存儲(chǔ)器可以被充分?jǐn)U展,以實(shí)現(xiàn)良好的預(yù)測(cè)準(zhǔn)確度,并且持續(xù)時(shí)間足夠短,以允許充分快速的適應(yīng)。
在編碼非穩(wěn)定運(yùn)行并根據(jù)上述定義的環(huán)境中,有效函數(shù)中的運(yùn)行包括子位流,此流中除最后一位之外的所有位具有一個(gè)數(shù)值而最后一位具有其它數(shù)值。下一次運(yùn)行在前一次運(yùn)行的最后一位之后立即開(kāi)始。
按照一般規(guī)則,context中的位越多(k越大),則編碼率越接近熵值的極限。然而,k越大,實(shí)現(xiàn)成本越高。將k的范圍充分限制在能夠檢查每一個(gè)k的數(shù)值。一旦k被選擇,在mps(context)和delta(context)函數(shù)中完全捕獲用于非穩(wěn)定運(yùn)行的DM編解碼器的性能。如表14所示,可以從經(jīng)驗(yàn)數(shù)據(jù)中近似這些函數(shù)。
表14 1)mps(context)=1 if Prob(next symbol=1|context)≥0.5 2)Prob(22*delta(context)|context)=0.5 此過(guò)程是收集適于該環(huán)境的足夠經(jīng)驗(yàn)數(shù)據(jù),用于每一個(gè)環(huán)境構(gòu)成直方圖。由此,可以近似概率函數(shù)。能夠直接計(jì)算函數(shù)mps(context)。此外,函數(shù)delta(context)可以通過(guò)圖14中2)的迭代法解法來(lái)計(jì)算。
因此,DM編解碼器將輸入流1∶1映射到編碼流,當(dāng)解碼時(shí),已編碼流產(chǎn)生原始的輸入流。不必產(chǎn)生所有的輸出流,作為某些輸入流的編碼。一些輸入流可能被編碼為較短的已編碼流,許多會(huì)被編碼為較長(zhǎng)的已編碼流。關(guān)于此輸入流的長(zhǎng)度相對(duì)于輸入流被編碼為的已編碼流,描述各種可能輸入流的出現(xiàn)概率是有用的。如果編解碼器具有有用的壓縮特征,則被編碼為較短流的輸入流的出現(xiàn)概率遠(yuǎn)大于被編碼為較長(zhǎng)流的輸入流出現(xiàn)的概率。
不必使用動(dòng)態(tài)概率。對(duì)于熵編碼應(yīng)用,有效位流的統(tǒng)計(jì)信息能夠并且會(huì)快速變化。自適應(yīng)概率表不能跟蹤這種變化,即使基于多次運(yùn)行,該表也只能緩慢變化。所以,DM編碼器不一定要使用概率表;而是在最后幾位或在單個(gè)運(yùn)行中適應(yīng)。
具有有效位數(shù)據(jù)的經(jīng)驗(yàn)測(cè)試指示了只通過(guò)有效位流的最后幾位來(lái)獲得context大多數(shù)優(yōu)點(diǎn)。作為context的有效位流的最后幾位用于以下一位的概率為條件。
重要的概率量Pcontext=Prob(next input bit=LSB|context)。注意,根據(jù)LSB的定義,Pcontext<0.5。被添加用來(lái)最小程度表示下一位的熵如表15所示。
表15 entropy=-((-Pcontext)*log2(1-Pcontext)+Pcontext*log2(Pcontext))位 然后,delta(context)=entropy/2,這是因?yàn)榭s放Aregister以輸出此2-1位。如果Pcontext~0.5,則下一位要添加的熵近似如以下表16所示。
表16 -(1-0.5)*log2(1-0.5)+0.5*log2(0.5))~1bit 此外,delta(context)=1/2。如果Pcontext<<0.5,下一位要添加的熵近似如以下表17所示。
表17 (1-Pcontext) *(-Pcontext)-Pcontextlog2(Pcontext)~Pcontext*log2(1/Pcontext) 此外,delta(context)=Pcontext*log2(1/Pcontext)/2。參見(jiàn)以上表14中的方程2)。
視覺(jué)方面 圖12示出了根據(jù)一個(gè)實(shí)施例的一種具有色度時(shí)間速率損失的壓縮數(shù)據(jù)方法1200。在一個(gè)實(shí)施例中,在圖1所示的變換模塊102的環(huán)境中以執(zhí)行逆變換的方式執(zhí)行此方法1200。然而,應(yīng)該注意的是,方法1200可以在任何希望的環(huán)境中執(zhí)行。
在操作1202中,根據(jù)第一預(yù)定速率更新幀的亮度(luma)數(shù)據(jù)。在操作1204中,根據(jù)小于第一預(yù)定速率的第二預(yù)定速率來(lái)更新幀的色度(chroma)。
因此,在數(shù)字視頻壓縮系統(tǒng)中,可以對(duì)于場(chǎng)景的不同分量,改變時(shí)間細(xì)節(jié)的有效傳輸速率。例如,可以設(shè)置數(shù)據(jù)流,以便比其它分量更頻繁地發(fā)送已變換信號(hào)的某些分量。在這樣的例子中,可以計(jì)算視頻序列的三維(空間+時(shí)間)小波變換,并按照全幀(full frame)速率發(fā)送結(jié)果的luma系數(shù)。
此外,對(duì)于色度信息,可以從色度信號(hào)中省略一個(gè)或多個(gè)較高頻帶,因此降低視頻的時(shí)間響應(yīng)速率,即時(shí)間細(xì)節(jié)逼真度。在重構(gòu)已壓縮視頻用于觀看期間,可以利用近似來(lái)填入或?qū)σ咽÷孕畔⑦M(jìn)行插值,而不是在沒(méi)有信息發(fā)送時(shí)顯示“零電平“。對(duì)于已省略的空間細(xì)節(jié)可以按照相同的方式進(jìn)行。通過(guò)保持最近接收到的信息直到接收到新的信息是最簡(jiǎn)單的實(shí)現(xiàn)。更一般地,這通過(guò)計(jì)算逆小波濾波器,使用零或其它默認(rèn)值代替已省略的信息,來(lái)產(chǎn)生具有正確總體電平并減少了時(shí)間細(xì)節(jié)的平滑變化可以實(shí)現(xiàn)。
這種色度速率壓縮的具體例子如下對(duì)于色度的分量,可以計(jì)算橫跨空間變換色度值的兩幀(四場(chǎng))的平均值。這可以利用雙Haar小波濾波器對(duì)并丟棄所有最低頻率的分量來(lái)實(shí)現(xiàn)。可以只發(fā)送平均值。當(dāng)重構(gòu)時(shí),可以保持色度的橫跨兩幀(四場(chǎng))的接收數(shù)值。已發(fā)現(xiàn)觀眾不會(huì)注意到此,即使當(dāng)他們?cè)谧屑?xì)檢查壓縮方法缺陷時(shí)。
視頻壓縮處理的下一階段,即量化,通過(guò)將相似數(shù)值分組并發(fā)送代表數(shù)值來(lái)丟棄信息。該丟棄細(xì)節(jié)有關(guān)區(qū)域確切有多亮或是什么顏色。當(dāng)發(fā)現(xiàn)已變換分量接近于零時(shí),選擇零作為所述代表數(shù)值(在具體尺度顯示無(wú)變化)??梢允÷园l(fā)送零并使接收者將零假定為默認(rèn)值。這通過(guò)減少發(fā)送的數(shù)據(jù)量有助于壓縮。而且,已知人類視覺(jué)敏感度水平在亮度和色度之間是不同的。
所以,通過(guò)對(duì)于亮度和色度分量應(yīng)用不同的量化水平并丟棄來(lái)自色度的更多信息,能夠從以上事實(shí)中獲益更多。當(dāng)在時(shí)間或3一D變換中進(jìn)行不同的量化時(shí),效果在于減少了色度中的時(shí)間細(xì)節(jié)和空間細(xì)節(jié)。在典型情況下,對(duì)于普通的視頻材料,時(shí)間變換導(dǎo)致了遠(yuǎn)大于高頻分量的低頻分量。然后,將量化應(yīng)用到該已變換結(jié)果上使較小的數(shù)值和零被分為一組,導(dǎo)致將其從已壓縮的表述中省略并降低了色度分量的時(shí)間分辨率。
圖12A示出了根據(jù)一個(gè)實(shí)施例的一種在回放期間具有高質(zhì)量暫停能力的壓縮數(shù)據(jù)的方法1250。在一個(gè)實(shí)施例中,此方法1250可以在圖1的框架的環(huán)境中被執(zhí)行。然而,應(yīng)該注意的是,可以在任何希望的環(huán)境下執(zhí)行此方法1250。
在操作1252中,視頻數(shù)據(jù)被壓縮。在一個(gè)實(shí)施例中,數(shù)據(jù)壓縮可以在圖1的框架的編碼器部分101的環(huán)境中執(zhí)行。當(dāng)然,這種壓縮可以在任何希望的環(huán)境中執(zhí)行。
在操作1254中,暫停信息被插入到已壓縮數(shù)據(jù)中。在一個(gè)實(shí)施例中,暫停信息用于提高回放視頻數(shù)據(jù)的質(zhì)量。此外,暫停信息可以包括高分辨率幀。暫停信息還可以包括能夠用于構(gòu)造高分辨率幀的數(shù)據(jù)。
所以,在操作1256中,在其回放期間,當(dāng)暫停視頻數(shù)據(jù)時(shí),可以使用暫停信息。在本方法中,已壓縮數(shù)據(jù)配備了一組特別用于視頻暫停時(shí)的額外信息。該額外信息可以包括高質(zhì)量幀,或者差值信息,當(dāng)所述差值信息與正常壓縮幀結(jié)合時(shí),導(dǎo)致了高質(zhì)量幀。
為了將壓縮比特率保持在有用的水平,不需要對(duì)于每一幀都包括額外信息,而只用于某些幀。典型地,對(duì)于大約每15幀可以有一幀包括額外信息,因此在圖像中,在1/2秒的時(shí)間間隔內(nèi)出現(xiàn)一次高質(zhì)量的暫停操作。這可以通過(guò)視頻暫停行為的觀察來(lái)完成。然而,可以包括比這更頻繁的額外信息,其代價(jià)是比特率。還可以包括更少的額外信息以獲得更好的壓縮性能,其代價(jià)是用戶的便利??梢詮膬蓭?0幀或更多的范圍中進(jìn)行折中。
在一個(gè)實(shí)施例中,額外信息包括視頻的完整幀,利用不同參數(shù)組(例如,經(jīng)過(guò)量化減少信息)或使用不同的壓縮方法(例如,在MPEG流中使用JPEG-2000)壓縮所述視頻。當(dāng)壓縮原始視頻計(jì)算這些額外幀,并且在壓縮視頻的發(fā)送或存儲(chǔ)中,與正常壓縮的視頻幀一起進(jìn)行。
在另一個(gè)實(shí)施例中,額外信息可以包括用于正常解壓縮處理使用的額外信息而不是完整的額外圖像。例如,在小波視頻壓縮器中,額外信息包括在正常壓縮中被丟棄但當(dāng)暫停時(shí)用于額外視覺(jué)清晰度而被保留的數(shù)據(jù)濾波帶。對(duì)于另一實(shí)例,額外信息包括來(lái)自變換系數(shù)的額外信息低階位和附加系數(shù),來(lái)自使用為選定的可暫停幀設(shè)置的附加較小量化。
在另一個(gè)實(shí)施例中,額外信息包括用于不同于正常解壓縮過(guò)程的解壓縮過(guò)程所使用的數(shù)據(jù),并且不是完整的幀。在解壓縮之后,該信息可以與由正常處理解壓縮的一個(gè)或多個(gè)幀結(jié)合來(lái)產(chǎn)生更細(xì)致的靜態(tài)圖像。
現(xiàn)在將給出關(guān)于典型基于小波變換的更多信息,可以結(jié)合圖1和12A中的各種特征來(lái)使用。然而,應(yīng)當(dāng)高度注意,這種基于小波的變換只是為了舉例的目的,而不應(yīng)該被認(rèn)為是任何形式的限制。例如,設(shè)想圖1和12A中的多種特征可以在基于DCT的算法等的環(huán)境中實(shí)現(xiàn)。
圖13示出了根據(jù)一個(gè)實(shí)施例壓縮/解壓縮數(shù)據(jù)的方法1300。在一個(gè)實(shí)施例中,可以在圖1的變換模塊102中并以逆變換的方式執(zhí)行方法1300。應(yīng)該注意,方法1300可以在任何希望的情況下執(zhí)行。
在操作1302中,接收(即,從存儲(chǔ)器中識(shí)別、檢索等)用于壓縮數(shù)據(jù)的插值公式。在本說(shuō)明的環(huán)境,此數(shù)據(jù)指能夠被壓縮的任意數(shù)據(jù)。此外,插值公式可以包括使用插值的任意公式(即,小波濾波器等)。
在操作1304中,確定插值公式是否需要至少一個(gè)數(shù)據(jù)值,其中所需要的數(shù)據(jù)值是不可用的。這種數(shù)據(jù)值可以包括前述數(shù)據(jù)的任意子集。由于是不可用,所需數(shù)據(jù)值可以是不存在超出范圍等。
之后,執(zhí)行外推(extrapolation)操作以產(chǎn)生所需的不可用數(shù)據(jù)值。見(jiàn)操作1306。外推公式可以包括使用外推法的任何公式。通過(guò)該方案,增強(qiáng)了數(shù)據(jù)的壓縮。
圖14示出了在其上執(zhí)行方法1300的數(shù)據(jù)結(jié)構(gòu)1400。如圖所示,在變換期間,通過(guò)涉及多個(gè)數(shù)據(jù)值1402的插值公式1403來(lái)實(shí)現(xiàn)“最優(yōu)擬合”1401。注意圖13中方法1300的操作1302。如果確定數(shù)據(jù)值1402之一不可用(見(jiàn)1404),使用外推公式來(lái)產(chǎn)生這種不可用的數(shù)據(jù)值。參考圖15期間,將更詳細(xì)地說(shuō)明有關(guān)前述技術(shù)的實(shí)現(xiàn)的更多可選細(xì)節(jié)。
圖15示出了根據(jù)一個(gè)實(shí)施例的壓縮/解壓縮數(shù)據(jù)的方法1500。作為選擇,方法1500可以在圖1的變換模塊102中以逆變換的方式被執(zhí)行。然而,應(yīng)該注意,方法1500可以在任何希望的情況下執(zhí)行。
方法1500提供了用于產(chǎn)生小波濾波器對(duì)的邊緣濾波器。首先,在操作1502,分析小波方案以確定小波濾波器近似的局部導(dǎo)數(shù)。接下來(lái),在操作1504,根據(jù)小波濾波器特征和可用的采樣數(shù)目來(lái)選擇多項(xiàng)式的階數(shù)以用于外推。接下來(lái),使用所選擇的多項(xiàng)式階數(shù),推導(dǎo)用于每一個(gè)小波濾波器的外推公式。見(jiàn)操作1506。在操作1508,使用在每一種情況具有可用采樣的外推公式來(lái)推導(dǎo)特定邊緣小波情況。
此外,現(xiàn)在將更詳細(xì)地說(shuō)明關(guān)于典型外推公式和相關(guān)信息的更多可選信息。
JPEG-2000標(biāo)準(zhǔn)1)中指定的變換之一是可逆的5-3變換,如方程#1.1和1.2所示。
方程#1.1和1.2<math> <mrow> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <mo>[</mo> <mfrac> <mrow> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>n</mi> </mrow> </msub> <mo>+</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> </msub> </mrow> <mn>2</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>1.1</mn> </mrow> </math> <math> <mrow> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>n</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>n</mi> </mrow> </msub> <mo>+</mo> <mo>[</mo> <mfrac> <mrow> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>n</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <mn>2</mn> </mrow> <mn>4</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>1.2</mn> </mrow> </math> 為了從左面近似Y2n-1,可以在左面擬合四級(jí)多項(xiàng)式。利用可用數(shù)值來(lái)近似2N-1處第二導(dǎo)數(shù)一半的負(fù)值,得出方程#1.1.R。
方程#1.1.R<math> <mrow> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mo>-</mo> <mfrac> <mn>1</mn> <mn>3</mn> </mfrac> <mrow> <mo>(</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <mo>[</mo> <mfrac> <mrow> <mn>3</mn> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>-</mo> <mn>2</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>-</mo> <mn>4</mn> </mrow> </msub> <mo>+</mo> <mn>1</mn> </mrow> <mn>2</mn> </mfrac> <mo>]</mo> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>1.1</mn> <mo>.</mo> <mi>R</mi> </mrow> </math> 當(dāng)點(diǎn)一是最右點(diǎn)時(shí),方程#1.1.R可用于代替方程#1.1。通過(guò)移動(dòng)和加法來(lái)完成所示的乘3。而除3比較麻煩。對(duì)于當(dāng)最右的索引是2N-1的情況,使用方程#1.2計(jì)算Y2N-2將不是問(wèn)題。在最右點(diǎn)的索引是偶數(shù)時(shí)(即2N),方程#1.1不存在任何問(wèn)題,但是方程#1.2涉及丟失數(shù)值。此處的目的是只使用相關(guān)的已計(jì)算奇數(shù)索引Y1和Y3,從偶數(shù)X中減去Y的估計(jì)值。能夠由線性外推得到索引2N處的所需估計(jì),如上所述。該近似公式在方程#1.2.R中給出。
方程#1.2.R<math> <mrow> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>N</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>N</mi> </mrow> </msub> <mo>+</mo> <mo>[</mo> <mfrac> <mrow> <mn>3</mn> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>-</mo> <mn>3</mn> </mrow> </msub> <mo>+</mo> <mn>2</mn> </mrow> <mn>4</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>1.2</mn> <mo>.</mo> <mi>R</mi> </mrow> </math> 對(duì)應(yīng)情況應(yīng)用到左邊界處。相似邊緣濾波器從右(內(nèi)部)而不是從左使用所需的外推。在這種情況下,近似濾波器由方程#1.1.L和方程#1.2.L表示。
方程#1.2.L和方程#1.2.L<math> <mrow> <msub> <mi>Y</mi> <mn>0</mn> </msub> <mo>=</mo> <mo>-</mo> <mfrac> <mn>1</mn> <mn>3</mn> </mfrac> <mrow> <mo>(</mo> <msub> <mi>X</mi> <mn>0</mn> </msub> <mo>-</mo> <mo>[</mo> <mfrac> <mrow> <msub> <mrow> <mn>3</mn> <mi>X</mi> </mrow> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>X</mi> <mn>3</mn> </msub> <mo>+</mo> <mn>1</mn> </mrow> <mn>2</mn> </mfrac> <mo>]</mo> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>1.1</mn> <mo>.</mo> <mi>L</mi> </mrow> </math> <math> <mrow> <msub> <mi>Y</mi> <mn>0</mn> </msub> <mo>=</mo> <msub> <mi>X</mi> <mn>0</mn> </msub> <mo>+</mo> <mo>[</mo> <mfrac> <mrow> <msub> <mrow> <mn>3</mn> <mi>Y</mi> </mrow> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>Y</mi> <mn>3</mn> </msub> <mo>+</mo> <mn>2</mn> </mrow> <mn>4</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>1.2</mn> <mo>.</mo> <mi>L</mi> </mrow> </math> 對(duì)于這些關(guān)于原始變換的外推邊界濾波器,可以獲得逆變換濾波器,即,通過(guò)反向替換。在余使用正邊界濾波器精確相同的環(huán)境中,可以使用逆變換濾波器來(lái)代替標(biāo)準(zhǔn)濾波器。這種濾波器由方程#2.1.Rinv、2.2.Rinv、2.1.L.inv和2.2.L.inv表示。
方程#2.1.Rinv,2.2.Rinv,2.1.L.inv,2.2.L.inv<math> <mrow> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mo>-</mo> <mn>3</mn> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <mo>[</mo> <mfrac> <mrow> <msub> <mrow> <mn>3</mn> <mi>X</mi> </mrow> <mrow> <mn>2</mn> <mi>N</mi> <mo>-</mo> <mn>2</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>-</mo> <mn>4</mn> </mrow> </msub> <mo>+</mo> <mn>1</mn> </mrow> <mn>2</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>2.1</mn> <mo>.</mo> <mi>R inv</mi> </mrow> </math> <math> <mrow> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>N</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>N</mi> </mrow> </msub> <mo>-</mo> <mo>[</mo> <mfrac> <mrow> <msub> <mrow> <mn>3</mn> <mi>Y</mi> </mrow> <mrow> <mn>2</mn> <mi>N</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>-</mo> <mn>3</mn> </mrow> </msub> <mo>+</mo> <mn>2</mn> </mrow> <mn>4</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>2.2</mn> <mo>.</mo> <mi>R inv</mi> </mrow> </math> <math> <mrow> <msub> <mi>X</mi> <mn>0</mn> </msub> <mo>=</mo> <mo>-</mo> <mn>3</mn> <msub> <mi>Y</mi> <mn>0</mn> </msub> <mo>+</mo> <mo>[</mo> <mfrac> <mrow> <msub> <mrow> <mn>3</mn> <mi>X</mi> </mrow> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>X</mi> <mn>3</mn> </msub> <mo>+</mo> <mn>1</mn> </mrow> <mn>2</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>2.1</mn> <mo>.</mo> <mi>L inv</mi> </mrow> </math> <math> <mrow> <msub> <mi>X</mi> <mn>0</mn> </msub> <mo>=</mo> <msub> <mi>Y</mi> <mn>0</mn> </msub> <mo>-</mo> <mo>[</mo> <mfrac> <mrow> <mn>3</mn> <msub> <mi>Y</mi> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>Y</mi> <mn>3</mn> </msub> <mo>+</mo> <mn>2</mn> </mrow> <mn>4</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>2.2</mn> <mo>.</mo> <mi>L inv</mi> </mrow> </math> 因此,一個(gè)實(shí)施例可以使用重新公式化的5-3濾波器,所述濾波器避免已知技術(shù)中的附加步驟,同時(shí)保持濾波器的視覺(jué)屬性。例如,見(jiàn)方程#3.1,3.1R,3.2,3.2L。
方程#3.1,3.1R,3.2,3.2L<math> <mrow> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>N</mi> </mrow> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>[</mo> <mfrac> <mrow> <mrow> <mo>(</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>N</mi> </mrow> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>+</mo> <mrow> <mo>(</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>+</mo> <mn>2</mn> </mrow> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow> <mn>2</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>3.1</mn> </mrow> </math> Y2N+1=(X2N+1+1/2)-(X2N+1/2)eq 3.1R<math> <mrow> <mrow> <mo>(</mo> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>N</mi> </mrow> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>N</mi> </mrow> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>+</mo> <mo>[</mo> <mfrac> <mrow> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>n</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mrow> <mn>4</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>3.2</mn> </mrow> </math> <math> <mrow> <mrow> <mo>(</mo> <msub> <mi>Y</mi> <mn>0</mn> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>X</mi> <mn>0</mn> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>+</mo> <mo>[</mo> <mfrac> <msub> <mi>Y</mi> <mn>1</mn> </msub> <mn>2</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>3.2</mn> <mi>L</mi> </mrow> </math> 在這些公式中,利用1/2的偏移量或偏差來(lái)計(jì)算特定系數(shù),以便避免以上所述的加法。應(yīng)該注意,雖然在公式中出現(xiàn)了很多1/2的增加,這些加法在實(shí)際計(jì)算中無(wú)需出現(xiàn)。在方程#3.1和3.1R中,可以看到,1/2的增加彼此抵消,所以無(wú)需將其應(yīng)用到輸入數(shù)據(jù)上。相反,括號(hào)(Y0+1/2)中的項(xiàng)等可以被理解為實(shí)際計(jì)算并作為系數(shù)存儲(chǔ)的量的名稱,并被傳遞到此小波變換金字塔的下一層。
和正向的情況相同,JPEG-2000逆濾波器能夠在以下方程#4.2,4.2L,4.1,4.1R中被重新公式化。方程#4.2,4.2L,4.1,4.1R<math> <mrow> <mrow> <mo>(</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>N</mi> </mrow> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>N</mi> </mrow> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>[</mo> <mfrac> <mrow> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mrow> <mn>4</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>4.2</mn> </mrow> </math> <math> <mrow> <mrow> <mo>(</mo> <msub> <mi>X</mi> <mn>0</mn> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>Y</mi> <mn>0</mn> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>[</mo> <mfrac> <msub> <mi>Y</mi> <mn>1</mn> </msub> <mn>2</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>4.2</mn> <mi>L</mi> </mrow> </math> <math> <mrow> <mrow> <mo>(</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>Y</mi> <mrow> <mn>2</mn> <mi>N</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <mo>[</mo> <mfrac> <mrow> <mrow> <mo>(</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>n</mi> </mrow> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>+</mo> <mrow> <mo>(</mo> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> </msub> <mo>+</mo> <mn>1</mn> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow> <mn>2</mn> </mfrac> <mo>]</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mi>eq</mi> <mn>4.1</mn> </mrow> </math> (X2N+1+1/2)=Y(jié)2N+1+(X2N+1/2)eq 4.1R 從這里可以看到,逆計(jì)算的輸入值與方程#3.1~3.2L中正計(jì)算所產(chǎn)生項(xiàng)相同,無(wú)需精確計(jì)算校正的1/2。
按照這種方式,減少了小波變換的計(jì)算期間執(zhí)行的算術(shù)操作的總數(shù)。
盡管以上已經(jīng)說(shuō)明了本發(fā)明的各種實(shí)施例,需要理解的是,只是作為示例來(lái)進(jìn)行說(shuō)明而不是限制。因此,優(yōu)選實(shí)施例的范圍和廣度不應(yīng)被局限于任一上述典型實(shí)施例,而應(yīng)當(dāng)只根據(jù)隨后的權(quán)利要求及其等同物來(lái)限定。
權(quán)利要求
1.一種處理異常的方法,包括
處理循環(huán)中的計(jì)算操作;
當(dāng)處理計(jì)算操作時(shí)識(shí)別異常;
當(dāng)處理計(jì)算操作時(shí)存貯所述異常;和
獨(dú)立于循環(huán)處理所述異常。
2.如權(quán)利要求1所述的方法,其特征是計(jì)算操作包括非重要的數(shù)值。
3.如權(quán)利要求2所述的方法,其特征是所述計(jì)算操作包括對(duì)多個(gè)零值進(jìn)行計(jì)數(shù)。
4.如權(quán)利要求1所述的方法,其特征是所述計(jì)算操作包括剪輯和飽和操作的至少之一。
5.如權(quán)利要求1所述的方法,其特征是所述異常包括重要的數(shù)值。
6.如權(quán)利要求5所述的方法,其特征是此異常包括非零數(shù)據(jù)。
7.如權(quán)利要求1所述的方法,其特征是至少在使用變換模塊的部分處理計(jì)算操作。
8.如權(quán)利要求1所述的方法,其特征是至少在使用量化模塊的部分處理計(jì)算操作。
9.如權(quán)利要求1所述的方法,其特征是至少在使用熵編碼模塊的部分處理計(jì)算操作。
10.如權(quán)利要求1所述的方法,其特征是所述存儲(chǔ)包括存儲(chǔ)處理所述異常所需的數(shù)據(jù)。
11.如權(quán)利要求1所述的方法,其特征是執(zhí)行所述處理以壓縮數(shù)據(jù)。
12.如權(quán)利要求11所述的方法,其特征是所述數(shù)據(jù)使用解相關(guān)變換來(lái)壓縮。
13.如權(quán)利要求11所述的方法,其特征是所述數(shù)據(jù)使用小波變換來(lái)壓縮。
14.如權(quán)利要求11所述的方法,其特征是所述數(shù)據(jù)使用離散余弦變換來(lái)壓縮。
15.一種處理異常的計(jì)算機(jī)程序產(chǎn)品,包括
用于在循環(huán)中處理計(jì)算操作的計(jì)算機(jī)代碼;
用于當(dāng)處理計(jì)算操作時(shí)識(shí)別異常的計(jì)算機(jī)代碼;
用于當(dāng)處理計(jì)算操作時(shí)存儲(chǔ)所述異常的計(jì)算機(jī)代碼;和
用于獨(dú)立于所述循環(huán)處理所述異常的計(jì)算機(jī)代碼。
16.一種處理異常的系統(tǒng),包括
至少?gòu)陌ㄒ韵履K的組中選擇的數(shù)據(jù)壓縮模塊變換模塊、量化模塊和熵編碼模塊,所述至少一個(gè)數(shù)據(jù)壓縮模塊適于在循環(huán)中處理計(jì)算操作,當(dāng)處理計(jì)算操作時(shí)識(shí)別異常,當(dāng)處理計(jì)算操作時(shí)存儲(chǔ)所述異常,以及獨(dú)立于所述循環(huán)處理所述異常。
17.一種編碼器,包括可變模數(shù)。
18.如權(quán)利要求17所述的編碼器,其特征是所述模數(shù)反映與壓縮算法相關(guān)聯(lián)的概率分布曲線的陡度。
19.如權(quán)利要求18所述的編碼器,其特征是所述模數(shù)包括概率分布的負(fù)指數(shù)。
20.如權(quán)利要求18所述的編碼器,其特征是所述概率分布與編解碼器相關(guān)聯(lián)。
21.如權(quán)利要求18所述的編碼器,其特征是設(shè)計(jì)所述編解碼器,以使用提供了預(yù)定性能水平的最小計(jì)算復(fù)雜度。
22.如權(quán)利要求17所述的編碼器,其特征是所述模數(shù)取決于一組先前數(shù)據(jù)的上下文。
23.如權(quán)利要求17所述的編碼器,其特征是所述模數(shù)避免了作為運(yùn)行長(zhǎng)度的函數(shù)而增大。
24.如權(quán)利要求23所述的編碼器,其特征是所述運(yùn)行長(zhǎng)度包括在序列中的多個(gè)相同位。
25.如權(quán)利要求17所述的編碼器,其特征是所述編碼器包括熵編碼器。
26.一種解碼器,包括可變模數(shù)。
27.如權(quán)利要求26所述的解碼器,其特征是所述模數(shù)反映與壓縮算法相關(guān)聯(lián)的概率分布曲線的陡度。
28.如權(quán)利要求27所述的解碼器,其特征是所述模數(shù)包括概率分布的負(fù)指數(shù)。
29.如權(quán)利要求27所述的解碼器,其特征是所述概率分布與編解碼器相關(guān)聯(lián)。
30.如權(quán)利要求27所述的解碼器,其特征是設(shè)計(jì)所述編解碼器,以使用提供了預(yù)定性能水平的最小計(jì)算復(fù)雜度。
31.如權(quán)利要求26所述的解碼器,其特征是所述模數(shù)取決于一組先前數(shù)據(jù)的上下文。
32.如權(quán)利要求26所述的解碼器,其特征是所述模數(shù)避免了作為運(yùn)行長(zhǎng)度的函數(shù)而增大。
33.如權(quán)利要求32所述的解碼器,其特征是所述運(yùn)行長(zhǎng)度包括在序列中的多個(gè)相同位。
34.如權(quán)利要求26所述的解碼器,其特征是所述編碼器包括熵編碼器。
35.一種使用包括可變模數(shù)的編解碼器的方法,所述可變模數(shù)反映了與壓縮算法相關(guān)聯(lián)的概率分布曲線的陡度并且不隨運(yùn)行長(zhǎng)度而增大。
36.一種壓縮視頻數(shù)據(jù)的方法,包括
根據(jù)第一預(yù)定的速率來(lái)更新幀的亮度數(shù)據(jù);和
根據(jù)小于第一預(yù)定速率的的第二預(yù)定速率來(lái)更新幀的色度數(shù)據(jù)。
37.如權(quán)利要求36所述的方法,其特征是省略色度數(shù)據(jù)的一個(gè)或多個(gè)頻帶。
38.如權(quán)利要求37所述的方法,其特征是利用濾波器來(lái)省略所述一個(gè)或多個(gè)頻帶。
39.如權(quán)利要求38所述的方法,其特征是所述濾波器包括小波濾波器。
40.如權(quán)利要求37所述的方法,其特征是還包括當(dāng)解壓縮視頻數(shù)據(jù)時(shí),對(duì)所述色度數(shù)據(jù)已省略部分進(jìn)行插值。
41.一種用于壓縮視頻數(shù)據(jù)的計(jì)算機(jī)程序產(chǎn)品,包括
用于根據(jù)第一預(yù)定的速率來(lái)更新幀的亮度數(shù)據(jù)的計(jì)算機(jī)代碼;和
用于根據(jù)小于第一預(yù)定速率的的第二預(yù)定速率來(lái)更新幀的色度數(shù)據(jù)的計(jì)算機(jī)代碼。
42.如權(quán)利要求41所述的計(jì)算機(jī)程序產(chǎn)品,其特征是省略色度數(shù)據(jù)的一個(gè)或多個(gè)頻帶。
43.如權(quán)利要求42所述的計(jì)算機(jī)程序產(chǎn)品,其特征是使用濾波器來(lái)省略所述一個(gè)或多個(gè)頻帶。
44.如權(quán)利要求43所述的計(jì)算機(jī)程序產(chǎn)品,其特征是所述濾波器包括小波濾波器。
45.如權(quán)利要求42所述的計(jì)算機(jī)程序產(chǎn)品,其特征是當(dāng)解壓縮視頻數(shù)據(jù)時(shí),對(duì)所述色度數(shù)據(jù)已省略部分進(jìn)行插值。
46.一種壓縮視頻數(shù)據(jù)的方法,包括
壓縮視頻數(shù)據(jù);
在已壓縮的數(shù)據(jù)中插入暫停信息;和
當(dāng)在回放期間暫停所述視頻數(shù)據(jù)時(shí),使用所述暫停信息。
47.如權(quán)利要求46所述的方法,其特征是所述暫停信息用于提高所回放視頻數(shù)據(jù)的質(zhì)量。
48.如權(quán)利要求47所述的方法,其特征是所述暫停信息包括高分辨率幀。
49.如權(quán)利要求47所述的方法,其特征是所述暫停信息包括能夠用于構(gòu)造高分辨率幀的數(shù)據(jù)。
全文摘要
提出了一種用于處理異常的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品(Fig.12)。提出了另一種包括可變模數(shù)的編碼器和/或解碼器系統(tǒng)和方法。還提出了一種用于壓縮數(shù)據(jù)的系統(tǒng)和方法,由此按照第一預(yù)定速率來(lái)更新幀的亮度數(shù)據(jù),同時(shí)按照小于第一預(yù)定速率的第二預(yù)定速率來(lái)更新幀的色度數(shù)據(jù)。
文檔編號(hào)G06F17/16GK1672147SQ03817750
公開(kāi)日2005年9月21日 申請(qǐng)日期2003年5月28日 優(yōu)先權(quán)日2002年5月28日
發(fā)明者威廉·C·林奇, 克拉西米爾·D·科拉羅夫, 史蒂夫·E·桑德斯 申請(qǐng)人:德羅普萊特科技公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
新化县| 三原县| 靖西县| 嵩明县| 桃源县| 航空| 台江县| 张家界市| 新安县| 丹东市| 谢通门县| 乌拉特前旗| 竹溪县| 宁武县| 措美县| 绥中县| 海林市| 阳高县| 浠水县| 海南省| 黄浦区| 蓝田县| 南安市| 河东区| 杭锦旗| 石柱| 瑞安市| 齐河县| 驻马店市| 河南省| 柏乡县| 都昌县| 南岸区| 辛集市| 望奎县| 响水县| 屏边| 台北县| 会泽县| 建昌县| 辽阳县|