本發(fā)明實(shí)施例四填充方法的流程圖;
[0209]圖10、11是本發(fā)明實(shí)施例四電子設(shè)備中編碼器和解碼器的模塊圖。
【具體實(shí)施方式】
[0210]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整的描述。所描述的實(shí)施例是本發(fā)明的部分實(shí)施例,而不是全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0211]在H. 265/HEVC標(biāo)準(zhǔn)擴(kuò)展的SCC標(biāo)準(zhǔn)中,分片(Slice)是一幀圖像中的獨(dú)立解碼單位,一幀圖像包含一個(gè)或多個(gè)分片,一個(gè)分片又包含一個(gè)或多個(gè)編碼塊。文中,編碼塊是一個(gè)以下塊單元中的至少之一:編碼樹(shù)塊(Coding Tree Unit, CTU)、編碼單元(CodingUnit)、預(yù)測(cè)單元(Prediction Unit,PU)、變換單元(Transform Unit,TU)。解碼時(shí),則將上述塊單元稱(chēng)為解碼塊。
[0212]H.265/HEVC標(biāo)準(zhǔn)中,在分片層,分片類(lèi)型包括幀內(nèi)預(yù)測(cè)類(lèi)型和幀間預(yù)測(cè)類(lèi)型兩類(lèi)?;靖拍钌希瑤g預(yù)測(cè)類(lèi)型的分片指的是該分片中的編碼塊(或解碼塊)可以使用該分片所在圖像或該分片所在圖像之外的其他圖像中的像素點(diǎn)采樣值構(gòu)造編碼塊(或解碼塊)的預(yù)測(cè)參考;幀內(nèi)預(yù)測(cè)類(lèi)型的分片指的是該分片中的編碼塊(或解碼塊)僅使用該分片所在圖像中的像素點(diǎn)采樣值構(gòu)造編碼塊(或解碼塊)的預(yù)測(cè)參考。在H.265/HEVC標(biāo)準(zhǔn)擴(kuò)展的SCC標(biāo)準(zhǔn)中,幀間預(yù)測(cè)類(lèi)型的分片可以是slicejype的取值等于“0”或“1”的分片,此類(lèi)分片中的編碼塊/解碼塊可以使用IBC模式、幀間預(yù)測(cè)模式和傳統(tǒng)幀內(nèi)預(yù)測(cè)模式。幀內(nèi)預(yù)測(cè)類(lèi)型的分片可以是slicejype的取值等于“0”或“ 1”且其中的編碼塊/解碼塊使用IBC模式、傳統(tǒng)幀內(nèi)預(yù)測(cè)模式的分片,或者slicejype的取值等于“2”且其中的編碼塊/解碼塊使用傳統(tǒng)幀內(nèi)預(yù)測(cè)模式的分片。
[0213]本發(fā)明主要針對(duì)IBC模式的編碼塊/解碼塊如何編碼/解碼進(jìn)行研究,針對(duì)幀間預(yù)測(cè)類(lèi)型分片和幀內(nèi)預(yù)測(cè)類(lèi)型分片中IBC模式的編碼塊/解碼塊,按照不同的編碼方式進(jìn)行編碼/解碼。
[0214]實(shí)施例一
[0215]本實(shí)施例提供一種預(yù)測(cè)編碼方法及相應(yīng)的編碼器。
[0216]本實(shí)施例的預(yù)測(cè)編碼方法,對(duì)一分片的編碼過(guò)程如圖1所示,包括:
[0217]步驟110,為當(dāng)前編碼的分片設(shè)置分片類(lèi)型;
[0218]編碼器可以根據(jù)預(yù)先設(shè)定的預(yù)測(cè)結(jié)構(gòu)信息,設(shè)置圖像中分片的分片類(lèi)型,并將設(shè)置的分片類(lèi)型信息寫(xiě)入碼流。分片類(lèi)型信息可以由分片劃分頭信息(Slice SegmentHeader)中的slice_type字段來(lái)指示。
[0219]步驟120,如設(shè)置的分片類(lèi)型是幀間預(yù)測(cè)類(lèi)型,執(zhí)行步驟130,否則執(zhí)行步驟160 ;
[0220]如設(shè)置的分片類(lèi)型是幀間預(yù)測(cè)類(lèi)型,則對(duì)當(dāng)前編碼分片使用幀間預(yù)測(cè)類(lèi)型編碼。
[0221]步驟130,將所述分片所在圖像設(shè)置為所述分片的預(yù)測(cè)參考圖像;
[0222]本實(shí)施例中,是將所述分片所在圖像插入預(yù)測(cè)參考圖像列表,作為所述分片自身的預(yù)測(cè)參考圖像。
[0223]編碼器可以將當(dāng)前編碼圖像放置在預(yù)測(cè)參考圖像列表中的固定位置,也可以自適應(yīng)地調(diào)整當(dāng)前編碼圖像在預(yù)測(cè)參考圖像列表中的位置。編碼器可以設(shè)置、使用參考圖像列表的調(diào)整信息(即參考圖像列表調(diào)整操作相關(guān)的參數(shù))來(lái)調(diào)整當(dāng)前編碼圖像在參考圖像列表中的放置位置,并將參考圖像列表的調(diào)整信息寫(xiě)入碼流。插入過(guò)程可以分兩步完成,第一步先將當(dāng)前編碼圖像寫(xiě)到一臨時(shí)列表中的固定位置,第二步將臨時(shí)列表的內(nèi)容寫(xiě)到預(yù)測(cè)參考圖像列表中并調(diào)整當(dāng)前編碼圖像的位置。但本發(fā)明也可以將當(dāng)前編碼圖像直接插入到預(yù)測(cè)參考圖像列表,同時(shí)對(duì)當(dāng)前編碼圖像的位置進(jìn)行調(diào)整,不再放置在默認(rèn)的固定位置。
[0224]步驟140,對(duì)所述預(yù)測(cè)參考圖像中全部或部分未編碼位置像素點(diǎn)的采樣值進(jìn)行填充;
[0225]該步驟可選。為了提高預(yù)測(cè)的準(zhǔn)確性,提升編碼的性能,本實(shí)施例對(duì)預(yù)測(cè)參考圖像進(jìn)行填充處理。
[0226]編碼器可以為預(yù)測(cè)參考圖像中全部未編碼位置的像素點(diǎn)設(shè)置采樣值;也可以只為部分未編碼位置像素點(diǎn)的采樣值進(jìn)行填充。其中,部分未編碼位置像素點(diǎn)的采樣值可以指當(dāng)前編碼塊及其相鄰編碼塊中的未編碼位置像素點(diǎn),或者指MV或BV指向的預(yù)測(cè)塊范圍內(nèi)的未編碼位置像素點(diǎn)。
[0227]具體填充方式上,可以分為不使用自適應(yīng)填充和使用自適應(yīng)填充兩大類(lèi)。不使用自適應(yīng)填充的一類(lèi)方式,如可以將預(yù)測(cè)參考圖像中未解碼位置像素點(diǎn)的采樣值設(shè)置為默認(rèn)預(yù)設(shè)值(即默認(rèn)值),例如,最大容許采樣值的1/2、0值和最大值等。使用自適應(yīng)填充的一類(lèi)方式,如可以將預(yù)測(cè)參考圖像中未編碼位置像素點(diǎn)的采樣值設(shè)置為最近編碼的編碼塊像素點(diǎn)采樣值的均值或指定像素點(diǎn)的采樣值,或設(shè)置為各列方向上最后一個(gè)已編碼像素點(diǎn)的采樣值。又如,將預(yù)測(cè)參考圖像中未編碼位置像素點(diǎn)的采樣值設(shè)置為外插值濾波器的輸出值,該外插值濾波器的輸入是已編碼像素點(diǎn)的采樣值,該濾波器可以是沿某個(gè)指定方向(如列方向)的一維濾波器,也可以是二維濾波器;所述濾波器可以是使用固定系數(shù)的外插值濾波器,也可以是自適應(yīng)濾波器;編碼器將濾波器形狀、系數(shù)等參數(shù)信息寫(xiě)入碼流。編碼器可以使用編碼器優(yōu)化模塊(如常用的基于率失真準(zhǔn)則設(shè)計(jì)的編碼器控制模塊)確定編碼過(guò)程中所使用的具體參數(shù)。
[0228]編碼器和解碼器之間可以約定使用的填充方式,也可以將使用的填充方式信息寫(xiě)入碼流,所述填充方式信息可以包括以下信息中的至少一種:
[0229]是否使用自適應(yīng)填充的指示信息;
[0230]使用自適應(yīng)填充時(shí),所使用的填充方式的指示信息及相關(guān)參數(shù);
[0231]不使用自適應(yīng)填充時(shí),所使用的未編碼位置像素點(diǎn)的采樣值的填充值;
[0232]編碼器可以將上述填充方式信息寫(xiě)入碼流中的以下一個(gè)或多個(gè)信息單元:參數(shù)集、分片頭信息、編碼樹(shù)塊(CTU)和CU。在解碼過(guò)程中,可以根據(jù)從碼流中解析出的所述填充方式信息對(duì)所述預(yù)測(cè)參考圖像中未解碼位置像素點(diǎn)的采樣值進(jìn)行填充。
[0233]步驟150,對(duì)幀間預(yù)測(cè)類(lèi)型的分片中的編碼塊依次編碼,其中,對(duì)所述分片中采用IBC模式的編碼塊,按照第一編碼方式進(jìn)行編碼,結(jié)束;
[0234]步驟160,對(duì)幀內(nèi)預(yù)測(cè)類(lèi)型的分片中的編碼塊依次編碼,其中,對(duì)所述分片中采用IBC模式的編碼塊,按照不同于第一編碼方式的第二編碼方式進(jìn)行編碼。
[0235]在步驟160之前或該步驟執(zhí)行過(guò)程中,編碼器也可以對(duì)幀內(nèi)預(yù)測(cè)類(lèi)型分片所在圖像(緩存的圖像)進(jìn)行填充,填充方式可以采用步驟140中描述的各種方式。
[0236]上述步驟150中,編碼器會(huì)依次編碼分片中各CTU的碼流,對(duì)每一 CTU,依次編碼CTU中各分塊(包括⑶、PU、TU中的至少之一)的碼流。對(duì)幀間預(yù)測(cè)類(lèi)型的分片中的當(dāng)前編碼塊編碼時(shí),如圖3所示,又可以分為以下幾個(gè)步驟:
[0237]步驟1501,確定幀間預(yù)測(cè)類(lèi)型的分片中當(dāng)前編碼塊采用的預(yù)測(cè)模式;
[0238]編碼器可以使用編碼器優(yōu)化模塊確定對(duì)當(dāng)前編碼塊使用普通的幀內(nèi)預(yù)測(cè)模式、IBC模式或幀間預(yù)測(cè)模式。
[0239]步驟1503,如采用IBC模式,執(zhí)行步驟1505,否則,執(zhí)行步驟1509 ;
[0240]步驟1505,對(duì)幀間預(yù)測(cè)類(lèi)型分片中采用IBC模式的編碼塊,使用第一編碼方式進(jìn)行編碼;
[0241]使用第一編碼方式進(jìn)行編碼,可以包括:使用幀間預(yù)測(cè)模式的模式參數(shù)編碼方式編碼IBC模式參數(shù)。例如,可以使用預(yù)測(cè)單元PU的運(yùn)動(dòng)信息編碼方法編碼IBC模式參數(shù),編碼的所述IBC模式參數(shù)包括以下參數(shù)中的至少一種:塊劃分、參考?jí)K指示矢量和參考圖像索引。本實(shí)施例采用IBC模式的編碼塊,可以使用幀間預(yù)測(cè)模式標(biāo)識(shí),而不編碼專(zhuān)門(mén)的IBC模式標(biāo)識(shí)信息。解碼器根據(jù)幀間預(yù)測(cè)模式標(biāo)識(shí)和指向其自身所在圖像的參考圖像索引,可以確定其為IBC模式的解碼塊。
[0242]本實(shí)施例對(duì)IBC的預(yù)測(cè)塊劃分方式?jīng)]有限定,可以是傳統(tǒng)的矩形、正方形塊劃分方式,也可以是Nxl或ΙχΝ的串劃分。串匹配(String Matching)方法是IBC使用Nxl或ΙχΝ的串劃分方式時(shí)的一個(gè)特例。參考?jí)K指示矢量表示參考?jí)K與當(dāng)前編碼塊之間的相對(duì)位置偏移,即BV。對(duì)于參考?jí)K指示矢量,可以直接對(duì)其進(jìn)行編碼;也可以使用參考?jí)K指示矢量參數(shù)表示參考?jí)K指示矢量,并對(duì)所述參考?jí)K指示矢量參數(shù)進(jìn)行編碼。參考?jí)K指示矢量參數(shù)可以包括以下參數(shù)至少之一 :BV預(yù)測(cè)值索引序號(hào)、BV預(yù)測(cè)差??蛇x擇地,編碼器可以將BV的動(dòng)態(tài)范圍限定在當(dāng)前編碼塊所在分片的范圍內(nèi)。
[0243]編碼器根據(jù)IBC模式參數(shù)構(gòu)造當(dāng)前編碼塊中像素點(diǎn)采樣值的預(yù)測(cè)值。編碼器可使用一個(gè)或多個(gè)BV指向的參考?jí)K,按照IBC模式塊劃分方式,將所述一個(gè)或多個(gè)參考?jí)K組合成與當(dāng)前編碼塊相同形狀的預(yù)測(cè)塊,將該預(yù)測(cè)塊中包含的像素點(diǎn)采樣值作為當(dāng)前塊的預(yù)測(cè)值,或者將該所述預(yù)測(cè)塊中的像素點(diǎn)采樣值進(jìn)行加權(quán)處理后作為IBC模式參考?jí)K。
[0244]步驟1507,對(duì)編碼塊編碼完成后,以該編碼塊當(dāng)前編碼圖像中已編碼位置像素點(diǎn)的本地解碼恢復(fù)采樣值,更新所述預(yù)測(cè)參考圖像中相應(yīng)像素點(diǎn)的采樣值;
[0245]本步驟中,在更新所述預(yù)測(cè)參考圖像中相應(yīng)像素點(diǎn)的采樣值之后,還可以采用相同的填充方式對(duì)所述預(yù)測(cè)參考圖像中未編碼位置像素點(diǎn)的采樣值進(jìn)行重新填充。
[0246]步驟1509,對(duì)幀間預(yù)測(cè)類(lèi)型分片中采用其他模式的編碼塊,按照標(biāo)準(zhǔn)規(guī)定的編碼方式進(jìn)行編碼。
[0247]幀間預(yù)測(cè)類(lèi)型分片中還可能存在幀間預(yù)測(cè)模式的編碼塊和普通幀內(nèi)預(yù)測(cè)模式的編碼塊,這些編碼塊的編碼方法遵循標(biāo)準(zhǔn)中的規(guī)定即可。
[0248]在本實(shí)施例的一個(gè)變例中,對(duì)于幀間預(yù)測(cè)類(lèi)型的分片,將分片所在圖像直接作為所述分片的預(yù)測(cè)參考圖像,不再插入預(yù)測(cè)參考圖像列表。而對(duì)分片中采用IBC模式的編碼塊使用第一編碼方式進(jìn)行編碼,可以包括:使用編碼單元(CU)編碼IBC模式標(biāo)識(shí)信息,使用預(yù)測(cè)單元(PU)編碼IBC模式參數(shù)信息;或者使用預(yù)測(cè)單元(PU)編碼IBC模式標(biāo)識(shí)信息和IBC模式參數(shù)信息。
[0249]步驟160中,編碼器會(huì)依次編碼分片中各CTU的碼流,對(duì)每一 CTU,依次編碼CTU中各分塊的碼流。對(duì)幀內(nèi)預(yù)測(cè)類(lèi)型的分片中的當(dāng)前編碼塊編碼時(shí),如圖4所示,又可以分為以下幾個(gè)步驟:
[0250]步驟1601,確定幀內(nèi)預(yù)測(cè)類(lèi)型的分片中當(dāng)前編碼塊采用的預(yù)測(cè)模式;
[0251]編碼器可以使用編碼器優(yōu)化模塊確定對(duì)當(dāng)前編碼塊使用普通的幀內(nèi)預(yù)測(cè)模式或IBC模式。
[0252]步驟1603,如確定采用IBC模式,執(zhí)行步驟1605,否則,執(zhí)行步驟1609 ;
[0253]步驟1605,對(duì)幀內(nèi)預(yù)測(cè)類(lèi)型分片中采用IBC模式的編碼塊,使用第二編碼方式進(jìn)行編碼;
[0254] 使用第二編碼方式進(jìn)行編碼,可以包括:在編碼塊直接編碼IBC模式參數(shù),編碼的所述IBC模式參數(shù)包括以下參數(shù)中的至少之一種:塊劃分和參考?jí)K指示矢量。例如可以在編碼單元CU直接編碼IBC模式參數(shù)。在編碼塊直接編碼IBC模式參數(shù)之前,可以編碼IBC模式標(biāo)識(shí)信息,可使用CU編碼IBC模式標(biāo)識(shí)信息,但不局限于此,也可以使用PU編碼IBC模式標(biāo)識(shí)信息。IBC模式標(biāo)識(shí)信息可以是直接標(biāo)識(shí)“當(dāng)前編碼塊使用IBC模式”,如使用一個(gè)標(biāo)志位;也可以是隱含標(biāo)識(shí)IBC模式,例如使用相關(guān)信息的組合隱含標(biāo)識(shí)IBC模式,這些相關(guān)信息的組合指示了 :“以當(dāng)前分片所在圖像中某個(gè)與當(dāng)前編碼塊同形狀和大小的區(qū)域中包含的像素點(diǎn)采樣值,作為當(dāng)前編碼塊中待編碼像素點(diǎn)采樣值的預(yù)測(cè)值”。使用第二編碼方式進(jìn)行編碼時(shí),可以使用預(yù)測(cè)參考圖像列表,編碼器將所述分片所在圖像放置在所述預(yù)測(cè)參考圖像列表中的固定位置,不進(jìn)行參考圖像列表調(diào)整操作,即不對(duì)所述分片所在圖像在預(yù)測(cè)參考圖像列表中的位置進(jìn)行自適應(yīng)調(diào)整,也不向包含使用第二編碼方式編碼的編碼塊的分片對(duì)應(yīng)的碼流中寫(xiě)入?yún)⒖紙D像列表中圖像位置自適應(yīng)調(diào)整操作相關(guān)的參數(shù)信息。
[0255] 步驟1607,對(duì)編碼塊編碼完成后,以該編碼塊當(dāng)前編碼圖像中已編碼位置像素點(diǎn)的本地解碼恢復(fù)采樣值,更新所述分片所在圖像中相應(yīng)像素點(diǎn)的采樣值,結(jié)束。
[0256] 在更新所述分片所在圖像中相應(yīng)像素點(diǎn)的采樣值之后,還可以采用相同的填充方式對(duì)所述分片所在圖像中未編碼位置像素點(diǎn)的采樣值重新填充。
[0257] 步驟1609,對(duì)幀內(nèi)預(yù)測(cè)類(lèi)型分片中采用其他模式的編碼塊,按照標(biāo)準(zhǔn)規(guī)定的編碼方式進(jìn)行編碼;
[0258] 幀間預(yù)測(cè)類(lèi)型分片中還可能存在普通幀內(nèi)預(yù)測(cè)模式的編碼塊,這些編碼塊的編碼方法遵循標(biāo)準(zhǔn)中的規(guī)定即可。
[0259] 上述方法中,使用所述第一編碼方式和/或第二編碼方式對(duì)所述采用IBC模式的編碼塊進(jìn)行編碼,可以包括:編碼時(shí),對(duì)所述編碼塊的參考?jí)K中未編碼位置像素點(diǎn)的采樣值進(jìn)行填充。
[0260] 相應(yīng)地,如圖4所示,本實(shí)施例提供的編碼器包括:
[0261]類(lèi)型設(shè)置裝置10,用于設(shè)置分片的類(lèi)型;
[0262] 第一編碼裝置20,用于對(duì)幀間預(yù)測(cè)類(lèi)型的分片編碼,編碼時(shí),將所述分片所在圖像設(shè)置為所述分片的預(yù)測(cè)參考圖像,對(duì)所述分片中采用幀內(nèi)塊復(fù)制IBC模式的編碼塊,使用第一編碼方式進(jìn)行編碼;
[0263] 第二編碼裝置30,用于對(duì)幀內(nèi)預(yù)測(cè)類(lèi)型的分片編碼,編碼時(shí),對(duì)所述分片中采用IBC模式的編碼塊,使用不同于第一編碼方式的第二編碼方式進(jìn)行編碼。
[0264] 上述第一編碼裝置20對(duì)幀間預(yù)測(cè)類(lèi)型的分片編碼時(shí),將所述分片所在圖像設(shè)置為所述分片的預(yù)測(cè)參考圖像,可以包括:將所述分片所在圖像插入預(yù)測(cè)參考圖像列表,作為所述分片的預(yù)測(cè)參考圖像。可選地,編碼器可以進(jìn)行參考圖像列表調(diào)整操作,調(diào)整所述分片所在圖像在預(yù)測(cè)參考圖像列表中的位置,并將參考圖像列表調(diào)整操作相關(guān)的參數(shù)寫(xiě)入碼流。
[0265] 上述第一編碼裝置20對(duì)幀間預(yù)測(cè)類(lèi)型的所述分片中采用IBC模式的編碼塊,使用第一編碼方式進(jìn)行編碼,可以包括:使用幀間預(yù)測(cè)模式的模式參數(shù)編碼方式編碼IBC模式參數(shù)。
[0266]上述第一編碼裝置20使用幀間預(yù)測(cè)模式的模式參數(shù)編碼方式編碼IBC模式參數(shù),可以包括:使用預(yù)測(cè)單元PU的運(yùn)動(dòng)信息編碼方法編碼IBC模式參數(shù),編碼的所述IBC模式參數(shù)包括以下參數(shù)中的至少一種:塊劃分、參考?jí)K指示矢量和參考圖像索引。
[0267]上述第二編碼裝置30對(duì)幀內(nèi)預(yù)測(cè)類(lèi)型的所述分片中采用IBC模式的編碼塊,使用第二編碼方式進(jìn)行編碼,可以包括:在編碼塊直接編碼IBC模式參數(shù),編碼的所述IBC模式參數(shù)包括以下參數(shù)中的至少之一種:塊劃分和參考?jí)K指示矢量。使用第二編碼方式進(jìn)行編碼,還包括:編碼時(shí)使用預(yù)測(cè)參考圖像列表,將所述分片所在圖像放置在