專利名稱:利用基數近似或利用差分碼和轉義碼的幀壓縮的制作方法
技術領域:
本發明一般涉及視頻信號處理,更具體地說,本發明涉及減少處理符合ITU-T H.263和MPEG-4 ISO/IEC標準的編碼數字視頻數據流所需的存儲量。
背景技術:
存儲器是昂貴的,并且處理編碼數字視頻數據流所需的大多數存儲空間用于存儲數據幀中各像素的亮度和色度值。在對幀進行解碼和處理時,有關該幀的信息必須被存儲在存儲器中。盡管對任何應用來說,減少存儲需要都是吸引人的,但對于如移動電話和所謂的個人數字助理(PDA)等手持和低功率裝置的用應格外重要,因為有限的電路板空間和功率嚴格限制了存儲器芯片的尺寸和功率要求。
許多應用符合通過利用數據壓縮技術減少存儲需求的兩種編碼標準之一。由國際電信聯盟(ITU)頒布的H.263標準支持電視會議和可視電話應用的視頻壓縮。MPEG-4標準正式名稱為ISO/IEC14496,是由國際標準化組織(ISO)頒布的并便于數字電視、交互式圖形技術和交互式多媒體的整合。這些技術能夠通過發送或存儲信息的過程來減少所需存儲空間,但它們不針對對編碼信息進行解碼的過程所需的存儲量。
嘗試提供進一步的壓縮面臨幾個問題。一個問題是這樣引起的,許多壓縮方案將小誤差引入數字視頻數據,并且這些誤差的幅度在解碼期間累積。小的不準確由例如舍入或舍位引起,這些不準確在用于確碼過程的預測濾波器中被放大。因為各級中的誤差在后面的預測級中導致更大的誤差。
另一問題是由這樣的事實導致的在例如運動補償等過程中必須快速對整個圖像上的各個像素進行存取。這種要求使得依賴于變長符號的壓縮技術沒有吸引力,因為在存儲器中進行隨機存取更困難。
發明內容
本發明的一個目的是提供用于減少存儲和處理編碼數字視頻數據幀所需的存儲量的技術。
根據本發明的一個方面,通過以下步驟對各個像素執行對表示多個像素的亮度值、第一色度值和第二色度值的數字視頻數據的壓縮將各個像素的亮度值的壓縮表示存儲在存儲器中;響應于各個像素的第一色度值和第二色度值生成查找關鍵字;確定數據結構中的項目是否具有與查找關鍵字匹配的關鍵字,其中該數據結構包括多個項目,每個項目具有各自的關鍵字、各自的標識符以及各自的第一和第二色度值對;當數據結構中的項目具有與查找關鍵字匹配的關鍵字時,將數據結構中具有與查找關鍵字匹配的關鍵字的項目的標識符存儲在存儲器中;以及當數據結構中沒有項目具有與查找關鍵字匹配的關鍵字時,或者在所述方法在近似操作模式下工作時,將數據結構中具有與查找關鍵字近似匹配的關鍵字的項目的標識符存儲在存儲器中,或者向數據結構中添加一個項目,該項目具有與查找關鍵字匹配的關鍵字、具有唯一標識符以及具有從相應像素的第一色度值和第二色度值得出的第一和第二色度值對,將添加到數據結構中的項目的唯一標識符存儲在存儲器中,并在沒有其它項目要添加到數據結構中時設置近似操作模式。
根據本發明的一個方面,通過以下步驟執行對表示排列在一個組中的像素序列的亮度值、第一色度值和第二色度值的數字視頻數據的壓縮,其中所述像素序列具有第一像素,其后跟著一個或多個其它像素將亮度值的壓縮表示存儲在存儲器中;將該組像素中第一像素的第一色度值的表示存儲在存儲器中,將該組像素中第一像素的第二色度值的表示存儲在存儲器中;確定該組中第二像素的第一色度值和該組中緊挨在第二像素前面的另一像素的第一色度值之間的第一差異;當第一差異沒有超出第一閾值時,將第一差異的表示存儲在存儲器中,以及當第一差異超出第一閾值時,將存儲器中的第一代碼存儲在存儲器中,其中第一代碼由一個不同于所存儲的表示第一差異的值的值表示;確定第二像素的第二色度值和緊挨在第二像素前面的另一像素的第二色度值之間的第二差異;以及當第二差異沒有超出第二閾值時,將第二差異的表示存儲在存儲器中,而當第二差異超出第二閾值時,將存儲器中的第二代碼顧儲在存儲器中,其中第二代碼由一個不同于所存儲的表示第二差異的值的值表示。
根據本發明的另一方面,通過以下步驟執行對表示排列在像素段中的像素序列的亮度值、第一色度值和第二色度值的數字視頻數據的解壓縮,其中所述像素段中的每一段具有第一像素,其后跟著一個或多個其它像素從存儲器中檢索并擴展亮度值;從存儲器中檢索第一像素段中的第一像素的第一色度值;從存儲器中檢索第一像素段中的第一像素的第二色度值;從存儲器中檢索對應于第一像素段中的第二像素的第一色度值的第一值,其中第一值或者表示第二像素的第一色度值和第一像素段中緊挨在第二像素前面的另一像素的第一色度值之間的第一差異,或者第一值是不同于表示第一差異的值的第一代碼;當第一值是第一代碼時,從第二像素段中第一像素的第一色度值建立第二像素的第一色度值,當第一值不是第一代碼時,通過將第一差異與所述另一像素的第一色度值進行組合來建立第二像素的第一色度值;從存儲器中檢索對應于第一像素段中的第二像素的第二色度值的第二值,其中第二值或者表示第二像素的第二色度值和第一段中另一像素的第二色度值之間的第二差異,或者第二值是不同于表示第二差異的值的第二代碼;以及當第二值是第二代碼時,從第二像素段中第一像素的第二色度值建立第二像素的第二色度值,當第二值不是第二代碼時,通過將第二差異與所述另一像素的第二色度值進行組合來建立第二像素的第二色度值。
本發明的各種特征及其優選實現可以參照以下描述和附圖來更好地理解,其中相同的標號表示幾個圖中相同的部件。以下描述的內容以及附圖僅作為例示陳述,并不應被理解為表示對本發明的范圍的限制。
圖1到2是接收和處理數字視頻數據流的裝置的示意方框圖。
圖3是說明方法中可用于執行數字視頻信息的數據壓縮的步驟的流程圖。
圖4A和4B是基數樹的圖形表示。
圖5是說明方法中可用于從壓縮表示恢復數字視頻信息的步驟的流程圖。
圖6到7是說明方法中可用于執行數字視頻信息的數據壓縮的步驟的流程圖。
圖8到9是說明方法中可用于從壓縮表示恢復數字視頻信息的步驟的流程圖。
具體實施例方式
圖1是接收和處理數字視頻數據流并且結合本發明的各方面的裝置10,如移動電話或個人數字助理(PDA)的示意方框圖。從路徑11收到數字視頻數據流,該路徑可以是具有另一提供數據流的有線或無線通信路徑。處理器13對排列成信息幀的數據流進行處理,將信息幀存儲在隨機存取存儲器(RAM)15中,并隨后從RAM 15中檢索所存儲的信息,對信息幀進行處理以將它們準備用于應用中,以及將所處理的信息傳遞到應用。在所示例示中,應用是顯示部件17,它可以由例如液晶顯示器(LCD)或薄膜晶體管(TFT)平板實現。其它應用例示包括錄像機、視頻編輯器和視頻廣播發射機。
本發明針對存儲在RAM 15中的數字視頻信息的數據壓縮,從而能夠減少存儲信息所需的RAM量。在圖1所示的實現中,本發明由通過處理器13執行的功能來實現。在圖2所示的另一實現中,本發明由插入在處理器13和RAM 15之間的數據壓縮器/擴展器14來實現。這種實現可以將本發明的一些方面與現有處理裝置相結合,不需要對處理器13執行的功能作任何改變。這種實現能夠使得處理器13工作時就好像它直接用RAM 15進行數字視頻信息的存儲和檢索一樣。數據壓縮器/擴展器14截取處理器13對RAM 15中存儲和檢索數字視頻信息的存儲器訪問請求,并且它使用比其它情況少的RAM量對那些請求進行處理。
這些附圖所示的示意方框圖省略了可能對實際實現是重要但是說明本發明時不需要的那些部件。例如,方框圖省去了與電源、電源管理和輸入/輸出接口有關的功能部件。
裝置10以及任何其它結合本發明的一些方面的裝置中的部件可以用任何適當的方式實現,其中包括分立和集成電子部件、程序設計的邏輯部件、門陣列、通用程序控制的處理器、數字信號處理器和專用集成電路。對于采用程序控制的處理器的實現,可以通過包括磁和光存儲媒體的基本上任何裝置可讀媒體和固態存儲裝置傳達控制程序的指令。實現方式原則上對本發明不是關鍵的。
以下描述針對本發明的實現,這些實現可用于壓縮符合ITU-TH.263和MPEG-4 ISO/IEC標準的數字視頻數據流中表示畫面元素(“像素”)的信息,以及用于從壓縮表示中恢復解壓縮的視頻信息。但是,應該理解,本發明可以應用于符合其它標準的數據流。下述方法可以通過實現為如圖1所示裝置10的處理器13執行,可以通過實現為如圖2所示數據壓縮/擴展處理器14執行,或者可以通過基本上任何其它可以想到的處理電路配置執行。
基數近似技術數據壓縮圖3說明方法100中對數據流中數字視頻信息的幀序列中像素的信息進行壓縮的步驟。步驟S101將程序和硬件部件初始化。存儲在存儲器中表示基數樹的信息被清零,并設置變量模式以表示要根據步驟S102中從數字視頻信息得到的信息來建立新樹,下面將對基數樹作更詳細的描述。
步驟S103從數字視頻信息中提取數據以得到像素的亮度值Y和色度值Cb、Cr。最好在步驟S104對亮度值Y進行舍入和舍位,并將舍位值存儲在RAM 15中。舍入和舍位運算應該沒有任何偏差,否則通過利用預測方法的互補數據擴展過程得到的亮度將很快根據偏差的方向衰減為白或黑。與兩個有效舍位值中的任一個等距離的亮度值應該被舍入到偶舍位值。如果擴展過程中沒有使用預測方法,則純舍位引入的偏差就不那么明顯。
步驟S105利用從色度值Cb、Cr對得出的查找關鍵字K橫穿基數樹,而步驟S106確定是否在樹中找到具有這個關鍵字的節點。如果找到這樣一個節點,則從樹中得到此節點的代碼值X,該值X接著被用于表示壓縮形式的色度信息。
如果沒有找到具有關鍵字值K的節點,則在步驟S108確定變量模式是否表示正在建立基數樹。如果正在建立基數樹,則步驟S110在樹中創建一個新節點,得到其代碼值X,并根據需要更新模式變量以表示基數樹的建立已經完成。如果步驟S108確定變量模式表示基數樹的建立已經完成,則在步驟S109得到具有與沒有在樹中找到的值K接近的關鍵字值的節點的代碼值X。
步驟S111將代碼值X存儲在RAM 15中,以表示壓縮形式的色度值Cb、Cr對。
步驟S112確定是否已壓縮和存儲了當前幀的所有數字視頻信息。如果還沒有完成當前幀中所有信息的壓縮,則方法100繼續到步驟S103,以壓縮幀中的下一像素。如果已經到達數據流的結尾,則方法100在步驟S110終止。
如果已經壓縮了當前幀中的所有信息,則處理繼續的方式取決于幀序列中當前幀后面的內容。如果數字視頻信息被組織為若干幀,這些幀傳達由預測或差分編碼方法生成的數據,則這些幀在不訪問某個具有形成預測或差分編碼基礎的值的“I幀(intraframe)”的情況下無法被解碼。I幀傳達不需訪問任何其它幀就可以被解碼的數據。方法100可用于對利用提供I幀的編碼技術編碼的數字視頻數據進行壓縮。如果序列中的下一幀是I幀,則方法100繼續到步驟S102,以建立新的基數樹并利用這棵新樹壓縮后續幀中的數據。如果下一幀不是I幀,則通過繼續到步驟S103來壓縮下一幀中的第一像素。
基數樹發明人確定色度值的極少的唯一組合一般發生在視頻圖像中。圖像中的對象趨向于在其邊緣具有基本均勻的顏色;因此,色度值Cb、Cr趨向于彼此相關。本發明通過建立顏色的調色板以及相關的樹結構來利用此特征。為樹中的節點分配簡單的標識符,并用標識符建立節點和存儲在調色板中的顏色之間的聯系。通過數字視頻數據流在一遍中建立該樹。
“基數樹”被用于存儲關于調色板的信息。基數樹具有根節點和一個或多個其它節點。除根節點之外的各節點具有到唯一一個父節點的鏈接。包括根節點的各節點可以具有到多至兩個子節點的鏈接,其中這兩個子節點具有二進制值零和一。各個父節點的兩個子節點必須具有不同的值。“葉節點”是沒有子節點的節點。樹中的各個相應節點與唯一查找關鍵字相關,該查找關鍵字等于在橫穿從根節點到相應節點的鏈接期間遇到的節點的值。參照圖4A所示的樹200,例如,從根節點220到節點222橫穿樹只遇到節點222本身,該節點具有值“1”;因此,“1”是節點222的查找關鍵字。從根節點220到節點224橫穿樹遇到節點222,該節點具有值“1”,然后遇到節點224,它具有值“0”;因此“10”是節點224的查找關鍵字。繼續橫穿該樹,可以看到“101”和“1010”分別是節點226和228的查找關鍵字。
參照圖4A所示的樹,搜索具有查找關鍵字“100”的節點是設法尋找節點225。關鍵字“100”中的第一符號“1”引導從根節點220橫穿樹到節點222。關鍵字中的第二符號“0”引導從節點222橫穿樹到節點224。關鍵字中的第三符號“0”引導搜索設法從節點224橫穿到節點225;但是,節點225沒有存儲在樹中。節點224和遺漏節點225之間的虛線表示沒有要穿越的鏈接。圖4A所示對樹中關鍵字“100”的搜索返回一個沒有找到節點的表示。
如果在建立基數樹時沒有找到節點,則方法100中的步驟S110通過創建所有的遺漏鏈接來創建樹中的新節點。在上述例示中,當變量模式表示正在建立樹時,將創建節點225以響應于尋找關鍵字“100”的嘗試。此節點的創建反映在圖4B所示的樹201中。當節點創建時,將各節點的一個簡單標識符存儲在樹中。在將樹限定在指定數目的節點的一種實現中,該標識符是固定長度的二進制數,等于樹中節點的計數。參照圖中所示例示,圖4A所示的樹200中存在20個節點。當節點225被加到樹中時,它變成第二十一個節點。在此實現中,為它分配等于十進制21的二進制標識符10101。與節點相關的標識符不同于節點的查找關鍵字。標識符用作上述的代碼值X。
在一個特定實現中,對具有176×144像素(QCIF格式)的畫面或具有352×288像素(CIF格式)的畫面的數字視頻信息進行壓縮,輸入數字視頻數據流中的亮度值Y和色度值Cb、Cr的長度都是8比特。在步驟S104中,亮度值Y被舍入和舍位為6比特的長度。利用可以存儲多至256節點的基數樹對色度值進行編碼。各節點的標識符是8比特數字。
調色板為在數字視頻信息的幀序列中遇到的前256對Cb、Cr值構建調色板。從兩個值的交織表示的前8比特獲得各對值的查找關鍵字。查找關鍵字K的第一比特等于Cb值的最高有效位(MSB)。查找關鍵字K的第二比特等于Cr值的MSB。K的第三比特是Cb值的第二MSB而K的第四比特是Cr值的第二MSB。換句話說,從與Cr的四個MSB交織Cb的四個MSB形成8比特查找關鍵字。
調色板中的各項目存儲一對色度值Cb、Cr的16比特。可以將調色板存儲在單獨的陣列中,其中根據它們存儲在陣列中的順序排列這些項目,或者它可以存儲在定義基數樹鏈接和節點標識符的數據結構中。存儲在調色板中的值不同于相關的查找關鍵字。8比特查找關鍵字只包括各個色度值的前4比特,16比特凋色板項目包括值Cb、Cr對中各色度值的全部8比特。這樣確保了調色板中的各項目表示數字視頻數據流中出現至少一次的顏色。
步驟S110創建基數樹中的新節點直到調色板被填滿。如果調色板的容量是例如256種顏色,則在調色板的顏色計數,或者等效的,樹節點計數到達256時,步驟S110改變變量模式以表示基數樹的構建完成。接著,當步驟S106確定在樹中沒有找到查找關鍵字K時,步驟S109通過從調色板得到最近匹配來提供Cb、Cr值的近似值。
近似通過沿著查找關鍵字K指示的路徑經過盡可能多的節點穿越樹來提供近似顏色。之后,橫穿樹就像查找關鍵字K中的剩余比特與第一個表示樹中遺漏鏈接的比特相同。例如,假定在步驟S103中獲得的色度值Cb、Cr對提供圖4A所示的樹200的查找關鍵字K=“1001”。如果變量模式表示樹的構建已經完成,則步驟S109通過穿越樹200到達節點224來提供色度的近似值,其中查找關鍵字中的第三符號“0”指的是遺漏鏈接,因為節點225沒有存儲在樹中。之后,橫穿樹200就像查找關鍵字K中的剩余符合為“0”一樣。這導致此穿越到達節點228。存儲在調色板中與節點228相關的項目中的顏色表示存儲在調色板中與Cb、Cr值所表示的顏色最近的匹配。
備選實現可以用許多方式形成查找關鍵字。可以從兩個色度值的結合獲得查找關鍵字,或者從基本上可以想到的任何其它色度值的組合獲得查找關鍵字。在一個實現中,利用忽略了查找關鍵字K的幾個最低有效位的值建立基數樹。這樣通過減少樹中所需的節點數量,進一步減少了存儲視頻信息所需的存儲量,并且它也越于使調色板中的顏色更均勻地分布在數字視頻信息中出現的色空間部分上。
采用基數樹是方便的但不是本質的。可以采用其它類型的數據結構,其中包括能夠被搜索和更新的項目陣列或項目表。原則上沒有什么特定的結構是必不可少的。
數據擴展圖5說明方法140中對來自數據流中數字視頻信息的幀序列的像素的編碼信息進行解壓縮的步驟。步驟S141對程序和硬件部件進行初始化。在步驟S142獲得表示顏色的調色板的信息。
步驟S143從RAM 15中檢索信息,獲得表示像素的亮度值和色度值的代碼。步驟S144用零比特填充亮度值Y的代碼以將其擴展到其適當的長度。步驟S145利用色度值的代碼來識別調色板中的項目,并獲得存儲在該調色板項目中的色度值Cb、Cr。
步驟S146確定是否已對當前幀的所有數字視頻信息進行了解壓縮。如果還沒有完成當前幀中所有信息的解壓縮,則方法140繼續到步驟S143,對幀中的下一像素進行解壓縮。如果已經到達數據流的結尾,則方法140在步驟S147終止。
如果已對當前幀中的所有信息進行了解壓縮,則處理繼續的方式取決于當前幀后面的內容。如果下一幀是I幀,則方法140繼續到步驟S142,得到新的調色板并利用這個新調色板對后續幀中的數據進行解壓縮。如果下一幀不是I幀,則通過繼續到步驟S143來對下一幀中的第一像素進行解壓縮。
差分碼和轉義碼技術數據壓縮圖6說明方法200中將數字視頻信息的幀中像素組的信息壓縮成各段壓縮信息的步驟。步驟S201初始化程序和硬件部件。在步驟S202中將用于對壓縮成特定段的像素進行計數的變量K設置為等于1的初始值。步驟S203從數字視頻數據流中提取信號以得到像素的亮度值Y和色度值Cb、Cr。
在步驟S204對亮度值Y進行舍入和舍位,并將舍位值存儲在RAM15中。舍入和舍位運算最好應該沒有任何偏差,否則通過利用預測方法的互補數據擴展過程得到的亮度將很快根據偏差的方向衰減成白或黑。與兩個有效舍位值中的任一個等距離的亮度值應該被舍入到偶舍位值。如果擴展過程中沒有使用預測方法,則純舍位引入的偏差就不那么明顯。
步驟S205確定變量K是否等于1。如果K等于1,則對相應段中的第一像素的信息進行壓縮,同時處理進行到步驟S206。在步驟S206中,將色度信息Cb、Cr的全長或未壓縮值存儲在RAM 15中。將Cb、Cr值分別保存在變量Cb_Save、Cr_Save中,同時清除標志Cb_Flag和Cr_Flag以便在步驟S207中使用。如果K不等于1,則處理繼續到步驟S207,該步驟將色度值Cb、Cr壓縮成代碼x_Cb、x_Cr并將這些代碼以下述方式存儲在RAM中。
步驟S208確定是否已壓縮和存儲了當前幀的所有數字視頻信息。如果是,則方法200在步驟S209終止。如果還有更多數字視頻數據要進行壓縮,則處理繼續到步驟S210,該步驟將變量K加一,從而對當前段中迄今處理過的像素數目進行計數。步驟S211確定計數K是否大于要壓縮到各段中的像素數量Segm。如果計數K不大于Segm,則方法200通過繼續到步驟S203來繼續將下一像素的信息壓縮到當前段中。如果計數K大于Segm,則方法200通過繼續到步驟S202來開如將信息壓縮到新段中。
差分編碼發明人已確定相鄰像素之間色度值的差異一般非常小,只除了圖像中對象邊界處以外。本發明通過將像素排列成組,將第一像素的色度值存儲在各組中,并對各組中剩余像素之間色度值的差異進行編碼,從而利用此特征。如果色度值中出現大的差異,則假定已遇到對象的邊緣,并且用下一組中第一像素的色度值對邊緣處像素的色度值進行近似。這種情形由一個特殊的“轉義”碼表示,該“轉義”碼具有不同于所有有效差分碼的值。這種技術嘗試用對象內部另一像素的色度值來對邊緣處像素的色度值進行近似。組中剩余像素的色度值通過用“轉義”碼表示其中的每一個來以相同的方式進行近似。
在一個特定實現中,對具有176×144像素(QCIF格式)的畫面或具有352×288像素(CIF格式)的畫面的數字視頻信息進行壓縮,其中輸入數字視頻數據流中的亮度值Y和色度值Cb、Cr的長度都是8位。亮度值Y被舍入和舍位為6位的長度。如下所示,差分色度值被編碼為三位碼。為“轉義”碼保留一個特定的三位模式。Segm設置為等于8。
圖7說明了可用于為這些類型的數字視頻數據流執行步驟S207的方法220。在此方法中,步驟S221分別根據以下表達式計算色度值Cb、Cr的差分值(differential value)ΔCb、ΔCrΔCb=Cb-Cb_SaveΔCr=Cr-Cr_Save其中Cb=特定定像素的第一色度值;Cr=特定定像素的第二色度值;Cb_Save=前一像素的第一色度值;以及Cr_Save=該前一像素的第二色度值。
在方法200的步驟S206中,通過將這兩個變量設置為等于段中第一像素的各個色度值Cb、Cr,從而初始化所保存的值Cb_Save、Cr_Save。在步驟S230中更新每個像素的這些“保存”值。
步驟S222確定是否設置了Cb_Flag。各段的這個標志開始在步驟S206中被清零。如果設置了該標志,則方法220繼續到步驟S225。如果沒有設置該標志,則步驟S223確定差分值ΔCb的絕對值是否超出閾值Cb_Th。如果沒有超出,則步驟S224將差分值ΔCb編碼成代碼x_Cb并將該代碼存儲到RAM 15中。如果差分值的絕對值確實超出了閾值,則方法進行到步驟S225,該步驟將“轉義”碼存儲到RAM15中并設置標志Cb_Flag。
標志Cb_Flag表示是否為當前段中任一像素的Cb色度值將“轉義”碼存儲到RAM 15中。如果設置了標志,表示已經存儲了“轉義”碼,則為該段中所有剩下的Cb色度值存儲“轉義”碼。
利用類似的過程壓縮Cr色度值。步驟S226確定是否設置了Cr_Flag。各段的這個標志開始在步驟S206中被清零。如果設置了該標志,則方法220繼續到步驟S229。如果沒有設置該標志,則步驟S227確定差分值ΔCr的絕對值是否超出閾值Cr_Th。如果沒有超出,則步驟S228將差分值ΔCr編碼到代碼x_Cr中并將該代碼存儲到RAM 15中。如果差分值的絕對值確實超出了閾值,則方法繼續到步驟S229,該步驟將“轉義”碼存儲到RAM 15中并設置標志Cr_Flag。以與以上針對Cb_Flag描述的類似方式使用Cr_Flag。
步驟S230更新程序變量Cb_Save、Cr_Save以表示剛剛壓縮并存儲到RAM 15中的色度值Cb、Cr。
在上述特定實現中,壓縮QCIF或CIF格式的畫面的數字視頻信息,對差分值ΔCr、ΔCb和“轉義”碼進行編碼并以三比特2的互補二進制數形式存儲在RAM 15中。兩個閾值Cb_Th、Cr_Th彼此相等,都為20,三比特碼x的一種方案如下
其中ΔC=色度的三比特2的互補差分值;以及Th色度閾值。
數據擴展圖8說明方法240中對數字視頻信息幀中的像素段的編碼信息進行解壓縮的步驟。步驟S241對程序和硬件部件進行初始化。在步驟S242中,將用于對從特定段中解壓縮的像素進行計數的變量K設置為等于1的初始值。步驟S243從RAM 15中檢索信息以得到像素的亮度值Y和色度值Cb、Cr的代碼。
步驟S244用零比特填充亮度值Y以將其擴展到其適當的長度。
步驟S45確定計數器變量K是否等于1。如果K等于1,則對相應段中第一像素的信息進行解壓縮,同時處理進行到步驟S246。步驟S246將Cb、Cr值分別保存在變量Cb_Save、Cr_Save中。不需要進一步的處理來得到色度信息Cb、Cr的未壓縮值,因為這些值是直接在步驟S243中從RAM 15中檢索到的。如果K不等于1,則處理繼續到步驟S247,該步驟以下述方式對編碼色度值x_Cb、x_Cr進行解壓縮。
步驟S248確定是否已對當前幀的所有數字視頻信息進行了解壓縮。如果是,則方法240在步驟S249終止。如果還有數字視頻數據要解壓縮,則處理繼續到步驟S250,該步驟將變量K加一,從而對當前段中迄今處理過的像素數量進行計數。步驟S251確定計數K是否大于要從各段解壓縮的像素數量Segm。如果計數K不大于Segm,則方法240通過繼續到步驟S243來繼續將當前幀中的下一像素的信息解壓縮。如果K大于Segm,則方法240通過繼續到步驟S242來開始對新段中的信息進行解壓縮。
在方法240的一個特定實現中,其中該實現是上述方法200的特定實現的補充,從存儲器中檢索亮度值Y的六位代碼產填充為八比特值,并且如下所述從三比特代碼解壓縮度值Cb、Cr。Segm設置為八。
差分解碼圖9說明可用于執行步驟S247的方法260。在此方法中,步驟S261確定RAM 15中表示Cb色度值的代碼x_Cb是否等于特殊的“轉義”碼。如果不等,則方法繼續到步驟S262。如果代碼值等于“轉義”碼,處理繼續到步驟S263。
步驟S262通過將編碼值x_Cb加上Cb的保存值,從而對Cb色度值進行解壓縮,如下所示Cb*=x_Cb+Cb_Save其中Cb*=特定像素的解壓縮第一色度值;x_Cb=Cb的壓縮表示;以及Cb_Save=上一像素的第一色度值。
在方法240的步驟S266中,通過將變量Cb_Save設置為等于該段中第一像素的色度值Cb,從而初始化保存的Cb_Save。在步驟S269中對該段中各像素的“保存”值進行更新。
如果編碼值x_Cb等于“轉義”碼,則處理繼續到步驟S263。步驟S263從RAM 15得到下一段中第一像素的Cb色度值。該值被稱為Cb_Base值。對于利用定長碼表示段中各像素的亮度和色度值,并且其中這些值都存儲在RAM 15的相鄰存儲單元中的實現來說,RAM中下一段的基值相對于當前像素的“轉義”碼的位置的位置可以利用以下事實進行計算(Segm-k)個像素的編碼信息存儲在當前像素和下一段的開始之間的存儲區中。步驟S264通過將解壓縮值Cb*設置為等于下一段的基值Cb_Base,從而對當前像素的Cb色度信息進行解壓縮。
利用類似的過程對Cr色度值解壓縮。步驟S265確定表示RAM 15中的Cr色度值的代碼x_Cr是否等于特殊“轉義”碼。如果不是,則方法繼續到步驟S266。如果編碼值等于“轉義”碼,則處理進行到步驟S267。
步驟S266通過將編碼值x_Cr加上Cr的保存值,從而對Cr色度值進行解壓縮,如下所示Cr*=x_Cr+Cr_Save其中Cr*=特定像素的解壓縮第二色度值;x_Cr=Cr的壓縮表示;以及Cr_Save=上一像素的第二色度值。
在方法240的步驟S266中,通過將變量Cr_Save設置為等于該段中第一像素的色度值Cr,從而初始化保存值Cr_Save。在步驟S269中對該段中各像素的“保存”值進行更新。
如果編碼值x_Cr等于“轉義”碼,則處理繼續到步驟S267。步驟S267從RAM 15得到下一段中第一像素的Cr色度值。該值被稱為Cr_Base值。步驟S268通過將解壓縮值Cr*設置為等于下一段的基值Cr_Base,從而對當前像素的Cr色度信息進行解壓縮。步驟S269更新程序變量Cb_Save、Cr_Save以表示剛剛從RAM 15解壓縮的像素的色度值Cb、Cr。
權利要求
1.一種用于對表示像素序列的亮度值、第一色度值和第二色度值的數字視頻數據進行壓縮的方法,所述像素序列排列在一個組中,其中具有第一像素,所述第一像素后面跟著一個或多個其它像素,其中所述方法包括在存儲器中存儲所述亮度值的壓縮表示;將所述像素組中所述第一像素的所述第一色度值的表示存儲在存儲器中;將所述像素組中所述第一像素的所述第二色度值的表示存儲在存儲器中;確定所述組中第二像素的所述第一色度值和所述組中緊挨在所述第二像素前面的另一像素的所述第一色度值之間的第一差值;當所述第一差值沒有超出第一閾值時,將所述第一差值的表示存儲在存儲器中,以及當所述第一差值超出所述第一閾值時,將存儲器中的第一代碼存儲在存儲器中,其中所述第一代碼由一個不同于所存儲的表示所述第一差值的值的值表示;確定所述第二像素的所述第二色度值和緊挨在所述第二像素前面的所述另一像素的所述第二色度值之間的第二差值;以及當所述第二差值沒有超出第二閾值時,將所述第二差值的表示存儲在存儲器中,以及當所述第二差值超出所述第二閾值時,將存儲器中的第二代碼存儲在存儲器中,其中所述第二代碼由一個不同于所存儲的表示所述第二差值的值的值表示。
2.如權利要求1所述的通過對所述亮度值舍入和舍位來獲得亮度值的所述壓縮表示的方法,其特征在于將到偶數舍位值和奇數舍位值等距離的亮度值舍入和舍位到所述偶數舍位值。
3.如權利要求1所述的方法,其特征在于所述第一代碼和所述第二代碼相同。
4.如權利要求3所述的方法,其特征在于所述第一和第二差值以及所述第一和第二代碼的表示具有相同的比特長度,所述第一差值的所述表示是所述第一差值的二進制表示,所述第二差值的所述表示是所述第二差值的二進制表示,以及所述第一和第二代碼由表示沒有用于表示所述第一和第二差值的二進制差值的值表示。
5.如權利要求1所述的方法,其特征在于所述第一差值、所述第二差值、所述第一代碼和所述第二代碼的表示是三比特值,以及所述第一和第二閾值等于二十。
6.一種用于對表示排列在像素段中的像素序列的亮度值、第一色度值和第二色度值的數字視頻數據進行解壓縮的方法,其中各段具有第一像素,其后跟著一個或多個其它像素,以及其中第一像素段緊挨在所述序列中第二像素段之前,其中所述方法包括從存儲器中檢索并擴展所述亮度值;從存儲器中檢索所述第一像素段中的所述第一像素的所述第一色度值;從存儲器中檢索所述第一像素段中的所述第一像素的所述第二色度值;從存儲器中檢索對應于所述第一像素段中第二像素的所述第一色度值的第一值,其中所述第一值或者表示所述第二像素的所述第一色度值和所述第一像素段中緊挨在所述第二像素前面的另一像素的所述第一色度值之間的第一差值,或者所述第一值是不同于表示所述第一差值的值的第一代碼;當所述第一值是所述第一代碼時,根據所述第二像素段中所述第一像素的所述第一色度值建立所述第二像素的所述第一色度值,當所述第一值不是所述第一代碼時,通過將所述第一差值與所述另一像素的所述第一色度值進行組合來建立所述第二像素的所述第一色度值;從存儲器中檢索對應于所述第一像素段中所述第二像素的所述第二色度值的第二值,其中所述第二值或者表示所述第二像素的所述第二色度值和所述第一段中所述另一像素的所述第二色度值之間的所述第二差值,或者所述第二值是不同于表示所述第二差值的值的第二代碼;以及當所述第二值是所述第二代碼時,根據所述第二像素段中所述第一像素的所述第二色度值建立所述第二像素的所述第二色度值,以及當所述第二值不是所述第二代碼時,通過將所述第二差值與所述另一像素的所述第二色度值進行組合來建立所述第二像素的所述第二色度值。
7.如權利要求6所述的方法,其特征在于通過用具有為零的二進制值的比特填充所述亮度值來擴展所述亮度值。
8.如權利要求6所述的方法,其特征在于所述第一代碼和所述第二代碼相同。
9.如權利要求8所述的方法,其特征在于所述第一和第二差值以及所述第一和第二代碼的表示具有相同的比特長度,所述第一差值的所述表示是所述第一差值的二進制表示,所述第二差值的所述表示是所述第二差值的二進制表示,以及所述第一和第二代碼由表示沒有用于表示所述第一和第二差值的二進制差值的值表示。
全文摘要
壓縮符合如ITU-T H.263和MPEG-4 ISO/IEC標準的數字視頻數據流以減少存儲這些流所需的存儲量。一種技術通過對亮度值舍入和舍位以及利用基數樹和調色板對色度值編碼來壓縮幀序列結構。調色板中各項目存儲表示幀序列中實際出現至少一次的顏色的信息。基數樹提供生成存儲在調色板中的顏色的壓縮表示的有效方式,還提供識別調色板中與未存儲在調色板中的數據流中其它顏色最匹配的顏色。另一技術將像素組信息壓縮成編碼信息段。各段編碼信息包括舍入舍位的亮度值、組中第一像素的色度信息全長值和表示組中剩余部分相鄰像素間色度值之差的代碼。當像素和前一像素之色度值差超出閾值時,用特殊“轉義”碼表示像素色度值。
文檔編號H04N9/79GK1825978SQ20061000378
公開日2006年8月30日 申請日期2003年4月17日 優先權日2002年4月19日
發明者K·C·高爾德 申請人:精工愛普生株式會社