專利名稱:可變塊尺寸運動預測方法和裝置的制作方法
技術領域:
本發明涉及信號處理中的圖像和視頻編碼技術領域,特別涉及在編碼過程中可變塊尺寸 運動預測技術。
背景技術:
在視頻壓縮中,為了更好的去除視頻信息的冗余,達到在保持視頻質量的同時盡可能提 高壓縮比的目的,廣泛采用預測編碼和變換編碼結合的基于塊的混合編碼方法,通過變換編 碼將空域圖像映射到頻域系數,有效地去除像素間的空間相關性,而基于運動估計和運動補 償的預測編碼則充分利用了相鄰幀間的時間相關性,從而獲得較好的壓縮性能。
由于塊匹配具有較低的硬件復雜度,對于實際運動來說被認為是最通用的方法之一,因 此在VLSI中廣泛采用,幾乎所有的H. 261/H. 263和MPEG1, 2/4的編解碼電路的物理組合都把塊 匹配用于運動估計。
為了得到最小的預測誤差,在比264〃乂(:中進行幀間預測時不再采用固定塊尺寸模式,而 是采用可變塊尺寸模式對每個劃分的子塊進行運動估計和運動補償,以得到最佳的匹配塊, 從而提高壓縮效率。H.264/AVC的多模式運動估計中, 一個16X16的宏塊(Macroblock, MB) 可以進一步劃分成若干個子塊進行補償。如圖1所示宏塊分割模式包括16X16, 16X8, 8X16, 8X8;對于8X8子塊,可以進一步劃分成8X4, 4X8, 4X4塊模式,具體應用如圖2所示,圖 2的當前宏塊在參考幀的搜索區域內搜索出的最優預測模式為左上方的8X8子塊最優模式為 兩個8X4子塊,對應得運動矢量為MvO和Mvl,其余三個8X8子塊的最優預測模式是8X8塊, 對應得運動矢量分別是Mv2、 Mv3和Mv4。宏塊分割模式大大提高了各宏塊之間及宏塊內部子塊 的關聯性。比264〃¥(:對編碼的宏塊進行運動預測時要遍歷所有的預測模式,即對每一種尺寸 的子塊都要執行一次搜索動作,因此幀間預測就能針對圖像中不同大小物體的各種移動,利用 最適合的子塊尺寸進行組合,以提高搜索的正確性,而不會因為用固定尺寸的塊去搜索不同 大小的物體而導致在移動時產生的誤差。圖3所示為H. 264/AVC中的可變塊尺寸塊匹配運動搜 索示例,在該示例中,經過多模式運動估計,當前宏塊分割成五個子塊,各子塊對應不同方 向的運動矢量。
確定宏塊分割模式(塊的尺寸)后,需要對每一個子塊編碼,計算每一個待編碼的子塊 對應的運動矢量,然后編碼傳輸每個運動矢量和宏塊分割模式。因此當選定一個比較大的塊 尺寸時,則需要較少的碼字對分塊信息和運動矢量進行編碼傳送,但是難于達到精確的匹配,也就是說在圖像的殘差部分可能包含著比較多的信息;而選定一個較小的塊尺寸,可以顯著 降低殘差部分的信息,但是產生比較高的碼率來表示運動矢量和對應的分塊策略。因此在不 同的條件下需要選擇合適塊分塊策略,塊劃分策略的好壞直接影響著編碼系統的效率和壓縮 效果。
目前有兩種普遍的運動預測的方法, 一種方法是對各種宏塊分割模式逐一迸行固定塊尺 寸的運動預測,這種方法由于對每一中宏塊分割模式都需要遍歷搜索窗區域,所需的存儲器 操作帶寬巨大,同時所需的計算時間長,無法實現實時處理。另外一種方法基于具有最小的 宏塊分割尺寸的子塊進行處理,計算出這些最小子塊的SAD殘差值后,通過若干最小子塊的 組合得到較大子塊的SAD殘差值,這種方法需存儲較多的中間計算結果,所需的暫存資源較 多。
發明內容
本發明的目的是為了克服已有技術的不足,提出了一種實時處理H.264/AVC中可變塊尺寸 運動預測方法,該方法可以降低硬件開銷,所需存儲器操作帶寬小,計算時間短,所需暫存 資源少。
本發明同時提出了一種可變塊尺寸運動預測裝置。 可變塊尺寸運動預測方法,包括如下步驟
(1) 從外部存儲器中持續取出待預測幀中用于預測某一候選運動矢量的當前宏塊像素 及其對應的參考宏塊像素,分別存儲在當前宏塊像素存儲器和搜索窗像素存儲器, 直到遍歷搜索窗中的所有候選運動矢量;
(2) 從當前宏塊像素存儲器取出一個候選運動矢量的當前宏塊像素,并對當前宏塊像 素進行降采樣和像素截位處理;
(3) 進行步驟(2)的同時,從搜索窗像素存儲器取出一個候選運動矢量的參考宏塊像 素,并對取出的參考宏塊像素進行降采樣和像素截位處理;
(4) 將步驟(2)和步驟(3)處理后的像素送到SAD計算單元進行運算,計算該候選運 動矢量對應的參考宏塊在各種宏塊分割模式下的SAD值;
(5) 各種宏塊分割模式下的SAD值與前一個候選運動矢量運算得到的各種宏塊分割模 式下的SAD值進行比較,選取各種宏塊分割模式下最小SAD值和對應的運動矢量。
本發明還可以將所述步驟(2)和(3)處理的結果分別緩存在當前宏塊像素寄存器陣列 和參考宏塊像素寄存器陣列,所述當前宏塊像素寄存器陣列,將整個宏塊的像素在同一周期內提供給所述SAD計算單元,所述參考宏塊像素寄存器陣列,將整個宏塊的像素在同一周期內 提供給所述SAD計算單元。
為了便于水平和垂直方向相鄰的兩個侯選運動矢量之間預測處理的連續性,所述參考像 素寄存器陣列在一個計算周期內在垂直方向向上和向下移動若干行像素,在水平方向向左移 動若干列像素。
可變塊尺寸運動預測裝置,包括當前宏塊像素存儲器,搜索窗像素存儲器,宏塊像素
降采樣處理單元一、宏塊像素降采樣處理單元二,像素截位處理單元一、像素截位處理單元
二,當前宏塊像素寄存器陣列,參考宏塊像素寄存器陣列,SAD計算單元,SAD比較單元,運 動預測流程控制單元,其中
所述當前宏塊像素存儲器從外部存儲器中持續取出待預測幀中用于預測某一候選運動矢 量的當前宏塊像素;
所述搜索窗像素存儲器從外部存儲器中持續取出當前宏塊像素對應的參考宏塊像素。 宏塊像素降采樣處理單元一、宏塊像素降采樣處理單元二分別獨立地從當前宏塊像素存
儲器和搜索窗像素存儲器取出當前宏塊像素和參考宏塊像素進行降采樣處理,其在不影響所
述SAD計算精度的前提下減少當前宏塊像素寄存器陣列和參考宏塊像素寄存器陣列的大小,同
時降低SAD計算單元的硬件資源消耗;
像素截位處理單元一、像素截位處理單元二分別獨立地對所述降釆樣處理后的當前宏塊
像素和參考宏塊像素進行像素截位處理,其在不影響所述SAD計算精度的前提下降低SAD計算
單元的硬件資源消耗;
當前宏塊像素寄存器陣列暫存經所述宏塊像素降采樣和截位處理后的當前宏塊像素,寄 存器陣列將整個宏塊的像素在同一周期內提供給所述SAD計算單元;
參考宏塊像素寄存器陣列暫存經所述宏塊像素降采樣和像素截位處理后的參考宏塊像 素,寄存器陣列將整個宏塊的像素在同一周期內提供給所述SAD計算單元;
為了便于水平和垂直方向相鄰的兩個侯選運動矢量之間的預測處理的連續性,參考像素 寄存器陣列在一個計算周期內可在垂直方向向上和向下移位移行像素,在水平方向向左移動 若干列像素的結構;
SAD計算單元計算當前宏塊像素與候選運動矢量對應的參考像素宏塊之間的相似度,將所 述宏塊像素降采樣和截位處理后的當前宏塊像素與參考宏塊像素對應位置上的差值的絕對值 的累加;
SAD比較單元選取各種宏塊分割模式下的最小SAD值所對應的塊模式及運動矢量作為當前
6宏塊位置的預測模式和運動矢量;
運動預測流程控制單元控制當前宏塊像素存儲器、搜索窗像素存儲器、兩個宏塊像素降 采樣處理單元、兩個像素截位處理單元、當前宏塊像素寄存器陣列單元、參考宏塊像素寄存 器陣列單元、宏塊SAD計算單元、SAD比較單元的啟動。
本發明的有益效果主要體現在 一方面本方法采用全流水結構,整個運動估計運算執行 周期短,所需存儲器操作帶寬小,所需暫存資源少,可以實現在編碼器性能、功耗、面積之 間進行權衡,采用降采樣和截位處理可以在不損編碼性能的情況下占用更少的硬件資源,對 編碼器的壓縮效率影響很小;另一方面由于本方法基于塊模式編碼,因此在多種視頻標準實 現都可以采用,具有很強的通用性。根據不同視頻編碼標準,只需要針對多種該標準中宏塊 分割大小調整SAD累加和模式判決單元或模式選擇單元即可。
圖l為運動估計中使用的各種宏塊分割模式
圖2為運動估計中使用的各種宏塊分割模式的應用示例
圖3為H. 264/AVC中的可變塊尺寸塊匹配運動搜索示例
圖4為搜索窗區域與搜索范圍的關系示例。
圖5為本發明采用的l/2降采樣模板。
圖6為本發明8x8宏塊分割的SAD計算和組合的過程
圖7為本發明可變塊尺寸運動預測方法流程圖和可變塊尺寸運動預測裝置結構圖 圖8為本發明實施例所實現的不同位數像素截位處理結果同JM8.4參考代碼的比較圖 圖9為本發明實施例所實現的H. 264/AVC編碼器RD曲線同JM8. 4參考代碼的比較圖
具體實施例方式
以下結合附圖對本發明內容進一步說明。
可變塊尺寸運動預測方法,包括如下步驟,如圖7所示
(1) 從外部存儲器中持續取出待預測幀中用于預測某一候選運動矢量的當前宏塊像素 及其對應的參考宏塊像素,分別存儲在當前宏塊像素存儲器和搜索窗像素存儲器, 直到遍歷搜索窗中的所有候選運動矢量;
(2) 從當前宏塊像素存儲器取出一個候選運動矢量的當前宏塊像素,并對當前宏塊像 素進行降采樣和像素截位處理;(3) 進行步驟(2)的同時,從搜索窗像素存儲器取出一個候選運動矢量的參考宏塊像 素,并對取出的參考宏塊像素進行降采樣和像素截位處理;
(4) 將步驟(2)和步驟(3)處理后的像素送到SAD計算單元進行運算,計算該候選運 動矢量對應的參考宏塊在各種宏塊分割模式下的SAD值;
(5) 各種宏塊分割模式下的SAD值與前一個候選運動矢量運算得到的各種宏塊分割模 式下的SAD值進行比較,選取各種宏塊分割模式下最小SAD值和對應的運動矢量。
本發明還可以將所述步驟(2)和(3)處理的結果分別緩存在當前宏塊像素寄存器陣列 和參考宏塊像素寄存器陣列,所述當前宏塊像素寄存器陣列,將整個宏塊的像素在同一周期 內提供給所述SAD計算單元,所述參考宏塊像素寄存器陣列,將整個宏塊的像素在同一周期內 提供給所述SAD計算單元。
為了便于水平和垂直方向相鄰的兩個侯選運動矢量之間預測處理的連續性,所述參考像 素寄存器陣列在一個計算周期內在垂直方向向上和向下移動若干行像素,在水平方向向左移 動若干列像素。
可變塊尺寸運動預測裝置,如圖7所示,包括當前宏塊像素存儲器(1),搜索窗像素存 儲器(2),宏塊像素降釆樣處理單元一 (3)、宏塊像素降采樣處理單元二 (4)、像素截位處 理單元一 (5)、像素截位處理單元二 (6),當前宏塊像素寄存器陣列(7),參考宏塊像素寄 存器陣列(8), SAD計算單元(9), SAD比較單元(10),運動預測流程控制單元(11),其中
所述當前宏塊像素存儲器(1)從外部存儲器中持續取出待預測幀中預測某一候選運動矢 量的當前宏塊像素;
所述搜索窗像素存儲器(2)從外部存儲器中持續取出當前宏塊像素對應的參考宏塊像素, 搜索窗內所存儲的參考像素宏塊的個數取決于所采用的搜索范圍,例如,對于水平方向 [-16,15],垂直方向[-16,15]的搜索范圍,所需裝載的參考像素宏塊個數為3x3-9個;對于水 平方向[-32,31],垂直方向[-32,31]的搜索范圍,所需裝載的參考像素宏塊個數為5^=25個, 圖4所示為搜索窗中宏塊的個數與搜索范圍關系;
宏塊像素降采樣處理單元一 (3)、宏塊像素降采樣處理單元二 (4)分別獨立地從當前宏 塊像素存儲器和搜索窗像素存儲器取出當前宏塊像素和參考宏塊像素進行降采樣處理,其在 不影響所述SAD計算精度的前提下減少當前宏塊像素寄存器陣列和參考宏塊像素寄存器陣列 的大小,同時降低SAD計算單元的硬件資源消耗,圖5所示為一種降采樣模式的示例;
像素截位處理單元一 (5)、像素截位處理單元二 (6)分別獨立地對所述降采樣處理后的 當前宏塊像素和參考宏塊像素進行像素截位處理,其在不影響所述SAD計算精度的前提下降低
8SAD計算單元的硬件資源消耗。
像素截位處理的具體實現是對像素進行右移的處理,保留移位后的高位數據,如對8位像 素進行保留5位的截位處理,只需右移3位即可。如圖8所示本發明實現的不同位數像素截位處 理的結果比較,比較的基準是JM8.4參考代碼,像素截位處理從高到低分別取保留7位數據、 保留6位數據、保留5位數據和保留4位數據四種情況。結果表明,像素數據保留5位時,編碼 器的整體性能有略微的下降,信噪比降低O. ldB左右;而像素數據保留4位時,編碼器的整體 性能下降較多,信噪比降低0.3dB左右。
當前宏塊像素寄存器陣列(7)暫存經所述宏塊像素降采樣和截位處理后的當前宏塊像素, 寄存器陣列將整個宏塊的像素在同一周期內提供給所述SAD計算單元。
參考宏塊像素寄存器陣列(8)暫存經所述宏塊像素降采樣和像素截位處理后的參考宏塊 像素,寄存器陣列將整個宏塊的像素在同一周期內提供給所述SAD計算單元。
為了便于水平和垂直方向相鄰的兩個侯選運動矢量之間的預測處理的連續性,參考像素 寄存器陣列(8)在一個計算周期內可在垂直方向向上和向下移位移行像素,在水平方向向左 移動若干列像素的結構。
SAD計算單元(9)計算當前宏塊像素與候選運動矢量對應的參考像素宏塊之間的相似度, 將所述宏塊像素降采樣和截位處理后的當前宏塊像素與參考宏塊像素對應位置上的差值的絕 對值的累加。 一種由最小宏塊分割的SAD得到較大宏塊分割的SAD的計算和組合的過程如圖6 所示,該圖所示為一個8x8宏塊分割的SAD計算和組合的過程,其他宏塊分割的SAD計算與組合 過程與此類似。
SAD比較單元(10)包括SAD比較單元一和SAD比較單元二,
其中,SAD比較單元一,選定某一宏塊分割模式,比較不同的候選運動矢量在該宏塊分割 下的SAD值,從而選擇一個具有最小SAD值的運動矢量。
其中,SAD比較單元二,在SAD比較單元一提供的結果中,比較各種宏塊分割所對應的最 小的SAD值,選其中最小者所對應的宏塊分割模式及運動矢量作為當前宏塊位置的預測模式和 運動矢量。
SAD比較單元的另外一種實現是包括SAD比較單元三和SAD比較單元四,
其中,SAD比較單元三,比較同一候選運動矢量在各種宏塊分割下的SAD值,從而選擇一
個具有最小SAD值的子塊模式。
其中,SAD比較單元四,在SAD比較單元三提供的結果中,比較各個候選運動矢量對應的
最小的SAD值,選其中最小者所對應的塊模式及運動矢量作為當前宏塊位置的預測模式和運動運動預測流程控制單元(11)控制當前宏塊像素存儲器、搜索窗像素存儲器、兩個宏塊 像素降采樣處理單元、兩個像素截位處理單元、當前宏塊像素寄存器陣列單元、參考宏塊像 素寄存器陣列單元、宏塊SAD計算單元、SAD比較單元的啟動。
如圖9所示為本發明實現的H.264/AVC編碼器RD曲線比較,比較基準是JM8. 4參考代碼。結 果表明,本發明所實現的化264/八¥(:編碼器在相同的碼率下,相比于JM8.4參考代碼,信噪比 降低O. ldB左右。
應該理解到的是,上述實施例只是對本發明的說明,而不是對本發明的限制,任何不超 出本發明實質精神范圍內的發明創造,均落入本發明保護范圍之內。
權利要求
1.可變塊尺寸運動預測方法,其特征在于包括如下步驟(1)從外部存儲器中持續取出待預測幀中用于預測某一候選運動矢量的當前宏塊像素及其對應的參考宏塊像素,分別存儲在當前宏塊像素存儲器和搜索窗像素存儲器,直到遍歷搜索窗中的所有候選運動矢量;(2)從當前宏塊像素存儲器取出一個候選運動矢量的當前宏塊像素,并對當前宏塊像素進行降采樣和像素截位處理;(3)進行步驟(2)的同時,從搜索窗像素存儲器取出一個候選運動矢量的參考宏塊像素,并對取出的參考宏塊像素進行降采樣和像素截位處理;(4)將步驟(2)和步驟(3)處理后的像素送到SAD計算單元進行運算,計算該候選運動矢量對應的參考宏塊在各種宏塊分割模式下的SAD值;(5)各種宏塊分割模式下的SAD值與前一個候選運動矢量運算得到的各種宏塊分割模式下的SAD值進行比較,選取各種宏塊分割模式下最小SAD值和對應的運動矢量。
2. 如權利要求1所述可變塊尺寸運動預測方法,其特征在于將所述步驟(2)和(3)處理 的結果分別緩存在當前宏塊像素寄存器陣列和參考宏塊像素寄存器陣列,所述當前宏塊 像素寄存器陣列,將整個宏塊的像素在同一周期內提供給所述SAD計算單元,所述參考 宏塊像素寄存器陣列,將整個宏塊的像素在同一周期內提供給所述SAD計算單元。
3. 如權利要求1所述可變塊尺寸運動預測方法,其特征在于所述參考像素寄存器陣列為在 一個計算周期內在垂直方向向上和向下移動若干行像素,在水平方向向左移動若干列像素。
4. 可變塊尺寸運動預測裝置,其特征在于包括當前宏塊像素存儲器,搜索窗像素存儲器, 宏塊像素降采樣處理單元一、宏塊像素降采樣處理單元二,像素截位處理單元一、像素 截位處理單元二,當前宏塊像素寄存器陣列,參考宏塊像素寄存器陣列,SAD計算單元, SAD比較單元,運動預測流程控制單元,其中-所述當前宏塊像素存儲器從外部存儲器中持續取出待預測幀中用于預測某一候選運 動矢量的當前宏塊像素;所述搜索窗像素存儲器從外部存儲器中持續取出當前宏塊像素對應的參考宏塊像素。宏塊像素降采樣處理單元一、宏塊像素降采樣處理單元二分別獨立地從當前宏塊像素 存儲器和搜索窗像素存儲器取出當前宏塊像素和參考宏塊像素進行降采樣處理;像素截位處理單元一、像素截位處理單元二分別獨立地對所述降釆樣處理后的當前宏 塊像素和參考宏塊像素進行像素截位處理;當前宏塊像素寄存器陣列暫存經所述宏塊像素降采樣和截位處理后的當前宏塊像素, 寄存器陣列將整個宏塊的像素在同一周期內提供給所述SAD計算單元;參考宏塊像素寄存器陣列暫存經所述宏塊像素降釆樣和像素截位處理后的參考宏塊 像素,寄存器陣列將整個宏塊的像素在同一周期內提供給所述SAD計算單元;SAD計算單元計算當前宏塊像素與候選運動矢量對應的參考像素宏塊之間的相似度, 將所述宏塊像素降采樣和截位處理后的當前宏塊像素與參考宏塊像素對應位置上的差值 的絕對值的累加;SAD比較單元選取各種宏塊分割模式下的最小SAD值所對應的塊模式及運動矢量作 為當前宏塊位置的預測模式和運動矢量;運動預測流程控制單元控制當前宏塊像素存儲器、搜索窗像素存儲器、兩個宏塊像 素降采樣處理單元、兩個像素截位處理單元、當前宏塊像素寄存器陣列單元、參考宏塊像素寄存器陣列單元、宏塊SAD計算單元、SAD比較單元的啟動。
5.如權利要求4所述可變塊尺寸運動預測裝置,其特征在于所述的參考像素寄存器陣列在 一個計算周期內可在垂直方向向上和向下移位一行像素,在水平方向向左移動若干列像素的結構。
全文摘要
本發明提供了可變塊尺寸運動預測方法持續取出待預測幀中用于預測某一候選運動矢量的當前宏塊像素及其對應的參考宏塊像素,分別存儲在當前宏塊像素存儲器和搜索窗像素存儲器,直到遍歷搜索窗中的所有候選運動矢量;取出當前宏塊像素進行降采樣和像素截位處理;同時取出參考宏塊像素進行降采樣和像素截位處理;將處理后的候選運動矢量對應的參考宏塊在各種宏塊分割模式下的SAD值;選取各種宏塊分割模式下最小SAD值和對應的運動矢量。本發明采用全流水結構,整個運動估計運算執行周期短,可以實時處理,實現在編碼器性能、功耗、面積之間進行權衡,具有很強的通用性。
文檔編號H04N7/26GK101605262SQ20091010053
公開日2009年12月16日 申請日期2009年7月9日 優先權日2009年7月9日
發明者胡紅旗, 陳劍軍 申請人:杭州士蘭微電子股份有限公司