本案是分案申請,其母案為于2012年11月5日提交的題為“推導(dǎo)幀內(nèi)預(yù)測模式的方法和設(shè)備”的申請?zhí)枮?01210436599.4的申請。
本發(fā)明涉及一種推導(dǎo)幀內(nèi)預(yù)測模式的方法和設(shè)備,更具體而言,涉及一種利用相鄰幀內(nèi)預(yù)測模式構(gòu)造mpm組和利用mpm組和幀內(nèi)預(yù)測信息推導(dǎo)幀內(nèi)預(yù)測模式的方法。
背景技術(shù):
在諸如mpeg-1、mpeg-2、mpeg-4和h.264/mpeg-4avc的圖像壓縮方法中,一幅圖畫被分成宏塊以對圖像編碼。然后,利用幀間預(yù)測或幀內(nèi)預(yù)測對相應(yīng)宏塊編碼。
在幀內(nèi)預(yù)測中,不利用參考圖畫,而是利用空間上與當前塊相鄰的重構(gòu)像素的值對圖畫的當前塊編碼。通過比較利用相鄰像素值產(chǎn)生的預(yù)測塊和初始塊從多個幀內(nèi)預(yù)測模式中選擇失真小的最佳預(yù)測模式。然后,利用所選的幀內(nèi)預(yù)測模式和相鄰像素值,計算當前塊的預(yù)測值。計算初始當前塊的預(yù)測值和像素值之間的差異,然后通過轉(zhuǎn)換編碼、量化和熵編碼進行編碼。也對幀內(nèi)預(yù)測模式進行編碼。
根據(jù)h.264標準,4×4幀內(nèi)預(yù)測中有九種模式。九種模式是垂直模式、水平模式、dc模式、對角線左下模式、對角線右下模式、垂直右模式、垂直左模式、水平上模式和水平下模式。在九種模式中選擇一種模式以產(chǎn)生當前塊的預(yù)測塊,將模式信息發(fā)送到解碼器。
在發(fā)展中的hevc標準中,幀內(nèi)預(yù)測模式的數(shù)量增加到18或35個,編碼單元的大小介于8×8和128×128之間。編碼單元與h.264/avc的宏塊目的相似。
因此,如果利用h.264/avc的相同方法對幀內(nèi)預(yù)測模式編碼,編碼效率會下降,因為幀內(nèi)預(yù)測模式的數(shù)量大于h.264/avc的數(shù)量。而且,隨著編碼單元大小增加且?guī)瑑?nèi)預(yù)測模式數(shù)量增加,應(yīng)當改進量化方法和掃描方法以提高編碼效率。
技術(shù)實現(xiàn)要素:
【技術(shù)問題】
本發(fā)明涉及一種利用相鄰幀內(nèi)預(yù)測模式構(gòu)造mpm組并利用mpm組和幀內(nèi)預(yù)測信息導(dǎo)出幀內(nèi)預(yù)測模式的方法和設(shè)備。
【技術(shù)方案】
本發(fā)明的一個方面提供了一種導(dǎo)出當前預(yù)測單元的幀內(nèi)預(yù)測模式的方法,包括:對模式組指示符和預(yù)測模式索引進行熵解碼;構(gòu)造包括三個幀內(nèi)預(yù)測模式的mpm組;判斷所述模式組指示符是否表示mpm組;如果所述模式組指示符指示mpm組,將所述預(yù)測模式索引指定的mpm組的幀內(nèi)預(yù)測確定為當前預(yù)測單元的幀內(nèi)預(yù)測模式;以及如果所述模式組指示符不指示mpm組,利用所述預(yù)測模式索引和所述mpm組的三個預(yù)測模式導(dǎo)出所述當前預(yù)測單元的幀內(nèi)預(yù)測模式。
【有利效果】
根據(jù)本發(fā)明的方法構(gòu)造包括三個幀內(nèi)預(yù)測模式的mpm組;如果所述模式組指示符指示mpm組,將所述預(yù)測模式索引指定的mpm組的幀內(nèi)預(yù)測確定為當前預(yù)測單元的幀內(nèi)預(yù)測模式;以及如果所述模式組指示符不指示mpm組,利用所述預(yù)測模式索引和所述mpm組的三個預(yù)測模式導(dǎo)出所述當前預(yù)測單元的幀內(nèi)預(yù)測模式。因此,通過利用多個最可能的候選對當前塊的幀內(nèi)預(yù)測模式編碼提高了幀內(nèi)預(yù)測模式的編碼效率。而且,通過產(chǎn)生非常類似于初始塊的預(yù)測塊并通過使對殘余塊編碼所需的比特量最小化,提高了幀內(nèi)預(yù)測模式的編碼效率。
附圖說明
圖1是根據(jù)本發(fā)明的圖像編碼設(shè)備的方框圖。
圖2是示出了根據(jù)本發(fā)明的幀內(nèi)預(yù)測模式的示意圖。
圖3是根據(jù)本發(fā)明的圖像解碼設(shè)備的方框圖。
圖4是流程圖,示出了根據(jù)本發(fā)明在幀內(nèi)預(yù)測中產(chǎn)生預(yù)測塊的方法。
圖5是流程圖,示出了根據(jù)本發(fā)明恢復(fù)幀內(nèi)預(yù)測模式的流程。
圖6是示意圖,示出了根據(jù)本發(fā)明當前塊的參考像素的位置。
圖7是方框圖,示出了根據(jù)本發(fā)明在幀內(nèi)預(yù)測中產(chǎn)生預(yù)測塊的設(shè)備。
具體實施方式
在下文中,將參考附圖詳細描述本發(fā)明的各實施例。不過,本發(fā)明不限于下文公開的示范性實施例,而是可以通過各種方式實施。因此,本發(fā)明很多其他修改和變化都是可能的,要理解的是,在所公開的概念范圍之內(nèi),可以通過與具體所述不同的方式實踐本發(fā)明。
圖1是根據(jù)本發(fā)明的圖像編碼設(shè)備100的方框圖。
參考圖1,根據(jù)本發(fā)明的圖像編碼設(shè)備100包括圖畫分割單元101、變換單元103、量化單元104、掃描單元105、熵編碼單元106、逆量化單元107、逆變換單元108、后期處理單元110、圖畫存儲單元111、幀內(nèi)預(yù)測單元112、幀間預(yù)測單元113、減法器102和加法器109。
圖畫分割單元101將圖畫或切片(slice)劃分成多個最大編碼單元(lcu),并將每個lcu劃分成一個或多個編碼單元。圖畫分割單元101確定每個編碼單元的預(yù)測模式和預(yù)測單元大小與變換單元大小。
lcu包括一個或多個編碼單元。lcu具有遞歸的四叉樹結(jié)構(gòu),以指定lcu的分割結(jié)構(gòu)。指定編碼單元的最大大小和最小大小的信息包括在序列參數(shù)集中。由一個或多個分裂編碼單元標志(split_cu_flag)指定分割結(jié)構(gòu)。編碼單元的大小是2n×2n。
編碼單元包括一個或多個預(yù)測單元。在幀內(nèi)預(yù)測中,預(yù)測單元的大小是2n×2n或n×n。在幀間預(yù)測中,預(yù)測單元的大小是2n×2n、2n×n、n×2n或n×n。當預(yù)測單元在幀間預(yù)測中是不對稱分割時,預(yù)測單元的大小也可以是hn×2n、(2-h)n×2n、2n×hn和2n×(2-h)n之一。h的值為1/2。
編碼單元包括一個或多個變換單元。變換單元具有遞歸的四叉樹結(jié)構(gòu),以指定分割結(jié)構(gòu)。由一個或多個分裂變換單元標記(split_tu_flag)指定分割結(jié)構(gòu)。指定變換單元的最大大小和最小大小的信息包括在序列參數(shù)集中。
幀內(nèi)預(yù)測單元112確定當前預(yù)測單元的幀內(nèi)預(yù)測模式并利用幀內(nèi)預(yù)測模式產(chǎn)生一個或多個預(yù)測塊。預(yù)測塊具有與變換單元同樣的大小。如果當前塊有不可用的參考像素,幀內(nèi)預(yù)測單元112產(chǎn)生參考像素,根據(jù)當前塊的大小和幀內(nèi)預(yù)測模式自適應(yīng)地對當前塊的參考像素濾波并產(chǎn)生當前塊的預(yù)測塊。當前塊具有與預(yù)測塊同樣的大小。
圖2是示出了根據(jù)本發(fā)明的幀內(nèi)預(yù)測模式的示意圖。如圖2所示,幀內(nèi)預(yù)測模式的數(shù)量為35。dc模式和平面模式是非方向性幀內(nèi)預(yù)測模式,其他是方向性幀內(nèi)預(yù)測模式。
幀間預(yù)測單元113利用圖畫存儲單元111中存儲的一個或多個參考圖畫確定當前預(yù)測單元的運動信息并產(chǎn)生預(yù)測單元的預(yù)測塊。運動信息包括指示參考圖畫的一個或多個參考圖畫索引和一個或多個運動矢量。
變換單元103利用初始塊和預(yù)測塊變換殘余信號以產(chǎn)生變換塊。在變換單元中變換殘余信號。變換類型由預(yù)測模式和變換單元的大小確定。變換類型是基于dct的整數(shù)變換或基于dst的整數(shù)變換。
量化單元104確定用于量化變換塊的量化參數(shù)。量化參數(shù)是量化步長。針對大小等于或大于參考大小的每個量化單元確定量化參數(shù)。具有參考大小的量化單元被稱為最小量化單元。如果編碼單元的大小等于或大于參考大小,編碼單元變?yōu)榱炕瘑卧?。最小量化單元中可以包括多個編碼單元。參考大小是編碼單元可允許大小之一。參考大小針對每幅圖畫被確定并包括在圖畫參數(shù)集中。
量化單元104產(chǎn)生量化參數(shù)預(yù)測器并通過從量化參數(shù)減去量化參數(shù)預(yù)測器來產(chǎn)生差分量化參數(shù)。對差分量化參數(shù)進行編碼并發(fā)送到解碼器。如果編碼單元中沒有要發(fā)送的殘余信號,可以不發(fā)送編碼單元的差分量化參數(shù)。
利用相鄰編碼單元的量化參數(shù)和/或先前編碼單元的量化參數(shù)產(chǎn)生量化參數(shù)預(yù)測器。
量化單元104按照下述次序順序檢索左量化參數(shù)、上量化參數(shù)和前量化參數(shù)。在有至少兩個量化參數(shù)可用時,將按照所述次序檢索的前兩個可用量化參數(shù)的平均值設(shè)置為量化參數(shù)預(yù)測器。在僅有一個量化參數(shù)可用時,將該可用的量化參數(shù)設(shè)置為量化參數(shù)預(yù)測器。左量化參數(shù)是左相鄰編碼單元的量化參數(shù)。上量化參數(shù)是上相鄰編碼單元的量化參數(shù)。前量化參數(shù)是編碼次序中前編碼單元的量化參數(shù)。
量化單元104利用量化矩陣和量化參數(shù)對變換塊進行量化以產(chǎn)生量化塊。向逆量化單元107和掃描單元105提供量化塊。
掃描單元105確定掃描模式并向量化塊應(yīng)用該掃描模式。在將cabac(語境自適應(yīng)二進制算術(shù)編碼)用于熵編碼時,如下確定掃描模式。
在幀內(nèi)預(yù)測中,由幀內(nèi)預(yù)測模式和變換單元的大小確定掃描模式。在對角線掃描、垂直掃描和水平掃描間選擇掃描模式。將量化塊的量化變換系數(shù)分成顯著系數(shù)、符號標記和級別。將所述掃描模式分別應(yīng)用于顯著系數(shù)、符號標記和級別。
在變換單元的大小等于或小于第一大小時,為垂直模式和垂直模式的預(yù)定數(shù)量的相鄰幀內(nèi)預(yù)測模式選擇水平掃描,為水平模式和水平模式的預(yù)定數(shù)量的相鄰幀內(nèi)預(yù)測模式選擇垂直掃描,為其他幀內(nèi)預(yù)測模式選擇對角線掃描。第一大小為8×8。
在變換單元的大小大于第一大小時,為所有幀內(nèi)預(yù)測模式選擇對角線掃描。
在幀間預(yù)測中,使用預(yù)定掃描模式。預(yù)定掃描模式是對角線掃描。
在變換單元的大小大于第二大小時,量化塊被分成多個子集并被掃描。第二大小是4×4。用于掃描子集的掃描模式與用于掃描每個子集的量化變換系數(shù)的掃描模式相同。沿相反方向掃描每個子集的量化變換系數(shù)。也沿反向掃描子集。
對最后非零位置編碼并發(fā)送到解碼器。最后非零位置指定最后非零量化變換系數(shù)在變換單元中的位置。
非零子集標志被確定并被編碼。非零子集標志指示子集是否包含非零系數(shù)。不針對覆蓋dc系數(shù)的子集和覆蓋最后非零系數(shù)的子集定義非零子集標志。
逆量化單元107對量化塊的量化的變換系數(shù)進行逆量化。
逆變換單元108對逆量化塊進行逆變換以產(chǎn)生空間域的殘余信號。
加法器109通過將殘余塊和預(yù)測塊相加來產(chǎn)生重構(gòu)塊。
后期處理單元110執(zhí)行解塊過濾過程,以清除重建圖畫中產(chǎn)生的分塊人為噪聲。
圖畫存儲單元111從后期處理單元110接收經(jīng)后期處理的圖像并在圖畫單元中存儲圖像。圖畫可以是幀或場。
熵編碼單元106對從掃描單元105接收的一維系數(shù)信息、從幀內(nèi)預(yù)測單元112接收的幀內(nèi)預(yù)測信息、從幀間預(yù)測單元113接收的運動信息等進行熵編碼。
圖3是根據(jù)本發(fā)明的圖像解碼設(shè)備200的方框圖。
根據(jù)本發(fā)明的圖像解碼設(shè)備200包括熵解碼單元201、逆掃描單元202、逆量化單元203、逆變換單元204、加法器205、后期處理單元206、圖畫存儲單元207、幀內(nèi)預(yù)測單元208和幀間預(yù)測單元209。
熵解碼單元201從接收的比特流提取幀內(nèi)預(yù)測信息、幀間預(yù)測信息和一維系數(shù)信息。熵解碼單元201向幀間預(yù)測單元209發(fā)送幀間預(yù)測信息,向幀內(nèi)預(yù)測單元208發(fā)送幀內(nèi)預(yù)測信息,向逆掃描單元202發(fā)送系數(shù)信息。
逆掃描單元202使用逆掃描模式產(chǎn)生二維量化塊。應(yīng)該將cabac用作熵編碼方法。逆掃描模式是對角線掃描、垂直掃描和水平掃描之一。
在幀內(nèi)預(yù)測中,由幀內(nèi)預(yù)測模式和變換單元的大小確定逆掃描模式。在對角線掃描、垂直掃描和水平掃描間選擇逆掃描模式。將選擇的逆掃描模式分別應(yīng)用于顯著系數(shù)、符號標記和級別以產(chǎn)生量化塊。
在變換單元的大小等于或小于第一大小時,為垂直模式和垂直模式預(yù)定數(shù)量的相鄰幀內(nèi)預(yù)測模式選擇水平掃描,為水平模式和水平模式預(yù)定數(shù)量的相鄰幀內(nèi)預(yù)測模式選擇垂直掃描,為其他幀內(nèi)預(yù)測模式選擇對角線掃描。第一大小為8×8。
在變換單元的大小大于第一大小時,為所有幀內(nèi)預(yù)測模式選擇對角線掃描。
在幀間預(yù)測中,使用對角線掃描。
在變換單元的大小大于第二大小時,以子集為單元逆掃描顯著系數(shù)、符號標志和級別以產(chǎn)生子集。并對該子集進行逆掃描以產(chǎn)生量化塊。第二大小是4×4。
用于產(chǎn)生每個子集的逆掃描模式與用于產(chǎn)生量化塊的逆掃描模式相同。沿相反方向?qū)︼@著系數(shù)、符號標記和級別進行掃描。也沿反向掃描子集。
從編碼器接收最后非零位置和非零子集標志。使用最后非零位置確定要產(chǎn)生的子集數(shù)量。使用非零子集標志確定要通過應(yīng)用逆掃描模式產(chǎn)生的子集。利用逆掃描模式產(chǎn)生覆蓋dc系數(shù)的子集和覆蓋最后非零系數(shù)的子集,因為未發(fā)送針對覆蓋dc系數(shù)的子集和覆蓋最后非零系數(shù)的子集的非零子集標志。
逆量化單元203從熵解碼單元201接收差分量化參數(shù)并產(chǎn)生量化參數(shù)預(yù)測器。通過圖1的量化單元104的相同操作產(chǎn)生量化參數(shù)預(yù)測器。然后,逆量化單元203將差分量化參數(shù)和量化參數(shù)預(yù)測器相加以產(chǎn)生當前編碼單元的量化參數(shù)。如果當前編碼單元等于或大于最小量化單元且不從編碼器接收用于當前編碼單元的差分量化參數(shù),將差分量化參數(shù)設(shè)置為0。
逆量化單元203對量化塊進行逆量化。
逆變換單元204對逆量化塊進行逆變換以恢復(fù)殘余塊。根據(jù)預(yù)測模式和變換單元的大小自適應(yīng)地確定逆變換類型。逆變換類型是基于dct的整數(shù)變換或基于dst的整數(shù)變換。
幀內(nèi)預(yù)測單元208利用接收的幀內(nèi)預(yù)測信息恢復(fù)當前預(yù)測單元的幀內(nèi)預(yù)測模式,并根據(jù)恢復(fù)的幀內(nèi)預(yù)測模式產(chǎn)生預(yù)測塊。預(yù)測塊具有與變換單元同樣的大小。如果當前塊有不可用的參考像素,幀內(nèi)預(yù)測單元250產(chǎn)生參考像素,根據(jù)當前塊的大小和幀內(nèi)預(yù)測模式自適應(yīng)地對當前塊的參考像素濾波。當前塊具有與變換單元相同的大小。
幀間預(yù)測單元209利用接收的幀間預(yù)測信息恢復(fù)當前預(yù)測單元的運動信息,并利用運動信息產(chǎn)生預(yù)測塊。
后期處理單元206與圖1的后期處理單元110同樣工作。
圖畫存儲單元207從后期處理單元206接收經(jīng)后期處理的圖像并在圖畫單元中存儲圖像。圖畫可以是幀或場。
加法器205將恢復(fù)的殘余塊和預(yù)測塊相加以產(chǎn)生重構(gòu)塊。
圖4是流程圖,示出了根據(jù)本發(fā)明在幀內(nèi)預(yù)測中產(chǎn)生預(yù)測塊的方法。
對當前預(yù)測單元的幀內(nèi)預(yù)測信息進行熵解碼(s110)。
幀內(nèi)預(yù)測信息包括模式組指示符和預(yù)測模式索引。模式組指示符是表示當前預(yù)測單元的幀內(nèi)預(yù)測模式是否屬于最可能的模式組(mpm組)的標志。如果標志是1,當前預(yù)測單元的幀內(nèi)預(yù)測單元屬于mpm組。如果標志是0,當前預(yù)測單元的幀內(nèi)預(yù)測單元屬于殘余模式組。殘余模式組包括除屬于mpm組的幀內(nèi)預(yù)測模式之外的所有幀內(nèi)預(yù)測模式。預(yù)測模式索引指定由模式組指示符指定的組之內(nèi)當前預(yù)測單元的幀內(nèi)預(yù)測模式。
利用幀內(nèi)預(yù)測信息導(dǎo)出當前預(yù)測單元的幀內(nèi)預(yù)測模式(s120)。
圖5是流程圖,示出了根據(jù)本發(fā)明導(dǎo)出幀內(nèi)預(yù)測模式的流程。利用以下有次序的步驟導(dǎo)出當前預(yù)測單元的幀內(nèi)預(yù)測模式。
利用相鄰預(yù)測單元的幀內(nèi)預(yù)測模式構(gòu)造mpm組(s121)。由左幀內(nèi)預(yù)測模式和上幀內(nèi)預(yù)測模式自適應(yīng)地確定mpm組的幀內(nèi)預(yù)測模式。左幀內(nèi)預(yù)測模式是左相鄰預(yù)測單元的幀內(nèi)預(yù)測模式,上幀內(nèi)預(yù)測模式是上相鄰預(yù)測單元的幀內(nèi)預(yù)測模式。mpm組由三個幀內(nèi)預(yù)測模式構(gòu)成。
如果不存在左或上相鄰預(yù)測單元,將左或上相鄰單元的幀內(nèi)預(yù)測模式設(shè)置為不可用。例如,如果當前預(yù)測單元位于圖畫的左或上邊界,則不存在左或上相鄰預(yù)測單元。如果左或上相鄰單元位于其他切片或其他區(qū)塊之內(nèi),將左或上相鄰單元的幀內(nèi)預(yù)測模式設(shè)置為不可用。如果左或上相鄰單元是幀間編碼的,將左或上相鄰單元的幀內(nèi)預(yù)測模式設(shè)置為不可用。如果上相鄰單元位于其他lcu之內(nèi),可以將左或上相鄰單元的幀內(nèi)預(yù)測模式設(shè)置為不可用。
在左幀內(nèi)預(yù)測模式和上幀內(nèi)預(yù)測模式都可用且彼此不同時,將左幀內(nèi)預(yù)測模式和上幀內(nèi)預(yù)測模式包括在mpm組中,將一個額外的幀內(nèi)預(yù)測模式加到mpm組。將索引0分配給模式編號小的一個幀內(nèi)預(yù)測模式,將索引1分配給另一個?;蛘撸梢韵蜃髱瑑?nèi)預(yù)測模式分配索引0,可以向上幀內(nèi)預(yù)測模式分配索引1。如下由左和上幀內(nèi)預(yù)測模式確定額外的幀內(nèi)預(yù)測模式。
如果左和上幀內(nèi)預(yù)測模式之一是非方向性模式,另一個是方向性模式,將另一個非方向性模式加給mpm組。例如,如果左和上幀內(nèi)預(yù)測模式之一是dc模式,將平面模式加到mpm組。如果左和上幀內(nèi)預(yù)測模式之一是平面模式,將dc模式加到mpm組。如果左和上幀內(nèi)預(yù)測模式都是非方向性模式,將垂直模式加到mpm組。如果左和上幀內(nèi)預(yù)測模式都是方向性模式,將dc模式或平面模式加到mpm組。
在僅有左幀內(nèi)預(yù)測模式和上幀內(nèi)預(yù)測模式之一可用時,將可用的幀內(nèi)預(yù)測模式包括在mpm組中,將額外的兩個幀內(nèi)預(yù)測模式加到mpm組。如下通過可用的幀內(nèi)預(yù)測模式確定增加的兩個幀內(nèi)預(yù)測模式。
如果可用的幀內(nèi)預(yù)測模式是非方向性模式,將其他非方向性模式和垂直模式增加到mpm組。例如,如果可用的幀內(nèi)預(yù)測模式是dc模式,將平面模式和垂直模式增加到mpm組。如果可用的幀內(nèi)預(yù)測模式是平面模式,將dc模式和垂直模式增加到mpm組。如果可用的幀內(nèi)預(yù)測模式是方向性模式,將兩個非方向性模式(dc模式和平面模式)增加到mpm組。
在左幀內(nèi)預(yù)測模式和上幀內(nèi)預(yù)測模式都可用且彼此相同時,將可用幀內(nèi)預(yù)測模式包括在mpm組中,將兩個額外的幀內(nèi)預(yù)測模式增加到mpm組。如下通過可用的幀內(nèi)預(yù)測模式確定增加的兩個幀內(nèi)預(yù)測模式。
如果可用的幀內(nèi)預(yù)測模式是方向性模式,將兩個相鄰方向性模式增加到mpm組。例如,如果可用的幀內(nèi)預(yù)測模式是模式23,將左相鄰模式(模式1)和右相鄰模式(模式13)增加到mpm組。如果可用的幀內(nèi)預(yù)測模式是模式30,將兩個相鄰模式(模式2和模式16)增加到mpm組。如果可用的幀內(nèi)預(yù)測模式是非方向性模式,將其他非方向性模式和垂直模式增加到mpm組。例如,如果可用的幀內(nèi)預(yù)測模式是dc模式,將平面模式和垂直模式增加到mpm組。
在左幀內(nèi)預(yù)測模式和上幀內(nèi)預(yù)測模式都不可用時,將三個額外的幀內(nèi)預(yù)測模式增加到mpm組。三個幀內(nèi)預(yù)測模式是dc模式、平面模式和垂直模式。按照dc模式、平面模式和垂直模式的次序或平面模式、dc模式和垂直模式的次序?qū)⑺饕?、1和2分配給三個幀內(nèi)預(yù)測模式。
判斷模式組指示符是否指示mpm組(s122)。
如果模式組指示符指示mpm組,將預(yù)測模式索引指定的mpm組的幀內(nèi)預(yù)測確定為當前預(yù)測單元的幀內(nèi)預(yù)測模式(s123)。
如果模式組指示符不指示mpm組,將預(yù)測模式索引指定的殘余模式組的幀內(nèi)預(yù)測確定為當前預(yù)測單元的幀內(nèi)預(yù)測模式(s124)。如以下順序步驟那樣利用預(yù)測模式索引和mpm組的幀內(nèi)預(yù)測模式導(dǎo)出當前單元的幀內(nèi)預(yù)測模式。
1)按照模式編號次序重新排列mpm組的三個幀內(nèi)預(yù)測模式的順序。將模式編號最低的幀內(nèi)預(yù)測模式設(shè)置為第一候選。將模式編號中間的幀內(nèi)預(yù)測模式設(shè)置為第二候選。將模式編號最高的幀內(nèi)預(yù)測模式設(shè)置為第三候選。
2)將預(yù)測模式索引與第一候選比較。如果預(yù)測模式索引等于或大于mpm組的第一候選,將預(yù)測模式索引的值增加一。否則,維持預(yù)測模式索引的值。
3)將預(yù)測模式索引與第二候選比較。如果預(yù)測模式索引等于或大于mpm組的第二候選,將預(yù)測模式索引的值增加一。否則,維持預(yù)測模式索引的值。
4)將預(yù)測模式索引與第三候選比較。如果預(yù)測模式索引等于或大于mpm組的第三候選,將預(yù)測模式索引的值增加一。否則,維持預(yù)測模式索引的值。
5)將最后預(yù)測模式索引的值設(shè)置為當前預(yù)測單元的幀內(nèi)預(yù)測模式的模式編號。
基于指定變換單元大小的變換大小信息確定預(yù)測塊的大小(s130)。變換大小信息可以是一個或多個指定變換單元大小的split_transform_flag。
如果變換單元的大小等于當前預(yù)測單元的大小,預(yù)測塊的大小等于當前預(yù)測單元的大小。
如果變換單元的大小小于當前預(yù)測單元的大小,預(yù)測塊的大小等于變換單元的大小。在這種情況下,對當前預(yù)測單元的每個子塊執(zhí)行產(chǎn)生重構(gòu)塊的過程。亦即,產(chǎn)生當前子塊的預(yù)測塊和殘余塊,通過將預(yù)測塊和殘余塊相加產(chǎn)生每個子塊的重構(gòu)塊。然后,產(chǎn)生解碼次序中下一子塊的預(yù)測塊、殘余塊和重構(gòu)塊。使用恢復(fù)的幀內(nèi)預(yù)測模式產(chǎn)生所有子塊的所有預(yù)測塊。將當前子塊的重構(gòu)塊的一些像素用作下一子塊的參考像素。因此,能夠產(chǎn)生更類似于初始子塊的預(yù)測塊。
接下來,判斷是否當前塊的所有參考像素都可用,如果一個或多個參考像素不可用,產(chǎn)生參考像素(s140)。當前塊是當前預(yù)測單元或當前子塊。當前塊的大小是變換單元的大小。
圖6是示意圖,示出了根據(jù)本發(fā)明當前塊的參考像素的位置。如圖6所示,當前塊的參考像素由位于(x=0,…,2n-1,y=-1)的上參考像素、位于(x=-1,y=0,…,2m-1)的左參考像素和位于(x=-1,y=-1)的角像素構(gòu)成。n是當前塊的寬度,m是當前塊的高度。
如果在對應(yīng)位置不存在重構(gòu)像素或重構(gòu)像素位于另一切片之內(nèi),將參考像素設(shè)置為不可用。在受約束幀內(nèi)預(yù)測模式(cip模式)中,也將幀間模式的重構(gòu)像素設(shè)置為不可用。
如果一個或多個參考像素不可用,如下針對一個或多個不可用的參考像素產(chǎn)生一個或多個參考像素。
如果所有參考像素都不可用,用值2l-1替代所有參考像素的值。l的值是用于表示亮度像素值的比特數(shù)。
如果可用參考像素僅位于不可用參考像素的一側(cè),則用最接近不可用像素的參考像素值替代不可用參考像素。
如果可用參考像素位于不可用參考像素的兩側(cè),則用在每側(cè)最接近不可用像素的參考像素的平均值或在預(yù)定方向上最接近不可用像素的參考像素值替代每個不可用參考像素。
接下來,基于幀內(nèi)預(yù)測模式和當前塊的大小(s150)自適應(yīng)地對參考像素進行過濾。當前塊的大小是變換單元的大小。
在dc模式中,不對參考像素進行過濾。在垂直模式和水平模式中,不對參考像素進行過濾。在除了垂直和水平模式的方向性模式中,根據(jù)當前塊的大小調(diào)整參考像素。
如果當前的大小是4×4,在所有幀內(nèi)預(yù)測模式中都不對參考像素過濾。對于8×8、16×16和32×32的大小,隨著當前塊的大小變大,對參考像素進行過濾的幀內(nèi)預(yù)測模式的數(shù)量增大。例如,在垂直模式和垂直模式的預(yù)定數(shù)量的相鄰幀內(nèi)預(yù)測模式中不對參考像素進行過濾。在水平模式和水平模式預(yù)定數(shù)量的相鄰幀內(nèi)預(yù)測模式中也不對參考像素進行過濾。預(yù)定數(shù)量介于0到7之間,隨著當前塊大小變大而減小。
接下來,根據(jù)恢復(fù)的幀內(nèi)預(yù)測模式利用參考像素產(chǎn)生當前塊的預(yù)測塊(s160)。
在dc模式中,通過對位于(x=0,…n-1,y=-1)的n個參考像素和位于(x=-1,y=0,..m-1)的m個參考像素求平均值來產(chǎn)生預(yù)測塊的預(yù)測像素。然后,利用一個或兩個相鄰參考像素對與參考像素相鄰的預(yù)測像素進行過濾。
在垂直模式中,通過拷貝對應(yīng)垂直參考像素的值來產(chǎn)生預(yù)測塊的預(yù)測像素。然后,由左相鄰參考像素和角像素對與左參考像素相鄰的預(yù)測像素進行過濾。
在水平模式中,通過拷貝對應(yīng)水平參考像素的值來產(chǎn)生預(yù)測塊的預(yù)測像素。然后,由上相鄰參考像素和角像素對與上參考像素相鄰的預(yù)測像素進行過濾。
圖7是方框圖,示出了根據(jù)本發(fā)明在幀內(nèi)預(yù)測中產(chǎn)生預(yù)測塊的設(shè)備300。
根據(jù)本發(fā)明的設(shè)備300包括語法分析單元310、預(yù)測模式解碼單元320、預(yù)測大小確定單元330、參考可用性檢查單元340、參考像素產(chǎn)生單元350、參考像素過濾單元360和預(yù)測塊產(chǎn)生單元370。
語法分析單元310從比特流恢復(fù)當前預(yù)測單元的幀內(nèi)預(yù)測信息。
該幀內(nèi)預(yù)測信息包括模式組指示符和預(yù)測模式索引。模式組指示符是表示當前預(yù)測單元的幀內(nèi)預(yù)測模式是否屬于最可能的模式組(mpm組)的標志。如果該標志是1,當前預(yù)測單元的幀內(nèi)預(yù)測單元屬于mpm組。如果標志是0,當前預(yù)測單元的幀內(nèi)預(yù)測單元屬于殘余模式組。殘余模式組包括除屬于mpm組的幀內(nèi)預(yù)測模式之外的所有幀內(nèi)預(yù)測模式。預(yù)測模式索引指定由模式組指示符指定的組之內(nèi)當前預(yù)測單元的幀內(nèi)預(yù)測模式。
預(yù)測模式解碼單元320包括mpm組構(gòu)造單元321和預(yù)測模式恢復(fù)單元322。
mpm組構(gòu)造單元321構(gòu)造當前預(yù)測單元的mpm組。利用相鄰預(yù)測單元的幀內(nèi)預(yù)測模式構(gòu)造mpm組。由左幀內(nèi)預(yù)測模式和上幀內(nèi)預(yù)測模式自適應(yīng)地確定mpm組的幀內(nèi)預(yù)測模式。左幀內(nèi)預(yù)測模式是左相鄰預(yù)測單元的幀內(nèi)預(yù)測模式,上幀內(nèi)預(yù)測模式是上相鄰預(yù)測單元的幀內(nèi)預(yù)測模式。mpm組由三個幀內(nèi)預(yù)測模式構(gòu)成。
mpm組構(gòu)造單元321檢查左幀內(nèi)預(yù)測模式和上幀內(nèi)預(yù)測模式的可用性。如果不存在左或上相鄰預(yù)測單元,將左或上相鄰單元的幀內(nèi)預(yù)測模式設(shè)置為不可用。例如,如果當前預(yù)測單元位于圖畫的左或上邊界,則不存在左或上相鄰預(yù)測單元。如果左或上相鄰單元位于其他切片或其他區(qū)塊之內(nèi),將左或上相鄰單元的幀內(nèi)預(yù)測模式設(shè)置為不可用。如果左或上相鄰單元是幀間編碼的,將左或上相鄰單元的幀內(nèi)預(yù)測模式設(shè)置為不可用。如果上相鄰單元位于其他lcu之內(nèi),將左或上相鄰單元的幀內(nèi)預(yù)測模式設(shè)置為不可用。
mpm組構(gòu)造單元321如下構(gòu)造mpm組。
在左幀內(nèi)預(yù)測模式和上幀內(nèi)預(yù)測模式都可用且彼此不同時,左幀內(nèi)預(yù)測模式和上幀內(nèi)預(yù)測模式包括在mpm組中,將一個額外的幀內(nèi)預(yù)測模式加到mpm組。將索引0分配給模式編號小的一個幀內(nèi)預(yù)測模式,將索引1分配給另一個?;?qū)⑺饕?分配給左幀內(nèi)預(yù)測模式,將索引1分配給上幀內(nèi)預(yù)測模式。如下由左和上幀內(nèi)預(yù)測模式確定增加的幀內(nèi)預(yù)測模式。
如果左和上幀內(nèi)預(yù)測模式之一是非方向性模式,另一個是方向性模式,將另一個非方向性模式加給mpm組。例如,如果左和上幀內(nèi)預(yù)測模式之一是dc模式,將平面模式加到mpm組。如果左和上幀內(nèi)預(yù)測模式之一是平面模式,將dc模式加到mpm組。如果左和上幀內(nèi)預(yù)測模式都是非方向性模式,將垂直模式加到mpm組。如果左和上幀內(nèi)預(yù)測模式都是方向性模式,將dc模式或平面模式加到mpm組。
在僅有左幀內(nèi)預(yù)測模式和上幀內(nèi)預(yù)測模式之一可用時,將該可用的幀內(nèi)預(yù)測模式包括在mpm組中,將另外兩個幀內(nèi)預(yù)測模式加到mpm組。如下通過可用的幀內(nèi)預(yù)測模式確定增加的兩個幀內(nèi)預(yù)測模式。
如果可用的幀內(nèi)預(yù)測模式是非方向性模式,將其他非方向性模式和垂直模式增加到mpm組。例如,如果可用的幀內(nèi)預(yù)測模式是dc模式,將平面模式和垂直模式增加到mpm組。如果可用的幀內(nèi)預(yù)測模式是平面模式,將dc模式和垂直模式增加到mpm組。如果可用的幀內(nèi)預(yù)測模式是方向性模式,將兩個非方向性模式(dc模式和平面模式)增加到mpm組。
在左幀內(nèi)預(yù)測模式和上幀內(nèi)預(yù)測模式都可用且彼此相同時,將可用幀內(nèi)預(yù)測模式包括在mpm組中,將兩個額外的幀內(nèi)預(yù)測模式增加到mpm組。如下通過可用的幀內(nèi)預(yù)測模式確定增加的兩個幀內(nèi)預(yù)測模式。
如果可用的幀內(nèi)預(yù)測模式是方向性模式,將兩個相鄰方向性模式增加到mpm組。例如,如果可用的幀內(nèi)預(yù)測模式是模式23,將左相鄰模式(模式1)和右相鄰模式(模式13)增加到mpm組。如果可用的幀內(nèi)預(yù)測模式是模式30,將兩個相鄰模式(模式2和模式16)增加到mpm組。如果可用的幀內(nèi)預(yù)測模式是非方向性模式,將其他非方向性模式和垂直模式增加到mpm組。例如,如果可用的幀內(nèi)預(yù)測模式是dc模式,將平面模式和垂直模式增加到mpm組。
在左幀內(nèi)預(yù)測模式和上幀內(nèi)預(yù)測模式都不可用時,將三個額外的幀內(nèi)預(yù)測模式增加到mpm組。這三個幀內(nèi)預(yù)測模式是dc模式、平面模式和垂直模式。按照dc模式、平面模式和垂直模式的次序或平面模式、dc模式和垂直模式的次序?qū)⑺饕?、1和2分配給三個幀內(nèi)預(yù)測模式。
預(yù)測模式恢復(fù)單元322如下利用模式組指示符和預(yù)測模式索引導(dǎo)出當前預(yù)測單元的幀內(nèi)預(yù)測模式。
預(yù)測模式恢復(fù)單元322判斷模式組指示符是否指示mpm組。
如果模式組指示符指示mpm組,預(yù)測模式恢復(fù)單元322將預(yù)測模式索引指定的mpm組的幀內(nèi)預(yù)測確定為當前預(yù)測單元的幀內(nèi)預(yù)測模式。
如果模式組不指示符指示mpm組,預(yù)測模式恢復(fù)單元322將預(yù)測模式索引指定的殘余模式組的幀內(nèi)預(yù)測確定為當前預(yù)測單元的幀內(nèi)預(yù)測模式。如以下順序步驟那樣利用預(yù)測模式索引和mpm組的幀內(nèi)預(yù)測模式導(dǎo)出當前單元的幀內(nèi)預(yù)測模式。
1)按照模式編號次序重新排列mpm組的三個幀內(nèi)預(yù)測模式的順序。將模式編號最低的幀內(nèi)預(yù)測模式設(shè)置為第一候選。將模式編號中間的幀內(nèi)預(yù)測模式設(shè)置為第二候選。將模式編號最高的幀內(nèi)預(yù)測模式設(shè)置為第三候選。
2)將預(yù)測模式索引與第一候選比較。如果預(yù)測模式索引等于或大于mpm組的第一候選,將預(yù)測模式索引的值增加一。否則,維持預(yù)測模式索引的值。
3)將預(yù)測模式索引與第二候選比較。如果預(yù)測模式索引等于或大于mpm組的第二候選,將預(yù)測模式索引的值增加一。否則,維持預(yù)測模式索引的值。
4)將預(yù)測模式索引與第三候選比較。如果預(yù)測模式索引等于或大于mpm組的第三候選,將預(yù)測模式索引的值增加一。否則,維持預(yù)測模式索引的值。
5)將最后預(yù)測模式索引的值設(shè)置為當前預(yù)測單元的幀內(nèi)預(yù)測模式的模式編號。
預(yù)測大小確定單元330基于指定變換單元大小的變換大小信息確定預(yù)測塊的大小。變換大小信息可以是一個或多個指定變換單元大小的split_transform_flag。
如果變換單元的大小等于當前預(yù)測單元的大小,則預(yù)測塊的大小等于當前預(yù)測單元的大小。
如果變換單元的大小小于當前預(yù)測單元的大小,則預(yù)測塊的大小等于變換單元的大小。在這種情況下,對當前預(yù)測單元的每個子塊執(zhí)行產(chǎn)生重構(gòu)塊的過程。亦即,產(chǎn)生當前子塊的預(yù)測塊和殘余塊,通過將預(yù)測塊和殘余塊相加產(chǎn)生每個子塊的重構(gòu)塊。然后,產(chǎn)生解碼次序中下一子塊的預(yù)測塊、殘余塊和重構(gòu)塊。使用恢復(fù)的幀內(nèi)預(yù)測模式產(chǎn)生所有子塊的所有預(yù)測塊。將當前子塊的重構(gòu)塊的一些像素用作下一子塊的參考像素。因此,能夠產(chǎn)生更類似于初始子塊的預(yù)測塊。
參考像素可用性檢查單元340判斷是否當前塊的所有參考像素都可用。當前塊是當前預(yù)測單元或當前子塊。當前塊的大小是變換單元的大小。
如果當前塊的一個或多個參考像素不可用,參考像素產(chǎn)生單元350產(chǎn)生參考像素。
如果所有參考像素都不可用,用值2l-1替代所有參考像素的值。l的值是用于表示亮度像素值的比特數(shù)量。
如果可用參考像素僅位于不可用參考像素的一側(cè),則用最接近不可用像素的參考像素值替代不可用參考像素。
如果可用參考像素位于不可用參考像素的兩側(cè),則用在每側(cè)最接近不可用像素的參考像素的平均值或在預(yù)定方向上最接近不可用像素的參考像素值替代每個不可用參考像素。
參考像素過濾單元360基于幀內(nèi)預(yù)測模式和當前塊的大小自適應(yīng)地對參考像素進行過濾。
在dc模式中,不對參考像素進行過濾。在垂直模式和水平模式中,不對參考像素進行過濾。在除了垂直和水平模式的方向性模式中,根據(jù)當前塊的大小調(diào)整參考像素。
如果當前塊的大小是4×4,在所有幀內(nèi)預(yù)測模式中都不對參考像素過濾。對于8×8、16×16和32×32的大小,隨著當前塊的大小變大,對參考像素進行過濾的幀內(nèi)預(yù)測模式數(shù)量增大。例如,在垂直模式和垂直模式的預(yù)定數(shù)量的相鄰幀內(nèi)預(yù)測模式中不對參考像素進行過濾。在水平模式和水平模式的預(yù)定數(shù)量的相鄰幀內(nèi)預(yù)測模式中也不對參考像素進行過濾。所述預(yù)定數(shù)量介于0到7之間,隨著當前塊大小變大而減小。
預(yù)測塊產(chǎn)生單元370根據(jù)恢復(fù)的幀內(nèi)預(yù)測模式利用參考像素產(chǎn)生當前塊的預(yù)測塊。
在dc模式中,通過對位于(x=0,…n-1,y=-1)的n個參考像素和位于(x=-1,y=0,..m-1)的m個參考像素求平均值來產(chǎn)生不與參考像素相鄰的預(yù)測塊的預(yù)測像素。利用所述平均值和一個或兩個相鄰參考像素產(chǎn)生與參考像素相鄰的預(yù)測像素。
在垂直模式中,通過拷貝垂直參考像素的值來產(chǎn)生與左參考像素不相鄰的預(yù)測像素。由垂直參考像素以及角像素和左相鄰像素間的方差產(chǎn)生與左參考像素相鄰的預(yù)測像素。
在水平模式中,使用相同方法產(chǎn)生預(yù)測像素。
盡管已經(jīng)參考其某些示范性實施例示出并描述了本發(fā)明,但本領(lǐng)域的技術(shù)人員將理解,可以在其中做出各種形式和細節(jié)的改變而不脫離如所附權(quán)利要求界定的本發(fā)明精神和范圍。