一種預(yù)測編碼的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及多媒體技術(shù)領(lǐng)域,特別涉及一種預(yù)測編碼的方法及裝置。
【背景技術(shù)】
[0002]視頻編碼就是指通過特定的壓縮技術(shù),將某個視頻格式的文件轉(zhuǎn)換成另一種視頻格式文件的方式。目前,較為普遍使用的視頻編碼標(biāo)準(zhǔn)為H.265編碼標(biāo)準(zhǔn),H.265能在有限帶寬下傳輸更高質(zhì)量的網(wǎng)絡(luò)視頻,主要面向高清數(shù)字電視以及視頻編解碼系統(tǒng)的應(yīng)用。
[0003]在當(dāng)前最新的H.265編碼標(biāo)準(zhǔn)中,對每一幀中的圖像進(jìn)行劃分,針對劃分后的分塊進(jìn)行編碼。在計算圖像劃分的過程中需要對所有可能出現(xiàn)的劃分結(jié)果按照遞歸的方式進(jìn)行計算。例如,每一幀的圖像先按照64*64的規(guī)格進(jìn)行劃分,還可以按照32*32的規(guī)格對64*64分塊進(jìn)行劃分,還可以按照16*16的規(guī)格對64*64分塊中的每個32*32分塊進(jìn)行劃分,還可以按照8*8的規(guī)格對64*64分塊中的每個16*16分塊進(jìn)行劃分,那么就需要有1+4+16+64 = 96種劃分方式。因此,需要針對這96種劃分方式進(jìn)行完整的遞歸遍歷,以確定最終的劃分方式。
[0004]如圖1所示,該圖中為一幀待編碼的圖像,在目前H.265編碼標(biāo)準(zhǔn)中,首先該圖像需要進(jìn)行完整的遞歸遍歷,確定該幀圖像的劃分方式。其中,被較寬的淺色條紋相隔開的每個分塊為一個64*64分塊,每個64*64分塊還需要進(jìn)行32*32的規(guī)格的劃分,每個32*32分塊還需要進(jìn)行16*16的規(guī)格的劃分,每個16*16分塊還需要進(jìn)行8*8的規(guī)格劃分。如圖1中左上角的64*64分塊,其中該分塊中左上角的32*32分塊顏色較為均勻,因此該32*32分塊無需再進(jìn)行劃分,而其他各個32*32分塊都由于顏色分布不均勻而需要進(jìn)行16*16的規(guī)格的劃分,甚至8*8的規(guī)格劃分。而整個過程中,該左上角的32*32分塊也需要進(jìn)行16*16的規(guī)格的劃分以及8*8的規(guī)格劃分,才能最終確定該32*32分塊無需進(jìn)行進(jìn)一步的劃分后編碼,即完成完整的遞歸遍歷過程,對所有可能出現(xiàn)的結(jié)果進(jìn)行計算,得到最終該幀圖像的劃分方式。
[0005]發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0006]H.265編碼標(biāo)準(zhǔn)所使用的這種完整遞歸遍歷算法,雖然在確定每幀圖像的劃分方式上很準(zhǔn)確,但是確定劃分方式的過程需要極大的計算量,對于實(shí)時性要求苛刻的場景并不適合,對于實(shí)時性要求苛刻的場合會導(dǎo)致編碼延遲過大,甚至不能實(shí)時編碼。
【發(fā)明內(nèi)容】
[0007]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種預(yù)測編碼的方法及裝置。所述技術(shù)方案如下:
[0008]—方面,提供了一種預(yù)測編碼的方法,所述方法包括:
[0009]計算當(dāng)前幀圖像的每個64*64分塊的預(yù)判信息,所述預(yù)判信息中包括所述每個64*64分塊中64*64分塊對應(yīng)的第一預(yù)判參數(shù),所述每個64*64分塊中每個32*32分塊對應(yīng)的第二預(yù)判參數(shù)以及所述每個64*64分塊中每個16*16分塊對應(yīng)的第三預(yù)判參數(shù);
[0010]按照指定順序依次獲取所述當(dāng)前幀圖像中的每個64*64分塊;
[0011]當(dāng)64*64分塊位于所述當(dāng)前幀圖像的對角線上時,根據(jù)四叉樹遞歸分塊算法確定所述64*64分塊的分塊結(jié)果,并根據(jù)所述分塊結(jié)果對所述64*64分塊進(jìn)行編碼;根據(jù)所述分塊結(jié)果以及所述64*64分塊的預(yù)判信息更新判斷閾值;
[0012]當(dāng)64*64分塊位于所述當(dāng)前幀圖像的對角線以外時,根據(jù)所述更新后的判斷閾值以及所述64*64分塊的預(yù)判信息,確定所述64*64分塊的分塊結(jié)果,并根據(jù)所述分塊結(jié)果對所述64*64分塊進(jìn)行編碼。
[0013]可選的,所述計算當(dāng)前幀圖像的每個64*64分塊的預(yù)判信息,包括:
[0014]如果檢測到當(dāng)前幀圖像為I幀,則對所述當(dāng)前幀圖像下采樣至指定分辨率,并將下采樣后的所述當(dāng)前幀圖像按照8*8進(jìn)行圖像分塊;
[0015]計算每個8*8分塊在各預(yù)測方向上的復(fù)雜度向量,并將所述每個8*8分塊在各預(yù)測方向上的復(fù)雜度向量作為所述當(dāng)前幀圖像未下采樣時每個16*16分塊在各預(yù)測方向上的復(fù)雜度向量的估算結(jié)果;
[0016]將各相鄰的4個16*16分塊在各預(yù)測方向上的復(fù)雜度向量進(jìn)行向量合并,得到每個32*32分塊在各預(yù)測方向上的復(fù)雜度向量;
[0017]將各相鄰的4個32*32分塊在各預(yù)測方向上的復(fù)雜度向量進(jìn)行向量合并,得到每個64*64分塊在各預(yù)測方向上的復(fù)雜度向量;
[0018]根據(jù)所述每個16*16分塊不進(jìn)行分塊時的復(fù)雜度向量以及所述每個16*16分塊屬于的64*64分塊,確定所述每個64*64分塊中每個16*16分塊對應(yīng)的第三預(yù)判參數(shù);
[0019]根據(jù)所述每個32*32分塊在各預(yù)測方向上的復(fù)雜度向量,計算所述每個32*32分塊由32*32向16*16進(jìn)行分塊的分塊代價;根據(jù)所述每個32*32分塊由32*32向16*16進(jìn)行分塊的分塊代價以及所述每個32*32分塊屬于的64*64分塊,確定所述每個64*64分塊中每個32*32分塊對應(yīng)的第二預(yù)判參數(shù);
[0020]根據(jù)所述每個64*64分塊在各預(yù)測方向上的復(fù)雜度向量,計算所述每個64*64分塊向32*32進(jìn)行分塊的分塊代價;根據(jù)所述每個64*64分塊由64*64向32*32進(jìn)行分塊的分塊代價,確定所述每個64*64分塊中64*64分塊對應(yīng)的第一預(yù)判參數(shù)。
[0021]可選的,所述根據(jù)所述分塊結(jié)果以及所述64*64分塊的預(yù)判信息更新判斷閾值,包括:
[0022]根據(jù)所述分塊結(jié)果中由64*64向32*32進(jìn)行分塊的分塊結(jié)果,以及所述64*64分塊中64*64分塊對應(yīng)的第一預(yù)判參數(shù),計算所述64*64分塊由64*64向32*32進(jìn)行分塊的第一更新參數(shù);
[0023]根據(jù)所述分塊結(jié)果中由32*32向16*16進(jìn)行分塊的分塊結(jié)果,以及所述64*64分塊中每個32*32分塊對應(yīng)的第二預(yù)判參數(shù),計算所述64*64分塊中的每個32*32分塊由32*32向16*16進(jìn)行分塊的第二更新參數(shù);
[0024]根據(jù)所述分塊結(jié)果中由16*16向8*8進(jìn)行分塊的分塊結(jié)果,以及所述64*64分塊中每個16*16分塊對應(yīng)的第三預(yù)判參數(shù),計算所述32*32分塊中的每個16*16分塊由16*16向8*8進(jìn)行分塊的第三更新參數(shù);
[0025]獲取I幀對應(yīng)的判斷閾值;
[0026]根據(jù)所述判斷閾值中的由64*64向32*32進(jìn)行分塊的第一閾值和所述第一更新參數(shù),更新所述第一閾值;
[0027]根據(jù)所述判斷閾值中的由32*32向16*16進(jìn)行分塊的第二閾值和所述第二更新參數(shù),更新所述第二閾值;
[0028]根據(jù)所述判斷閾值中的由16*16向8*8進(jìn)行分塊的第三閾值和所述第三更新參數(shù),更新所述第三閾值。
[0029]可選的,所述根據(jù)所述更新后的預(yù)設(shè)的幀內(nèi)判斷閾值以及所述64*64分塊的預(yù)判信息,確定所述64*64分塊的分塊結(jié)果,包括:
[0030]將所述更新后的判斷閾值中的第一閾值與所述第一預(yù)判參數(shù)進(jìn)行比較;如果所述第一預(yù)判參數(shù)大于所述第一閾值,則確定所述64*64分塊需要由64*64向32*32進(jìn)行分塊;
[0031]將所述更新后的判斷閾值中的第二閾值與所述64*64分塊的預(yù)判信息中每個所述第二預(yù)判參數(shù)進(jìn)行比較;如果第二預(yù)判參數(shù)大于所述第二閾值,則確定所述第二預(yù)判參數(shù)對應(yīng)的所述64*64分塊中的32*32分塊需要由32*32向16*16進(jìn)行分塊;
[0032]將所述更新后的判斷閾值中的第三閾值與所述64*64分塊的預(yù)判信息中每個所述第三預(yù)判參數(shù)進(jìn)行比較;如果所述第三預(yù)判參數(shù)大于所述第三閾值,則確定所述第三預(yù)判參數(shù)對應(yīng)的所述64*64分塊中的16*16分塊需要由16*16向8*8進(jìn)行分塊;
[0033]可選的,所述計算當(dāng)前幀圖像的每個64*64分塊的預(yù)判信息,包括:
[0034]如果檢測到當(dāng)前幀圖像為P幀,則對所述當(dāng)前幀圖像下采樣至指定分辨率,并將下采樣后的所述當(dāng)前幀圖像按照8*8進(jìn)行圖像分塊;
[0035]計算每個8*8分塊的運(yùn)動復(fù)雜度,并將所述每個8*8分塊的運(yùn)動復(fù)雜度作為所述當(dāng)前幀圖像未下采樣時每個16*16分塊的運(yùn)動復(fù)雜度的估算結(jié)果,根據(jù)所述每個16*16分塊的運(yùn)動復(fù)雜度,確定所述每個64*64分塊中每個16*16分塊對應(yīng)的第三預(yù)判參數(shù);
[0036]將各相鄰的4個16*16分塊的運(yùn)動復(fù)雜度進(jìn)行向量合并,得到每個32*32分塊的運(yùn)動復(fù)雜度,并根據(jù)所述每個32*32分塊的運(yùn)動復(fù)雜度,確定所述每個64*64分塊中每個32*32分塊對應(yīng)的第二預(yù)判參數(shù);
[0037]將各相鄰的4個32*32分塊的運(yùn)動復(fù)雜度進(jìn)行向量合并,得到每個64*64分塊的運(yùn)動復(fù)雜度,并根據(jù)所述每個64*64分塊的運(yùn)動復(fù)雜度,確定所述每個64*64分塊中64*64分塊對應(yīng)的第一預(yù)判參數(shù)。
[0038]可選的,所述根據(jù)所述分塊結(jié)果以及所述64*64分塊的預(yù)判信息更新判斷閾值,包括:
[0039]根據(jù)所述分塊結(jié)果中由64*64向32*32進(jìn)行分塊的分塊結(jié)果,以及所述64*64分塊中64*64分塊對應(yīng)的第一預(yù)判參數(shù),計算所述64*64分塊由64*64向32*32進(jìn)行分塊的第一更新參數(shù);
[0040]根據(jù)所述分塊結(jié)果中由32*32向16*16進(jìn)行分塊的分塊結(jié)果,以及所述64*64分塊中每個32*32分塊對應(yīng)的第二預(yù)判參數(shù),計算所述64*64分塊中的每個32*32分塊由32*32向16*16進(jìn)行分塊的第二更新參數(shù);
[0041]根據(jù)所述分塊結(jié)果中由16*16向8*8進(jìn)行分塊的分塊結(jié)果,以及所述64*64分塊中每個16*16分塊對應(yīng)的第三預(yù)判參數(shù),計算所述32*32分塊中的每個16*16分塊由16*16向8*8進(jìn)行分塊的第三更新參數(shù);
[0042]獲取P幀對應(yīng)的判斷閾值;
[0043]根據(jù)所述判斷閾值中的由64*64向32*32進(jìn)行分塊的第一閾值和所述第一更新參數(shù),更新所述第一閾值;
[0044]根據(jù)所述判斷閾值中的由32*32向16*16進(jìn)行分塊的第二閾值和所述第二更新參數(shù),更新所述第二閾值。
[0045]可選的,所述根據(jù)所述更新后的預(yù)設(shè)的幀內(nèi)判斷閾值以及所述64*64分塊的預(yù)判信息,確定所述64*64分塊的分塊結(jié)果,包括:
[0046]將所述更新后的判斷閾值中的第一閾值與所述第一預(yù)判參數(shù)進(jìn)行比較;如果第一預(yù)判參數(shù)大于所述第一閾值,則確定所述64*64分塊需要由64*64向32*32進(jìn)行分塊;
[0047]將所述更新后的判斷閾值中的第二閾值與所述64*64分塊的預(yù)判信息中每個所述第二預(yù)判參數(shù)進(jìn)行比較;如果所述第二預(yù)判參數(shù)大于所述第二閾值,則確定所述第二預(yù)判參數(shù)對應(yīng)的所述64*64分塊中的32*32分塊需要由32*32向16*16進(jìn)行分塊;
[0048]根據(jù)快速運(yùn)動估計算法對所述64*64分塊中的16*16分塊進(jìn)行計算,得到所述64*64分塊中的16*16分塊的分塊結(jié)果。
[0049]另一方面,提供了一種預(yù)測編碼的裝置,所述裝置包括:
[0050]計算模塊,用于計算當(dāng)前幀圖像的每個64*64分塊的預(yù)判信息,所述預(yù)判信息中包括所述每個64*64分塊中64*64分塊對應(yīng)的第一預(yù)判參數(shù),所述每個64*64分塊中每個32*32分塊對應(yīng)的第二預(yù)判參數(shù)以及所述每個64*64分塊中每個16*16分塊對應(yīng)的第三預(yù)判參數(shù);
[0051]獲取模塊,用于按照指定順序依次獲取所述當(dāng)前幀圖像中的每個64*64分塊;
[0052]第一編碼模塊,用于當(dāng)64*64分塊位于所述當(dāng)前幀圖像的對角線上時,根據(jù)四叉樹遞歸分塊算法確定所述64*64分塊的分塊結(jié)果,并根據(jù)所述分塊結(jié)果對所述64*64分塊進(jìn)行編碼;根據(jù)所述分塊結(jié)果以及所述64*64分塊的預(yù)判信息更新判斷閾值;
[0053]第二編碼模塊,用于當(dāng)64*64分塊位于所述當(dāng)前幀圖像的對角線以外時,根據(jù)所述更新后的判斷閾值以及所述64*64分塊的預(yù)判信息,確定所述64*64分塊的分塊結(jié)果,并根據(jù)所述分塊結(jié)果對所述64*64分塊進(jìn)行編碼。
[0054]可選的,所