編碼器運(yùn)動(dòng)估算方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及視頻壓縮編碼技術(shù)領(lǐng)域,具體而言,涉及一種編碼器運(yùn)動(dòng)估算方法及 裝置。
【背景技術(shù)】
[0002] 高效視頻編碼(HighEfficiency Video Coding,簡(jiǎn)稱為HEVC)是由國(guó)際電聯(lián)(ITU Telecommunication Standardization Sector,簡(jiǎn)稱為 ITU-T) VCEG 和 ISO/IEC MPEG 標(biāo)準(zhǔn) 化組織聯(lián)合發(fā)布的最新的視頻編碼標(biāo)準(zhǔn),是目前壓縮性能最好的標(biāo)準(zhǔn)之一,相比之前主流 的編碼標(biāo)準(zhǔn)a 264/AVC,帶寬節(jié)省37%左右,主觀質(zhì)量提高50%以上。編碼性能的提高主 要是緣于更多變的塊大小和更豐富的參考幀和編碼模式。對(duì)于塊大小來說,最大編碼單元 (CodingTree Unit,簡(jiǎn)稱為CTU)從H. 264/AVC的16x16增加到了 64x64大小,并且引入了 四叉遞歸劃分結(jié)構(gòu),編碼單元可64x64劃分到8x8大小,這些都能帶來更準(zhǔn)確的編碼預(yù)測(cè)。 但是,整個(gè)編碼器的復(fù)雜度隨著技術(shù)的添加呈數(shù)倍的增加,其中幀間編碼的時(shí)間占據(jù)了主 要部分(除了全I(xiàn)幀的編碼配置)。幀間編碼最耗時(shí)的部分是運(yùn)動(dòng)估計(jì)模塊。如圖1所示, 運(yùn)動(dòng)估計(jì)模塊在JEVC參考軟件平臺(tái)(HM)中所占的時(shí)間比例超過達(dá)到50以上%。
[0003] 運(yùn)動(dòng)估計(jì)是用于編碼器幀間編碼中在參考幀上搜索當(dāng)前編碼塊的最佳匹配塊的 算法。所謂"匹配"的準(zhǔn)則是能夠得到最小殘差(使用絕對(duì)差值和或絕對(duì)差值平方和等衡 量標(biāo)準(zhǔn))和最少編碼比特消耗的綜合標(biāo)準(zhǔn),一般稱為最小率失真代價(jià)標(biāo)準(zhǔn)。為了匹配的 準(zhǔn)確度,運(yùn)動(dòng)估計(jì)一般采用"逐步求精"的匹配方案,即先搜索整像素位置,再搜索1/2乃 至1/4像素精度的位置,其中1/2和1/4等分像素位置由圖像的整像素點(diǎn)通過插值濾波器 插值生成。由于計(jì)算復(fù)雜度的限制,編碼器一般采用近似最優(yōu)的搜索算法,一般分兩類:全 搜索和快速搜索。全搜索是在預(yù)設(shè)的搜索范圍之內(nèi)遍歷所有像素點(diǎn),找到最優(yōu)??焖偎阉?則是采用特定的搜索形狀:六邊形、菱形等,迭代幾代,每次更新最優(yōu)的位置,最后終止于特 定條件。第二種方式復(fù)雜度低,效果也很好,一般用于純軟件編碼器中,然而第一種方式因 為其整齊性,廣泛地應(yīng)用于硬件編碼器或異構(gòu)計(jì)算平臺(tái)(如CPU+圖像處理單元(Graphic Processing Unit,簡(jiǎn)稱為 GPU)設(shè)備)。
[0004] 近期隨著GPU計(jì)算能力,特別是通用計(jì)算能力的快速發(fā)展,將GPU應(yīng)用于數(shù)據(jù)密集 型應(yīng)用的需求越來越大。視頻編解碼器也不再局限于傳統(tǒng)的多媒體向量指令集(MMX/SSE 等),而轉(zhuǎn)而尋求GPU并行輔助的解決方案。英偉達(dá)(NVIDIA)公司推出易于編程的GPU架 構(gòu):并行計(jì)算架構(gòu)(Compute Unified Device Architecture,簡(jiǎn)稱為CUDA)使得密集數(shù)據(jù) 的并行更加容易。研宄者們已經(jīng)嘗試在GPU上利用CUDA實(shí)現(xiàn)H. 264/AVC或HEVC編碼器運(yùn) 動(dòng)估計(jì)的并行。對(duì)于ffiVC上的相關(guān)并行方法,運(yùn)動(dòng)估計(jì)只能在像素行集并行,缺少一定的 靈活性,壓縮性能有存在較大的提升空間。
【發(fā)明內(nèi)容】
[0005] 針對(duì)相關(guān)技術(shù)中運(yùn)動(dòng)估計(jì)缺少靈活性,壓縮性能比較低的問題,本發(fā)明提供了一 種運(yùn)動(dòng)估計(jì)方法及裝置,以解決該問題。
[0006] -方面,提供了一種編碼器運(yùn)動(dòng)估算方法,包括:將最大編碼單元CTU的運(yùn)動(dòng)估計(jì) 過程封裝在一個(gè)塊block中;通過低復(fù)雜度的分塊模式索引、代價(jià)函數(shù)、分塊SAD歸并和 MVP進(jìn)行運(yùn)動(dòng)估計(jì)。
[0007] 優(yōu)選地,通過低復(fù)雜度的分塊模式索引、代價(jià)函數(shù)、分塊SAD歸并和MVP進(jìn)行運(yùn)動(dòng) 估計(jì)包括:
[0008] 所述低復(fù)雜度的模式索引,每個(gè)分塊用坐標(biāo)左上、右下共四個(gè)坐標(biāo)值表示,并進(jìn)行 編號(hào),其中,編碼的方式是從小塊到大塊,線程的處理原則是處理編號(hào)從小到大的分塊。
[0009] 優(yōu)選地,代價(jià)函數(shù)通過如下公式確定:
為自定義取正負(fù)函數(shù),負(fù)返回1,正返回0。
[0011] 優(yōu)選地,分塊SAD由其所包含的4x4塊累加得到,累加方式通過如下公式確定: Sl, T, E, B - S Rj B+SL_1;
[0012] 其中 Su, R, B表示分塊 SAD, S x,y表示 4x4 塊(x,y)的 SAD。
[0013] 優(yōu)選地,所述MVP推導(dǎo)采用最近編碼一幀相同位置CTU的4個(gè)16x16塊平均值縮 放。
[0014] 另一方面,還提供了 了一種編碼器運(yùn)動(dòng)估算裝置,包括:封裝模塊,用于將最大編 碼單元CTU的運(yùn)動(dòng)估計(jì)過程封裝在一個(gè)block中;估計(jì)模塊,用于通過低復(fù)雜度的分塊模式 索引、代價(jià)函數(shù)、分塊SAD歸并和MVP進(jìn)行運(yùn)動(dòng)估計(jì)。
[0015] 優(yōu)選地,所述估計(jì)模塊通過所述低復(fù)雜度的模式索引,每個(gè)分塊用坐標(biāo)左上、右下 共四個(gè)坐標(biāo)值表示,并進(jìn)行編號(hào),其中,編碼的方式是從小塊到大塊,線程的處理原則是處 理編號(hào)從小到大的分塊。
[0016] 優(yōu)選地,代價(jià)函數(shù)通過如下公式確定:
為自定義取正負(fù)函數(shù),負(fù)返回1,正返回0。
[0018] 優(yōu)選地,分塊SAD由其所包含的4x4塊累加得到,累加方式通過如下公式確定: Sl, T, E, B - S Rj B+SL_1;
[0019] 其中 Su, R, B表示分塊 SAD, S x,y表示 4x4 塊(x,y)的 SAD。
[0020] 優(yōu)選地,所述估計(jì)模塊中的所述MVP推導(dǎo)采用最近編碼一幀相同位置CTU的4個(gè) 16x16塊平均值縮放。
[0021] 通過本發(fā)明,利用GPU,根據(jù)硬件資源或視頻分辨率對(duì)并行的計(jì)算量作調(diào)整,提高 了壓縮性能。
【附圖說明】
[0022] 此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā) 明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0023] 圖1是根據(jù)本發(fā)明實(shí)施例的編碼器運(yùn)動(dòng)估算方法的流程圖;
[0024] 圖2是根據(jù)本發(fā)明實(shí)施例的基于CUDA的GPU運(yùn)行估計(jì)編碼框架;
[0025] 圖3是根據(jù)本發(fā)明實(shí)施例的CTU各分塊模式索引表;
[0026] 圖4是根據(jù)本發(fā)明實(shí)施例的推算CTU級(jí)MVP的四個(gè)16x16塊以及時(shí)域MVP縮放示 意圖;
[0027] 圖5是根據(jù)本發(fā)明實(shí)施例的分像素搜索點(diǎn)的示意圖;
[0028] 圖6是根據(jù)本發(fā)明實(shí)施例的編碼器運(yùn)動(dòng)估算裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0029] 下文中將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的 情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0030] 下面將結(jié)合優(yōu)選實(shí)施例進(jìn)行說明,以下優(yōu)選實(shí)施例結(jié)合了上述實(shí)施例及優(yōu)選實(shí)施 方式。
[0031] 本實(shí)施例提供了一種編碼器運(yùn)動(dòng)估算方法,圖1是根據(jù)本發(fā)明實(shí)施例的編碼器運(yùn) 動(dòng)估算方法的流程圖,如圖1所示,包括:
[0032] 步驟S102,將最大編碼單元CTU的運(yùn)動(dòng)估計(jì)過程封裝在一個(gè)block中;
[0033] 步驟S104,通過低復(fù)雜度的分塊模式索引、代價(jià)函數(shù)、分塊SAD歸并和簡(jiǎn)便的MVP 進(jìn)行運(yùn)動(dòng)估計(jì)。
[0034] 優(yōu)選地,通過低復(fù)雜度的分塊模式索引、代價(jià)函數(shù)、分塊SAD歸并和簡(jiǎn)便的MVP進(jìn) 行運(yùn)動(dòng)估計(jì)包括:
[0035] 所述低復(fù)雜度的模式索引,每個(gè)分塊用坐標(biāo)左上、右下共四個(gè)坐標(biāo)值表示,并進(jìn)行 編號(hào),其中,編碼的方式是從小塊到大塊,線程的處理原則是處理編號(hào)從小到大的分塊。
[0036] 優(yōu)選地,代價(jià)函數(shù)通過如下公式確定:
為自定義取正負(fù)函數(shù),負(fù)返回1,正返回0。
[0038] 優(yōu)選地,分塊SAD由其所包含的4x4塊累加得到,累加方式通過如下公式確定: Sl, T, E, B - S Rj B+SL_1;
[0039] 其中 Su, R, B表示分塊 SAD, S x,y表示 4x4 塊(x,y)的 SAD。
[0040] 優(yōu)選地,所述MVP推導(dǎo)采用最近編碼一幀相同位置CTU的4個(gè)16x16塊平均值縮 放。
[0041] 優(yōu)選實(shí)施例一
[0042] 本優(yōu)選實(shí)施例提供了一種編碼器運(yùn)動(dòng)估算方法。下面進(jìn)行詳細(xì)描述:
[0043] 本發(fā)明要解決的技術(shù)問題是利用NVIDIA CUDA編程模型,實(shí)現(xiàn)GPU端編碼運(yùn)動(dòng)估 計(jì)模塊的并行,通過CPU和GPU異步執(zhí)行隱藏其在CPU端的時(shí)間消耗,從而達(dá)到節(jié)省編碼時(shí) 間的效果。本發(fā)明提出了基于CTU并行的GPU運(yùn)動(dòng)估計(jì)算法。
[0044