專利名稱:幀間模式選擇方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息處理的視頻編碼技術(shù),特別是H. 264視頻編碼的幀間模式選擇方法。
背景技術(shù):
H. 264是由ITU-T視頻編碼專家組和IS0/IEC動態(tài)圖像專家組聯(lián)合組成的聯(lián)合視 頻組(JVT,Joint Video Team)提出的高度壓縮數(shù)字視頻編解碼器標(biāo)準(zhǔn)。這種編碼技術(shù)也 被稱為AVC,即高級視頻編碼。H. 264標(biāo)準(zhǔn)包含一系列新的特征,例如支持多參考幀、最大 16x16至最小4x4的可變尺寸塊以及1/4像素精度的運動估計。在相同的重建圖像質(zhì)量下, H. 264標(biāo)準(zhǔn)可比H. 263標(biāo)準(zhǔn)節(jié)約50%左右的碼率。在H. 264標(biāo)準(zhǔn)中,對整數(shù)和分?jǐn)?shù)樣本的預(yù)測,采用1/4像素或者1/8像素的運動估 計,也就是說,其真正的運動矢量位移可能是以1/4或者1/8像素為基本單位的。具體來說, H. 264通過6階FIR濾波器對整數(shù)像素運動預(yù)測參考值進行內(nèi)插,獲得1/2像素運動預(yù)測參 考值,然后,通過線性內(nèi)插獲得1/4像素運動預(yù)測參考值。兩個縱向或橫向的1/2像素或整 數(shù)像素運動預(yù)測參考值形成1/4像素運動預(yù)測參考值,這些1/4像素運動預(yù)測參考值在相 鄰取樣間被內(nèi)插值替換,剩余的1/4像素由處于對角位置的一對1/2像素線性地內(nèi)插進行 替換。由于亮度部分的1/4像素運動矢量對應(yīng)到色度部分就是1/8像素的運動矢量,因此 需要對色度信號進行1/8像素的內(nèi)插運算。在每一個色度宏塊中,在整數(shù)像素的1/8間隔, 以內(nèi)插值的形式產(chǎn)生1/8像素色度樣本。1/4像素精度的運動估計提高了運動矢量的精度,從而減小了幀間估計誤差,提高 了壓縮比,但是同時,計算十分復(fù)雜且計算量巨大,據(jù)估計,H. 264編碼的計算復(fù)雜度大約相 當(dāng)于H. 263的3倍。通過軟件實現(xiàn)編碼的過程中,對于幀間模式選擇,通常遍歷所有可能的模式,計算 對應(yīng)的代價函數(shù),獲得具有最小值代價函數(shù)對應(yīng)的運動矢量。但是,如果需要達到實時的效 果,通過軟件實現(xiàn)不僅對計算機主頻的要求很高,并且功耗很大,而這些對于小型手持設(shè)備 等需要實時進行視頻編碼的應(yīng)用設(shè)備而言,太過奢侈,也無法實現(xiàn)。因此,常采用硬件代替 軟件,實現(xiàn)編碼的過程。硬件實現(xiàn)具有并行處理、處理速度快并且功耗低等顯著優(yōu)點。目前硬件編碼通常是采用流水線方式實現(xiàn)的,在其實現(xiàn)過程中,編碼過程被分為 若干個階段。參考圖1,101階段至104階段分別為在流水線編碼的幀間模式選擇過程中,對 一個宏塊的四個運算操作階段,其中,101階段進行碼率控制、去塊效應(yīng)以及流編碼,102階 段進行整數(shù)像素的運動估計,103階段進行分?jǐn)?shù)像素的運動估計,104階段進行運動補償、 變換和量化。對于同一個宏塊依次進行上述四個階段的運算,每個階段的運算依賴于前一 階段的運算結(jié)果或運算過程中所獲得的中間結(jié)果。由于在流水線實現(xiàn)的過程中,每個階段的運算依賴于前一階段的運算結(jié)果或運算 過程中所獲得的中間結(jié)果,導(dǎo)致當(dāng)前宏塊的編碼模式的預(yù)測以及運動矢量的計算依賴于前 一宏塊,因此,流水線的實現(xiàn)速度受到很大的限制,并且占用大量存儲和帶寬。
發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問題是幀間模式選擇的流水線實現(xiàn)中,當(dāng)前宏塊的幀間編碼模 式和運動矢量的代價函數(shù)計算所需要的預(yù)測運動矢量,依賴于前一宏塊,從而導(dǎo)致流水線堵塞。為解決上述技術(shù)問題,本發(fā)明提供一種幀間模式選擇方法,包括根據(jù)相鄰塊的運 動矢量,獲得大尺寸剖分模式的運動矢量預(yù)測值,其中,當(dāng)前宏塊的上鄰塊的參考幀索引和 運動矢量采用其最終用于編碼的精確結(jié)果,當(dāng)前宏塊的左鄰塊的參考幀索引和運動矢量采 用其整數(shù)運動估計階段計算結(jié)果;根據(jù)所述大尺寸剖分模式的運動矢量預(yù)測值,確定搜索 起始點;計算所有剖分模式的代價函數(shù),確定所選取的剖分模式;根據(jù)所獲得的剖分模式, 插值周邊的分?jǐn)?shù)像素;進行分?jǐn)?shù)階段的運動估計,獲得所述最佳剖分模式的分?jǐn)?shù)像素運動 矢量??蛇x的,所述大尺寸剖分模式包括16x16剖分、16x8剖分以及8x16剖分。可選的,對于16x16剖分,所述根據(jù)相鄰塊信息,獲得大尺寸剖分模式的運動矢量 預(yù)測值包括通過右上鄰塊是否在圖像的有效范圍內(nèi)判斷所述右上鄰塊是否為有效塊,當(dāng) 所述右上鄰塊在圖像的有效范圍時,比較所述有效塊與左鄰塊、上鄰塊、當(dāng)前剖分的參考幀 索引是否相同,根據(jù)參考幀索引相同的個數(shù),計算當(dāng)前剖分的運動矢量預(yù)測值;當(dāng)所述右上 鄰塊不在圖像的有效范圍內(nèi)時,以左上鄰塊取代右上鄰塊作為有效塊,比較所述有效塊與 左鄰塊、上鄰塊和當(dāng)前剖分的參考幀索引是否相同,根據(jù)參考幀索引相同的個數(shù),計算當(dāng)前 剖分運動矢量預(yù)測值;所述左鄰塊的參考幀索引為其在整數(shù)運動估計階段的計算結(jié)果,所 述上鄰塊和有效塊的參考幀索引為其最終用于編碼的精確結(jié)果??蛇x的,所述根據(jù)相同的個數(shù)計算當(dāng)前剖分運動矢量預(yù)測值包括如果所述相同 的個數(shù)大于1,以有效塊、左鄰塊、上鄰塊運動矢量的中值作為當(dāng)前宏塊的運動矢量預(yù)測值; 如果所述相同的個數(shù)為1,以和當(dāng)前宏塊有相同參考幀索引的對應(yīng)塊的運動矢量作為當(dāng)前 宏塊的運動矢量預(yù)測值;如果左鄰塊在圖像的有效范圍內(nèi)并且上鄰塊不在圖像的有效范圍 內(nèi),那么以左鄰塊的運動矢量作為當(dāng)前宏塊的運動矢量預(yù)測值;否則也以有效塊、左鄰塊、 上鄰塊運動矢量的中值作為當(dāng)前宏塊的運動矢量預(yù)測值;所述左鄰塊的運動矢量為其在整 數(shù)運動估計階段的計算結(jié)果,所述剖分的上鄰塊和有效塊的運動矢量為其最終用于編碼的 精確結(jié)果??蛇x的,對于宏塊上半部分的16x8剖分,所述根據(jù)相鄰塊信息,獲得大尺寸剖分 模式的運動矢量預(yù)測值包括比較所述宏塊上鄰塊的參考幀索引和所述宏塊的參考幀索引 是否相同,如果所述宏塊上鄰塊的參考幀索引和所述宏塊的參考幀索引相同,以所述宏塊 上鄰塊的運動矢量為所述剖分的運動矢量預(yù)測值;如果所述宏塊上鄰塊的參考幀索引和所 述宏塊的參考幀索引不同,以所述宏塊的運動矢量預(yù)測值為所述剖分的運動矢量預(yù)測值; 所述左鄰塊的運動矢量和參考幀索引為其在整數(shù)運動估計階段的計算結(jié)果,上鄰塊的參考 幀索引為其最終用于編碼的精確結(jié)果??蛇x的,對于宏塊下半部分的16x8剖分,所述運動矢量預(yù)測值包括為所述宏塊左 鄰塊的整數(shù)像素運動矢量??蛇x的,對于宏塊左半部分的8x16剖分,所述運動矢量預(yù)測值包括為所述宏塊左鄰塊的整數(shù)像素運動矢量??蛇x的,對于宏塊右半部分的8x16剖分,所述根據(jù)相鄰塊信息,獲得大尺寸剖分 模式的運動矢量預(yù)測值包括比較所述宏塊上鄰塊的參考幀索引和所述宏塊的參考幀索引 是否相同,如果所述宏塊上鄰塊的參考幀索引和所述宏塊的參考幀索引相同,以所述宏塊 上鄰塊的運動矢量為所述剖分的運動矢量預(yù)測值;如果所述宏塊上鄰塊的參考幀索引和所 述宏塊的參考幀索引不同,以所述宏塊的運動矢量預(yù)測值為所述剖分的運動矢量預(yù)測值; 所述左鄰塊的運動矢量和參考幀索引為其在整數(shù)運動估計階段的計算結(jié)果,上鄰塊的參考 幀索引為其最終用于編碼的精確結(jié)果??蛇x的,所述根據(jù)大尺寸剖分模式的運動矢量預(yù)測值,確定起始搜索點,包括根 據(jù)16x16剖分的運動矢量預(yù)測值確定起始搜索點??蛇x的,所述根據(jù)16x16剖分的運動矢量預(yù)測值確定起始搜索點,包括將距離 16x16剖分運動矢量預(yù)測值最近的整數(shù)位置作為起始搜索點。可選的,所述計算所有剖分模式的代價函數(shù),確定所選取的剖分模式,包括設(shè)定 其它剖分模式的偏向值;對每一種剖分模式進行運動估計,并根據(jù)所述偏向值,計算其代價 函數(shù),以所獲得的代價函數(shù)中具有最小值的為所述選取的剖分模式。可選的,所述對每一種剖分模式進行運動估計包括對于每一個搜索點,計算代價 函數(shù);確定搜索方向,獲得下一個搜索點,進行代價函數(shù)的計算,直至搜索完成??蛇x的,所述計算所有剖分模式的代價函數(shù),確定所選取的剖分模式,包括在搜 索起始點,計算所有剖分模式的匹配誤差,獲得并保存匹配結(jié)果;確定搜索方向,獲得下一 個搜索點;在每一個非起始點的搜索點,計算所有剖分模式的匹配誤差,并更新所述保存的 匹配結(jié)果;搜索完成后,根據(jù)所述匹配結(jié)果,計算所有剖分模式的代價函數(shù);根據(jù)各剖分模 式的代價函數(shù),確定所選取的剖分模式。與現(xiàn)有技術(shù)相比,本發(fā)明通過在整數(shù)像素運動估計過程中利用左鄰塊整數(shù)像素階 段的結(jié)果計算代價函數(shù),獲得最佳剖分模式,根據(jù)最佳剖分模式對應(yīng)的運動預(yù)測參考值,插 值其周邊的分?jǐn)?shù)像素,進行分?jǐn)?shù)階段的運動估計,獲得所述最佳剖分模式的分?jǐn)?shù)像素運動 矢量,從而獲得當(dāng)前宏塊的最佳預(yù)測模式,減少了相鄰宏塊之間的依賴,提高了流水線的處 理速度和編碼效率。
圖1是視頻編碼流水線處理過程的示意圖;圖2是本發(fā)明幀間模式選擇方法實施方式的流程示意圖;圖3是本發(fā)明幀間模式選擇方法實施方式中當(dāng)前宏塊與相鄰塊位置關(guān)系的結(jié)構(gòu) 示意圖;圖4是本發(fā)明幀間模式選擇方法實施方式中16x8上半剖分和相鄰塊位置示意 圖;圖5是本發(fā)明幀間模式選擇方法實施方式中16x8下半剖分和相鄰塊位置示意 圖;圖6是本發(fā)明幀間模式選擇方法實施方式中8x16左半剖分和相鄰塊位置示意 圖7是本發(fā)明幀間模式選擇方法實施方式中8x16右半剖分和相鄰塊位置示意 圖;圖8是圖2中步驟S3 —種具體實施方式
的流程示意圖;圖9是圖2中步驟S3另一種具體實施方式
的流程示意圖;圖10是圖9中步驟S具體實施方式
的流程示意圖。
具體實施例方式由于H. 264僅對運動矢量殘差,即實際運動矢量與運動矢量預(yù)測值的差值,進行 編碼,而運動矢量預(yù)測值需要通過相鄰塊信息計算得到的,因此視頻編碼的硬件流水線實 現(xiàn)中,前后兩個相鄰宏塊存在較強的依賴關(guān)系。具體來說,參考圖1,對于幀間模式估計,在 t時刻,當(dāng)進行(x+1)宏塊整數(shù)像素的運動估計時,需要應(yīng)用到x宏塊最終用于編碼的運動 矢量精確值,但是此時,X宏塊只完成了整數(shù)像素階段的運動估計,僅獲得其整數(shù)像素的運 動矢量,也就是說,由于整數(shù)像素階段對最終用于編碼的精確結(jié)果的依賴關(guān)系,使得當(dāng)前宏 塊的計算需要等待前一宏塊確定其最終編碼方式之后才能開始。這種依賴關(guān)系將影響流水 線,造成流水線的堵塞。本發(fā)明實施方式采用當(dāng)前宏塊左鄰塊整數(shù)像素運動估計階段的結(jié)果來代替該左 鄰塊最終用于編碼的精確結(jié)果對當(dāng)前宏塊進行整數(shù)像素運動估計,得到當(dāng)前宏塊的運動 矢量預(yù)測值,并計算代價函數(shù),獲得最佳剖分模式,根據(jù)最佳剖分模式對應(yīng)的運動預(yù)測參考 值,插值其周邊的分?jǐn)?shù)像素,進行分?jǐn)?shù)像素的運動估計,獲得所述最佳剖分模式的分?jǐn)?shù)像素
運動矢量。下面首先結(jié)合附圖和實施例,對本發(fā)明實施方式進行詳細的說明。參考圖2,本發(fā)明實施方式提供一種幀間模式選擇方法,包括步驟S1,根據(jù)相鄰 塊的運動矢量,獲得大尺寸剖分模式的運動矢量預(yù)測值,其中,當(dāng)前宏塊的上鄰塊的參考幀 索引和運動矢量采用其最終用于編碼的精確結(jié)果,當(dāng)前宏塊的左鄰塊的參考幀索引和運動 矢量采用其整數(shù)運動估計階段計算結(jié)果;步驟S2,根據(jù)所述大尺寸剖分模式的運動矢量預(yù) 測值,確定搜索起始點;步驟S3,計算所有剖分模式的代價函數(shù),確定所選取的剖分模式; 步驟S4,根據(jù)所獲得的剖分模式,插值周邊的分?jǐn)?shù)像素;步驟S5,進行分?jǐn)?shù)階段的運動估 計,獲得所述最佳剖分模式的分?jǐn)?shù)像素運動矢量。參考圖3,E為當(dāng)前宏塊,A、B、C和D分別為E的左、上、右上和左上相應(yīng)模式的相 鄰塊。由于進行編碼時,總是按照從左往右和從上往下的順序編碼,所述根據(jù)相鄰塊信息估 計大尺寸剖分模式的運動矢量預(yù)測值,可僅根據(jù)當(dāng)前塊左邊或上邊的相鄰塊進行估計。相鄰塊可能引用相同的參考幀,也可能引用不同的參考幀。塊的參考幀索引用于 標(biāo)識該塊所引用的參考幀。具體來說,當(dāng)相鄰塊的參考幀索引為_2時,表示該塊不在圖像 的有效范圍內(nèi);當(dāng)相鄰塊的參考幀索引為-1時,表示該塊為INTRA塊;當(dāng)相鄰塊的參考幀 索引為0時,表示該塊以最近的一個前向重建幀為參考;當(dāng)相鄰塊的參考幀索引為其它值 時,表示該塊以其它重建幀為參考。因此,通過比較當(dāng)前塊和相鄰塊的參考幀索引,可確定 兩者是否引用同一幀圖像作參考。其中,所述大尺寸剖分模式可包括16x16剖分、16x8剖分以及8x16剖分。具體來說,對于16x16剖分,判斷C塊是否在圖像的有效范圍內(nèi)當(dāng)C塊在圖像的有效范圍時,分別比較A塊,B塊,C塊和宏塊E的參考幀索引是否相同,根據(jù)相同參考幀索 引的個數(shù)N進行判斷如果N > 1,以A塊、B塊、C塊運動矢量的中值作為宏塊E的運動矢 量預(yù)測值;如果N = 1,以和宏塊E有相同參考幀索引的對應(yīng)塊的運動矢量作為宏塊E的運 動矢量預(yù)測值;如果A塊在圖像的有效范圍內(nèi)并且B塊不在圖像的有效范圍內(nèi),那么以A塊 的運動矢量作為宏塊E的運動矢量預(yù)測值;否則也以A塊、B塊、C塊運動矢量的中值作為 宏塊E的運動矢量預(yù)測值。當(dāng)C塊不在圖像的有效范圍內(nèi)時,以D塊取代C塊進行上述判 斷。其中,上述A塊的運動矢量和參考幀索引為其在整數(shù)運動估計階段所得到的,B塊和C 塊的參考幀索引為其最終用于編碼的精確值。對于16x8剖分,16x8剖分可為宏塊的上半部分或宏塊的下半部分。參考圖4,當(dāng) 16x8剖分為宏塊E的上半部分501時,比較B1塊的參考幀索引和宏塊E的參考幀索引是否 相同當(dāng)B1塊的參考幀索引和宏塊E的參考幀索引相同時,以B1塊的運動矢量為該16x8 剖分501的運動矢量預(yù)測值,反之,當(dāng)B1塊的參考幀索引和宏塊E的參考幀索引不同時, 以所述16x16剖分的運動矢量預(yù)測值為該16x8剖分501的運動矢量預(yù)測值。參考圖5,當(dāng) 16x8剖分為宏塊E的下半部分601時,以A2塊的運動矢量作為該16x8剖分601的運動矢 量預(yù)測值。其中,上述Al、A2塊的運動矢量和參考幀索引為其在整數(shù)運動估計階段所得到 的,B1塊的參考幀索引為其最終用于編碼的精確值。對于8x16剖分,8x16剖分可為宏塊的左半部分或宏塊的右半部分。參考圖6,當(dāng) 該8x16剖分為宏塊E的左半部分701時,以A3塊的運動矢量作為該8x16剖分701的運動 矢量預(yù)測值。參考圖7,當(dāng)該8x16剖分為宏塊E的左半部分801時,比較B4塊的參考幀索 引和宏塊E的參考幀索引是否相同當(dāng)B4塊的參考幀索引和宏塊E的參考幀索引相同時, 以B4塊的運動矢量為該8x16剖分的運動矢量預(yù)測值,反之,當(dāng)B4塊的參考幀索引和宏塊E 的參考幀索引不同時,則以所述16x16剖分的運動矢量預(yù)測值為該8x16剖分801的運動矢 量預(yù)測值。其中,上述A3塊的運動矢量和參考幀索引為其在整數(shù)運動估計階段所得到的, B4塊的參考幀索引為其最終用于編碼的精確值。步驟S2可包括根據(jù)16x16剖分的運動矢量預(yù)測值確定搜索起始點。具體來說, 可包括將距離16x16剖分運動矢量預(yù)測值最近的整數(shù)位置作為搜索起始點。確定搜索點后,執(zhí)行步驟S3。在不同的實施方式中,用于衡量匹配準(zhǔn)確度的代價函數(shù)ME COST可具有不同的表 達形式,用以表示在某剖分模式下,根據(jù)匹配原則計算當(dāng)前塊的編碼代價。其中,絕對差之 和SAD(Sums of absolute difference)是一種常用的匹配原則,用于表示在某剖分模式 下,當(dāng)前塊與匹配塊的絕對誤差之和。具體來說,即當(dāng)前待編碼宏塊的亮度分量和參考幀中 對應(yīng)亮度塊的所有對應(yīng)位置像素差的絕對值之和。在步驟S3的一種具體實施方式
中,代價函數(shù)為絕對差之和與偏向值的和,即ME_ COST = SAD+BIAS。參考圖8,可包括步驟S21,設(shè)定其它剖分模式的偏向值BIAS ;步驟S22, 對每一種剖分模式進行運動估計,并根據(jù)所述偏向值,計算其代價函數(shù),以所獲得的代價函 數(shù)中具有最小值的剖分模式為所述選取的剖分模式。具體來說,步驟S21中,對于不同剖分模式,所述設(shè)定的偏向值各不相同。一般來 說,8x8剖分模式、8x4剖分模式和4x8剖分模式的偏向值之間存在這樣的關(guān)系BIAS8X8 > BIAS8X4以及BIAS8X8 > BIAS4X8 ;8x4剖分模式、4X8剖分模式和4x4剖分模式的偏向值之間
8存在這樣的關(guān)系:bias4x8 > bias4X4 以及 bias8x4 > bias4x4。步驟S22中,對于一種剖分模式,可包括對于每一個搜索點,計算代價函數(shù)ME_ COST;確定搜索方向,獲得下一個搜索點,進行代價函數(shù)的計算,直至搜索完成。以16x16剖分模式為例,首先,計算其在搜索起始點的代價函數(shù);確定下一個搜索 點,再次計算其在該搜索點的代價函數(shù),并與在搜索起始點所獲得的代價函數(shù)進行比較,保 存其較小的一個;再確定下一個搜索點,重復(fù)該過程,直至搜索結(jié)束,獲得16x16剖分模式 具有最小值的代價函數(shù)。對每一種剖分模式都進行同樣的運動估計過程,也就是說,步驟S22搜索完成之 后,將獲得19種剖分模式,所對應(yīng)的最小的代價函數(shù),將這些代價函數(shù)進行比較,最小的代 價函數(shù)所對應(yīng)得剖分模式為所選取的剖分模式。其中,19種剖分模式,包括16xl6、16x8、 8x16三種大的剖分模式,以及四個各包括8x8、8x4、4x8和4x4四種剖分模式的8x8剖分模 式,也就是16個小的剖分模式。在步驟S3的另一種實施方式中,還可將SAD與運動矢量代價函數(shù),即MV COST,的和值作為代價函數(shù)ME COST。其中,運動矢量代價函數(shù)定義為MV_C0ST = 入[R (| MVX-PMVX |) +R (| MVy-PMVy |) ] ;MV為運動矢量;PMV為運動矢量預(yù)測值;\是僅與宏塊 量化參數(shù)QP相關(guān)的數(shù),QP與碼流和畫質(zhì)相關(guān),當(dāng)QP值越小時,對應(yīng)畫質(zhì)越好,碼流也越大, 同時\也越大;R是格倫布(即Exp_Golomb)編碼的碼長。參考圖9,具體可包括步驟S31,在搜索起始點,計算所有剖分模式的匹配誤差, 獲得并保存匹配結(jié)果;步驟S32,確定搜索方向,獲得下一個搜索點;步驟S33,在每一個非 起始點的搜索點,計算所有剖分模式的匹配誤差,并更新所述保存的匹配結(jié)果;重復(fù)步驟 S32和步驟S33,直到搜索完成;步驟S34,搜索完成后,根據(jù)所述匹配結(jié)果,計算所有剖分模 式的代價函數(shù);步驟S35,根據(jù)各剖分模式的代價函數(shù),確定所選取的剖分模式。其中,所述匹配誤差包括大尺寸剖分模式的代價函數(shù),以及其它剖分模式的絕對 差之和及對應(yīng)的運動矢量,在搜索過程中,只將具有最小代價函數(shù)值的大尺寸剖分模式所 對應(yīng)搜索點的代價函數(shù)、或者具有最小絕對差之和的其它剖分模式所對應(yīng)搜索點的絕對差 之和及運動矢量保存在匹配結(jié)果中,并隨著搜索過程,對所述匹配結(jié)果進行更新。其中,參考圖10,步驟S31可包括步驟S301,計算各種剖分模式的SAD ;步驟 S302,計算大尺寸剖分模式的運動矢量代價函數(shù)和其它剖分模式的運動矢量;步驟S303, 根據(jù)所述大尺寸剖分模式的運動矢量代價函數(shù)和SAD,計算所述大尺寸剖分模式的代價函 數(shù);步驟S304,以所述大尺寸剖分模式的代價函數(shù)、其它剖分模式的SAD以及對應(yīng)的運動矢 量,即5個大尺寸模式的ME_C0ST、其它36個SAD以及對應(yīng)的運動矢量,作為匹配結(jié)果,進行 保存。具體來說,步驟S301,可包括首先,計算并保存16個4x4子塊的SAD。接著,根據(jù) 4x4子塊的SAD計算8x4子塊和4x8子塊的SAD,也就是說,對應(yīng)于各種剖分模式,總共得到 41 個 SAD。步驟S302具體來說,根據(jù)步驟S1所獲得的所述運動矢量預(yù)測值,分別計算所述大 尺寸剖分模式的運動矢量代價函數(shù);對于其它剖分模式,只計算其對應(yīng)的運動矢量。接下來,執(zhí)行步驟S32,確定搜索方向,繼續(xù)搜索。所述確定搜索方向可包括,基于 步驟S31得到的16x16剖分模式的代價函數(shù),對下一個搜索點進行確定。具體來說,以16x16剖分模式的代價函數(shù)最小的點,來確定下一個搜索點。具體的確定方法可以是三步法,菱形 法或別的方法。搜索結(jié)束的條件與具體搜索算法有關(guān)。確定下一個搜索點之后,執(zhí)行步驟S33。其中,對于非搜索起始點,首先,計算各種 剖分模式的SAD,然后,計算大尺寸剖分模式的運動矢量代價函數(shù)和其它剖分模式的運動矢 量,接著,根據(jù)所述大尺寸剖分模式的運動矢量代價函數(shù)和SAD,計算所述大尺寸剖分模式 的代價函數(shù)。接著對所述保存的匹配結(jié)果進行保存。具體來說可包括對于每一個非起始 點,每獲得其大尺寸剖分模式的代價函數(shù)、其它剖分模式的絕對值之和以及對應(yīng)的運動矢 量之后,將所述大尺寸剖分模式的代價函數(shù)、其它剖分模式的絕對值之和與步驟S31中在 搜索起始點所獲得的所述匹配結(jié)果,根據(jù)對應(yīng)的剖分模式分別進行比較。對于每個剖分模 式,無論比較的是代價函數(shù)或者SAD,選取其中較小的一個進行保存,并將相應(yīng)的運動矢量 替換原來所保存的運動矢量后予以保存。也就是說,每次更新后所得到的所述匹配結(jié)果中, 將包括各種剖分模式的最佳匹配點,對應(yīng)于最好的代價函數(shù)、SAD以及對應(yīng)的運動矢量。當(dāng)搜索完成之后,所述匹配結(jié)果中保存了每種剖分模式最佳點的代價函數(shù)或者 SAD及對應(yīng)的運動矢量,在步驟S34中,對各剖分模式的運動矢量預(yù)測值重新進行計算,并 重新計算各剖分模式的代價函數(shù)以獲得更準(zhǔn)確的結(jié)果。在重新計算各剖分模式的運動矢量預(yù)測值時,對16x16剖分、16x8剖分及8x16剖 分左半部分,可采用步驟S1中所獲得的結(jié)果。對8x16剖分右半部分,參考圖7,當(dāng)8x16剖分為宏塊E的右半部分801時,比較 B4塊的參考幀索引和宏塊E的參考幀索引是否相同當(dāng)B4塊的參考幀索引和宏塊E的參考 幀索引相同時,以B4塊的運動矢量為該8x16剖分801的運動矢量預(yù)測值,反之,當(dāng)B4塊的 參考幀索引和宏塊E的參考幀索引不同時,則比較C4塊和宏塊E的參考幀索引是否相同; C4塊和宏塊E的參考幀索引相同時,以A4塊、B4塊和C4塊的運動矢量中值作為該8x16剖 分801的運動矢量預(yù)測值,C4塊和宏塊E的參考幀索引不同時,以宏塊E左半部分8x16剖 分的運動矢量為該8x16剖分801運動矢量預(yù)測值。其中,上述A4塊以及宏塊E左半部分 8x16剖分的運動矢量分別為其在整數(shù)運動估計階段所得到的,B4塊和C4塊的參考幀索引 和運動矢量為其最終用于編碼的精確值。對于8x8、8x4、4x8和4x4剖分,分別進行下列步驟,以獲得當(dāng)前塊的運動矢量預(yù)測 值判斷右上鄰塊是否在圖像的有效范圍內(nèi)如果在,分別比較左邊鄰塊、上邊鄰塊、左上 鄰塊和當(dāng)前塊的參考幀索引是否相同,根據(jù)相同的個數(shù)N進行判斷如果N> 1,以左邊鄰 塊、上邊鄰塊、左上鄰塊運動矢量的中值作為當(dāng)前塊的運動矢量預(yù)測值;如果N = 1,以和當(dāng) 前塊有相同參考幀索引的對應(yīng)塊的運動矢量作為當(dāng)前塊的運動矢量預(yù)測值;如果左邊鄰塊 在圖像的有效范圍內(nèi)并且上邊鄰塊不在圖像的有效范圍內(nèi),那么以左邊鄰塊的運動矢量作 為當(dāng)前塊的運動矢量預(yù)測值;否則也以左邊鄰塊、上邊鄰塊、左上鄰塊運動矢量的中值作為 當(dāng)前塊的運動矢量預(yù)測值。當(dāng)左上鄰塊不在圖像的有效范圍內(nèi)時,以右上鄰塊取代左上鄰 塊進行上述判斷。其中,位于左邊相鄰宏塊內(nèi)的相鄰塊,采用其在整數(shù)運動估計階段所得到 的運動矢量和參考幀索引,對于上邊鄰塊、左上鄰塊和右上鄰塊,采用其最終用于編碼的參 考幀索引和運動矢量的精確值。獲得各剖分模式的代價函數(shù)之后,執(zhí)行步驟S35,根據(jù)各剖分模式的代價函數(shù),確 定代價函數(shù)具有最小值的為所選取的剖分模式。
經(jīng)過上述步驟,通過整數(shù)像素運動估計階段獲得所選取的剖分模式。然后進行分 數(shù)像素運動估計階段。步驟S4,根據(jù)整數(shù)運動估計階段所獲得的剖分模式所對應(yīng)的運動預(yù)測參考值,插 值周邊的分?jǐn)?shù)像素。其中,所述運動預(yù)測參考值為所獲得的運動矢量對應(yīng)的像素預(yù)測參考 值。具體來說,可通過6階FIR濾波器對整數(shù)像素運動預(yù)測參考值進行內(nèi)插,獲得1/2像素 運動預(yù)測參考值,然后,通過線性內(nèi)插獲得1/4像素運動預(yù)測參考值。其中,兩個縱向或橫 向的1/2像素或整數(shù)像素運動預(yù)測參考值形成1/4像素運動預(yù)測參考值,這些1/4像素運 動預(yù)測參考值在相鄰取樣間被內(nèi)插值替換,剩余的1/4像素由處于對角位置的一對1/2像 素線性地內(nèi)插進行替換。接著,執(zhí)行步驟S5,進行分?jǐn)?shù)階段運動估計,獲得所述最佳剖分模 式的分?jǐn)?shù)像素運動矢量。上述步驟中分?jǐn)?shù)像素運動估計階段所進行的計算以及計算方法的具體實施方式
并不對本發(fā)明的實施造成限制。相較于現(xiàn)有技術(shù),本發(fā)明上述各實施方式,在幀間模式選擇中,通過以相鄰塊的整 數(shù)像素運動估計階段的運動矢量作為大尺寸剖分模式的運動矢量預(yù)測值,以及在計算代價 函數(shù)的過程中,根據(jù)整數(shù)像素運動估計所確定的模式和運動矢量來確定8x8、8x4、4x8、4x4 各剖分模式的運動矢量預(yù)測值,從而對當(dāng)前宏塊進行處理時,不需要利用前一宏塊的編碼 精確結(jié)果,進而有效地減少了相鄰宏塊之間的依賴,使得流水線的處理速度得到提高,也進 一步提高了編碼效率。此外,在本發(fā)明具體實施方式
中,通過比較每個搜索點大尺寸剖分模式的代價函 數(shù)和其它模式的SAD,分別對每個剖分模式較好的搜索點的信息進行保存,例如對應(yīng)的代價 函數(shù)和/或SAD及運動矢量,并在搜索完成后,重新計算代價函數(shù),確定選擇的模式,從而大 大減少了運算量,節(jié)約了運算時間,提高了編碼效率。雖然本發(fā)明已通過較佳實施方式說明如上,但這些較佳實施方式并非用以限定本 發(fā)明。本領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),應(yīng)有能力對這些較佳實施方式 做出各種改正和補充,因此,本發(fā)明的保護范圍以權(quán)利要求書的范圍為準(zhǔn)。
權(quán)利要求
一種幀間模式選擇方法,其特征在于,包括根據(jù)當(dāng)前宏塊相鄰塊的運動矢量,獲得大尺寸剖分模式的運動矢量預(yù)測值,其中,當(dāng)前宏塊上鄰塊的參考幀索引和運動矢量采用其最終用于編碼的精確結(jié)果,當(dāng)前宏塊左鄰塊的參考幀索引和運動矢量采用其整數(shù)運動估計階段獲得的計算結(jié)果;根據(jù)所述大尺寸剖分模式的運動矢量預(yù)測值,確定搜索起始點;計算所有剖分模式的代價函數(shù),確定所選取的剖分模式;根據(jù)所獲得的剖分模式,插值周邊的分?jǐn)?shù)像素;進行分?jǐn)?shù)階段的運動估計,獲得所述最佳剖分模式的分?jǐn)?shù)像素運動矢量。
2.如權(quán)利要求1所述的幀間模式選擇方法,其特征在于,包括所述大尺寸剖分模式包 括16x16剖分、16x8剖分以及8x16剖分。
3.如權(quán)利要求2所述的幀間模式選擇方法,其特征在于,對于16x16剖分,所述根據(jù)相 鄰塊信息,獲得大尺寸剖分模式的運動矢量預(yù)測值包括通過右上鄰塊是否在圖像的有效范圍內(nèi)判斷所述右上鄰塊是否為有效塊,當(dāng)所述右上 鄰塊在圖像的有效范圍時,比較所述有效塊與左鄰塊、上鄰塊、當(dāng)前剖分的參考幀索引是否 相同,根據(jù)參考幀索引相同的個數(shù),計算當(dāng)前剖分的運動矢量預(yù)測值;當(dāng)所述右上鄰塊不在 圖像的有效范圍內(nèi)時,以左上鄰塊取代右上鄰塊作為有效塊,比較所述有效塊與左鄰塊、上 鄰塊和當(dāng)前剖分的參考幀索引是否相同,根據(jù)參考幀索引相同的個數(shù),計算當(dāng)前剖分運動 矢量預(yù)測值;所述左鄰塊的參考幀索引為其在整數(shù)運動估計階段的計算結(jié)果,所述上鄰塊和有效塊 的參考幀索引為其最終用于編碼的精確結(jié)果。
4.如權(quán)利要求3所述的幀間模式選擇方法,其特征在于,所述根據(jù)相同的個數(shù)計算當(dāng) 前剖分運動矢量預(yù)測值包括如果所述相同的個數(shù)大于1,以有效塊、左鄰塊、上鄰塊運動矢量的中值作為當(dāng)前宏塊 的運動矢量預(yù)測值;如果所述相同的個數(shù)為1,以和當(dāng)前宏塊有相同參考幀索引的對應(yīng)塊的運動矢量作為 當(dāng)前宏塊的運動矢量預(yù)測值;如果左鄰塊在圖像的有效范圍內(nèi)并且上鄰塊不在圖像的有效 范圍內(nèi),那么以左鄰塊的運動矢量作為當(dāng)前宏塊的運動矢量預(yù)測值;否則也以有效塊、左鄰 塊、上鄰塊運動矢量的中值作為當(dāng)前宏塊的運動矢量預(yù)測值;所述左鄰塊的運動矢量為其在整數(shù)運動估計階段的計算結(jié)果,所述剖分的上鄰塊和有 效塊的運動矢量為其最終用于編碼的精確結(jié)果。
5.如權(quán)利要求2所述的幀間模式選擇方法,其特征在于,對于宏塊上半部分的16x8剖 分,所述根據(jù)相鄰塊信息,獲得大尺寸剖分模式的運動矢量預(yù)測值包括比較所述宏塊上 鄰塊的參考幀索引和所述宏塊的參考幀索引是否相同,如果所述宏塊上鄰塊的參考幀索引 和所述宏塊的參考幀索引相同,以所述宏塊上鄰塊的運動矢量為所述剖分的運動矢量預(yù)測 值;如果所述宏塊上鄰塊的參考幀索引和所述宏塊的參考幀索引不同,以所述宏塊的運動 矢量預(yù)測值為所述剖分的運動矢量預(yù)測值;所述左鄰塊的運動矢量和參考幀索引為其在整數(shù)運動估計階段的計算結(jié)果,上鄰塊的 參考幀索引為其最終用于編碼的精確結(jié)果。
6.如權(quán)利要求2所述的幀間模式選擇方法,其特征在于,對于宏塊下半部分的16x8剖分,所述運動矢量預(yù)測值包括為所述宏塊左鄰塊的整數(shù)像素運動矢量。
7.如權(quán)利要求2所述的幀間模式選擇方法,其特征在于,對于宏塊左半部分的8x16剖 分,所述運動矢量預(yù)測值包括為所述宏塊左鄰塊的整數(shù)像素運動矢量。
8.如權(quán)利要求2所述的幀間模式選擇方法,其特征在于,對于宏塊右半部分的8x16剖 分,所述根據(jù)相鄰塊信息,獲得大尺寸剖分模式的運動矢量預(yù)測值包括比較所述宏塊上 鄰塊的參考幀索引和所述宏塊的參考幀索引是否相同,如果所述宏塊上鄰塊的參考幀索引 和所述宏塊的參考幀索引相同,以所述宏塊上鄰塊的運動矢量為所述剖分的運動矢量預(yù)測 值;如果所述宏塊上鄰塊的參考幀索引和所述宏塊的參考幀索引不同,以所述宏塊的運動 矢量預(yù)測值為所述剖分的運動矢量預(yù)測值;所述左鄰塊的運動矢量和參考幀索引為其在整數(shù)運動估計階段的計算結(jié)果,上鄰塊的 參考幀索引為其最終用于編碼的精確結(jié)果。
9.如權(quán)利要求1所述的幀間模式選擇方法,其特征在于,所述根據(jù)大尺寸剖分模式的 運動矢量預(yù)測值,確定起始搜索點,包括根據(jù)16x16剖分的運動矢量預(yù)測值確定起始搜索 點ο
10.如權(quán)利要求4所述的幀間模式選擇方法,其特征在于,所述根據(jù)16x16剖分的運動 矢量預(yù)測值確定起始搜索點,包括將距離16x16剖分運動矢量預(yù)測值最近的整數(shù)位置作 為起始搜索點。
11.如權(quán)利要求1所述的幀間模式選擇方法,其特征在于,所述計算所有剖分模式的代 價函數(shù),確定所選取的剖分模式,包括設(shè)定其它剖分模式的偏向值;對每一種剖分模式進行運動估計,并根據(jù)所述偏向值,計算其代價函數(shù),以所獲得的代 價函數(shù)中具有最小值的為所述選取的剖分模式。
12.如權(quán)利要求11所述的幀間模式選擇方法,其特征在于,所述對每一種剖分模式進 行運動估計包括對于每一個搜索點,計算代價函數(shù);確定搜索方向,獲得下一個搜索點, 進行代價函數(shù)的計算,直至搜索完成。
13.如權(quán)利要求1所述的幀間模式選擇方法,其特征在于,所述計算所有剖分模式的代 價函數(shù),確定所選取的剖分模式,包括在搜索起始點,計算所有剖分模式的匹配誤差,獲得并保存匹配結(jié)果;確定搜索方向,獲得下一個搜索點;在每一個非起始點的搜索點,計算所有剖分模式的匹配誤差,并更新所述保存的匹配結(jié)果;搜索完成后,根據(jù)所述匹配結(jié)果,計算所有剖分模式的代價函數(shù);根據(jù)各剖分模式的代價函數(shù),確定所選取的剖分模式。
全文摘要
一種幀間模式選擇方法,包括根據(jù)相鄰塊的運動矢量,獲得大尺寸剖分模式的運動矢量預(yù)測值,確定搜索起始點,計算所有剖分模式的代價函數(shù),確定所選取的剖分模式,以及進行分?jǐn)?shù)階段的運動估計,獲得所述最佳剖分模式的分?jǐn)?shù)像素運動矢量,當(dāng)前塊上鄰塊的參考幀索引和運動矢量采用其最終用于編碼的精確結(jié)果,當(dāng)前塊左鄰塊的參考幀索引和運動矢量采用其整數(shù)運動估計階段計算結(jié)果。本發(fā)明通過在整數(shù)像素運動估計過程中對于左鄰塊采用整數(shù)像素運動估計階段得到的運動矢量來計算代價函數(shù),獲得最佳剖分模式,從而進一步獲得對應(yīng)的分?jǐn)?shù)像素運動矢量以及當(dāng)前宏塊的最佳幀間預(yù)測模式,減少了相鄰宏塊之間的依賴,提高了流水線的處理速度和編碼效率。
文檔編號H04N7/32GK101820547SQ20091011833
公開日2010年9月1日 申請日期2009年2月27日 優(yōu)先權(quán)日2009年2月27日
發(fā)明者焦華龍, 皮川, 袁開智 申請人:源見科技(蘇州)有限公司