專利名稱:具有可變子頻帶處理的壓縮比控制系統和方法
技術領域:
本發明涉及數據壓縮,更具體地,涉及控制壓縮輸出的位速率。
背景技術:
直接數字化的靜態圖像和視頻需要許多“位”。因此,通常為了存儲、傳輸、和其它應用而壓縮圖像和視頻。大多數的圖像和視頻壓縮器共享一個具有各種變化的基本結構。如圖1所示,該基本結構包括三個級變換級、量化級、以及熵編碼級。
視頻“編解碼器”(壓縮器/解壓器)用于通過在圖像質量、處理器要求(即,成本/功率消耗)、和壓縮比率(即,結果數據速率)之間進行平衡來降低數據通訊流所需的數據速率。當前可用的壓縮方法提供了不同的折衷(trade-offs)范圍,并產生了多個編解碼方案,其中,每個方案被最優化以滿足特定應用的需要。
視頻壓縮器中變換級的目的在于收集源圖片的能量(energy)或信息以通過利用圖片或序列內局部相似和圖案來將其轉換為最大可能的壓縮形式。壓縮器被設計為在“典型”輸入上很好地工作,而忽略掉壓縮“隨機的”或“不合理的”輸入對其造成的故障。
諸如MPEG-2的許多圖像壓縮和視頻壓縮方法使用離散余弦變換(DCT),作為變換級。
諸如MPEG-4結構的一些較新的圖像壓縮和視頻壓縮方法使用各種小波變換,作為變換級。
小波變換包括以一維或多于一維的形式重復應用小波濾波器對到數據集。對于圖像壓縮,可以使用2D小波變換(水平和垂直)。對于視頻數據流,可以使用3D小波變換(水平、垂直、和時間)。
現有技術圖2示出了當前可用的各種壓縮算法中的折衷實例100。如圖所示,這種壓縮算法包括基于小波的編解碼器102和基于DCT的編解碼器104,它們包括不同的MPEG視頻分配方案。
與基于DCT的編解碼器算法不同,2D和3D小波因其賞心悅目的圖像質量和靈活的壓縮比被高度評價,促使JPEG委員會采用小波算法作為其JPEG2000靜態圖像標準。不幸地是,相對于DCT的可選方案,大多數的小波實施使用非常復雜的算法,需要很好的處理能力。另外,小波對于時間壓縮提出了特別地挑戰,使得3D小波尤其困難。
由于這些原因,相對于諸如MPEG的高容量工業標準編解碼器,小波沒有提供成本競爭性的優勢,因此,僅在小型應用中被采用。因此需要一種商業上可行的3D小波實施,其針對三個主要市場階段的低功耗和低成本進行最優化。
例如,小型攝像機越來越普及,并且數字化處理其信號的優勢是明顯的。例如,一些國家中蜂窩電話市場的最快發展階段是具有圖像和視頻片斷功能的電話階段。大多數數字靜態相機具有視頻片斷功能。在移動無線手機市場,這些靜態圖片和視頻短片的傳輸需要更大的裝置電池容量。現有的視頻編碼標準和數字信號處理器給電池帶來更大壓力。
另一個新的應用是個人視頻記錄器(PVR),其允許觀眾暫停直播TV和定時轉換節目。這些裝置使用數字硬盤存儲器來記錄視頻,并要求對來自電纜的模擬視頻進行視頻壓縮。為了提供如畫中畫和邊看邊錄的功能,這些單元需要多個視頻壓縮編碼器。
另一個正在發展的應用領域是用于監視和安全視頻的數字視頻記錄器(DVR)。待存儲的輸入視頻的每個信道也都需要壓縮編碼。為了利用方便、靈活的數字網絡傳輸結構,經常在攝像機內使視頻數字化。即使具有較舊的復雜記錄器結構,也使用多信道壓縮編碼器。
當然,大量的其它市場可從對低功耗和低成本最優化的商業上可行的壓縮方案中獲利。
時間壓縮視頻壓縮方法通常比分別壓縮視頻序列的每個圖像做得更多。視頻序列中的圖像經常與時間上鄰近的序列中的其它圖像相似。考慮到這種相似,可以改進壓縮。這種做法稱為“時間壓縮”。用于MPEG的一種傳統的時間壓縮方法為運動搜索。在這種方法中,正在被壓縮的圖像的每個區均用作圖樣,來搜索前一圖像中的范圍。選擇最接近的匹配區,并且通過只壓縮與該匹配區不同的區來表示該區。
時間壓縮的另外一種方法是使用小波,正如在空間(水平和垂直)方向上所使用的,但是現在對兩個或多個圖像的相應像素或系數進行操作。這被稱作3D小波,用于這三個“方向”,水平、垂直、和時間。
使用上述兩種方法中的一種或者任一其它方法的時間壓縮將圖像和前一圖像一起壓縮。通常,在時間上,將大量圖像一起壓縮。如在本發明中實施的,這個圖像集稱為圖片組或GOP。
子頻帶小波變換的輸出包括表示“低通”或“范圍”或“和”信息的系數,該系數通常是覆蓋幾個像素的公共信息。該輸出還包括表示“高通”或“小波”或“差值”信息的系數,該系數通常表示這些像素與它們的公共信息的不同之處。小波濾波器的重復應用導致在輸出中這些類型的信息的大量不同組合。每個獨特的組合稱作“子頻帶”。該術語產生于觀察的頻域點,但通常不與頻帶準確對應。
該小波變換在其輸出的不同子頻帶中產生完全不同的值分布。覆蓋原始像素的該信息集中于一些子頻帶內而剩余的其它子頻帶幾乎為零。這是壓縮所期望的。
零流壓縮在一些圖像和視頻壓縮算法中的中間步驟為零流(run-of-zeros)消除,其可以通過“堆積法”(見共同未決美國專利申請第2003/0229773號)實施。在該零流步驟中,壓縮子頻帶(或子頻帶組)的系數,雖然粗糙但很有效。該零流步驟從數據中除去零值流,同時保存這些零值出現位置的記錄。零流消除可應用到算法中的任一點處。在一個實施例中,它在熵編碼之前緊接著量化級應用。在零流之后,這些后續步驟可以更快速地計算,這是因為它們只需要處理有效(非零)的信息。
堆積法對于并行處理多個值的計算引擎具有較大值,這是因為這是利用可用的并行操作進行零消除的方法。相比之下,其它零流消除(流長度編碼)方法通常消耗的時間與它在熵編碼過程中進行消零消耗的時間相同。
每子頻帶的存儲區在根據本發明的一些壓縮實施中,為每個子頻帶、或相似子頻帶組構建單獨的堆積或零流壓縮存儲區、或者在一些情況下為單個子頻帶構建多個區具有優勢。該優勢源自子頻帶的結果變得可用的序列和該算法的其它細節。因此,代替單獨的存儲區作為圖片或GOP的中間表示,存在一組存儲區或堆積。
比率控制調整壓縮量、生成的輸出位速率的一種方法是改變在該計算的量化級內丟棄的信息量。量化通常通過將每個系數除以預先選定的數(即“量化參數”),并丟棄該除法的余數來完成。因此,系數值的范圍可以通過相同的單精度值(即,該除法的商)來表示。
當壓縮圖像或GOP被解壓縮時,該逆向量化處理步驟將商乘以(已知的)量化參數。這將這些系數恢復到其原始大小的范圍,以用于進一步計算。
然而,在許多實施方式中,除法(或等效的乘法)在消耗的功率和時間方面以及在硬件成本上是高成本的操作。注意,該量化操作被應用到每個系數,這樣系數的數量通常與輸入像素的數量一樣多。
在另一方法中,代替除法(或乘法),量化被限定為2的乘冪的約數。這具有可通過對二進制數的移位操作來實施的優勢。在許多實施中移位是一種成本很低的操作。實例為集成電路(FPGA或ASIC)的實施;乘法器電路很大,但移位器電路就小很多。此外,與移位操作相比,在許多計算機上,乘法也需要更長的時間來完成,或者在執行中提供更少的并行操作。
雖然通過移位量化對于計算很有效,但在一些方面卻存在缺陷它只能粗糙地調整壓縮比率(輸出位速率)。根據本發明的一個方面,在實際中可以觀察到通過最小可能量(+1或-1)改變的量化移位參數導致了生成的位速率的近2倍的變化。對一些壓縮應用來說,這是完全可以接受的。對于其它應用,需要更精確的比率控制。
因此,存在滿足更精確的比率控制而不必放棄移位量化及其相關效率的必要。
發明內容
公開了根據本發明的各個方面的系統、方法和計算機程序產品,用于為數據壓縮系統提供更精確的比率控制。通過多個并行子頻帶的數據流被量化,其中,第一子頻帶的數據與第二子頻帶的數據的處理方法不同。另外,根據本發明的一方面,在量化步驟中,可以不同的方式處理圖像的每個單獨的子頻帶。另外,單獨的子頻帶組可以相同或相似的方式處理,而與相同圖像相關的第二子頻帶組可以第二種相同或相似的方式處理。另外,在本發明的其它方面,在量化步驟中,可以獨特的方式處理每個單獨的子頻帶。
根據本發明的另外的方面,可以在變換、量化、或熵編碼步驟中或在變換、量化、和熵編碼步驟的每一個中執行不同、相同、或相似的子頻帶數據處理。另外,可以在變換、量化、和熵編碼步驟的每一個中執行所有子頻帶數據的獨特處理,從而,在量化步驟期間以第一方式處理第一子頻帶的數據并在量化步驟期間以第二方式處理第二子頻帶的數據,從而進一步,在熵編碼步驟期間以第三方式處理第一子頻帶的結果數據,而在熵編碼步驟期間以第四方式處理第二子頻帶的結果數據。然后,可以看出在變換、量化、和熵編碼步驟中可以不同的方式處理單個子頻帶。另外,也可以相同或相似的方式處理子頻帶組,而可以第二種相同或相似的方式處理其它子頻帶組。
在本發明的一個實施例中,為每個單獨的零流壓縮存儲區或堆積提供單獨的移位量化參數,來代替現有技術中為每一個系數提供單一的公共移位參數。每個這種區或堆積的參數值被記錄到壓縮輸出文件中。這克服了現有技術中的粗糙性問題,而沒有放棄移位量化的效率。
本發明使有效位速率的范圍在從統一應用到所有系數上的量化參數得到的最接近的兩個速率之間,這提供了對壓縮更精確的控制。而且,所提供的計算效率幾乎正好等于純移位量化的計算效率,這是因為應用到每個系數的操作通常仍為移位操作。
根據本發明的另一方面,隨著數據被壓縮,動態調整單獨的移位量化參數。可從由沿著壓縮進程任何地方的數據流獲得的反饋或前饋檢測值來產生這種調整。可選地,調整可從輸入或輸出數據參數的改變產生。例如,源圖像質量或輸出帶寬可用性(例如,改變蜂窩電話信號強度)可通過單個地改變單獨移位量化參數“空閑(onthe fly)”來對壓縮處理進行精確調整。
圖1示出了根據一個實施例用于壓縮/解壓縮數據的方框圖。
圖2示出了在當前可用的各種壓縮算法中的折衷實例。
具體實施例方式
圖1示出了根據一個實施例用于壓縮/解壓縮數據的方框圖200。這個方框圖200中包括編碼器部201和解碼器部203,它們一起構成“編解碼器”。編碼器部201包括用于壓縮數據以存儲到文件208中的變換模塊202、量化器204、以及熵編碼器206。為了執行這種文件208的解壓縮,解碼器部203包括用于解壓縮數據以便應用(即,查看視頻數據的情況等)的熵解碼器210、反量化器212、以及逆變換模塊214。
在使用中,出于去相關的目的,變換模塊202對多個像素(在視頻數據的情況下)執行可逆變換,其經常是線性的。接下來,量化器204實現變換值的量化,此后,熵編碼器206負責對量化的變換系數的熵編碼。
為了克服上述現有技術的粗糙性問題而不放棄移位量化的效率,該量化被推廣使用。代替如以前對每個系數使用單一的公共移位參數,我們提供了不同的移位參數,以使其應用到每個單獨的零流壓縮存儲區或堆積。每個這種區或堆積的參數值被記錄到壓縮輸出文件中。堆積為數據存儲結構,其中,數據以壓縮的零(或其它公共值)序列表示。應該注意,子頻帶可包括幾個單獨的堆積或存儲區。可選地,堆積或存儲區可包括幾個單獨的子頻帶。
現在,這種解決方案使有效位速率的范圍在由統一應用到所有系數的量化參數得到的最接近的兩個速率之間。例如,考慮到除了一個子頻帶(子頻帶x)之外所有子頻帶均使用相同的量化參數Q,而那個子頻帶(子頻帶x)使用Q+1的情況。從量化步驟中生成的整個位速率與在量化中所有子頻帶均應用Q相比降低了,但沒有降到所有子頻帶均應用Q+1的程度。這提供了在統一應用Q或統一應用Q+1所得到的位速率之間的中間位速率,從而給出了更好的、更精確的壓縮控制。
注意,該計算效率幾乎正好等于純移位量化的計算效率,這是因為應用到每個系數的操作通常仍為移位操作。可以使用任何數量的子頻帶。通常為4到100個子頻帶。最普遍的是32個子頻帶。
選擇參數在以上方法中,可以假定有P個子頻帶區,與對所有子頻帶增加量化參數相比,在一個子頻帶區中增加量化參數將會對輸出速率有1/P因子的影響。然而,通常不是這樣,這是因為這些單獨的子頻帶區通常包含完全不同數量的有效信息。相應地,將特定的量化參數應用到具有相對大量的有效系數(與其它子頻帶相比)的子頻帶上與將相同的量化參數應用到與其它的子頻帶相比其中具有相對少量的有效系數的單獨子頻帶上相比,對量化的凈有效位速率有更大影響。
應該注意,在本發明的各種實施例中,不僅應用到熵編碼步驟中的參數可以改變,而且應用到單獨存儲區中的熵編碼技術的實際選擇可以改變。例如,可將Huffman表技術應用到一個存儲區的熵編碼,同時可將單獨的Huffman表應用到第二存儲區。而且,諸如指數Golomb編碼的單獨技術可以應用到第二或第三存儲區。以相似的方式,額外的技術或技術參數可單獨應用到單獨存儲區。而且,可以動態應用以上變化的每一個。
還應該注意,在特定實施例中,與在處理特定存儲區中應用的參數或技術狀態相對應的標記被記錄或者另外將其傳輸到解碼器以解碼壓縮信號。在一些實施例中,壓縮中使用的參數或技術的狀態可以從正在被解碼的壓縮數據的結構中區分出來。作為本發明的另外的方面,可通過對應于編碼器邏輯的相同邏輯對解碼器進行編程,以使解碼器能夠追蹤編碼器的狀態。
因此,為了選擇一組最接近于期望壓縮比率的量化參數,可以考慮其量化正在被調整的區的預期尺寸,以及對子頻帶區調整的預期效果。這可以通過簡單的迭代過程完成,例如,下述實例過程。
用于調整量化參數的實例1該實例算法以通過初始化給定或從前一圖像或GOP傳送過來的一組量化參數開始。對于每個零流壓縮區P調用這些Q[P]。我們還具有壓縮輸出比率的期望改變,表示為因子C。該描述假定Q值每改變1,導致來自使用該Q值的壓縮部分的輸出比率F倍的改變。我們假定C<F以及1/F<1/C。這些區的大小為S[P];對于該算法的目的,大小為估計值而不是測量的大小。
步驟1如果C=1,不進行任何操作,并退出調整過程。
如果C>1,設置D=F-1。
如果C<1,設置D=(1/F)-1。
計算S,作為所有子頻帶區大小的和。
設置T=S。
步驟2選擇其量化參數還未被改變的子頻帶區P。
計算T=T+D*S[P]。
如果C>1,設置Q[P]=Q[P]-1。
如果C<1,設置Q[P]=Q[P]+1。
步驟3
如果T足夠接近C*S,則退出調整過程。
轉到步驟2。
可執行以上實例的各種改進,例如以下實例。
實例2在以上算法的步驟3中,可以執行幾種方法中的任一種檢驗“足夠接近”。該檢驗的一種簡單方法如下檢驗3如果(C>1且T>C*S)或者(C<1且T<C*S)...
一旦估計的比率調整值超過了指定的調整值,則該檢驗停止迭代。
另外的可選實施例為返回到緊挨著使估計比率超過指定的調整值步驟的前一步驟。另一可選實施例為在指定的調整值C兩端的兩個步驟之間進行選擇,例如選擇使估計值更接近于指定比率的一個步驟。
優勢以上給定的實例1算法的過程具有把這些量化改變保持在這些步驟的每一個中的特征把每一個的Q均改變1或者根本不變,并且這些改變都在相同的方向上。可以通過保留關于步驟2中P的選擇的信息輕松地擴展該過程,以保持該算法的許多執行之上的特征(即,許多連續圖像或GOP壓縮操作之上)。這經常是可取的,這是因為量化調整不僅對壓縮輸出比有效,而且對圖像質量同樣有效(即,對由于壓縮處理而在解壓縮圖像或視頻中產生的噪聲或偽像有效)。
然而,應該注意,在等式的一個步驟中保持Q值的這個特性并不是必須的,并且出于其它考慮有時可以被釋放。
子頻帶處理參數的改變可以包括使用乘法或除法或者其它量化技術以取代應用如上所述的移位參數。
子頻帶可以按照重要性的次序放置,比如“低通”優先且“高通”隨后,以便當選擇Q值時,首先降級次要子頻帶。這樣,當犧牲圖像質量來選擇更高的總體壓縮比時,表示圖像基本特征的子頻帶不會在只表示圖像的非常詳細的細節的子頻帶之前被降級。也可利用查找表基于圖像的特征來選擇降級的各個子頻帶。例如,為了提高特定圖像的整體壓縮比,如果圖像是諸如“戶外生活場景”的特定類型,則子頻帶可以特定的次序被降級。如果該圖像是諸如“低級照明”,“肖像視頻”,“靜態圖像”,“風景”等的不同類型,則該查找表將提供不同的次序和/或幅值,用于改變每個子頻帶的Q值。
可選實施例在數據被壓縮時,可以固定、為特定的數據流預定、或者動態調整如上所述的子頻帶量化參數的變化。對于動態調整的實例,可以在圖1所示的壓縮過程201的結束處(即,在熵編碼器206之后)對輸出數據進行采樣。如果測得的位速率過高,則該信息可以被反饋到改變一個或多個子頻帶移位參數的算法以把位速率降低到期望的水平或范圍。如果測得的位速率低于期望的水平或范圍,則可以向相反方向改變一個或多個子頻帶的移位參數,以提高位速率。這樣產生了較低的壓縮比,從而提高了圖像質量。這個方案的一個優點在于圖像被壓縮到剛好足以通過諸如蜂窩式電話線的固定帶寬系統傳輸,但又盡可能地保持了圖像質量。
不僅在壓縮過程201的輸出處需要檢測或采樣數據。例如,可以在過程201的輸入處對其進行檢測。不同的圖像或圖像的不同部分在其輸入到壓縮過程201中時可產生較高的位速率。例如,當源圖像質量或大小提高時,就會產生這種情況。這種情況還出現在視頻監視系統中,其中,多個攝像機的輸出被多路傳輸到用于壓縮的單個數據流中。如果提高使用的攝像機的數量,則源數據速率將提高。在這種前饋方案中,需要響應于在源內檢測到的變化沿順流方向來改變量化器204內一個或多個子頻帶的移位參數。使用這種前饋方案的一個優點在于可以在檢測的源數據到達量化器204之前改變移位參數,或者至少可以在參數被先前描述的反饋方案改變之前改變移位參數。另一個優點在于可以基于前饋檢測沿順流方向去掉實際處理步驟。這樣可以提高整個處理時間和/或降低功率消耗。
如上所述,可以利用動態系統,在壓縮過程(compressionprocess)201之前或之后檢測數據。可以使用類似的動態系統,在壓縮過程201中的一個或多個點處檢測數據。例如,可以在變換級202內、在變換級202和量化器級204之間、在量化器級204內、在量化器級204和熵編碼器級206之間、和/或在熵編碼器級206內檢測或采樣用于影響移位參數的數據。在該過程中數據越早被檢測,則基于該數據的改變就越快。在該過程中數據越晚被檢測,則可能的期望輸出比率就越精確。類似地,可以在貫穿不具有典型變換202、量化器204、和熵編碼器206結構的壓縮處理的各個點檢測或采樣數據。
可以根據本發明動態地改變移位參數,而不對壓縮過程201中一些地方的數據進行檢測或采樣。例如,其它參數的改變使得需要動態改變壓縮過程201。作為實例,壓縮數據將被保存到一個或多個文件208中。當當前文件的大小改變或者提示文件中的數據接近容量時,就需要提高壓縮比,從而降低輸出位速率以保持文件空間。作為另一實例,壓縮數據將通過蜂窩式電話網絡傳輸。隨著信號強度提高或降低,需要相應地動態改變壓縮過程的特征。
由于上述過程調整是動態進行的,所以圖像組中的特定圖像或者一個圖像的特定部分的壓縮方法可與其它的圖像或部分的壓縮方法不同。這可以導致資源的高效利用。然而,也可能產生不希望的后果,例如,由于圖像相似和/或鄰近部分的壓縮方法不同而導致這些部分中顯著的差別。可以通過將所有移位參數都保持到差值為1來改善這種效果。可選地或結合地,也可以使用螺旋掃描而不是光柵掃描。由于許多圖像中最重要的數據靠近中心部分,所以通過在這些部分中使用較低的壓縮比更詳細地保存中心部分的細節。作為另一可選情況,可在圖像的中心、水平、角落等處采樣。
可以理解,變換級202和熵編碼器級206也可以與以上針對量化器級204的實例中所述的類似方式來處理具有并行子頻帶的數據流。類似地,這些階段中的每個子頻帶都可以使用不同的編碼技術。影響每個子頻帶處理的參數在每個單獨的子頻帶中和每個單獨的級202、204、和206中被靜態或動態地調整。
雖然以上為本發明優選實施例的完整描述,但可以使用不同的替換、修改和等同物。因此,以上描述不應該被看作是對本發明的范圍的限制,本發明的范圍由所附權利要求限定。
權利要求
1.一種壓縮數據的方法,包括處理經由多個并行子頻帶的數據流,其中,第一子頻帶處理所述數據的方法不同于第二子頻帶。
2.根據權利要求1所述的方法,其中,所述處理步驟包括量化。
3.根據權利要求2所述的方法,其中,所述第一和第二子頻帶中的每一個均通過應用移位參數來量化所述數據,以及其中,所述第一子頻帶的所述移位參數不同于所述第二子頻帶的所述移位參數。
4.根據權利要求3所述的方法,其中所述第一子頻帶為低通子頻帶以及所述第二子頻帶為高通子頻帶。
5.根據權利要求1所述的方法,還包括第三子頻帶,其處理所述數據的方法既不同于所述第一子頻帶,又不同于所述第二子頻帶。
6.根據權利要求5所述的方法,其中,所述第一、第二和第三子頻帶中的每一個通過應用移位參數來量化所述數據,以及其中,所述第一、第二和第三子頻帶中的每一個的所述移位參數都不同。
7.根據權利要求2所述的方法,其中,所述多個子頻帶中的每一個均通過應用第一移位參數或不同的第二移位參數來量化所述數據。
8.根據權利要求7所述的方法,其中,所述第一移位參數與所述第二移位參數差1。
9.根據權利要求1所述的方法,其中,所述多個子頻帶中的至少一個的所述處理是動態改變的。
10.根據權利要求9所述的方法,其中,響應于壓縮比需要的改變來改變所述多個子頻帶中的至少一個的所述處理。
11.根據權利要求9所述的方法,其中,響應于來自下游檢測的反饋來改變所述多個子頻帶中的至少一個的所述處理。
12.根據權利要求9所述的方法,其中,響應于輸入參數的改變來改變所述多個子頻帶中的至少一個的所述處理。
13.根據權利要求9所述的方法,其中,響應于來自上游檢測的前饋信號來改變所述多個子頻帶中的至少一個的所述處理。
全文摘要
一種系統、方法、和計算機程序產品,用于通過處理經由多個并行子頻帶的數據流(201)來提供對數據壓縮的更精確比率控制,其中,第一子頻帶處理數據的方法不同于第二子頻帶。為每個單獨零流壓縮存儲區或堆積提供了單獨移位量化(204)參數,而不是象現有技術中為每個系數提供一個公共移位參數。每個這種區或堆積的參數值均被記錄在壓縮的輸出文件(208)中。
文檔編號H03M3/00GK101061637SQ200580039599
公開日2007年10月24日 申請日期2005年9月21日 優先權日2004年9月21日
發明者史蒂文·E·桑德斯, 威廉·C·林奇, 克拉西米爾·D·克拉羅夫 申請人:液滴技術有限公司