一種用于視頻編碼的快速編碼單元劃分方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種用于視頻編碼的快速編碼單元劃分方法及裝置,其方法包括:按照預(yù)設(shè)的規(guī)則將視頻流分割為一個或多個圖像組GOP;基于編碼代價確定圖像組GOP中的非B幀的編碼單元;選取與B幀最鄰近的非B幀,將B幀的編碼單元設(shè)置為與此非B幀的編碼單元的相同。本發(fā)明的用于視頻編碼的快速編碼單元劃分方法和裝置,基于編碼代價確定非B幀的編碼單元,并將B幀的編碼單元設(shè)置為與此B幀最鄰近的非B幀的編碼單元,能夠提供低復(fù)雜度的編碼單元結(jié)構(gòu),可以減小編碼、解碼的開銷,并可以提高編碼效率,節(jié)省編碼時間,可以提高視頻的觀看質(zhì)量,提高用戶的感受度。
【專利說明】
一種用于視頻編碼的快速編碼單元劃分方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及視頻編碼技術(shù)領(lǐng)域,特別涉及一種用于視頻編碼的快速編碼單元劃分方法及裝置。
【背景技術(shù)】
[0002]目前,隨著互聯(lián)網(wǎng)和硬件設(shè)備的發(fā)展,視頻的分辨率愈來愈大。2013年,由ITUVCEG和ISO MPEG聯(lián)合成立的視頻編碼聯(lián)合協(xié)作團(tuán)隊(duì)研究制定了新一代視頻編碼標(biāo)準(zhǔn)一一高效視頻編碼標(biāo)準(zhǔn)(High Efficiency Video Coding,HEVC)。相比H.264/AVC,在相當(dāng)視覺質(zhì)量下,HEVC節(jié)省一半上的碼率。HEVC具有更高的壓縮性能的一個主要原因就是它提供了更大的編碼塊結(jié)構(gòu)以及靈活的子塊劃分方式。在HEVC中,最大的編碼單元Largest CodingUnit(LCU)能夠被遞歸地劃分成更小的編碼單元Coding Unit(CU),從而形成編碼單元樹Coding Unit Tree(CTU)結(jié)構(gòu)。
[0003]在HEVC中,擴(kuò)展了宏塊的概念并分為編碼單元、預(yù)測單元和變換單元,編碼單元是HEVC中編碼的基本單位。圖像被劃分為若干個最大編碼單元,目前HEVC中主要檔次的定義中,最大的編碼單元的大小是64x64,最大編碼單元能夠被進(jìn)一步遞歸的劃分成更小的編碼單元,最小的編碼單元的大小是8x8。由此可以看出HEVC提供更加靈活的塊劃分方式以及更大的編碼單位,這有利于適應(yīng)不同紋理區(qū)域的編碼特性。圖1中展示了 HEVC中編碼單元的遞歸劃分例子。圖2展示了 HEVC編碼單元的掃描方式。HEVC編碼單元的劃分是根據(jù)四叉樹結(jié)構(gòu)進(jìn)行劃分的,如圖3所示,其中四叉樹的定義是:它的每個節(jié)點(diǎn)下至多可以有四個子節(jié)點(diǎn),通常把一部分二維空間細(xì)分為四個象限或區(qū)域并把該區(qū)域里的相關(guān)信息存入到四叉樹節(jié)點(diǎn)中。如圖4所示,視頻圖像的每個像素都可以通過與其相關(guān)的像素預(yù)測來降低該像素的冗余。用幀內(nèi)預(yù)測編碼的幀圖像稱為I (Intra)幀,用前向預(yù)測編碼的幀圖像稱為P幀,用雙向預(yù)測編碼的幀圖像稱為B幀。
[0004]HEVC通過靈活的編碼單元結(jié)構(gòu)可以獲得很大的編碼性能,然而這種靈活的編碼單元結(jié)構(gòu)是以更復(fù)雜的計算為代價的。目前,在視頻編碼中對于如何合理分配每幀的編碼單元結(jié)構(gòu)還沒有很好的方法,由于視頻中幀的編碼單元結(jié)構(gòu)設(shè)置不合理,使得運(yùn)算開銷大,影響視頻的播放質(zhì)量,影響用戶的感受度。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明的目的在于提出一種用于視頻編碼的快速編碼單元劃分方法及
目.ο
[0006]基于上述目的,本發(fā)明提供一種用于視頻編碼的快速編碼單元劃分方法,包括:按照預(yù)設(shè)的規(guī)則將視頻流分割為一個或多個圖像組G0P;基于編碼代價確定所述圖像組GOP中的非B幀的編碼單元;選取與B幀最鄰近的非B幀,將所述B幀的編碼單元設(shè)置為與此非B幀的編碼單元的相同;其中,所述GOP中的編碼幀包括I幀、P幀和B幀中的一種或多種。
[0007]可選地,所述按照預(yù)設(shè)的規(guī)則將所述視頻流分割為一個或多個GOP包括:將所述視頻流中的I幀或P幀作為分割幀;將所述視頻流中的一個分割幀以及此分割幀與下一個分割幀之間的B幀組合為一個GOP。
[0008]可選地,基于編碼代價確定所述圖像組GOP中的非B幀的編碼單元包括:確定所述非B幀能夠采用的多個編碼格式;按照所述多個編碼格式的像素尺寸由大到小的順序,從具有最大像素尺寸的編碼格式開始,基于所述多個編碼格式中的編碼格式依次對所述非B幀進(jìn)行編碼,并計算編碼單元對應(yīng)的編碼代價;在每次計算中,判斷在此次計算中使用的編碼單元對應(yīng)的第一編碼代價是否大于在上一次計算中使用的編碼單元對應(yīng)的第二編碼代價,其中,所述第一編碼代價和第二編碼代價為針對于相同的圖像像素塊的編碼代價;如果是,則結(jié)束計算,將在此次計算中使用的編碼單元設(shè)置為此非B幀的編碼單元;如果否,則繼續(xù)計算;其中,如果在最后一次計算中使用的編碼單元對應(yīng)的第一編碼代價小于在倒數(shù)第一次計算中使用的編碼單元對應(yīng)的第二編碼代價,將在最后一次計算中使用的編碼單元設(shè)置為此非B幀的編碼單元。
[0009]可選地,確定所述多個編碼格式為像素尺寸為2mX 2m的編碼格式;其中,所述M為3、
4、5或6;按照所述M由大到小的順序,基于所述多個編碼格式中的編碼格式對所述非B幀進(jìn)行編碼,并計算編碼單元對應(yīng)的編碼代價;其中,在每次計算中,將在上一次計算中進(jìn)行編碼的圖像像素塊劃分為4個子像素塊,并基于在本此計算中使用的編碼格對所述4個子像素塊分別編碼,生成4個子編碼單元;判斷所述4個子編碼單元對應(yīng)的編碼代價之和是否大于在上一次計算中使用的編碼單元對應(yīng)的編碼代價;如果是,則結(jié)束計算,將在此次計算中使用的子編碼單元設(shè)置為此非B幀的編碼單元;如果否,則繼續(xù)計算;其中,如果在最后一次計算中使用的4個子編碼單元對應(yīng)的編碼代價之和小于在倒數(shù)第一次計算中使用的編碼單元對應(yīng)的編碼代價,將在最后一次計算中使用的子編碼單元設(shè)置為此非B幀的編碼單元。[00?0] 可選地,所述計算編碼單元對應(yīng)的編碼代價采用的公式為:cost = D+AR;其中,cost為編碼代價,D表示該編碼單元對應(yīng)的圖像像素塊的失真程度,D采用絕對差值和SAD運(yùn)算獲取,λ為拉格朗日常數(shù),R表示編碼單元對應(yīng)的圖像編碼塊占用的比特數(shù)目。
[0011]可選地,所述視頻流的格式包括:EPVC;所述多個編碼格式中具有最大像素尺寸的編碼格式為64 X 64,具有最小像素尺寸的編碼格式為8 X 8。
[0012]本發(fā)明提供一種用于視頻編碼的快速編碼單元劃分裝置,包括:圖像分割模塊,用于按照預(yù)設(shè)的規(guī)則將視頻流分割為一個或多個圖像組G0P;第一編碼單元確定模塊,用于基于編碼代價確定所述圖像組GOP中的非B幀的編碼單元;第二編碼單元確定模塊,用于選取與B幀最鄰近的非B幀,將所述B幀的編碼單元設(shè)置為與此非B幀的編碼單元的相同;其中,所述GOP中的編碼幀包括I幀、P幀和B幀中的一種或多種。
[0013]可選地,所述圖像分割模塊具體用于將所述視頻流中的I幀或P幀作為分割幀;將所述視頻流中的一個分割幀以及此分割幀與下一個分割幀之間的B幀組合為一個G0P。
[0014]可選地,所述第一編碼單元確定模塊,包括:格式確定單元,用于確定所述非B幀能夠采用的多個編碼格式;編碼代價獲取單元,用于按照所述多個編碼格式的像素尺寸由大到小的順序,從具有最大像素尺寸的編碼格式開始,基于所述多個編碼格式中的編碼格式依次對所述非B幀進(jìn)行編碼,并計算編碼單元對應(yīng)的編碼代價;編碼單元設(shè)置單元,用于在每次計算中,判斷在此次計算中使用的編碼單元對應(yīng)的第一編碼代價是否大于在上一次計算中使用的編碼單元對應(yīng)的第二編碼代價,其中,所述第一編碼代價和第二編碼代價為針對于相同的圖像像素塊的編碼代價;如果是,則結(jié)束計算,將在此次計算中使用的編碼單元設(shè)置為此非B幀的編碼單元;如果否,則繼續(xù)計算;其中,如果在最后一次計算中使用的編碼單元對應(yīng)的第一編碼代價小于在倒數(shù)第一次計算中使用的編碼單元對應(yīng)的第二編碼代價,將在最后一次計算中使用的編碼單元設(shè)置為此非B幀的編碼單元。
[0015]可選地,所述格式確定單元,用于確定所述多個編碼格式為像素尺寸為2mX 2m的編碼格式;其中,所述M為3、4、5或6;所述編碼代價獲取單元,用于按照所述M由大到小的順序,基于所述多個編碼格式中的編碼格式對所述非B幀進(jìn)行編碼,并計算編碼單元對應(yīng)的編碼代價;其中,在每次計算中,將在上一次計算中進(jìn)行編碼的圖像像素塊劃分為4個子像素塊,并基于在本此計算中使用的編碼格對所述4個子像素塊分別編碼,生成4個子編碼單元;所述編碼單元設(shè)置單元,還用于判斷所述4個子編碼單元對應(yīng)的編碼代價之和是否大于在上一次計算中使用的編碼單元對應(yīng)的編碼代價;如果是,則結(jié)束計算,將在此次計算中使用的子編碼單元設(shè)置為此非B幀的編碼單元;如果否,則繼續(xù)計算;其中,如果在最后一次計算中使用的4個子編碼單元對應(yīng)的編碼代價之和小于在倒數(shù)第一次計算中使用的編碼單元對應(yīng)的編碼代價,將在最后一次計算中使用的子編碼單元設(shè)置為此非B幀的編碼單元。
[0016]可選地,所述編碼代價獲取單元計算所述計算編碼單元對應(yīng)的編碼代價采用的公式為:cost = D+AR;其中,cost為編碼代價,D表示該編碼單元對應(yīng)的圖像編碼塊的失真程度,D采用絕對差值和SAD運(yùn)算獲取,λ為拉格朗日常數(shù),R表示編碼單元對應(yīng)的圖像編碼塊占用的比特數(shù)目。
[0017]本發(fā)明的用于視頻編碼的快速編碼單元劃分方法和裝置,基于編碼代價確定非B幀的編碼單元,并將B幀的編碼單元設(shè)置為與此B幀最鄰近的非B幀的編碼單元,能夠提供低復(fù)雜度的編碼單元結(jié)構(gòu),可以減小編碼、解碼的開銷,并可以提高編碼效率,節(jié)省編碼時間,可以提高視頻的觀看質(zhì)量,提高用戶的感受度。
【附圖說明】
[0018]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0019]圖1為現(xiàn)有技術(shù)中HEVC編碼單元劃分結(jié)構(gòu)示意圖;
[0020]圖2為現(xiàn)有技術(shù)中HEVC編碼單元掃描方式示意圖;
[0021 ]圖3為現(xiàn)有技術(shù)中四層完全四叉樹結(jié)構(gòu)示意圖;
[0022]圖4為現(xiàn)有技術(shù)中I幀、P幀和B幀的預(yù)測原理示意圖;
[0023]圖5為根據(jù)本發(fā)明的用于視頻編碼的快速編碼單元劃分方法的一個實(shí)施例的流程示意圖;
[0024]圖6Α至6Ε為根據(jù)本發(fā)明的用于視頻編碼的比特分配方法的一個實(shí)施例的非B幀的編碼單元劃分方式的示意圖;
[0025]圖7為根據(jù)本發(fā)明的用于視頻編碼的比特分配裝置的一個實(shí)施例的模塊示意圖;
[0026]圖8為根據(jù)本發(fā)明的用于視頻編碼的比特分配裝置中第一編碼單元確定模塊一個實(shí)施例的模塊示意圖。
【具體實(shí)施方式】
[0027]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對本發(fā)明進(jìn)一步詳細(xì)說明。
[0028]需要說明的是,本發(fā)明實(shí)施例中所有使用“第一”和“第二”的表述均是為了區(qū)分兩個相同名稱非相同的實(shí)體或者非相同的參量,可見“第一” “第二”僅為了表述的方便,不應(yīng)理解為對本發(fā)明實(shí)施例的限定,后續(xù)實(shí)施例對此不再一一說明。
[0029]圖5為根據(jù)本發(fā)明的用于視頻編碼的快速編碼單元劃分方法的一個實(shí)施例的流程示意圖,如圖5所示:
[0030]步驟101,按照預(yù)設(shè)的規(guī)則將視頻流分割為一個或多個圖像組GOPAOP中的編碼幀包括I幀、P幀和B幀中的一種或多種。視頻流的格式包括:HEVC、H.26X等。
[0031]步驟102,基于編碼代價確定圖像組GOP中的非B幀的編碼單元。
[0032]步驟103,選取與B幀最鄰近的非B幀,將B幀的編碼單元設(shè)置為與此非B幀的編碼單元的相同。。
[0033]上述實(shí)施例中的用于視頻編碼的快速編碼單元劃分方法,提出了一種快速編碼單元分配方案,可以減小編碼、解碼的開銷,可以提高視頻的質(zhì)量,并可以提高編碼效率,節(jié)省編碼時間。
[0034]可以按照多種預(yù)設(shè)的規(guī)則將視頻流分割為一個或多個G0P。例如,將視頻流中的I幀或P幀作為分割幀,將視頻流中的一個分割幀以及此分割幀與下一個分割幀之間的B幀組合為一個GOPο例如,當(dāng)前提取視頻流中的幀為IBBPBBTOIBBP,依照上述的方法可以分割為5個GOP,GOP內(nèi)的幀序列分別為:IBB、PBB、PB、IBB和P。
[0035]可以采用多種方法確定圖像組GOP中的非B幀的編碼單元。例如,確定非B幀能夠采用的多個編碼格式,例如有8X8,16X 16等。按照所確定的多個編碼格式的像素尺寸由大到小的順序,從具有最大像素尺寸的編碼格式開始,進(jìn)行遍歷計算,基于多個編碼格式中的編碼格式依次對非B幀進(jìn)行編碼,并計算編碼單元對應(yīng)的編碼代價。
[0036]在每次計算中,判斷在此次計算中使用的編碼單元對應(yīng)的第一編碼代價是否大于在上一次計算中使用的編碼單元對應(yīng)的第二編碼代價,第一編碼代價和第二編碼代價為針對于相同的圖像像素塊的編碼代價,即對相同的圖像像素塊計算不同的編碼單元的編碼代價。
[0037]所有的編碼單元都針對一塊的圖像像素塊計算編碼代價,或者,在一次計算中使用的編碼單元與在上一次計算中使用的編碼單元需要針對相同的圖像像素塊計算編碼代價,這樣進(jìn)行編碼代價的比較結(jié)果是準(zhǔn)確的。
[0038]如果此次計算中使用的編碼單元對應(yīng)的第一編碼代價大于在上一次計算中使用的編碼單元對應(yīng)的第二編碼代價,則結(jié)束計算,將在此次計算中使用的編碼單元設(shè)置為此非B幀的編碼單元。
[0039]如果此次計算中使用的編碼單元對應(yīng)的第一編碼代價小于在上一次計算中使用的編碼單元對應(yīng)的第二編碼代價,則繼續(xù)計算。如果在最后一次計算中使用的編碼單元對應(yīng)的第一編碼代價小于在倒數(shù)第一次計算中使用的編碼單元對應(yīng)的第二編碼代價,將在最后一次計算中使用的編碼單元設(shè)置為此非B幀的編碼單元。通過上述的計算可以為非B幀選擇出編碼代價小的編碼單元。
[0040]在一個實(shí)施例中,確定多個編碼格式為像素尺寸為2MX2M的編碼格式,M為3、4、5或
6。按照M由大到小的順序,基于多個編碼格式中的編碼格式對非B幀進(jìn)行編碼,并計算編碼單元對應(yīng)的編碼代價。
[0041]在每次計算中,將在上一次計算中進(jìn)行編碼的圖像像素塊劃分為4個子像素塊,并基于在本此計算中使用的編碼格對4個子像素塊分別編碼,生成4個子編碼單元;判斷4個子編碼單元對應(yīng)的編碼代價之和是否大于在上一次計算中使用的編碼單元對應(yīng)的編碼代價。
[0042]如果4個子編碼單元對應(yīng)的編碼代價之和大于上一次計算中使用的編碼單元對應(yīng)的編碼代價,則結(jié)束計算,將在此次計算中使用的子編碼單元設(shè)置為此非B幀的編碼單元。如果4個子編碼單元對應(yīng)的編碼代價之和小于上一次計算中使用的編碼單元對應(yīng)的編碼代價,則繼續(xù)計算。如果在最后一次計算中使用的4個子編碼單元對應(yīng)的編碼代價之和小于在倒數(shù)第一次計算中使用的編碼單元對應(yīng)的編碼代價,將在最后一次計算中使用的子編碼單元設(shè)置為此非B幀的編碼單元。
[0043]如圖6A至6E所示,按多個編碼格式為像素尺寸的由大到小的順序,如圖6A所示,依次計算所有種類編碼單元的編碼代價,并將在上一次計算中進(jìn)行編碼的圖像像素塊劃分為4個子像素塊。
[0044]如圖613所示,計算64x64編碼單元的編碼代價cost_64x64。如圖6(3所示,計算4個32x32編碼單元的編碼代價 cost_32x32_0、cost_32x32_l、cost_32x32_2、cost_32x32_3。
[0045]如果cost_64x64〈 = cost_32x32_0+cost_32x32_l+cost_32x32_2+cost_32x32_3,則其劃分格式為下面的64x64劃分,無須繼續(xù)下一步劃分。如果cost_64x64>cost_32x32_0+cost_32x32_l+cost_32x32_2+cost_32x32_3,則其劃分格式為下面的32x32劃分,每個32x32還需要進(jìn)一步劃分。
[0046]如圖6D所示,在每一個32x32編碼單元中,繼續(xù)計算4個16x16子塊,以第一個32x32塊為例。計算得到 4個 16x16子塊:cost_16xl6_0、cost_16xl6_l、costj6xl6_2、cost_
16叉16_3。如果。081:_32叉32_0〈 =。081:_16叉16_0+。081:_16叉16_1+。081:_16叉16_2+。081:_16叉16_
3,則其劃分格式為下面的32x32劃分,無須繼續(xù)下一步劃分。如果cost_32x32_0>cost_16叉16_0+(3081:_16116_1+(3081^16116_2+(30 81:_16116_3則其劃分格式為下面的16116劃分,每個16x16還需要進(jìn)一步劃分。
[0047]每個16x16塊的劃分如圖6E所示,在每一個16x16編碼單元中,繼續(xù)計算4個8x8子塊,以第一個 16x16塊為例。計算得到4個8x8子塊:cost_8x8_0、cost_8x8 j、cost_8x8_2、cost_8x8_3,如果 cost_16xl6_0〈 = cost_8x8_0+cost_8x8_l+cost_8x8_2+cost_8x8_3,則其劃分格式為 16叉16劃分。如果(3081:_16叉16_0>(3081:_8叉8_0+(3081:_8叉8_1+(3081:_8叉8_2+(3081:_8x8_3,則其劃分格式為8x8劃分。
[0048]計算編碼單元對應(yīng)的編碼代價采用的公式為:cost = D+AR;其中,cost為編碼代價,D表示該編碼單元對應(yīng)的圖像像素塊的失真程度,D采用絕對差值和SAD運(yùn)算獲取,λ為拉格朗日常數(shù),R表示編碼單元對應(yīng)的圖像編碼塊占用的比特數(shù)目。
[0049]在視頻壓縮中,每幀代表一幅靜止的圖像,需要采取各種算法減少數(shù)據(jù)的容量。I幀是關(guān)鍵幀,屬于幀內(nèi)壓縮,P是向前搜索的意思,B是雙向搜索。I幀解碼時只需要本幀數(shù)據(jù)就可以完成,P幀表示的是這一幀跟之前的一個關(guān)鍵幀(或P幀)的差別,解碼時需要用之前緩存的畫面疊加上本幀定義的差別,生成最終畫面。
[0050]P幀沒有完整畫面數(shù)據(jù),只有與前一幀的畫面差別的數(shù)據(jù)。B幀是雙向差別幀,記錄的是本幀與前后幀的差別,解碼B幀時,不僅要取得之前的緩存畫面,還要解碼之后的畫面,通過前后畫面的與本幀數(shù)據(jù)的疊加取得最終的畫面。B幀記錄的是前后幀的差別,比P幀能節(jié)約更多的空間,B幀其實(shí)也包含了畫面信息。因此,在對于P幀和B幀分配占用的比特時,P幀只參考前面最靠近它的P幀,B幀以前面的P幀和后面的P幀為參考幀。
[0051 ] 采用絕對差值和或稱為絕對誤差和(Sum of absolute differences)SAD運(yùn)算獲取編碼單元對應(yīng)的圖像像素塊的失真程度可以采用多種方法。例如,以P幀為例,獲取與GOP內(nèi)的P幀Pl緊鄰、并位于Pl前向的一個P幀PO,此PO為Pl的前項(xiàng)參考幀或預(yù)測幀。
[0052]基于同一個編碼單元針對同一圖像像素塊分別對于P0、P1編碼,計算Pl與PO的具有相同像素塊的編碼塊中各個像素點(diǎn)數(shù)值之差,生成矩陣R1。采用絕對差值SAD對Rl進(jìn)行計算,即計算矩陣中Rl各個元素的絕對值之和,獲得該編碼單元對應(yīng)的圖像像素塊的失真程度。
[0053 ]確定GOP中的I幀或P幀的編碼單元后,選取與B幀最鄰近的I幀或P幀,可以為B幀的前向或后向,將B幀的編碼單元設(shè)置為與最鄰近的I幀或P幀的編碼單元的相同。
[0054]如圖7所示,本發(fā)明提供一種用于視頻編碼的快速編碼單元劃分裝置20包括:圖像分割模塊21、第一編碼單元確定模塊22和第二編碼單元確定模塊23。圖像分割模塊21按照預(yù)設(shè)的規(guī)則將視頻流分割為一個或多個圖像組G0P。第一編碼單元確定模塊22確定圖像組GOP中的非B幀的編碼單元。第二編碼單元確定模塊23選取與B幀最鄰近的非B幀,將B幀的編碼單元設(shè)置為與此非B幀的編碼單元的相同。
[0055]GOP中的編碼幀包括I幀、P幀和B幀中的一種或多種。圖像分割模塊21將視頻流中的I幀或P幀作為分割幀,將視頻流中的一個分割幀以及此分割幀與下一個分割幀之間的B幀組合為一個GOP。
[0056]如圖8所示,第一編碼單元確定模塊22包括:格式確定單元221、編碼代價獲取單元222和編碼單元設(shè)置單元223。格式確定單元221確定非B幀能夠采用的多個編碼格式。編碼代價獲取單元222按照多個編碼格式的像素尺寸由大到小的順序,從具有最大像素尺寸的編碼格式開始,基于多個編碼格式中的編碼格式依次對非B幀進(jìn)行編碼,并計算編碼單元對應(yīng)的編碼代價。
[0057]編碼單元設(shè)置單元223在每次計算中,判斷在此次計算中使用的編碼單元對應(yīng)的第一編碼代價是否大于在上一次計算中使用的編碼單元對應(yīng)的第二編碼代價,其中,第一編碼代價和第二編碼代價為針對于相同的圖像像素塊的編碼代價;如果是,則結(jié)束計算,編碼單元設(shè)置單元223將在此次計算中使用的編碼單元設(shè)置為此非B幀的編碼單元;如果否,則繼續(xù)計算;如果在最后一次計算中使用的編碼單元對應(yīng)的第一編碼代價小于在倒數(shù)第一次計算中使用的編碼單元對應(yīng)的第二編碼代價,編碼單元設(shè)置單元223將在最后一次計算中使用的編碼單元設(shè)置為此非B幀的編碼單元。
[0058]在一個實(shí)施例中,格式確定單元221確定多個編碼格式為像素尺寸為2MX2M的編碼格式,M為3、4、5或6。編碼代價獲取單元222按照M由大到小的順序,基于多個編碼格式中的編碼格式對非B幀進(jìn)行編碼,并計算編碼單元對應(yīng)的編碼代價。在每次計算中,編碼代價獲取單元222將在上一次計算中進(jìn)行編碼的圖像像素塊劃分為4個子像素塊,并基于在本此計算中使用的編碼格對4個子像素塊分別編碼,生成4個子編碼單元。
[0059]編碼單元設(shè)置單元223判斷4個子編碼單元對應(yīng)的編碼代價之和是否大于在上一次計算中使用的編碼單元對應(yīng)的編碼代價,如果是,則編碼單元設(shè)置單元223結(jié)束計算,將在此次計算中使用的子編碼單元設(shè)置為此非B幀的編碼單元;如果否,則繼續(xù)計算。如果在最后一次計算中使用的4個子編碼單元對應(yīng)的編碼代價之和小于在倒數(shù)第一次計算中使用的編碼單元對應(yīng)的編碼代價,編碼單元設(shè)置單元223將在最后一次計算中使用的子編碼單元設(shè)置為此非B幀的編碼單元。
[0000]編碼代價獲取單元222計算計算編碼單元對應(yīng)的編碼代價采用的公式為:cost = D+AR;其中,cost為編碼代價,D表示該編碼單元對應(yīng)的圖像編碼塊的失真程度,D采用絕對差值和SAD運(yùn)算獲取,λ為拉格朗日常數(shù),R表示編碼單元對應(yīng)的圖像編碼塊占用的比特數(shù)目。
[0061]上述實(shí)施例提供的用于視頻編碼的快速編碼單元劃分方法和裝置,基于編碼代價確定非B幀的編碼單元,并將B幀的編碼單元設(shè)置為與此B幀最鄰近的非B幀的編碼單元,能夠提供低復(fù)雜度的編碼單元結(jié)構(gòu),可以減小編碼、解碼的開銷,并可以提高編碼效率,節(jié)省編碼時間,可以提高視頻的觀看質(zhì)量,提高用戶的感受度。
[0062]所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:以上任何實(shí)施例的討論僅為示例性的,并非旨在暗示本公開的范圍(包括權(quán)利要求)被限于這些例子;在本發(fā)明的思路下,以上實(shí)施例或者不同實(shí)施例中的技術(shù)特征之間也可以進(jìn)行組合,步驟可以以任意順序?qū)崿F(xiàn),并存在如上所述的本發(fā)明的不同方面的許多其它變化,為了簡明它們沒有在細(xì)節(jié)中提供。
[0063]另外,為簡化說明和討論,并且為了不會使本發(fā)明難以理解,在所提供的附圖中可以示出或可以不示出與集成電路(IC)芯片和其它部件的公知的電源/接地連接。此外,可以以框圖的形式示出裝置,以便避免使本發(fā)明難以理解,并且這也考慮了以下事實(shí),即關(guān)于這些框圖裝置的實(shí)施方式的細(xì)節(jié)是高度取決于將要實(shí)施本發(fā)明的平臺的(即,這些細(xì)節(jié)應(yīng)當(dāng)完全處于本領(lǐng)域技術(shù)人員的理解范圍內(nèi))。在闡述了具體細(xì)節(jié)(例如,電路)以描述本發(fā)明的示例性實(shí)施例的情況下,對本領(lǐng)域技術(shù)人員來說顯而易見的是,可以在沒有這些具體細(xì)節(jié)的情況下或者這些具體細(xì)節(jié)有變化的情況下實(shí)施本發(fā)明。因此,這些描述應(yīng)被認(rèn)為是說明性的而不是限制性的。
[0064]盡管已經(jīng)結(jié)合了本發(fā)明的具體實(shí)施例對本發(fā)明進(jìn)行了描述,但是根據(jù)前面的描述,這些實(shí)施例的很多替換、修改和變型對本領(lǐng)域普通技術(shù)人員來說將是顯而易見的。例如,其它存儲器架構(gòu)(例如,動態(tài)RAM(DRAM))可以使用所討論的實(shí)施例。
[0065]本發(fā)明的實(shí)施例旨在涵蓋落入所附權(quán)利要求的寬泛范圍之內(nèi)的所有這樣的替換、修改和變型。因此,凡在本發(fā)明的精神和原則之內(nèi),所做的任何省略、修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種用于視頻編碼的快速編碼單元劃分方法,其特征在于,包括: 將視頻流分割為一個或多個圖像組GOP; 基于編碼代價確定所述圖像組GOP中的非B幀的編碼單元; 選取與B幀最鄰近的非B幀,將所述B幀的編碼單元設(shè)置為與此非B幀的編碼單元相同; 其中,所述GOP中的編碼幀包括I幀、P幀和B幀中的一種或多種。2.如權(quán)利要求1所述的方法,其特征在于,將所述視頻流分割為一個或多個GOP包括: 將所述視頻流中的I幀或P幀作為分割幀; 將所述視頻流中的一個分割幀、以及此分割幀與下一個分割幀之間的B幀組合為一個GOP03.如權(quán)利要求1或2所述的方法,其特征在于,基于編碼代價確定所述圖像組GOP中的非B幀的編碼單元包括: 確定所述非B幀采用的多個編碼格式; 按照所述多個編碼格式的像素尺寸由大到小的順序,從具有最大像素尺寸的編碼格式開始,基于所述多個編碼格式中的編碼格式依次對所述非B幀進(jìn)行編碼,并計算編碼單元對應(yīng)的編碼代價; 在每次計算中,判斷在此次計算中使用的編碼單元對應(yīng)的第一編碼代價是否大于在上一次計算中使用的編碼單元對應(yīng)的第二編碼代價,其中,所述第一編碼代價和第二編碼代價為針對于相同的圖像像素塊的編碼代價; 如果是,則結(jié)束計算,將在此次計算中使用的編碼單元設(shè)置為此非B幀的編碼單元; 如果否,則繼續(xù)計算; 其中,如果在最后一次計算中使用的編碼單元對應(yīng)的第一編碼代價小于在倒數(shù)第一次計算中使用的編碼單元對應(yīng)的第二編碼代價,將在最后一次計算中使用的編碼單元設(shè)置為此非B幀的編碼單元。4.如權(quán)利要求3所述的方法,其特征在于,包括: 確定所述多個編碼格式為像素尺寸為2M X 2M的編碼格式;其中,所述M為3、4、5或6; 按照所述M由大到小的順序,基于所述多個編碼格式中的編碼格式對所述非B幀進(jìn)行編碼,并計算編碼單元對應(yīng)的編碼代價; 其中,在每次計算中,將在上一次計算中進(jìn)行編碼的圖像像素塊劃分為4個子像素塊,并基于在本此計算中使用的編碼格對所述4個子像素塊分別編碼,生成4個子編碼單元; 判斷所述4個子編碼單元對應(yīng)的編碼代價之和是否大于在上一次計算中使用的編碼單元對應(yīng)的編碼代價; 如果是,則結(jié)束計算,將在此次計算中使用的子編碼單元設(shè)置為此非B幀的編碼單元; 如果否,則繼續(xù)計算; 其中,如果在最后一次計算中使用的4個子編碼單元對應(yīng)的編碼代價之和小于在倒數(shù)第一次計算中使用的編碼單元對應(yīng)的編碼代價,將在最后一次計算中使用的子編碼單元設(shè)置為此非B幀的編碼單元。5.如權(quán)利要求3所述的方法,其特征在于: 所述計算編碼單元對應(yīng)的編碼代價采用的公式為:cost = D+AR; 其中,cost為編碼代價,D表示該編碼單元對應(yīng)的圖像像素塊的失真程度,D采用絕對差值和SAD運(yùn)算獲取,λ為拉格朗日常數(shù),R表示編碼單元對應(yīng)的圖像編碼塊占用的比特數(shù)目。6.如權(quán)利要求3所述的方法,其特征在于 所述視頻流的格式包括:EPVC;所述多個編碼格式中具有最大像素尺寸的編碼格式為64 X 64,具有最小像素尺寸的編碼格式為8 X 8。7.—種用于視頻編碼的快速編碼單元劃分裝置,其特征在于,包括: 圖像分割模塊,用于將視頻流分割為一個或多個圖像組GOP; 第一編碼單元確定模塊,用于基于編碼代價確定所述圖像組GOP中的非B幀的編碼單元; 第二編碼單元確定模塊,用于選取與B幀最鄰近的非B幀,將所述B幀的編碼單元設(shè)置為與此非B幀的編碼單元相同; 其中,所述GOP中的編碼幀包括I幀、P幀和B幀中的一種或多種。8.如權(quán)利要求8所述的裝置,其特征在于: 所述圖像分割模塊具體用于將所述視頻流中的I幀或P幀作為分割幀;將所述視頻流中的一個分割幀、以及此分割幀與下一個分割幀之間的B幀組合為一個G0P。9.如權(quán)利要求7或8所述的裝置,其特征在于: 所述第一編碼單元確定模塊,包括: 格式確定單元,用于確定所述非B幀采用的多個編碼格式; 編碼代價獲取單元,用于按照所述多個編碼格式的像素尺寸由大到小的順序,從具有最大像素尺寸的編碼格式開始,基于所述多個編碼格式中的編碼格式依次對所述非B幀進(jìn)行編碼,并計算編碼單元對應(yīng)的編碼代價; 編碼單元設(shè)置單元,用于在每次計算中,判斷在此次計算中使用的編碼單元對應(yīng)的第一編碼代價是否大于在上一次計算中使用的編碼單元對應(yīng)的第二編碼代價,其中,所述第一編碼代價和第二編碼代價為針對于相同的圖像像素塊的編碼代價;如果是,則結(jié)束計算,將在此次計算中使用的編碼單元設(shè)置為此非B幀的編碼單元;如果否,則繼續(xù)計算;其中,如果在最后一次計算中使用的編碼單元對應(yīng)的第一編碼代價小于在倒數(shù)第一次計算中使用的編碼單元對應(yīng)的第二編碼代價,將在最后一次計算中使用的編碼單元設(shè)置為此非B幀的編碼單元。10.如權(quán)利要求9所述的裝置,其特征在于: 所述格式確定單元,用于確定所述多個編碼格式為像素尺寸為2ΜΧ2Μ的編碼格式;其中,所述M為3、4、5或6; 所述編碼代價獲取單元,用于按照所述M由大到小的順序,基于所述多個編碼格式中的編碼格式對所述非B幀進(jìn)行編碼,并計算編碼單元對應(yīng)的編碼代價;其中,在每次計算中,將在上一次計算中進(jìn)行編碼的圖像像素塊劃分為4個子像素塊,并基于在本此計算中使用的編碼格對所述4個子像素塊分別編碼,生成4個子編碼單元; 所述編碼單元設(shè)置單元,還用于判斷所述4個子編碼單元對應(yīng)的編碼代價之和是否大于在上一次計算中使用的編碼單元對應(yīng)的編碼代價;如果是,則結(jié)束計算,將在此次計算中使用的子編碼單元設(shè)置為此非B幀的編碼單元;如果否,則繼續(xù)計算;其中,如果在最后一次計算中使用的4個子編碼單元對應(yīng)的編碼代價之和小于在倒數(shù)第一次計算中使用的編碼單元對應(yīng)的編碼代價,將在最后一次計算中使用的子編碼單元設(shè)置為此非B幀的編碼單元。11.如權(quán)利要求9所述的裝置,其特征在于: 所述編碼代價獲取單元計算所述計算編碼單元對應(yīng)的編碼代價采用的公式為:cost = D+AR; 其中,cost為編碼代價,D表示該編碼單元對應(yīng)的圖像編碼塊的失真程度,D采用絕對差值和SAD運(yùn)算獲取,λ為拉格朗日常數(shù),R表示編碼單元對應(yīng)的圖像編碼塊占用的比特數(shù)目。
【文檔編號】H04N19/119GK105847798SQ201610195846
【公開日】2016年8月10日
【申請日】2016年3月30日
【發(fā)明人】蔡硯剛, 白茂生, 楊帆, 劉陽, 祁海, 魏偉
【申請人】樂視控股(北京)有限公司, 樂視云計算有限公司