国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      快速聯(lián)合圖像專家組霍夫曼編碼和解碼方法

      文檔序號:7965848閱讀:492來源:國知局
      專利名稱:快速聯(lián)合圖像專家組霍夫曼編碼和解碼方法
      技術(shù)領(lǐng)域
      本發(fā)明一般涉及用于各種不同應用的圖像壓縮,特別是涉及結(jié)合一種以壓縮(packed)格式存儲離散余弦變換(DCT)分組的結(jié)構(gòu),根據(jù)JPEG(聯(lián)合圖像專家組)標準進行霍夫曼熵編解碼。
      背景技術(shù)
      圖像和圖形包含非常大量的數(shù)據(jù),如果數(shù)字化這些數(shù)據(jù)以便傳輸或由數(shù)字數(shù)據(jù)處理器處理,則要有好的保真度就經(jīng)常需要數(shù)百萬個字節(jié)表示該圖像或圖形的各個像素。圖像壓縮的目的在于用較少的數(shù)據(jù)表示圖像,以節(jié)省存儲成本或傳輸時間和費用。通過近似原始圖像而不是通過精確再現(xiàn)可以實現(xiàn)最有效的壓縮。Pennebaker和Mitchell在″JPEG靜止圖象數(shù)據(jù)壓縮標準″中詳細討論了JPEG標準,并由VanNostrand Reinhold于1993年出版,這里將其作為參考,該JPEG標準允許圖象在各種應用之間互換并開發(fā)了在多媒體應用中提供數(shù)字連續(xù)色調(diào)的彩色圖像的能力。
      JPEG主要涉及具有兩維空間的圖像,包含灰度級或彩色信息,不具有時間的相關(guān)性,這是與MPEG(活動圖像專家組)標準的區(qū)別之處。JPEG壓縮可以降低一個數(shù)量級的存儲需求并改進此過程中的系統(tǒng)響應時間。JPEG標準的主要目的在于為給定的數(shù)據(jù)量提供最大的圖像保真度和/或可用傳輸或處理時間,并容納任意程度的數(shù)據(jù)壓縮。經(jīng)常是這種情況,即數(shù)據(jù)被壓縮到二十分之一或更多(傳輸或處理時間降低相當?shù)谋壤?而不會產(chǎn)生一般觀眾能夠察覺的人為痕跡。
      JPEG的的基本構(gòu)件之一是離散余弦變換(DCT)。此變換的一個重要方面是它產(chǎn)生非相關(guān)系數(shù)。解相關(guān)系數(shù)對于壓縮很重要,因為可以獨立地對待每個系數(shù)而不喪失壓縮效率。DCT的另一個重要方面是能夠利用視覺加權(quán)的量化值來量化DCT系數(shù)。因為人類的視覺系統(tǒng)將一圖像分解成一組波形,每個波形具有一特定的空間頻率,所以視覺系統(tǒng)的反應非常依賴空間頻率,因此可以從眼睛能夠看到的圖像結(jié)構(gòu)中除去不能感知的圖像結(jié)構(gòu)。因此DCT提供對此分解的良好近似,以允許截去或省略不會顯著影響觀眾對圖象保真度的感覺的數(shù)據(jù)。
      根據(jù)JPEG標準,原始的單色圖像首先被以任意的分辨率分解成8×8陣列六十四象素的分組,該分辨率假設足夠高而不會產(chǎn)生看得見的圖形失真。(通過將每個分量單獨分解成8×8象素分組來壓縮彩色圖像。)這些技術(shù)和硬件是熟知的,它們可以非常迅速地對此量化圖象數(shù)據(jù)執(zhí)行DCT,生成六十四個DCT系數(shù)。許多圖像的DCT系數(shù)多數(shù)是零(在任何情況下都不會對該圖像作出貢獻)或接近零,當相應于眼睛相對感覺遲鈍的空間頻率時,它們可以被忽略或省略。因為人類的眼睛對很高和很低的空間頻率不是很敏感,作為JPEG標準的一部分,在許多實例中以所謂的Z字型模式提供DCT系數(shù),Z字型模式大致相應于空間頻率的總和沿水平和垂直方向增加,這樣趨向于將對應不很重要的空間頻率的DCT系數(shù)歸到DCT系數(shù)數(shù)據(jù)流的最后,允許它們作為一組來進行有效地壓縮。
      雖然上述的離散余弦變換和編碼可以為實際遇到的多數(shù)圖像提供顯著的數(shù)據(jù)壓縮,但不能保證數(shù)據(jù)量的真正降低,而且壓縮程度不是最佳的,特別是因為表示每個DCT系數(shù)的同等精度要求傳送相同數(shù)目的位(雖然JPEG標準允許DCT值通過在一表中編碼的范圍而量化)。即,DCT編碼形成的壓縮收益大部分體現(xiàn)在增加了處理零和接近零值的DCT系數(shù)的效率,雖然某些壓縮也通過降低精度的量化來實現(xiàn)。相應地,JPEG標準提供被稱為熵編碼的第二階段壓縮和編碼。
      熵編碼的概念通常類似于熱力學中更為熟悉的熵的概念,在熱力學中,熵量化一物理系統(tǒng)中的″無序″量。在信息論領(lǐng)域中,在任意大小和與任何給定量的信息或符號的意義無關(guān)的數(shù)據(jù)集合環(huán)境中,熵是用來對任何給定量信息(例如符號)的內(nèi)容的可預測性的度量。此概念對一給定的字母符號的可實現(xiàn)壓縮量提供可以實現(xiàn)的下限,更主要的是導致這樣一種壓縮方案,即前提是相對較多可預測的數(shù)據(jù)或符號比相對較少可預測的數(shù)據(jù)或符號包含更少的信息,相反的,相對較少可預測的數(shù)據(jù)或符號比相對較多可預測的數(shù)據(jù)或符號包含更多的信息。因此,假設一種用于此目的的適當?shù)拇a,通過對較多可預測的(即在此數(shù)據(jù)體中更常見并包含較少的信息)符號或值分配較少的位可以實現(xiàn)最佳的有效壓縮,雖然要為相對罕見的符號或數(shù)值預留較長的碼。
      實際上,霍夫曼編碼和算術(shù)編碼適合于熵編碼,并且二者都為JPEG標準所采納。JPEG標準的操作區(qū)別在于雖然兩種編碼技術(shù)都要求相應于這些碼的數(shù)值表,但是算術(shù)編碼提供了缺省表,但霍夫曼編碼沒有。但是,如果不過分的折衷圖象保真度來降低計算常規(guī)霍夫曼表的計算開銷,某些特定的霍夫曼表經(jīng)常不加選擇地被使用,雖然在JPEG標準下可以自由地指定這些表以便在重建時獲得最大的編碼效率和圖像保真度,其中許多是缺省的性質(zhì)。
      應當理解的是雖然如果編碼或調(diào)節(jié)表合理地適合于該圖像,熵編碼,特別是利用霍夫曼編碼的熵編碼保證了非常主要的數(shù)據(jù)壓縮的程度,但編碼自身計算量非常大,因為它是基于統(tǒng)計的,并且需要關(guān)于大量的圖像值或表示圖像的值,例如DCT系數(shù)的統(tǒng)計信息的集合。相反,使用體現(xiàn)不表示正被編碼的圖像的概率的表可能會導致擴展而不是壓縮,如果被編碼的圖像需要編碼從中形成這些表的圖象中相對罕見的許多值,即使這種情況很少遇見。
      為此某些霍夫曼表實際上已經(jīng)成為標準使用,即使不會實現(xiàn)所使用壓縮程度的最佳壓縮和/或最佳保真度。相反,霍夫曼編碼的壓縮效率通常可以顯著增加并且可以通過相應于感興趣圖像的定制霍夫曼表在給定數(shù)據(jù)位數(shù)內(nèi)最佳的保持圖像保真度,但是這只能用大的編碼計算負荷來實現(xiàn)。
      當所編碼的任何特定值的發(fā)生比例超過50%時,由于將霍夫曼碼指定給各個編碼值技術(shù)的多級性質(zhì)和至少一個位必須用于表示最經(jīng)常出現(xiàn)和最可預測的數(shù)值的事實,即使包含在其中的信息可以理想地調(diào)整得更少,也會遇到霍夫曼編碼特性的另一種效率低下。例如,單個值的發(fā)生比例上升到75%,霍夫曼編碼的效率下降86%。實際上,絕大多數(shù)DCT系數(shù)是(或量化成)零,因此在霍夫曼編碼DCT系數(shù)或DCT系數(shù)差值中會時常遇到大量的效率低下。對于AC系數(shù),JPEG委員會通過將零值系數(shù)游程集合在一起,而且不編碼單獨為零值的系數(shù)來解決這個問題。因此一霍夫曼符號出現(xiàn)超過一半時間的可能性可以極大地被降低。
      霍夫曼解碼還需要大量的計算負荷,因為壓縮效率主要從可變長度碼中得出,可變長度碼需要另外的處理來檢測各個數(shù)值或符號的結(jié)束點。另外,通過使用編碼表可以實現(xiàn)此處理,編碼表必須與熵編碼圖象數(shù)據(jù)一起傳送而且可以隨著每個圖象而改變。由于霍夫曼碼長度可變以根據(jù)數(shù)據(jù)的可預測性或包含在特定符號或值的數(shù)據(jù)量來分配位數(shù)的事實,導致訪問表中數(shù)據(jù)的復雜性尖銳化。為了增加響應速率,已經(jīng)執(zhí)行了霍夫曼表中能被用于解碼的查詢表。因此,每一碼字必須經(jīng)常訪問至少兩個字節(jié)的表數(shù)據(jù)。
      而且,因為允許十六位的霍夫曼碼長度,現(xiàn)有技術(shù)的解碼方法將訪問具有用于符號值的216個入口和用于碼長的216個入口的霍夫曼表。每次霍夫曼表被指定或改變時,必須計算這些入口。直到四個DC和四個AC表被用于解碼和交織基線的四個分量圖像。對于具有小的芯片超高速緩沖存儲器或RAM的硬件來說,這種大表將會降低性能,因為每個超高速緩沖存儲器的失配(miss)或RAM(隨機采取存儲)訪問都需要額外的處理周期。

      發(fā)明內(nèi)容
      因此本發(fā)明的目的在于提供一種霍夫曼編碼和解碼技術(shù),它可以用少得多的時間和簡化的處理資源和硬件來實現(xiàn)。
      本發(fā)明的另一個目的在于提供一種霍夫曼編碼和解碼技術(shù),它通過使用壓縮的中間數(shù)據(jù)格式來增強。
      為了實現(xiàn)本發(fā)明的這些和其它目的,提供一種霍夫曼編碼符號的方法,該方法包括步驟對于表中第一次出現(xiàn)的給定長度的碼定義一籽數(shù)值(Seed value),存儲一碼字的長度,當所述數(shù)目和所述碼字的位數(shù)小于或等于預定位數(shù)時以第一種格式存儲該長度和碼字,當該數(shù)目和圖象數(shù)據(jù)包括大于預定位數(shù)的多個位數(shù)時以第二種格式存儲籽數(shù)的標引、位移(offset)和碼字。
      根據(jù)本發(fā)明的另一個方面,提供一種霍夫曼解碼壓縮數(shù)據(jù)的方法,該方法包括步驟用多個測試標準的每一個測試一數(shù)據(jù)流的位來確定一個有效霍夫曼碼的長度,將相應于該長度的多個位移的其中一個與該有效霍夫曼碼相組合而形成一標引,和利用該標引訪問霍夫曼表中的一個符號值。


      從下面參照附圖對本發(fā)明優(yōu)選實施例的詳細描述將更好的理解前述和其它的目的、狀況和優(yōu)點,其中圖1是根據(jù)JPEG標準的說明霍夫曼表規(guī)范語法的圖,圖1A描述AC DCT系數(shù)或DC DCT系數(shù)差值的霍夫曼編碼,圖2描述根據(jù)JPEG標準示范性的說明霍夫曼表規(guī)范和熵編碼圖象數(shù)據(jù),圖3和4分別是適于亮度和色度DC DCT系數(shù)差值的典型的霍夫曼碼表,圖5和5A是可用于實現(xiàn)本發(fā)明的另一個硬件實施例的示意表示圖,圖6是可用于實現(xiàn)本發(fā)明的硬件實施例的一些其它細節(jié)的示意表示圖,圖7是根據(jù)本發(fā)明計算比較值和霍夫曼表指針數(shù)據(jù)的優(yōu)選形式的流程圖,圖8是表示本發(fā)明解碼包括霍夫曼編碼R/S值的壓縮數(shù)據(jù)的方法的流程圖,圖9A、9B和9C是描述圖8過程的優(yōu)選特征的流程圖,圖10說明可以迅速執(zhí)行霍夫曼編碼的壓縮的中間數(shù)據(jù)格式,圖11是根據(jù)本發(fā)明編碼器的方框圖,圖12說明編碼器表的初始值,和圖13說明圖11一個部分的優(yōu)選實現(xiàn)方式。
      具體實施例方式
      現(xiàn)在參照附圖,特別是參照圖1,圖1表示了根據(jù)JPEG標準的霍夫曼表的規(guī)范語法,該語法包含在上述參考的Pennebaker等的出版物的第393頁上。示出的語法稱為用于定義一個或多個霍夫曼編碼表的標記段,此后這些霍夫曼編碼表用于執(zhí)行霍夫曼熵編碼或解碼。不論何時要改變新的參數(shù)或表值都使用相同的語法。標記段總是包含整數(shù)個字節(jié)(有時通過在該段的最后增加給定的邏輯值位而實現(xiàn)),用于碼分組的幀開始(SOF)和掃描開始(SOS)的標記段通常稱為首部。
      根據(jù)JPEG標準的標記段,如圖1所示總是以兩個字節(jié)代碼開始,首先是字節(jié)對齊的十六進制″FF″字節(jié),隨后是規(guī)定該標記功能的非零字節(jié),例如″FFDB″表示″定義量化表″(DQT)或″FFC4″表示″定義霍夫曼表″(DHT)。具體到用于″定義霍夫曼表″函數(shù),后面的兩個字節(jié)規(guī)定參數(shù)字段的長度,在標記段中記為Lh。下一個字節(jié)的前四位中的一位Tc規(guī)定緊接著下一個表的類型為DC或AC(″0″或″1″),之后的四位Th規(guī)定該表的名稱。每個DC和AC表可以允許直到四個表,標記段可用于定義或重新定義其中任意或所有的表。
      接下來的十六個字節(jié)規(guī)定每個位長的碼數(shù),Li,它將包含在下一個表中以對應于JPEG標準所允許的最大位長(否則就是任意的)。作為一種符號約定,一位碼的數(shù)目是L1,十六位碼的數(shù)目是L16。不會表示所有的位長,特別是如果圖像精度是八位,在量化生成至多十一位系數(shù)之后,所有圖象數(shù)據(jù)中未表示的碼長將編碼為十六進制的″00″。下面的字節(jié)V1,1到V16,L16是對應于每個霍夫曼編碼的實際值,順序是各自出現(xiàn)的頻率/概率(包括提供一個以上給定長度碼的情況)。
      如前所述,諸如霍夫曼編碼之類的熵編碼對出現(xiàn)頻率或概率越大的數(shù)值分配的位越少,并且許多DCT系數(shù)是零。因此,JPEG標準提供八個霍夫曼編碼表,每個表具有256個入口(并確保總是定義了特殊霍夫曼碼與特殊DCT系數(shù)之間的變換)。為了加快該過程,查詢表也可以提供到霍夫曼表Vi,j字段的標引,這可以減少查找一特定Vi,j值的操作次數(shù),但需要額外的存儲資源并為開發(fā)更多的表入口產(chǎn)生額外的計算負荷,如上面所提到的。
      現(xiàn)在將結(jié)合圖2示范性的霍夫曼表解釋標記段語法的應用。簡言之,應當理解壓縮過程中的量化和離散余弦變換(DCT)的結(jié)果是光柵掃描順序的一系列DCT系數(shù)。通過以Z字型順序訪問和進一步壓縮(和包括熵編碼的其他變換處理的加強)零值系數(shù),零值的系數(shù)被大致分組,正如在上面所引入的和同時提交的相關(guān)申請所公開的,根據(jù)游程和尺寸(R/S)數(shù)據(jù)壓縮數(shù)據(jù)來得到進一步的壓縮。游程(run)是AC DCT系數(shù)的連續(xù)零值串的長度,尺寸是說明一非零DCT系數(shù)所必需的位數(shù)。游程或R值編碼為字節(jié)中較高有效位的四位,尺寸或S值表示同一R/S字節(jié)中較低有效位的四位。
      可以看出DC DCT系數(shù)差和AC DCT系數(shù)值并沒有被R/S值所完全規(guī)定。但是,根據(jù)JPEG標準只編碼R/S值并將正AC DCT系數(shù)或DC DCT差值的實際位和根據(jù)如圖1A所示用于負AC DCT系數(shù)和DC DCT系數(shù)差值的適當規(guī)則改變的位級聯(lián)或附加到每個碼,足以包含所有的原始DCT系數(shù)信息,同時提供非常可觀的數(shù)據(jù)壓縮,這將在下面討論,同時所有的細節(jié)都符合JPEG標準。
      為了清楚,圖2表示成右邊對齊的十六列,因此兩個字節(jié)的標記段伸到左邊。每個字節(jié)由表示其兩個單獨的四位的兩個十六進制編碼的數(shù)字表示。
      圖2的第一個標記是表示圖像開始(SOI)的“FFD8”。第二個標記是“FFDB”,表示量化表的規(guī)定。應當理解,量化的DCT系數(shù)值不需要表示固定尺寸值的一個范圍,但是每個值可以表示尺寸不同于其他值的一個值的范圍。此表是以對理解本發(fā)明并不重要的方式從分析原始圖像的角度得出的,并將隨后在重建圖像期間用于“解量化”DCT系數(shù)。
      第三個標記是“FFC4”,表示規(guī)定一個或多個霍夫曼表的標記段的開始。下面的兩個字節(jié)“01A2”是418的十六進制碼,它是下一個表示掃描開始(SOS)的標記“FFDA”之前的字節(jié)數(shù),其中在分量數(shù)目的開始規(guī)定參數(shù)列表的長度(例如R、G或B,灰度、亮度/色度等,之后是示意表示成“...”的壓縮數(shù)據(jù))。
      下一個字節(jié)包含兩個四位,表示成Tc和Th并將該表定義為DC表0,因為兩個四位都是零。因為這些都是DC表并且每個分組只提供一個DC DCT系數(shù),所以沒有游程長度并且每個字節(jié)的前四位是零,同時后四位規(guī)定每個尺寸的多余字節(jié)數(shù)(它是緊鄰壓縮數(shù)據(jù)流的多余字節(jié)數(shù))。特定的碼數(shù)對應于圖3所示的霍夫曼碼,只有12個,包括3位長的5個碼。這12個值在后面12個字節(jié)中規(guī)定以結(jié)束DC表0。
      此處,只用了29個字節(jié)(1個用于Tc、Th,16個用于Li,12個用于Vi,j),這比緊鄰該標記之后規(guī)定的參數(shù)長度的418個字節(jié)少得多。因此下一個字節(jié),在這種情況下即AC表0的兩個四位定義在該標記段規(guī)定的第二霍夫曼表的類別和名稱,因為Tc和Th值分別是1和0。接下來的16個字節(jié)是Li值,表示每個長度的碼數(shù),再接下來的字節(jié)是Vi,j符號值,數(shù)目等于在Li字節(jié)枚舉的碼的總和,最大值是64,Vi,j符號值用于為完成AC表0出現(xiàn)頻率下降順序的對應霍夫曼碼。
      418的其余部分包括兩個表,DC表1和AC表1,以上述相同的格式描述和編碼。DC表1的霍夫曼碼在圖4用表格示出。
      比較圖3和圖4,可以看出霍夫曼碼的多個特點。首先,如上所述,霍夫曼碼長度可變,“類別”是位數(shù)或包含在上面討論的和上述所結(jié)合的申請中的R/S字節(jié)中的尺寸或S值,并在例如圖2的霍夫曼表中紀錄為Vi,j值。第二,不允許位全部為“1”值的碼。第三,允許給定長度的多個碼,這些碼的數(shù)目將小于該長度的碼表示的值的數(shù)目。第四,對理解本發(fā)明最為重要的一點是,JPEG霍夫曼碼被構(gòu)成表示多級可被識別的值。在不允許任何碼與長度更長的其他碼的前綴相同的特點中,此約束或特性得以強調(diào)。
      從前述的內(nèi)容中可以回顧到霍夫曼表的結(jié)構(gòu)允許特殊的霍夫曼碼和分別分配給它用來重建的R/S值的對應關(guān)系。但是,正如上面所提到的,這種重建既復雜又耗時,而且使用查詢表來標引霍夫曼表更普遍。由于霍夫曼碼的長度可變和還必須識別對應一有效霍夫曼碼的連續(xù)位數(shù)(16或更少)的事實,此過程變得復雜。
      識別一有效霍夫曼碼和標引到霍夫曼表中的已知方法是在壓縮數(shù)據(jù)中取16個(相鄰)連續(xù)位,和查詢(在有216入口的表中)該碼中的位數(shù),在另一個表(相似尺寸)中,查詢相應于該碼的R/S值。但是,這對存儲空間而言是非常浪費的,同時引起大量的存儲器負荷。例如,如果該碼是一位碼(在所檢查的16個位的開始),則每個表的一半對于位數(shù)會是“1”,并且對于該符號是同一個R/S值字節(jié)。其他已知的方法利用多個表并需要相應的更多次數(shù)的查詢操作。
      本發(fā)明利用了霍夫曼碼的特點,即每個碼都可以看成用于任何給定的二進制位數(shù)的數(shù)值,并且可以計算對于給定的位數(shù)來說太大的數(shù)值。如果n位的壓縮數(shù)據(jù)邏輯上大于或等于該最大值(此后為max(n),其中n是位數(shù)),則另外一個位必須被檢查并與max(n+1)進行比較。本發(fā)明還利用了一個事實,即就硬件結(jié)構(gòu)來說,必須并行執(zhí)行這些測試,因為所有的測試都必須通過(例如,對于一有效霍夫曼碼來說邏輯值太大)直到認為是正確的位數(shù),對更多的位數(shù)進行的其余測試都將失敗。
      例如,如圖5所示,可以利用16個比較器并行執(zhí)行該測試(圖5表示成表達式C
      ≥max(n)),每個比較器有一到十六個輸入連接到諸如筒形移位器之類的C-寄存器的連續(xù)各級。這些比較器應當是數(shù)字的并構(gòu)成邏輯門陣列。
      也就是說,第一次測試比較C-寄存器中當前最高有效位(MSB(C
      ))與一位值max(1)。如果沒有一位碼,max(1)=0。如果有一位碼(這個碼必須是“0”,因為全“1”碼是不允許的),max(1)=1。對于有幾個碼的第一個Ln來說,將是一個非零的max(n),因為構(gòu)造成max(n)的max(n)值是n位的第一個碼,它是一個更長碼字的前綴(例如,max(2)=“10”,它是圖3的類別5的前綴)。
      圖5A表示另一個實施例,其中越來越多的壓縮數(shù)據(jù)位與max(n)值進行比較。n的值是確定成比較失敗的第一個值(生成0)。
      圖6示出了與C-寄存器的n個最高有效位相級聯(lián)的作為算術(shù)邏輯單元(ALU)的一個輸入的先行零。另一個輸入是預先計算的偏移(n)。在加法運算后,低階的結(jié)果是到查詢表(LUT)/霍夫曼表的標引(用于AC編碼的8個位中用于DC差值的四個位),它包含通過規(guī)定的霍夫曼表(DHT)的標記段的Vi,j符號值。該表的輸出是R/S字節(jié)。
      圖7表示用于構(gòu)造max(n)值的流程圖。該方法還按照圖2的DHT標記段的規(guī)定將位移構(gòu)造成R/S字節(jié),其中offset(0)是R/S列第一字節(jié)的標引(例如0)或到該列表的指針。從步驟71初始化max(n)和offset(n)開始,在步驟72中將i、max(0)和offset(0)設置成0,i被遞增,并且位移被設置成最后的位移減max(i-1)。max(i)的值作為Li+max(i-1)計算。因此直到Li非零,offset(n)和max(n)將保持為零。因此圖5或5A的前面的比較C
      因為前面一位或多位的邏輯/數(shù)值總是大于或等于零而總是通過,直到遇到非零的Li(表示至少存在該長度的一個碼)為止。當遇到非零(即“1”)的Li時,將它加到零將max(i)設置成第一碼,即更大碼的前綴,如步驟73所示。此過程在i<16時重復,以便為所有的Ln產(chǎn)生所有可能的max(n)。因此,例如,如果有5個3位碼(即0,1、2、3和4),max(3)將設置成5,而且值5(二進制“101”)是一個可能的更長碼的一部分,盡管如果沒有更多碼的話,這個碼不一定必須使用。因此max(i)指向i位的第一個碼,這個碼太大(即,這個碼的值大于i位的最大碼)。如果L(i+1)不為空(即,有一個碼大出1位)則這個碼值是兩倍的max(i)。i+1碼在2*max(i)開始,隨后被編號,并且max(i+1)是該序列之后的下一個數(shù)(即,2*max(i)+L(i+1))。如果L(i+1)=0,則max(i+1)等于2*max(i),并且在下一個非零Li之前可能有多個這樣的加倍。
      更概括的說,根據(jù)Li,max(i)和offset(i)如下進行計算(i=0(max(0)=0(offset(0)=0(i=1(max(1)=Li+2*0(offset(1)=0-0=0(i=2(max(2)=L2+2*L1(offset(2)=0-L1offset(i)用于確定對應于該碼的解碼值位于R/S值的列表的什么位置。即,如果i位的霍夫曼碼加到offset(i),得到的結(jié)果值將是在可以找到相應R/S字節(jié)的霍夫曼表中的地址。在本發(fā)明的上下文中提供了幾個非常重要的優(yōu)點。具體來說,多個查詢表的功能,每個具有216個入口的查詢表將被限制為16個入口的max(n)和offset(n)值表替換,并且可以非??焖俚挠嬎愫透咝Т鎯?。因為此表是單一的并且很小,因此可以非常迅速的檢索其中的數(shù)據(jù)以提供進入霍夫曼表的直接索引,來得到用于計算DCT系數(shù)和系數(shù)差值數(shù)據(jù)的R/S數(shù)據(jù),這些數(shù)據(jù)與霍夫曼碼一起包含在JPEG標準語法的數(shù)據(jù)流中(這可以用于其他的處理技術(shù)和其他類型的數(shù)據(jù))。
      概括的說,壓縮數(shù)據(jù)的解碼在圖8中說明,它的優(yōu)選特征將在下面結(jié)合圖9討論。當該過程在步驟81開始時,被解碼的AC系數(shù)的數(shù)目k初始化為零,隨后進入處理每個非零AC系數(shù)的循環(huán)。16位的壓縮碼串裝載到C-寄存器(例如圖5或5A),通過并行或順序比較而確定一有效霍夫曼碼的位數(shù)n,如上述和步驟83所述。一旦知道n,相應的offset(n)也就知道了,計算(例如圖6)到霍夫曼表地址的指針,c
      +offset(n),通過將R/S值向右移四位從霍夫曼表中的R/S字節(jié)提取S值,如步驟84所示。被壓縮數(shù)據(jù)然后(向左)移n個位(相應于霍夫曼碼的長度)以提供該數(shù)據(jù)流中的AC系數(shù)值,如步驟85所述。
      為了以圖10所示的格式表示該數(shù)據(jù),通過使R/S值的位與十六進制0F字節(jié)相“與”可以從R/S值中去掉R,R/S字節(jié)被存儲,并且S個多余位存儲成兩個另外的字節(jié),壓縮數(shù)據(jù)左移S個位,以便在C-寄存器的開始呈現(xiàn)下一個霍夫曼碼,如步驟86所示。然后將k值遞增R+1來解碼下一個非零AC系數(shù)。為了完成壓縮的數(shù)據(jù)格式,在步驟88測試R/S值,如果為零,則標明并存儲分組結(jié)束(EOB)和長度字節(jié),如步驟90所示,如果不為零,則在步驟89測試k的增加值,如果等于63,即一個分組中AC系數(shù)的最大值,則存儲為零值的R/S值來表示已經(jīng)存儲了EOB和長度字節(jié)。如果k小于63,則該過程循環(huán)到步驟83來進一步處理AC系數(shù)。
      圖8過程的理想特性在圖9中示出,本發(fā)明的此項特性根據(jù)例如圖5或5A的硬件結(jié)構(gòu),將max(n)值壓縮成5個xC_max&lt;0…4&gt;32位字,然后在寄存器中存儲和操作,以避免需要訪問多個存儲器來得到用于比較的值。
      max(n)值被緊密壓縮成下面的字xC_max&lt;0&gt;max(1),max(2),max(3),max(4),max(5),max(6),max(7),0000=32位;
      xC_max&lt;1&gt;=max(8),max(9),max(10),00000=32位;xC_max&lt;2&gt;=max(11),max(12),max(10),000000000=32位;xC_max&lt;3&gt;=max(13),max(14),00000=32位;和xC_max&lt;4&gt;=max(15),max(16),0=32位。
      這些值在執(zhí)行圖8的步驟83中如圖9所示進行操作。具體來說,為了確定霍夫曼碼中的位數(shù)n,n值初始化為1,并且寄存器或變量(Comp)裝到壓縮數(shù)據(jù)的下面32位。Comp與xC_max&lt;0&gt;最高有效位進行邏輯比較。如果它邏輯大于或等于該位,則該霍夫曼碼不是1位,n遞增到2。比較順序?qū)⑾乱粋€max(n)值移到寄存器的最高有效位,并且將另一個位與comp值比較,對于每一次訪問遞增n。當比較結(jié)果Comp不再大于或等于該位時,則找到位數(shù)并且完成比較順序。一些RISC(精簡指令系統(tǒng)計算機)結(jié)構(gòu)有一個拷貝到寄存器,屏蔽和移位指令的周期,假設n,comp和xC_max值在寄存器中,則需要三個周期確定n是否需要更大,和不需要存儲訪問。因此,比較測試操作可以非常快的執(zhí)行,特別是因為較短的霍夫曼碼比較長的碼出現(xiàn)的更頻繁。
      因此,由上述根據(jù)本發(fā)明的解碼器和解碼過程的說明,可以看出在根據(jù)JPEG標準重建壓縮的圖像數(shù)據(jù)中,能顯著增加速度和響應,基于同樣的理由,大量降低了數(shù)據(jù)處理硬件和/或軟件要求。在結(jié)合上述引用的同時提交的申請中所公開的壓縮數(shù)據(jù)格式的編碼處理中也提供了顯著的優(yōu)點。其中公開的中間數(shù)據(jù)格式在圖10中示出。
      圖11表示將壓縮的DCT分組編碼成熵編碼數(shù)據(jù)的流程圖。首先在步驟1001中編碼DC系數(shù),然后進入循環(huán)1002。每執(zhí)行一次循環(huán)就在步驟1003中編碼R/S字節(jié),根據(jù)S值在步驟1004中編碼額外的位,并在步驟1005中存儲兩者。如果在步驟中1006發(fā)現(xiàn)EOB碼,則該過程出現(xiàn)分支(對于當前方框),在步驟1007中測試k以確定k是否等于63。如果是,則過程結(jié)束,因為k=63表示可以提供的最大數(shù)目的值和不需要單獨編碼的EOB符號。如果k小于63,則在步驟1008中編碼EOB和在步驟1009中存儲以結(jié)束此過程。應當注意每個入口已經(jīng)大致處于霍夫曼編碼數(shù)據(jù)所需的形式,該過程可以用最快的速度輪流進行每個R/S和額外位對的編碼直至達到EOB標記。
      在編碼過程中,R/S字節(jié)必須轉(zhuǎn)換成霍夫曼碼。圖10的壓縮數(shù)據(jù)格式特別有利于收集統(tǒng)計數(shù)據(jù),由此霍夫曼碼分配給R/S值。即,一次通過數(shù)據(jù)分組將允許對每個R/S值的出現(xiàn)次數(shù)和分配要傳送的霍夫曼碼和Li值的賦值計數(shù)。在第二次通過該數(shù)據(jù)之前,所用的實際R/S值匯集用于傳輸,因為Vi,j符號值作為圖1格式的一部分傳輸。因為每個霍夫曼碼長度內(nèi)的類別,n可以任意指定,而不是存儲max(n),定義seed(n)值用于長度n的第一霍夫曼碼,它在數(shù)值上等于2*max(n-1)。
      圖12是初始化H_code、H_offset和H_seed表的流程圖。開始的籽數(shù)(即,對于給定數(shù)目的位數(shù)值最小的第一碼字)初始化為零。該碼字中的位數(shù)(即,碼字的長度)初始化為零。
      之后,只要i小于16,i就遞增1,籽數(shù)加倍并存儲在H_seed(i)中。該碼設置為籽數(shù),然后籽數(shù)加上多個i位碼,并且j初始化為0。
      只要j小于碼數(shù)Li,R/S設置成定義霍夫曼表(DHT)標記段的下一個Vi,j符號值。如果該碼中的位數(shù)小于6,位數(shù)和該碼壓縮成H_code(RS),這個字節(jié)中的3個最高有效位設置成該碼中的位數(shù),低階的5個位設置成該碼。如果i大于5,則H_code(RS)設置成位數(shù)。然后H_offset(RS)設置成j,因為這是i位碼的第j+1個碼。對于兩個路徑,j和碼都遞增。
      對于軟件實現(xiàn),H_seed表入口可能作為至少16個位的整數(shù)來實現(xiàn),因為最長的籽數(shù)是16位。對于硬件,第n個入口僅需要是n個位,因為它是n位碼的籽數(shù)。為了簡化圖12,H_seed表初始化為17個入口(0-16)。圖13所示的流程圖只可以使用第6到第16個入口。另外,硬件實施例可以利用此優(yōu)點來減少可裝載寄存器的數(shù)目。
      每個DC和AC霍夫曼表都需要一組H_seed、H_code和H_offset表。幸運的是,對于這些基線的實現(xiàn)方式,DC H_code和H_offset表只需要12個入口,因為R=O和S的最大值是11。對于更通常的實現(xiàn)方式,S的最大值是16,使得這些表有最多17個入口。
      為了簡單,H_code和H_offset表每個可能具有256個入口,因為可以使用大多數(shù)的R/S字節(jié)。這些表中的入口最多是一個字節(jié)。因此,不需要16位的碼字入口加上更多的位來標明碼字中的位數(shù),一個小H_seed表用于更長的碼字,而且只需要多余的一個字節(jié)計算該尺寸的最終碼字。所有的短碼(即,小于5位)都包含在H_code字節(jié)中。因為越頻繁的符號具有越短的碼,對存儲器的單個字節(jié)訪問對包含最通常的編碼符號所需的所有內(nèi)容。
      圖13提供圖11的方框1003中的編碼R/S的其他細節(jié)。臨時的變量或寄存器tem設置成H_code(RS)的內(nèi)容。n值設置成該字節(jié)的3個最高有效位。如果n是零,則n設置成tem并且通過H_seed(n)與H_offset(RS)相加產(chǎn)生該碼。否則,碼設置成tem的低5位。壓縮數(shù)據(jù)左移n位,并且該碼放入該n個低階位。Comp如像連續(xù)的筒形移位器一樣處理,并且輸出32位字的過程為本領(lǐng)域技術(shù)人員所熟知。
      在現(xiàn)有技術(shù)中,n和直到16位的位模式被存儲直到256個R/S符號。但根據(jù)本發(fā)明,當n和該碼字存儲于總共8個位或更少時,它們存儲在一個字節(jié)中。這允許大幅度的縮短霍夫曼表并且特別有利,因為遇到的大多數(shù)碼都短到適用于該格式。由該字節(jié)的3個MSB位置的非零值表示使用此格式。
      對于所有的更長位模式,僅一個長度指示被存儲為S,高階四位設置成0000以表示不同的格式。對于這些更長的碼,長度用作對籽數(shù)的標引(即,一特定位長的第一碼值)。然后從查詢表中可以確定響應的位移(這適合一個字節(jié),因為最大位移為255),該位移加上籽數(shù)來生成碼值。在編碼和存儲R/S值之后,編碼額外的S位,最好通過移位使圖10中間數(shù)據(jù)格式的每個AC系數(shù)值的兩個字節(jié)長度可變。
      從上面可以看出本發(fā)明使編碼的數(shù)據(jù)處理效率提高,極大的提高了計算和標引霍夫曼表的表存儲效率。這些優(yōu)點是以完全符合JPEG標準的方式產(chǎn)生的,并應用于霍夫曼編碼的所有應用。
      雖然本發(fā)明是從JPEG標準的單個優(yōu)選實施例描述的,但本領(lǐng)域技術(shù)人員可以理解本發(fā)明可以在所附權(quán)利要求書的精神和范圍內(nèi)進行改進來實現(xiàn)。例如這些快速編碼和解碼方法應用于從碼長為上升順序的碼數(shù)構(gòu)造的任何霍夫曼表。另外,本領(lǐng)域技術(shù)人員可以從上面本發(fā)明的描述中將上述的技術(shù)用于以下降順序構(gòu)造的霍夫曼表。
      權(quán)利要求
      1.一種霍夫曼編碼符號的方法,包括步驟為表中的給定長度的碼第一次出現(xiàn)定義籽數(shù)值;存儲碼字的長度;當所述長度和所述碼字的位數(shù)小于或等于預定位數(shù)時以第一種格式存儲所述長度和所述碼字;和當所述長度和所述碼字包括大于所述預定位數(shù)的位數(shù)時以第二種格式存儲到所述籽數(shù)的標引、位移和所述碼字。
      2.如權(quán)利要求1所述的方法,其特征在于所述符號是JPEG(聯(lián)合圖像專家組)R/S字節(jié)。
      3.如權(quán)利要求1所述的方法,其特征在于所述碼字表示壓縮圖像數(shù)據(jù)。
      4.如權(quán)利要求3所述的方法,其特征在于所述壓縮圖像數(shù)據(jù)是JPEG壓縮圖像數(shù)據(jù)。
      5.一種霍夫曼解碼壓縮數(shù)據(jù)的方法,包括步驟用多個測試標準的每一個測試數(shù)據(jù)流的位,確定一有效霍夫曼碼的長度;組合對應于所述長度的多個位移的一個與所述有效霍夫曼碼來形成標引;和用所述標引訪問霍夫曼表中的符號值。
      6.如權(quán)利要求5所述的方法,進一步包括步驟計算所述測試標準和所述多個霍夫曼表數(shù)據(jù)的位移。
      7.如權(quán)利要求5所述的方法,其特征在于所述壓縮數(shù)據(jù)是壓縮圖像數(shù)據(jù)。
      8.如權(quán)利要求7所述的方法,其特征在于所述壓縮圖像數(shù)據(jù)是JPEG壓縮圖像數(shù)據(jù)。
      全文摘要
      通過利用依賴碼長的兩個不同的表格式來簡化霍夫曼編碼,特別是簡化壓縮數(shù)據(jù)格式的霍夫曼編碼?;舴蚵硪灿纱藴p小了尺寸。通過測試壓縮的數(shù)據(jù)流中的有效霍夫曼碼的長度和利用對應于一個測試標準的位移提供霍夫曼表符號值的直接標引來減少解碼的執(zhí)行次數(shù),同時極大的減小用于此目的的查詢表的尺寸。
      文檔編號H04N1/419GK1359196SQ0114362
      公開日2002年7月17日 申請日期2001年12月14日 優(yōu)先權(quán)日2000年12月15日
      發(fā)明者瓊·L·米切爾, 阿爾伯特·N·卡齊斯, 尼爾·M·利德 申請人:國際商業(yè)機器公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1