基於四叉樹編碼和解碼自適應量化參數的方法及裝置與流程
2023-06-03 07:38:16 3

本申請是申請日為「2013年12月23日」、申請號為「201280031037.x」、發明名稱為「基於四叉樹編碼和解碼自適應量化參數的方法及裝置」的申請的分案申請。
本發明涉及一種對視頻進行編碼/解碼的裝置及方法,並且更具體而言涉及一種基於關於最大編碼單元(lcu)中的編碼單元(cus)的四叉樹顯示具有量化/解量化的差分值的塊並且使用關於與待編碼/解碼的塊相鄰的塊的背景信息來自適應地預測/解碼量化/解量化參數值的視頻編碼/解碼的方法和裝置。
高效率視頻編碼(hevc)通過編碼單元(cu)對輸入圖像進行編碼/解碼。在幀中具有最大尺寸的編碼單元稱為最大編碼單元(lcu),基於用於編碼/解碼的四叉樹分割信息,將lcu分割成多個cu。在hevc中,將一個量化參數值分配給lcu,並且根據光柵掃描順序從以前的lcu預測待編碼的當前lcu的量化參數值。
背景技術:
在h.265/avc標準中,在宏塊單位上執行編碼/解碼,並且將量化/解量化值分配到每一個宏塊。從位於幀中左側的宏塊的量化參數值來預測分配給每一個宏塊的量化參數值。將預測量化參數值之後生成的差分值寫入宏塊以編碼,從而執行編碼。解碼器通過將在熵解碼中解碼的量化參數差分值和左側宏塊的量化參數值相加,對量化參數值進行解碼。
然而,當與輸入圖像的尺寸相比分配大的lcu時,使用由lcu存儲的量化參數值也許不能有效地控制比特率。進一步地,當由cu分配量化參數值時,由於來自於相鄰cu的量化參數值的差異,也許會發生圖像質量的主觀惡化。因此,需要一種依賴於輸入圖像將量化參數值分配到從cu到lcu的多種塊尺寸並且使用關於相鄰待編碼的塊的塊的背景信息來最佳地預測量化參數的方法。
技術實現要素:
技術問題
本發明一方面提供了一種基於關於cu的分割信息對基於四叉樹的量化/解量化參數值進行編碼/解碼的方法以及裝置。該量化/解量化參數編碼/解碼方法能夠通過使用關於相鄰塊的背景信息以有效方式對量化/解量化參數值進行預測。
本發明的技術問題並不限於上述所涉及的那些,並且基於下面描述所屬領域技術人員可以理解此處未聲明的附加問題。
技術方案
本發明的實施例提供了一種視頻編碼裝置,包括:量化差分值存儲塊單位確定模塊,其確定當將圖像的最大編碼單元分割成四叉樹中的多個cu或者將其編碼為單個cu時用於存儲量化參數(qp)差分值的塊單位;量化模塊,其使用分配給每一個塊單位的量化值來執行量化;量化預測塊確定模塊,其使用關於相鄰塊的背景信息自適應地確定預測塊以便預測由待編碼的塊使用的量化值;qp差分值生成模塊,其使用基於背景信息確定的預測塊的qp生成待編碼的塊的量化差分值;qp存儲模塊,其存儲關於量化差分值存儲塊單位的分割信息以及對應的塊的量化差分值。
本發明的另一實施例提供了一種視頻解碼裝置,其包括:解量化參數差分值塊分割標記得出模塊,其對關於lcu中具有解量化參數差分值的塊的信息進行解碼;解量化差分值存儲塊單位確定模塊,其使用解碼的解量化參數差分值塊分割標記來確定最大編碼單元中具有解量化參數差分值的塊;解量化參數差分值得出模塊,其根據解量化參數差分值塊分割標記對解量化參數差分值進行解碼,解量化參數值預測塊確定模塊,其基於關於相鄰塊的背景信息確定用於預測的塊以便對待解碼的塊的解量化參數值進行解碼;解量化參數值得出模塊,其對用於解量化的解量化參數值進行解碼;以及解量化模塊,其使用解碼的解量化參數值來執行解量化。
有益效果
根據本發明實施例的基於四叉樹的自適應量化/解量化參數編碼和解碼的方法以及裝置使得當在四叉樹中分割塊時能夠分配不同水平的量化參數差分值行。與對lcu中單一量化參數值進行分配相比,量化參數差分值的這種不同水平的分配允許對比特率的精確調整。進一步地,在預測/解碼每個塊單位的量化/解量化參數值時,可以不僅使用基於四叉樹的鋸齒掃描而且使用關於相鄰塊的背景信息來自適應地確定預測方向,因而解決了由於來自於相鄰編碼單元的量化參數值的差異而可能發生的圖像質量的主觀惡化。
附圖說明
圖1a示出了根據本發明第一示例性實施例的在視頻編碼裝置中用於向具有四叉樹結構的塊自適應地分配量化參數值(qp)以及對qp進行編碼的方法和裝置。
圖1b示出了根據本發明第一示例性實施例的視頻解碼裝置中基於四叉樹的自適應解量化參數解碼的方法和裝置。
圖2示出了根據本發明第一示例性實施例的視頻解碼裝置的配置。
圖3示出了根據本發明第一示例性實施例的用於控制記錄在序列參數集中的基於四叉樹的量化差分值的背景。
圖4示出了根據本發明第一示例性實施例的切片數據中的初始值的變量集。
圖5示出了根據本發明第一示例性實施例的由cu存儲的量化/解量化參數差分值的背景以及差分值所存在的條件。
圖6示出了根據本發明第一示例性實施例的量化差分值存儲塊單位確定模塊中和解量化差分值存儲塊單位確定模塊中的操作。
圖7示出了根據本發明第一示例性實施例的qp值預測塊確定模塊和解量化參數值預測塊確定模塊中的操作。
圖8示出了根據本發明第二示例性實施例的qp值預測塊確定模塊和解量化參數值預測塊確定模塊中的操作。
圖9示出了根據本發明第三示例性實施例的qp值預測塊確定模塊和解量化參數值預測塊確定模塊中的操作。
圖10示出了根據本發明第四示例性實施例的qp值預測塊確定模塊和解量化參數值預測塊確定模塊中的操作。
圖11示出了根據本發明第五示例性實施例的qp值預測塊確定模塊和解量化參數值預測塊確定模塊中的操作。
發明模式
在下文中,將參考附圖描述根據本發明的示例性實施例的基於四叉樹的自適應量化/解量化參數的編碼和解碼裝置。
圖1a示出了根據本發明第一示例性實施例的在視頻編碼裝置中用於向具有四叉樹結構的塊自適應地分配量化參數(qp)值以及對該qp值進行編碼的方法和裝置。
參考圖1a,基於四叉樹的自適應量化/解量化參數編碼的方法和裝置包括量化差分值存儲塊單位確定模塊100,量化模塊101,qp值預測塊確定模塊102,qp差分值生成模塊103,以及qp存儲模塊104。
量化差分值存儲塊單位確定模塊100可以基於關於將圖像的最大編碼單元(lcu)分割成多個cu的信息,確定用於記錄每一個編碼單元(cu)或者一組多個cu的量化差分值的塊單位。關於用於存儲量化差分值的塊的信息可以具有四叉樹結構。
量化模塊101使用分配給塊的qp值在輸入塊上執行量化。
qp值預測塊確定模塊102使用關於該cu的相鄰該cu的背景信息來確定用於分配給每一個cu或任意cu的量化值的預測的預測塊。
qp差分值生成模塊103通過從由qp值預測塊確定模塊102確定的量化值預測塊的qp值減去當前塊的量化值,生成qp差分值。
qp存儲模塊104用於對下述進行熵編碼:序列參數集、關於切片單位適用/非適用的標記信息、用於指示關於包括量化差分值的塊的分割信息的標記信息以及用於基於四叉樹的自適應qp編碼的qp差分值。
圖1b示出了根據本發明第一示例性實施例的視頻解碼裝置中基於四叉樹的自適應解量化參數解碼的方法和裝置。
參考圖1b,基於四叉樹的自適應解量化參數解碼的方法和裝置包括解量化參數差分值塊分割標記得出模塊120、解量化差分值存儲塊單位確定模塊121、解量化參數差分值得出模塊122、解量化參數值預測塊確定模塊123、解量化參數值得出模塊124以及解量化參數模塊125。
解量化參數差分值塊分割標記得出模塊120通過切片數據中的lcu對具有解量化參數差分值的塊的序列參數集和塊分割標記進行解碼。
解量化差分值存儲塊單位確定模塊121使用解碼的解量化參數差分值塊分割標記和cu分割標記來確定用於記錄解量化參數差分值的塊。關於用於存儲量化差分值的塊的信息可以具有四叉樹結構。
解量化參數差分值得出模塊122得出由解量化差分值存儲塊單位確定模塊121確定的每一個塊的解量化參數差分值。
解量化參數值預測塊確定模塊123使用關於解量化中的相鄰塊的背景信息得出及確定用於自適應參考的塊。
解量化參數值得出模塊124通過將由解量化參數值預測塊確定模塊123得出的預測塊的解量化參數值與由解量化參數差分值得出模塊122得出的解量化參數差分值相加,得出用於解量化參數模塊125的解量化參數值。
解量化參數模塊125使用由解量化參數值得出模塊124得出的參數,在輸入塊上執行解量化。
圖2示出了根據本發明第一示例性實施例的視頻解碼裝置的構造。
參考圖2,該視頻解碼裝置包括熵解碼模塊200、基於四叉樹解的量化參數得出模塊210、重置模塊220、解量化模塊230、反離散餘弦變換編碼模塊240、外部/內部預測模塊250以及過濾模塊260。
熵解碼模塊200包括:解量化參數差分值塊分割標記得出模塊120,用於得出用於基於四叉樹的自適應解量化的塊分割標記;解量化差分值存儲塊單位確定模塊121,用於確定用於存儲來自所得出的塊分割標記的qp的塊,以及解量化參數差分值得出模塊122,用於對存儲在對應的塊中的解量化參數差分值進行解碼。
基於四叉樹的解量化參數得出模塊210包括:解量化參數值預測塊確定模塊123,用於確定用於解碼解量化參數時的參考的預測塊;以及解量化參數值得出模塊124,用於通過將預測塊的解量化參數和得出的解量化參數差分值相加來得出解量化參數。
圖3示出了根據本發明第一示例性實施例的用於控制存儲在序列參數集中的基於四叉樹的量化差分值的背景。
當cu_qp_delta_enabled_flag300在序列參數集中具有值1時,可以控制在序列中的所有切片中從最小尺寸的cu到最大尺寸的cu的多種四叉樹塊的量化/解qp差分值。
圖4a示出了根據本發明第一示例性實施例的切片數據中初始值的變量集。
當在四叉樹中分割切片並且對其進行編碼/解碼時,首先將切片分割成這樣一種lcu,其中,該lcu是具有最大尺寸的四叉樹,隨後按照順次的掃描次序中對該lcu進行編碼/解碼。在每一個lcu的編碼/解碼中,可以在四叉樹中進一步地將lcu分割成多個cu,並且可以執行如此分割直到將cu分割成為最小尺寸的cu為止。
在圖4a中,iscuqpdeltacoded400是當將任意cu分割成n個cu時用於控制可存儲在每個cu中的量化/解量化參數差分值的變量。在對切片中的每個lcu進行編碼/解碼之前,總是將該變量初始化為0。
在圖4a中,coding_tree401是用於在切片中一個lcu上執行編碼/解碼的函數。這個函數中的第四因子是用於指示對應的cu中是否存在量化/解量化參數差分值的標記,並且由於至少一個量化/解qp差分值存儲在lcu中,因此在對切片中的每個lcu進行編碼/解碼之前總是輸入值1。
圖4b示出了示出了根據本發明第一示例性實施例的存儲在編碼樹塊中的解量化參數差分值塊分割的背景。
編碼樹塊表示cu的背景。根據split_coding_unit_flag420,可以將尺寸為2n×2n的cu分割成四個尺寸為n×n的cu並且對其進行編碼/解碼。可替換地,尺寸為2n×2n的cu可以不再被分割成更小尺寸的cu而是就這樣被編碼/解碼。
當前cu接收用於指示在更高的cu中是否存在量化/解量化參數差分值的標記即cu_qp_delta_exist_flag421的輸入。當根據split_coding_unit_flag420的值將尺寸為2n×2n的當前cu進一步分割成尺寸為n×n的cu時,附加地對split_qp_delta_flag422進行編碼/解碼。僅當存儲在序列參數集中的cu_qp_delta_enable_flag300和從更高cu輸入的cu_qp_delta_exist_flag421都具有1值時,才對關於該附加分割的信息進行編碼/解碼。僅當將尺寸為2n×2n的當前cu分割成尺寸為n×n的cu時才對split_qp_delta_flag422的值進行編碼/解碼,並且當對尺寸為n×n的較低cu進行編碼/解碼時將split_qp_delta_flag422的值作為cu_qp_delta_exist_flag421的值來輸入。
當split_qp_delta_flag422的值為0時,將尺寸為2n×2n的當前cu分割為尺寸為n×n的cu,但不再將用於存儲量化/解量化參數差分值的塊從2n×2n的尺寸分割為n×n的尺寸。當split_qp_delta_flag422的值為0時,另外將iscuqpdeltacoded400初始化為0,因此在將當前cu分割成尺寸為n×n的cu時,僅將量化/解qp差分值存儲在第一n×n的cu中。
圖5圖示出了據本發明第一示例性實施例的由cu存儲的量化/解量化參數差分值的背景以及差分值所存在的條件。
當cu不在跳躍(skip)模式中時,可以在cu中記錄量化/解量化參數差分值。當cu_qp_delta_exist_flag500和421的值為1時,量化/解量化參數差分值存在於當前cu中,在該情況中,可以由cu根據存儲在序列參數集中的cu_qp_delta_enabled_flag300的值來存儲cu_qp_delta501的值。例如,當cu_qp_delta_exist_flag500和421的值為1並且cu_qp_delta_enabled_flag300的值為0時,不存儲cu_qp_delta501。
可選地,當將2n×2n的cu分割成四叉樹中的四個n×n的cu時,僅可以存儲一個量化/解量化參數差分值。在這個情況中,將量化/解量化參數差分值存儲在四個cu中的第一cu中,同時其他三個cu不記錄該量化/解量化參數差分值。此處,由於在2n×2n的cu中被編碼/解碼的split_qp_delta_flag422的值為0,因此輸入到n×n的cu的cu_qp_delta_exist_flag500的值為0。因此,雖然基本上沒有cu_qp_delta501存在於分割的四個n×n的cu中,但可以使用變量niscuqpdeltacoded將cu_qp_delta501存儲在第一n×n的cu中。由於在對cu_qp_delta501進行解碼之後第一cu將niscuqpdeltacoded的值變為1,因此不將cu_qp_delta501的值存儲在其他三個cu中。
即使在該情況中,僅當存儲在序列參數集中的cu_qp_delta_enable_flag300的值為1時,才可以存儲cu_qp_delta501的值,同時檢查cu_qp_delta_enable_flag300的值。
圖6a示出了根據本發明第一示例性實施例的量化差分值存儲塊單位確定模塊和解量化差分值存儲塊單位確定模塊的操作。
可以將待編碼/解碼的2n×2n的cu分割成四個n×n的cu,可以進一步地將每一個n×n的cu進行分割以待被處理。即使將2n×2ncu分割成多個待被編碼/解碼的cu,當split_qp_delta_flag422具有如圖6a所示的0值時,也將量化/解量化參數差分值存儲在lcu的第一cu中。在第一cu中重構的量化/解量化參數差分值可以用於lcu的其他cu。
圖6b示出了根據本發明第二示例性實施例的量化差分值存儲塊單位確定模塊和解量化差分值存儲塊單位確定模塊的操作。
在第一階段將待編碼/解碼的2n×2n的cu分割成四個n×n的cu,將其中的第二cu進一步分割。在這個例子中,當在第一階段中對用於表示分割成cu的標記進行編碼/解碼時,附加地編碼/解碼關於量化/解量化參數值的分割標記即split_qp_delta_flag422和631。當split_qp_delta_flag422和631的值為1時,所有四個分割的cu具有量化/解量化參數差分值,並且因此附加地對關於量化/解量化參數值的分割標記split_qp_delta_flag422和631進行編碼/解碼。
即使在該情況中,雖然將第二n×n的cu分割成cu直到第三階段為止,但是量化/解量化的塊分割標記split_qp_delta_flag422和631為0,並且因此針對多個cu分配單個量化/解量化參數值。
圖6c示出了根據本發明第三示例性實施例的量化差分值存儲塊單位確定模塊和解量化差分值存儲塊單位確定模塊的操作。
圖6c顯示了在第一階段將待編碼/解碼的2n×2n的cu分割成四個n×n的cu,將其中的第二cu進一步分割。即使將第二cu分割成四個cu,並進一步將其中的每一個分割成四個cu時,也可以使用split_qp_delta_flag422和631的值來確定用於記錄量化/解量化差分參數值的塊的尺寸。在圖6c中,將cu分割成具有高達三個信息深度的區域,然而量化/解量化差分參數值具有相對高達兩個深度信息。
圖7a示出了根據本發明第一示例性實施例的qp值預測塊確定模塊102和解量化參數值預測塊確定模塊123。
編碼器向由量化差分值存儲塊單位確定模塊100確定的cu塊分配qp值並針對實際上剩餘的塊使用以前使用的qp值。此處,從用於以前的塊的qp值來預測qp值,並且僅編碼qp差分值。
在解量化參數差分值得出模塊122中,解碼器對解量化參數差分值進行解碼並且通過將該差分值與用於預測的塊的解量化參數值增加來得出解量化參數值。
當編碼器和解碼器預測當前塊的qp值時,qp值預測塊確定模塊102和解量化參數值預測塊確定模塊123用於確定作為參考的相鄰塊。
在圖7a中,當向待編碼/解碼的cu720分配量化/解量化參數值時,使用在位於當前cu720的左側邊界上的cu710、711和712或者la、lb和lc以及當前cu700的上部邊界上的cu700、701和702或者ta,tb和tc之間的每個邊界上具有最大塊尺寸的cu712和702或者lc和tc的qp值的平均值、最小值和最大值來預測參數值。
圖7b示出了根據本發明第一示例性實施例的可替換的實例的qp值預測塊確定模塊102和解量化參數值預測塊確定模塊123。
當將lcu分割成多個待被編碼/解碼的cu時,使用在與當前cu750相鄰的cu中位於當前cu750的左側邊界和上部邊界上具有最大塊尺寸的兩個cu的qp值的平均值、最小值或最大值來預測當前待編碼/解碼的cu750的qp值。
圖8a示出了根據本發明第二示例性實施例的qp值預測塊確定模塊102和解量化參數值預測塊確定模塊123。
在預測待編碼/解碼的當前cu840的qp值時,將與當前cu相鄰的cu中具有最大塊尺寸的cu用於參考。在該情況中,當存在多個具有最大塊尺寸的cu時,將cu的qp值的平均值、最小值或最大值用於預測當前cu840的qp值,其中,該cu包括頂部cu820或者在當前cu840的左側邊界上的cu中所選的la以及最左側的cu800或者在其上部邊界上的cu中優選地用於參考的ta。
圖8b示出了根據本發明第二示例性實施例的可替換的實例的qp值預測塊確定模塊102和解量化參數值預測塊確定模塊123。
當將lcu分割成多個待被編碼/解碼的cu時,使用與當前cu890相鄰的cu中參考的塊尺寸最大的cu,對待編碼/解碼的當前cu890的qp值進行預測。此處,在當前cu890的左側邊界上存在多個具有最大塊尺寸的cu時,將頂部cu870或者la用作為參考塊。同樣地,在當前cu890的上部邊界上存在多個具有最大塊尺寸的cu時,將最左側cu850或者ta用作為參考塊。當確定左側和頂部上的參考塊時,使用這兩個cu的qp值的平均值、最小值或最大值,預測待編碼/解碼的當前cu890的qp值。
圖9a示出了根據發明第三示例性實施例的qp值預測塊確定模塊102和解qp值預測塊確定模塊123。
當對待編碼/解碼的當前cu920的qp值進行預測時,選擇與當前cu相鄰的所有可能的參考cu900、901、902、910、911和912或者ta、tb、tc、la、lb、lc作為參考塊。編碼器使用所有可能的參考cu的qp值的平均值、最小值或最大值來預測當前cu920的qp值並且對該qp差分值進行編碼。
解碼器通過將所有可能的參考cu的解量化參數值的平均值、最小值或者最大值與解碼的qp差分值相加,以對待解碼的cu920的解量化參數值進行解碼。
圖9b示出了根據本發明第三示例性實施例的可替換的實例的qp值預測塊確定模塊102和解量化參數值預測塊確定模塊123。
當待編碼/解碼的cu950位於lcu中時,使用與當前cu的相鄰所有可能的參考cu930、931、940、941和942或者la、lb、lc、ta、tb和tc來預測cu950的qp值。
編碼器使用所有相鄰的可能的參考cu的qp值的平均值、最小值或最大值來預測當前cu950的qp值並且僅對它們之間的qp差分值進行編碼。
解碼器通過將所有相鄰的可能的參考cu的解量化參數值的平均值、最小值或最大值與解碼的qp差分值相加,以對待解碼的cu950的解量化參數值進行解碼。
圖10a示出了根據本發明第四示例性實施例的qp值預測塊確定模塊102和解量化參數值預測塊確定模塊123中的操作。
當對位於lcu之間的邊界上的cu1020進行編碼/解碼時,將在位於當前cu1020的左側邊界上的可能的cu1010、1011和1012或la、lb和lc中具有最大塊尺寸的cu1012或者lc用作為參考。在這裡,當在左側邊界上的可能的參考cu中存在有一個或多個具有最大塊尺寸的cu時,選擇頂部cu作為參考塊。
編碼器使用在左側邊界上被選擇作為參考塊的cu1012或者lc的qp值來預測待編碼的cu1020的qp值,並且對它們間的qp差分值進行編碼。
解碼器解碼待解碼的cu1020的解量化參數差分值,並且將cu1020或者lc的解qp值與該差分值相加,因而對cu1020的解量化參數值進行解碼。
圖10b示出了根據本發明第四示例性實施例的可替換的實例的qp值預測塊確定模塊102和解量化參數值預測塊確定模塊123中的操作。
當將lcu分割成多個待被編碼/解碼的cu時,將在位於待編碼/解碼的cu1050的左側邊界上的cu1030、1031和1032或者la、lb和lc中具有最大塊尺寸的cu1030或者la用作為參考。在這裡,當在左側邊界上的cu中存在有一個或多個具有最大塊尺寸的cu時,選擇頂部cu1030或la作為參考塊。
編碼器使用在左側邊界上被選擇作為參考塊的cu1030或la的qp值來預測待編碼的cu1050的qp值,並且對它們間的qp差分值進行編碼。
解碼器對待解碼的cu1050的解量化參數差分值進行解碼並且將cu1030或者la的解量化參數值與該差分值相加,因而對cu1050的解量化參數值進行了解碼。
圖11a示出了根據本發明第五示例性實施例的qp值預測塊確定模塊102和解量化參數值預測塊確定模塊123中的操作。
當對位於lcu之間的邊界上的cu1120進行編碼/解碼時,將位於當前cu1020的左側邊界上的所有可能參考cu1010、1011和1012或la、lb和lc用作為參考。
編碼器預使用位於左側邊界上的所有可能參考cu1110、1111和1112或la、lb和lc的qp值的平均值、最小值或最大值來預測待編碼的cu1050的qp值,並且對qp差分值進行編碼。
解碼器對待解碼的cu1120的解量化參數差分值進行解碼,並且通過將所有可能的參考cu1110、1111和1112或la、lb和lc的解量化參數值的平均值、最小值或最大值與差分值相加,對待解碼的cu1120的解量化參數值進行解碼。
圖11b示出了根據本發明第五示例性實施例的可替換實例的qp值預測塊確定模塊102和解qp值預測塊確定模塊123中的操作。
當將lcu分割成多個待被編碼/解碼的cu時,將位於待編碼/解碼的cu1150的左側邊界上的所有可能的cu用作為參考塊。
編碼器使用位於左側邊界上的所有可能的參考cu的qp值的平均值、最小值或最大值來預測待編碼的cu1150的qp值,並且對該qp差分值進行編碼。
解碼器對待解碼的cu1150的解量化參數差分值進行解碼,並且通過將位於左側邊界上的所有可能的參考單位的解量化參數值的平均值、最小值或最大值與差分值相加,以對待解碼的cu1150的解量化參數值進行解碼。