TW202139714A - 變換方法、編碼器、解碼器以及儲存媒介 - Google Patents
變換方法、編碼器、解碼器以及儲存媒介 Download PDFInfo
- Publication number
- TW202139714A TW202139714A TW110109410A TW110109410A TW202139714A TW 202139714 A TW202139714 A TW 202139714A TW 110109410 A TW110109410 A TW 110109410A TW 110109410 A TW110109410 A TW 110109410A TW 202139714 A TW202139714 A TW 202139714A
- Authority
- TW
- Taiwan
- Prior art keywords
- sub
- partition
- transformation
- core
- lfnst
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一種變換方法、編碼器、解碼器以及儲存媒介,編碼器確定當前塊的ISP模式參數;當ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值時,確定當前塊的子分區;確定子分區的殘差值;當子分區使用一次變換時,確定子分區使用的一次變換核;使用一次變換核,對殘差值進行變換處理。解碼器解析位元流,確定當前塊的ISP模式參數;當ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值時,確定當前塊的子分區;解析位元流,確定子分區的變換係數矩陣;確定子分區使用的一次變換核;使用一次變換核,對變換係數矩陣進行變換處理。
Description
本申請實施例涉及影像處理技術領域,尤其涉及一種變換方法、編碼器、解碼器以及儲存媒介。
隨著人們對影像顯示品質要求的提高,高清和超高清影像等新影像應用形式應運而生。H.265/高效率影像編碼(High Efficiency Video Coding,HEVC)已經無法滿足影像應用迅速發展的需求,聯合視訊探索小組(Joint Video Exploration Team,JVET)提出了下一代影像編碼標準H.266/多功能影像編碼(Versatile Video Coding,VVC),其相應的測試模型為VVC的參考軟體測試平臺(VVC Test Model,VTM)。
目前,H.266/VVC中已經接受了簡化的二次變換(Reduced Second Transform,RST)技術,並更名為低頻率不可分變換(Low-Frequency Non-Separable Transform,LFNST)技術。進一步地,VVC中變換部分包括一次變換和二次變換。一次變換支援多個變換核,稱為多變換核集合(Multiple Transform Set,MTS)技術,二次變換為LFNST,其中,二次變換透過lfnst_idx表明是否使用二次變換,以及使用哪一個lfnst變換核。而在對一次變換的變換核進行確定時,在不使用LFNST時,需要基於變換塊的尺寸進行一次變換核的選擇,由於變換核的選擇過程較為繁瑣,增加了變換過程的複雜程度,從而降低了編碼效率。
有鑑於此,如何克服上述所提及的種種缺點,是目前業界亟需克服的課題。
本申請實施例提供一種變換方法、編碼器、解碼器以及儲存媒介,可以簡化變換核的選擇過程,降低了變換過程的複雜程度,有效地提高了編解碼效率。
本申請實施例的技術方案可以如下實現:
第一方面,本申請實施例提供了一種變換方法,應用於編碼器,所述方法包括:
確定當前塊的ISP模式參數;
當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區;
確定所述子分區的殘差值;
當所述子分區使用一次變換時,確定所述子分區使用的一次變換核;
使用所述一次變換核,對所述殘差值進行變換處理。
第二方面,本申請實施例提供了一種變換方法,應用於解碼器,所述方法包括:
解析位元流,確定當前塊的ISP模式參數;
當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區;
解析位元流,確定所述子分區的變換係數矩陣;
確定所述子分區使用的一次變換核;
使用所述一次變換核,對所述變換係數矩陣進行變換處理。
第三方面,本申請實施例提供了一種編碼器,所述編碼器包括:第一確定部分,第一變換部分,
所述第一確定部分,配置為確定當前塊的ISP模式參數;以及當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區;以及確定所述子分區的殘差值;以及當所述子分區使用一次變換時,確定所述子分區使用的一次變換核;
所述第一變換部分,配置為使用所述一次變換核,對所述殘差值進行變換處理。
第四方面,本申請實施例提供了一種編碼器,所述編碼器包括第一處理器、儲存有所述第一處理器可執行指令的第一記憶體,當所述指令被執行時,所述第一處理器執行時實現如上所述的變換方法。
第五方面,本申請實施例提供了一種解碼器,所述解碼器包括:解析部分,第二確定部分,第二變換部分,
所述解析部分,配置為解析位元流,確定當前塊的ISP模式參數;
所述第二確定部分,配置為當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區;
所述解析部分,還配置為解析位元流,確定所述子分區的變換係數矩陣;
所述第二確定部分,還配置為確定所述子分區使用的一次變換核;
所述第二變換部分,配置為使用所述一次變換核,對所述變換係數矩陣進行變換處理。
第六方面,本申請實施例提供了一種解碼器,所述解碼器包括第二處理器、儲存有所述第二處理器可執行指令的第二記憶體,當所述指令被執行時,所述第二處理器執行時實現如上所述的變換方法。
第七方面,本申請實施例提供了一種電腦儲存媒介,所述電腦儲存媒介儲存有電腦程式,所述電腦程式被第一處理器和第二處理器執行時,實現如上所述的變換方法。
本申請實施例提供了一種變換方法、編碼器、解碼器以及儲存媒介,編碼器確定當前塊的ISP模式參數;當ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值時,確定當前塊的子分區;確定子分區的殘差值;當子分區使用一次變換時,確定子分區使用的一次變換核;使用一次變換核,對殘差值進行變換處理。解碼器解析位元流,確定當前塊的ISP模式參數;當ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值時,確定當前塊的子分區;解析位元流,確定子分區的變換係數矩陣;確定子分區使用的一次變換核;使用一次變換核,對變換係數矩陣進行變換處理。由此可見,在本申請的實施例中,對於ISP分區的變換,在當前塊劃分後的子分區不使用二次變換,僅使用一次變換時,子分區使用一次變換的一次變換核,不再由子分區的尺寸決定,即不再根據子分區的高度和寬度對一次變換核進行選擇,而是直接對一次變換核進行設置。從而可以簡化變換核的選擇過程,降低了變換過程的複雜程度,有效地提高了編解碼效率。
以下經由特定的具體實施例說明本申請之實施方式,熟悉此技藝之人士可由本說明書所揭示之內容輕易的瞭解本申請之其他優點與功效。本申請亦可經由其他不同的具體實施例加以施行或應用,本說明書中的各項細節亦可基於不同觀點與應用,在不悖離本申請之精神下進行各種修飾與變更。
為了能夠更加詳盡地瞭解本申請實施例的特點與技術內容,下面結合附圖對本申請實施例的實現進行詳細闡述,所附附圖僅供參考說明之用,並非用來限定本申請實施例。
H.266/VVC中接受了由LGE在JVET-N0193中提出的RST技術,並更名為LFNST技術。在之後的會議中,隨著標準的制定過程,LFNST技術不斷優化。下面將針對目前LFNST技術的相關技術方案描述。
VVC中變換部分包括一次變換和二次變換。一次變換支援多個變換核,稱為多變換核集合(Multiple Transform Set,MTS)技術,二次變換為LFNST,其中,二次變換透過lfnst_idx表明是否使用二次變換,以及使用哪一個lfnst變換核。
圖1為LFNST技術的應用示意圖,參見圖1,其示出了相關技術方案提供的一種LFNST技術的應用位置示意圖。如圖1所示,在幀內預測模式中,對於編碼器側,在正一次變換單元11與量化單元12之間應用有LFNST技術。對於解碼器側,在反量化單元13與反一次變換單元14之間應用有LFNST技術。
具體來說,在編碼器側,首先針對資料,比如預測殘差(可以用residual表示)透過正一次變換單元11進行第一次變換(可以稱之為“Core Transform”或者“一次變換”或者“核心變換”),以得到第一次變換後的變換係數矩陣;然後針對該變換係數矩陣中的係數進行LFNST變換(可以稱之為“Secondary Transform”或者“二次變換”),得到LFNST變換係數矩陣,最後針對LFNST變換係數矩陣透過量化單元12進行量化處理,將最終的量化值寫入位元流(bitstream)。
在解碼器側,透過解析位元流,可以獲得LFNST變換係數矩陣的量化值,透過反量化單元13對該量化值進行反量化處理(可以稱之為“Scaling”),得到LFNST變換係數矩陣的恢復值,對該恢復值進行反向LFNST變換,可以得到係數矩陣;然後再透過反一次變換單元14對係數矩陣進行與編碼器側“Core Transform”對應的反變換,最終得到residual的恢復值。需要注意的是,標準中僅定義了解碼器側的“反變換”操作,因此在標準中針對“反向LFNST變換”也稱之為“LFNST變換”;本申請實施例為了便於和編碼器側的變換進行區分,可以將編碼器側“LFNST變換”稱為“正向LFNST變換”,將解碼器側“LFNST變換”稱為“反向LFNST變換”。
也就是說,在編碼器側,當前變換塊的預測殘差透過正一次變換,可以得到一次變換係數,然後將部分一次變換係數透過矩陣乘法進行二次變換,得到數量更少且更加集中的二次變換係數,再對其進行量化處理;在解碼器側,則是在解析出量化值之後,對其進行反量化處理,將反量化後的係數透過矩陣乘法進行反二次變換,然後將反二次變換後的係數進行反一次變換,從而恢復出預測殘差。
在LFNST技術中,LFNST變換過程主要可以包括:配置核心參數、幀內預測模式映射、選擇變換矩陣、計算矩陣乘法和建構反一次變換係數矩陣等步驟;經過這些步驟的處理之後,便完成了LFNST變換。然而,在選擇變換矩陣的步驟中,首先需要選擇變換集,由於變換矩陣與預測模式的方向特性相關,目前是根據幀內預測模式來選擇變換集的。其中,對於傳統幀內預測模式,可以根據傳統幀內預測模式的編號來確定幀內預測模式指示符的取值,然後根據幀內預測模式指示符的取值來確定變換集索引序號。
具體地,圖2為LFNST具體過程的流程方塊圖,如圖2所示,LFNST具體過程可以分為五個步驟,包括配置核心參數、幀內預測模式映射、選擇變換矩陣、計算矩陣乘法和建構一次變換係數矩陣。其中,對於幀內預測模式映射來說,該步驟用於確定predModeIntra的取值,主要可以包括:非傳統幀內預測模式映射和寬角度映射;對於選擇變換矩陣來說,該步驟用於選擇出變換集以及變換矩陣,主要可以包括:選擇變換集、選擇變換矩陣組別和選擇變換矩陣尺寸。
H.266/VVC接收了由HHI在JVET-M0102提出的幀內子分區(Intra Sub-Partitions,ISP)編碼模式,ISP編碼模式是基於行的幀內(Line-Based Intra)編碼模式的改進版本,解決了之前演算法設計中與硬體相關的問題。
具體地,ISP技術主要針對亮度編碼塊,且應用的編碼塊最小尺寸為8x4和4x8,最大尺寸為64x64;使用多參考行模式時禁用ISP。
在進行ISP的劃分時,對於尺寸為8x4和4x8的編碼塊,ISP將其劃分為2個子分區,對於應用ISP的其他尺寸的編碼塊,ISP將其劃分為4個子分區,表1為分區數目表,如表1所示,根據編碼塊的尺寸進行劃分時,尺寸為4x4的編碼塊不進行劃分,尺寸為8x4和4x8的編碼塊可以劃分為2個子分區,剩餘的其他尺寸的編碼塊可以劃分為4個子分區。
表1
編碼塊尺寸 | 子分區數目 |
4x4 | 不劃分 |
4x8和8x4 | 2 |
其他尺寸 | 4 |
圖3為編碼塊劃分示意圖一,圖4為編碼塊劃分示意圖二,如圖3和圖4所示,對於尺寸(WxH)為8x4和4x8的編碼塊,水平劃分後可以獲得的尺寸為Wx(H/2)的2個子分區;垂直劃分後可以獲得尺寸為(W/2)xH的2個子分區。
圖5為編碼塊劃分示意圖三,圖6為編碼塊劃分示意圖四,如圖5和圖6所示,對於4x4、8x4以及4x8以外的、其他尺寸的編碼塊,水平劃分後可以獲得的尺寸為Wx(H/4)的4個子分區;垂直劃分後可以獲得尺寸為(W/4)xH的4個子分區。
在對ISP劃分後的子分區進行預測的時候,可以參考上一個子分區的重建信號(第一個子分區除外),具體地,對於一個子分區,可以透過將殘差信號與預測信號相加獲得該子分區的重建信號,其中,殘差信號可以透過熵解碼、反量化、反變換得到。此外,需要處理的第一個子分區是包含CU中左上角像素的子分區,然後按照向下(水平劃分)或向右(垂直劃分)處理各個子分區。ISP的所有子分區共用同一種幀內預測模式,其使用的預測模式包括直流(Direct Current,DC)模式、平面(PLANAR)模式以及角度模式等。
進一步地,ISP也對子分區進行預測時的尺寸進行了限制,具體地,限制子分區進行預測時的最小預測寬度為4,因此,對於變換尺寸中的寬度小於4的子分區,其預測尺寸中的寬度為4,即對ISP劃分後的子分區進行預測的時候,預測時的寬度和進行變換的寬度不一定相同,表2為ISP分區預測尺寸限制表一,如表2所示,對於尺寸為4x8的分區,在垂直劃分為2個子分區之後,每個子分區的變換尺寸為2x8,而子分區用於預測的尺寸為4x8;對於尺寸為4xN(N>8)的分區,在垂直劃分為4個子分區之後,每個子分區的變換尺寸為1xN,而子分區用於預測的尺寸為4xN;對於尺寸為8xN(N>8)的分區,在垂直劃分為4個子分區之後,每個子分區的變換尺寸為2xN,而子分區用於預測的尺寸為4xN。
表2
分區(WxH) | 子分區的預測尺寸 | 子分區的變換尺寸 |
4x8 | 4x8 | 2x8 |
4xN(N>8) | 4xN | 1xN |
8xN(N>4) | 4xN | 2xN |
圖5 為變化尺寸和預測尺寸的示意圖一,使用ISP編碼並水平劃分的8xN(N>4)的編碼塊,預測尺寸大小為4xN,變換尺寸大小為2xN。圖6 為變化尺寸和預測尺寸的示意圖二,使用ISP編碼並垂直劃分的4xN(N>8)的編碼塊,預測尺寸為4xN,子變換塊的大小為1xN。
對於ISP分區的變換,在對ISP劃分後的子分區進行變換時,如果使用二次變換LFNST,則一次變換的變換核為DCT-2;如果不使用二次變換LFNST,使用一次變換時,其一次變換類型主要是由當前子分區的尺寸決定,即子分區的尺寸可以對一次變換的變換核進行確定。具體地,如果子分區的寬度大於或者等於4,且小於或者等於16,那麼可以確定水平方向上的一次變換使用DST-7變換,否則使用DCT-2變換,即trTypeHor =(nTbW>=4&&nTbW<=16)?DST-7:DCT-2;如果當前分區的高度大於或者等於4,且小於或者等於16,那麼可以確定垂直方向上的一次變換使用DST-7變換,否則使用DCT-2變換,即trTypeVer =(nTbH>=4&&nTbH<=16)?DST-7:DCT-2。
如果ISP劃分後的子分區滿足寬度和高度都大於或者等於4,也可以使用LFNST二次變換,並且,如果子分區使用二次變換LFNST的話,則不再根據子分區的尺寸選擇變換類型,而是直接使用變換核進行DCT-2變換處理。
圖7為ISP模式變換選擇示意圖,如圖7所示,在VVC中,如果lfnst_idx的值為0,即不使用二次變換LFNST,那麼在使用一次變換時,可以根據子分區的尺寸對一次變換的變換核進行確定;如果lfnst_idx的值為1或2,即使用二次變換LFNST,那麼一次變換的變換核為DCT-2。也就是說,ISP模式變換選擇的機制為不使用二次變換LFNST時,基於子分區的尺寸大小確定變換核。
另一方面,在解碼端,對於ISP子分區進行反變換的過程,下面將詳細介紹VVC8 draft中ISP模式的反變換過程。
反向一次變換的輸入包括當前編碼塊的位置(xTbY,yTbY),當前編碼塊的顏色分量cIdx,當前編碼塊的預測模式predMode,當前編碼塊的寬度nTbW,當前編碼塊的高度nTbH,以及經過反向二次變換後掃描得到的反向一次變換係數矩陣d[x][y]。
反向一次變換的輸出:透過反向一次變換獲得的殘差係數res[x][y],其中x=0……nTbW−1,y =0……nTbH−1。
進一步地,圖8為反向一次變換的實現示意圖一,如圖8所示,ISP模式的反向一次變換的過程分主要包括以下部分:配置核心參數;選擇變換類型;進行反向變換。
在配置核心參數時,ISP由變數intra_subpartitions_mode_flag[x0][y0]決定是否使用ISP模式。具體地,如果intra_subpartitions_mode_flag[x0][y0]為1,便可以確定使用ISP模式,則將當前編碼單元劃分為NumIntraSubPartitions[x0][y0]個編碼塊;如果intra_subpartitions_mode_flag[x0][y0]等於0,便可以確定不使用ISP模式,則表示當前編碼單元未進行劃分。
ISP可以根據當前編碼塊的形狀進行水平或者垂直劃分,具體地,變數IntraSubPartitionsSplitType指定當前編碼塊的劃分類型,表3為IntraSubPartitionsSplitType的定義,如表3所示,變數IntraSubPartitionsSplitType為0時,表徵當前編碼塊未進行劃分,即ISP_NO_SPLIT;變數IntraSubPartitionsSplitType為1時,表徵對當前編碼塊進行水平劃分,即ISP_HOR_SPLIT;變數IntraSubPartitionsSplitType為2時,表徵對當前編碼塊進行垂直劃分,即ISP_VER_SPLIT。
表3
IntraSubPartitionsSplitType | Name of IntraSubPartitionsSplitType |
0 | ISP_NO_SPLIT |
1 | ISP_HOR_SPLIT |
2 | ISP_VER_SPLIT |
其中,IntraSubPartitionsSplitType的推導如下:
如果Intra_subpartitions_mode_flag等於0,則將IntraSubPartitionsSplitType設置為0;
否則,將IntraSubPartitionsSplitType設置為1+intra_subpartitions_split_flag;其中,intra_subpartitions_split_flag用於表徵劃分方式,當intra_subpartitions_split_flag取值為0時,指示水平劃分;當intra_subpartitions_split_flag取值為1時,指示垂直劃分。
由於ISP根據當前編碼塊的尺寸可以將當前編碼塊劃分為2個或4個子分區,因此可以利用變數NumIntraSubPartitions指定當前編碼塊劃分的子分區的數量。在推導NumIntraSubPartitions時,具體地,
如果IntraSubPartitionsSplitType等於ISP_NO_SPLIT,則NumIntraSubPartitions設置為等於1;
否則,如果滿足以下條件之一,則將NumIntraSubPartitions設置為等於2:
nTbW等於4,nTbH等於8;
nTbW等於8,nTbW等於4。
否則,將NumIntraSubPartitions設置為等於4。
進一步地,隱性選擇變數implicitMtsEnabled推導如下:
如果sps_mts_enabled_flag等於1並且下列條件中的一個或者多個成立,則implicitMtsEnabled設置等於1:
IntraSubPartitionsSplitType不等於ISP_NO_SPLIT;
cu_sbt_flag等於1且Max(nTbW,nTbH)小於等於32;
sps_explicit_mts_intra_enabled_flag等於0且CuPredMode[0][xTbY][yTbY]等於MODE_INTRA且lfnst_idx[x0][y0]等於0且intra_mip_flag[x0][y0]等於0;
進一步地,變數非零係數塊尺寸,即非零寬度係數nonZeroW和非零高度係數nonZeroH推導如下公式:
如果ApplyLfnstFlag等於1且nTbW和nTbH同時大於等於4,則,
nonZeroW=(nTbW==4||nTbH==4)?4:8 (1)
nonZeroH=(nTbW==4||nTbH==4)?4:8 (2)
否則,
nonZeroW=Min(nTbW,(trTypeHor>0)?16:32) (3)
nonZeroH=Min(nTbH,(trTypeVer>0)?16:32) (4)
其中,變數ApplyLfnstFlag推導如下公式:
如果treeType等於SINGLE_TREE,則:
ApplyLfnstFlag=(lfnst_idx>0&&cIdx==0)?1:0 (5)
否則:
ApplyLfnstFlag =(lfnst_idx>0)?1:0 (6)
在選擇變換類型時,變數trTypeHor表示水平變換類型,變數trTypeVer表示垂直變換類型,trTypeHor和trTypeVer的推導如下:
以下任意條件滿足則trTypeHor和trTypeVer都設置為0:
cIdx大於0;
IntraSubPartitionsSplitType不等於ISP_NO_SPLIT且lfnst_idx不等於0;
否則,如果變數implicitMtsEnabled等於1,則:
如果cu_sbt_flag等於1,則trTypeHor和trTypeVer由表5中cu_sbt_horizontal_flag和cu_sbt_pos_flag決定;
否則(cu_sbt_flag等於0),trTypeHor和trTypeVer推導如下公式:
trTypeHor=(nTbW>=4&&nTbW<=16)?1:0 (7)
trTypeVer=(nTbH>=4&&nTbH<=16)?1:0 (8)
否則,trTypeHor和trTypeVer由表4中的mts_idx.決定。
表4為mtsIdx與trTypeHor和trTypeVer的關係,表5為trTypeHor和trTypeVer與cu_sbt_horizontal_flag和cu_sbt_pos_flag的關係,具體如下:
表4
MtsIdx | 0 | 1 | 2 | 3 | 4 |
trTypeHor | 0 | 1 | 2 | 1 | 2 |
trTypeVer | 0 | 1 | 1 | 2 | 2 |
表5
cu_sbt_horizontal_flag | cu_sbt_pos_flag | trTypeHor | trTypeVer |
0 | 0 | 2 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 2 |
1 | 1 | 1 | 1 |
基於上述圖9,圖9為反向一次變換的實現示意圖二,如圖9所示,在進行反向一次變換時,具體過程可以包括以下幾個部分:一維垂直變換;計算中間係數值;一維水平變換以及獲取殘差係數。
對於一維垂直變換,如果nTbH大於1,則調用下述的一維反向一次變換過程,其輸入為經過反向二次變換後得到的反向一次變換係數d[x][y],x =0……nonZeroW−1,y=0……nonZeroH−1,變換塊高度nTbH和非零高度係數nonZeroH,垂直變換類型trTypeVer;輸出為e[x][y],x =0……nonZeroW −1,y=0……nonZeroH−1。
在計算中間係數值時,如果nTbH和nTbW均大於1,中間樣本值g[x][y],x =0……nonZeroW −1,y=0……nonZeroH−1匯出如下公式:
g[x][y]=Clip3(CoeffMin,CoeffMax,(e[x][y]+64)>>7) (9)
對於一維水平變換,如果nTbW大於1,調用下述的一維反向一次變換過程,其輸入為中間樣本值g[x][y],x =0……nonZeroW−1,y=0……nonZeroH−1,變換塊寬度nTbW和非零寬度係數nonZeroW,水平變換類型trTypeHor;輸出為r[x][y],x =0……nonZeroW −1,y=0……nonZeroH−1。
如果nTbW等於1,則r[x][y]設置等於e[x][y],x =0……nonZeroW −1,y=0……nonZeroH−1
在獲取殘差係數時,殘差係數矩陣res[x][y],x =0……nonZeroW −1,y=0……nonZeroH−1推導如下公式:
bdShift=Max(20−BitDepth,0) (10)
res[x][y]=(r[x][y]+(1<<(bdShift−1)))>>bdShift (11)
其中,對於一維反向一次變換過程,該過程主要是進行一維反向一次變換,其輸入nTbS表示變換係數的長度,nonZeroS表示非零係數的長度,x[j],j=0……nonZeroS表示未進行一維反向一次變換的係數,trType表示變換類型;輸出是經過一維反向一次變換的係數y[i],i=0……nonZeroS。
首先根據變換係數長度nTbS和變換類型trType獲得變換矩陣transMatrix,然後根據trType計算y[i],i=0……nonZeroS:
對於ISP分區的變換,在ISP劃分後的子分區不使用二次變換的情況下,子分區使用一次變換時,子分區一次變換的變換類型主要是由子分區的尺寸決定。即當前分區的寬度大於或者等於4,且小於或者等於16,則水平方向上的一次變換使用DST-7變換,否則使用DCT-2變換;當前分區的高度大於或者等於4,且小於或者等於16,則垂直方向上的一次變換使用DCT-2變換。雖然如上所述的ISP變換選擇方式增加了變換選擇的多樣性,但是同時也引入了一定的複雜度,從而降低了編碼效率。
也就是說,對於目前H.266/VVC,如果ISP劃分後的子分區不使用二次變換,那麼在使用一次變換時,需要根據子分區的尺寸對一次變換的變換核進行選擇,可見,基於變換塊的尺寸進行一次變換核的選擇過程較為繁瑣,增加了變換過程的複雜程度,從而降低了編碼效率。
進一步地,由於VVC目前接受了對ISP編碼塊可以使用二次變換LFNST。對於ISP編碼塊,在使用DCT2(一次變換核)+LFNST(二次變換核)時,編碼性能可以有效地提升。在基於率失真代價最小的競爭機制中,LFNST為0時選到的概率不大,此時使用基於分區尺寸選擇變換核的方法帶來的編碼性能提升有限,而其複雜度也比較高,尤其是DST-7變換核的複雜度。
為了克服上述缺陷,本申請提出一種變換方法,對於ISP分區的變換,在當前塊劃分後的子分區不使用二次變換,僅使用一次變換時,子分區使用一次變換的一次變換核,不再由子分區的尺寸決定,即不再根據子分區的高度和寬度對一次變換核進行選擇,而是直接對一次變換核進行設置。具體地,在編碼側,編碼器直接對子分區使用的一次變換核進行確定,在利用語法元素對一次變換核進行指示後寫入位元流;在解碼側,解碼器解析位元流後根據指示一次變換核的語法元素確定子分區使用的一次變換核。也就是說,在本申請中,對於ISP分區的變換,當子分區不使用LFNST時,可以直接對一次變換使用的一次變換核進行確定,而不需要再根據子分區的高度和寬度對一次變換核進行選擇,從而可以簡化變換核的選擇過程,降低了變換過程的複雜程度,有效地提高了編解碼效率。
需要說明的是,在本申請的實施例中,圖10為影像編碼系統的組成方塊圖;其示出了本申請實施例提供的一種影像編碼系統的組成方塊圖示例;如圖10所示,該影像編碼系統包括變換單元111、量化單元112、模式選擇和編碼控制邏輯單元113、幀內預測單元114、幀間預測單元115(包括:運動補償和運動估計)、反量化單元116、反變換單元117、迴路濾波單元118、編碼單元119和解碼圖像暫存單元110;針對輸入的原始視訊訊號,透過編碼樹塊(Coding Tree Unit,CTU)的劃分可以得到一個影像重建塊,透過模式選擇和編碼控制邏輯單元113確定編碼模式,然後,對經過幀內或幀間預測後得到的殘差像素訊息,透過變換單元111、量化單元112對該影像重建塊進行變換,包括將殘差訊息從像素域變換到變換域,並對所得的變換係數進行量化,用以進一步減少位元速率;幀內預測單元114用於對該影像重建塊進行幀內預測;其中,幀內預測單元114用於確定該影像重建塊的最優幀內預測模式(即目標預測模式);幀間預測單元115用於執行所接收的影像重建塊相對於一或多個參考幀中的一或多個塊的幀間預測編碼,以提供時間預測訊息;其中,運動估計為產生運動向量的過程,所述運動向量可以估計該影像重建塊的運動,然後,運動補償基於由運動估計所確定的運動向量執行運動補償;在確定幀間預測模式之後,幀間預測單元115還用於將所選擇的幀間預測資料提供到編碼單元119,而且,將所計算確定的運動向量資料也發送到編碼單元119;此外,反量化單元116和反變換單元117用於該影像重建塊的重構建,在像素域中重構建殘差塊,該重構建殘差塊透過迴路濾波單元118去除方塊效應假影,然後,將該重構殘差塊添加到解碼圖像暫存單元110的幀中的一個預測性塊,用以產生經重構建的影像重建塊;編碼單元119是用於編碼各種編碼參數及量化後的變換係數。而解碼圖像暫存單元110用於存放重構建的影像重建塊,用於預測參考。隨著影像圖像編碼的進行,會不斷生成新的重構建的影像重建塊,這些重構建的影像重建塊都會被存放在解碼圖像暫存單元110中。
圖11為影像解碼系統的組成方塊圖;其示出了本申請實施例提供的一種影像解碼系統的組成方塊圖示例;如圖11所示,該影像解碼系統包括解碼單元121、反變換單元127,與反量化單元122、幀內預測單元123、運動補償單元124、迴路濾波單元125和解碼圖像暫存單元126單元;輸入的視訊訊號經過影像編碼系統進行編碼處理之後,輸出該視訊訊號的位元流;該位元流輸入影像解碼系統中,首先經過解碼單元121,用於得到解碼後的變換係數;針對該變換係數透過反變換單元127與反量化單元122進行處理,以便在像素域中產生殘差塊;幀內預測單元123可用於基於所確定的幀內預測方向和來自當前幀或圖片的先前經解碼塊的資料而產生當前影像解碼塊的預測資料;運動補償單元124是透過剖析運動向量和其他關聯語法元素來確定用於影像解碼塊的預測訊息,並使用該預測訊息以產生正被解碼的影像解碼塊的預測性塊;透過對來自反變換單元127與反量化單元122的殘差塊與由幀內預測單元123或運動補償單元124產生的對應預測性塊進行求和,而形成解碼的影像塊;該解碼的視訊訊號透過迴路濾波單元125以便去除方塊效應假影,可以改善影像品質;然後將經解碼的影像塊儲存於解碼圖像暫存單元126中,解碼圖像暫存單元126儲存用於後續幀內預測或運動補償的參考圖像,同時也用於視訊訊號的輸出,得到所恢復的原始視訊訊號。
本申請實施例中的變換方法,可以應用在如圖10所示的變換單元111和反變換單元117部分。另外,本申請實施例中的變換方法,還可以應用在如圖11所示的反變換單元127部分。也就是說,本申請實施例中的變換方法,既可以應用於影像編碼系統,也可以應用於影像解碼系統,甚至還可以同時應用於影像編碼系統和影像解碼系統,但是本申請實施例不作具體限定。還需要說明的是,當該變換方法應用於影像編碼系統時,“當前塊”具體是指幀內預測中的當前編碼塊;當該變換方法應用於影像解碼系統時,“當前塊”具體是指幀內預測中的當前解碼塊。
下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述。
本申請的一實施例提出了一種變換方法,應用於編碼器,圖12為變換方法的實現流程示意圖一,如圖12所示,編碼器進行變換處理的方法可以包括以下步驟:
步驟101、確定當前塊的ISP模式參數。
步驟102、當ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值時,確定當前塊的子分區。
在本申請的實施例中,編碼器可以先對當前塊的ISP模式參數進行確定,並在確定ISP模式參數之後,如果ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值,那麼編碼器可以進一步確定當前塊的子分區。
需要說明的是,在本申請的實施中,ISP模式參數可以指示當前塊是否可以使用幀內子分區編碼模式,即指示當前塊是否可以使用ISP模式。
可以理解的是,在本申請的實施例中,可以將ISP模式參數理解為一個表明是否使用了ISP模式標誌位元。具體地,編碼器可以將變數intra_subpartitions_mode_flag作為ISP模式參數,從而可以透過對變數intra_subpartitions_mode_flag取值的設置來實現ISP模式參數的設置。
示例性的,在本申請中,如果當前塊使用ISP模式,那麼編碼器可以將ISP模式參數的取值設置為指示當前塊使用ISP模式,具體地,編碼器可以將變數intra_subpartitions_mode_flag的取值設置為1。
示例性的,在本申請中,如果當前塊不使用ISP模式,那麼編碼器可以將ISP模式參數的取值設置為指示當前塊不使用ISP模式,具體地,編碼器可以將變數intra_subpartitions_mode_flag的取值設置為0。
進一步地,在本申請的實施例中,編碼器在完成對ISP模式參數的設置之後,便可以將ISP模式參數寫入位元流中,傳輸至解碼器,從而可以使解碼器在解析位元流之後獲得ISP模式參數。
也就是說,在本申請的實施例中,在編碼器側,會針對當前塊進行預測編碼,在這過程中就可以確定出當前塊的ISP模式參數,並將相應的ISP模式參數寫入位元流,由編碼器傳輸到解碼器。
進一步地,編碼器在確定當前塊的ISP模式參數之後,如果ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值,那麼解碼器可以繼續對當前塊的子分區進行確定。
可以理解的是,在本申請的實施例中,編碼器在確定當前塊的子分區時,可以根據split flag確定當前塊的大小和位置,也就是說,從代碼的角度來說,將指標變數指向緩衝區中正確的起始位置、確定寫入儲存空間時的寬度和高度。
需要說明的是,在本申請的實施例中,影像圖像可以劃分為多個圖像塊,每個當前待編碼的圖像塊可以稱為編碼塊(Coding Block,CB)。這裡,每個編碼塊可以包括第一圖像分量、第二圖像分量和第三圖像分量。具體地,在本申請中,假定進行第一圖像分量預測,而且第一圖像分量為亮度分量,即待預測圖像分量為亮度分量,那麼可以將待預測的編碼塊稱為亮度塊;或者,假定進行第二圖像分量預測,而且第二圖像分量為色度分量,即待預測圖像分量為色度分量,那麼可以將待預測的編碼塊稱為色度塊。
可以理解的是,在本申請的實施例中,由於ISP技術主要針對亮度編碼塊,因此,當前塊為影像圖像中當前待進行亮度分量預測的編碼塊,即當前塊為亮度塊。
需要說明的是,在本申請的實施例中,在應用ISP技術時,限制編碼塊的最小尺寸為8x4和4x8,最大尺寸為64x64,且使用多參考行模式時禁用ISP。因此,在本申請中,編碼器可以先確定當前塊的尺寸參數,然後根據尺寸參數確定當前塊是否使用ISP模式。
也就是說,在本申請中,只有在當前塊為亮度塊,且當前塊的尺寸參數滿足大小要求的條件下,當前塊才可以使用ISP模式。
步驟103、確定子分區的殘差值。
在本申請的實施例中,編碼器在確定當前塊的子分區之後,可以對子分區的殘差值進行確定。
進一步地,在本申請的實施例中,編碼器在對確定當前塊的子分區之後,可以對子分區進行幀內預測,獲得每一個子分區的幀內預測值;其中,一個子分區對應一個幀內預測值。
需要說明的是,在本申請的實施例中,編碼器在對子分區進行幀內預測時,可以使用的幀內預測模式包括直流(Direct Current,DC)模式、平面(PLANAR)模式以及角度模式等。
可以理解的是,在本申請的實施例中,編碼器在對子分區進行幀內預測之前,可以先確定預測模式參數,然後可以透過預測模式參數來確定當前塊的子分區的編碼模式是具體哪一種編碼模式。
在本申請的實施例中,進一步地,編碼器在確定當前塊的子分區的預測模式參數時,可以先確定當前塊的子分區的待預測圖像分量;然後基於當前塊的子分區的參數,利用多種預測模式分別對待預測圖像分量進行預測編碼,計算多種預測模式下每一種預測模式對應的率失真代價結果;最後便可以從計算得到的多個率失真代價結果中選取最小率失真代價結果,並將最小率失真代價結果對應的預測模式確定為當前塊的預測模式參數。
也就是說,在編碼器側,針對當前塊的子分區可以採用多種預測模式分別對待預測圖像分量進行編碼。
進一步地,在本申請的實施例中,編碼器在利用多種預測模式分別對當前塊進行編碼之後,可以得到每一種預測模式對應的率失真代價結果;然後從所得到的多個率失真代價結果中選取最小率失真代價結果,並將該最小率失真代價結果對應的預測模式確定為當前塊的子分區的預測模式參數;如此,最終可以使用所確定的預測模式對當前塊的子分區進行編碼,而且在這種預測模式下,可以使得預測殘差小,能夠提高編碼效率。
需要說明的是,在本申請的實施例中,當前塊的多個子分區共用同一種幀內預測模式。也就是說,編碼器可以透過PLANAR、DC或者角度預測模式中的一種幀內預測模式對當前塊的多個子分區進行幀內預測。
進一步地,在本申請的實施例中,編碼器在確定子分區的幀內預測值之後,便可以對子分區的真實值和幀內預測值進行差值運算,獲得兩者之間的差值結果,從而可以確定出子分區的預測差值,即殘差值。
也就是說,在本申請中,編碼器計算殘差值時,可以計算子分區的真實值與幀內預測值之間的差值,從而獲得殘差值。
需要說明的是,在本申請的實施例中,ISP技術對子分區進行預測時的尺寸進行了限制,要求子分區進行預測時的最小預測寬度為4,因此,對於當前塊來說,子分區進行預測時的尺寸和進行變換時的尺寸不一定相同。
具體地,由於ISP技術僅對子分區預測時的寬度進行限制,且在應用ISP技術時限制編碼塊的最小尺寸為8x4和4x8,因此,對於當前塊水平劃分獲得的子分區,預測尺寸和變換尺寸均是相同的,而對於垂直劃分的子分區,會存在預測尺寸和變換尺寸不同的情況。
表6為ISP分區預測尺寸限制表二,如表6所示,在進行垂直劃分之後,尺寸為4x8的當前塊劃分後的2個子分區的變換尺寸為2x8,而子分區用於預測的尺寸為4x8;尺寸為8x4的當前塊劃分後的2個子分區的變換尺寸和預測尺寸均為4x4;尺寸為4xN(N>8)的當前塊劃分後的4個子分區的變換尺寸為1xN,而子分區用於預測的尺寸為4xN;尺寸為Nx4(N>8)的當前塊劃分後的4個子分區的變換尺寸和預測尺寸均為(N/4)x4;尺寸為8xN(N>4)的當前塊劃分後的4個子分區的變換尺寸為2xN,而子分區用於預測的尺寸為4xN;尺寸為Nx8(N>8)的當前塊劃分後的4個子分區的變換尺寸和預測尺寸均為(N/4)x8。
表6
當前塊(WxH) | 子分區的預測尺寸 | 子分區的變換尺寸 |
4x8 | 4x8 | 2x8 |
8x4 | 4x4 | 4x4 |
4xN(N>8) | 4xN | 1xN |
Nx4(N>8) | (N/4)x4 | (N/4)x4 |
8xN(N>4) | 4xN | 2xN |
Nx8(N>8) | (N/4)x8 | (N/4)x8 |
步驟104、當子分區使用一次變換時,確定子分區使用的一次變換核。
在本申請的實施例中,當子分區使用一次變換時,編碼器可以先確定出子分區進行一次變換時的一次變換核,即確定出一次變換所使用的變換類型。
可以理解的是,在本申請的實施例中,如果子分區使用一次變換,那麼編碼器可以先對一次變換時的變換類型進行確定,即確定出子分區使用的一次變換核。
具體地,在數學上共有8種類型的DCT變換,而在HEVC變換編碼中只使用了DCT-2變換。進一步地,在VVC中提出了MTS技術,因此可以使用更多類型的變換。其中,對於一次變換,可選的變換核包括DCT-2、DCT-8以及DST-7。
可以理解的是,在本申請的實施例中,DCT-2變換核指的是基於DCT-2設計的整數變換的變換核或變換矩陣。類似的,DST-7變換核指的是基於DST-7設計的整數變換的變換核或變換矩陣;DCT-8變換核指的是基於DCT-8設計的整數變換的變換核或變換矩陣。
圖13為變換方法的實現流程示意圖二,如圖13所示,編碼器確定子分區使用的一次變換核的方法可以包括以下步驟:
步驟104a、將DCT-2確定為一次變換核。
在本申請的實施例中,編碼器在對子分區使用一次變換時的變換類型進行確定時,可以直接將DCT-2確定為一次變換核。
也就是說,在本申請中,無論子分區是否使用LFNST,子分區使用的一次變換核均為DCT-2。
步驟104b、當子分區不使用LFNST時,將預設變換核確定為一次變換核;當子分區使用LFNST時,將DCT-2確定為一次變換核。
在本申請的實施例中,編碼器在對子分區使用一次變換時的變換類型進行確定時,如果子分區不使用LFNST,那麼編碼器可以將預設變換核確定為一次變換核;如果子分區使用LFNST,那麼編碼器可以將DCT-2確定為一次變換核。其中,預設變換核為DCT-2、DST-7或DCT-8中的任意一個。
也就是說,在本申請中,子分區使用LFNST時的一次變換核和子分區不使用LFNST的一次變換核可以不相同。具體地,在子分區使用LFNST時,編碼器可以將子分區的一次變換核確定為DCT-2;在子分區不使用LFNST時,編碼器可以將DCT-2、DST-7或DCT-8中的任意一個確定為子分區的一次變換核。
步驟104c、當子分區不使用LFNST時,將DCT-2確定為一次變換核;當子分區使用LFNST時,將預設變換核確定為一次變換核。
在本申請的實施例中,編碼器在對子分區使用一次變換時的變換類型進行確定時,如果子分區使用LFNST,那麼編碼器可以將預設變換核確定為一次變換核;如果子分區不使用LFNST,那麼編碼器可以將DCT-2確定為一次變換核。其中,預設變換核為DCT-2、DST-7或DCT-8中的任意一個。
也就是說,在本申請中,子分區使用LFNST時的一次變換核和子分區不使用LFNST的一次變換核可以不相同。具體地,在子分區不使用LFNST時,編碼器可以將子分區的一次變換核確定為DCT-2;在子分區使用LFNST時,編碼器可以將DCT-2、DST-7或DCT-8中的任意一個確定為子分區的一次變換核。
步驟104d、將目標變換核確定為一次變換核;相應地,在位元流中以一個語法單元指示目標變換核。
在本申請的實施例中,編碼器在對子分區使用一次變換時的變換類型進行確定時,可以直接將目標變換核確定為一次變換核。其中,目標變換核為DCT-2、DST-7或DCT-8中的任意一個。
也就是說,在本申請中,無論子分區是否使用LFNST,子分區使用的一次變換核均為目標變換核。即對於子分區使用LFNST和不使用LFNST這兩種不同情況,編碼器可以設置相同的一次變換核。
進一步地,在本申請的實施例中,編碼器在將目標變換核確定為一次變換核以後,需要在位元流中以一個語法單元syntax element指示一次變換的變換類型,即利用語法單元對目標變換核進行指示。
需要說明的是,在本申請的實施例中,在位元流中,指示目標變換核的語法單元包含在以下位元流中的一個或多個資料單元中:包含當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集。
步驟104e、當子分區不使用LFNST時,將第一變換核確定為一次變換核;當子分區使用LFNST時,將第二變換核確定為一次變換核;相應地,在位元流中以兩個語法單元分別指示第一變換核和第二變換核。
在本申請的實施例中,編碼器在對子分區使用一次變換時的變換類型進行確定時,如果子分區不使用LFNST,那麼編碼器可以將第一變換核確定為一次變換核;如果子分區使用LFNST,那麼編碼器可以將第二變換核確定為一次變換核。其中,第一變換核和第二變換核為DCT-2、DST-7或DCT-8中的任意兩個。
也就是說,在本申請中,對於子分區使用LFNST和不使用LFNST這兩種情況,編碼器可以設置不同的一次變換核,以使子分區子不使用LFNST時,使用第一變換核進行一次變換,在使用LFNST時,使用第二變換核進行一次變換。
進一步地,在本申請的實施例中,對於子分區使用LFNST和不使用LFNST這兩種情況,編碼器在將第一變換核或第二變換核確定為一次變換核以後,需要在位元流中以兩個語法單元syntax element分別指示一次變換的變換類型,即利用一個語法單元對第一變換核進行指示,同時,利用另一個語法單元對第二變換核進行指示。
需要說明的是,在本申請的實施例中,在位元流中,指示第一變換核和第二變換核的語法單元包含在以下位元流中的一個或多個資料單元中:包含當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集。
由此可見,在本申請的實施例中,編碼器在確定子分區進行一次變換時使用的一次變換核時,無論子分區是否使用LFNST,編碼器均可以透過多種方式進行一次變換核的確定。
可以理解的是,在本申請的實施例中,無論子分區是否使用LFNST,編碼器都可以直接將DCT-2確定為子分區進行一次變化時所使用的一次變換核。也就是說,對於當前塊的任意一個子分區,在該子分區不使用LFNST或使用LFNST時,該子分區一次變換時所使用的一次變換核均為DCT-2。
可見,在本申請中,編碼器既不需要再根據子分區的的尺寸進行一次變換核的選擇,也不需要根據子分區是否使用LFNST對一次變換核進行區分,而是可以直接將一次變換核設置為DCT-2。
示例性的,在本申請中,當lfnst_idx ==0時,直接使用DCT-2;當lfnst_idx ==1or2時,直接使用DCT-2。
可以理解的是,在本申請的實施例中,如果子分區不使用LFNST,那麼編碼器可以直接將預設變換核確定為子分區進行一次變化時所使用的一次變換核;如果子分區使用LFNST,那麼編碼器可以將DCT-2確定為子分區進行一次變化時所使用的一次變換核。
需要說明的是,在本申請的實施例中,預設變換核為編碼器預先設置的一個固定類型,具體地,預設變換核可以為DCT-2、DST-7或DCT-8中的任意一個。
可見,在本申請中,在當前塊的子分區不使用LFNST的情況下,編碼器不需要再根據子分區的的尺寸進行一次變換核的選擇,而是可以直接將一次變換核設置為預設變換核,同時,在子分區使用LFNST的情況下,將DCT-2設置為確定一次變換核。
示例性的,在本申請中,當lfnst_idx ==0時,直接使用DST-7;當lfnst_idx ==1or2時,直接使用DCT-2。
可以理解的是,在本申請的實施例中,如果子分區使用LFNST,那麼編碼器可以直接將預設變換核確定為子分區進行一次變化時所使用的一次變換核;如果子分區不使用LFNST,那麼編碼器可以將DCT-2確定為子分區進行一次變化時所使用的一次變換核。
需要說明的是,在本申請的實施例中,預設變換核為編碼器預先設置的一個固定類型,具體地,預設變換核可以為DCT-2、DST-7或DCT-8中的任意一個。
可見,在本申請中,在當前塊的子分區不使用LFNST的情況下,編碼器不需要再根據子分區的的尺寸進行一次變換核的選擇,而是可以直接將DCT-2設置為確定一次變換核,同時,在子分區使用LFNST的情況下,將一次變換核設置為預設變換核。
示例性的,在本申請中,當lfnst_idx ==0時,直接使用DCT-2;當lfnst_idx ==1or2時,直接使用DST-7。
可以理解的是,在本申請的實施例中,無論子分區是否使用LFNST,編碼器都可以直接在位元流中以一個語法單元syntax element指示子分區進行一次變化時所使用的一次變換核。也就是說,對於當前塊的任意一個子分區,在該子分區不使用LFNST或使用LFNST時,該子分區一次變換時所使用的一次變換核均為一個相同的目標變換核。其中,目標變換核可以為DCT-2、DST-7或DCT-8中的任意一個。
可見,在本申請中,編碼器既不需要再根據子分區的的尺寸進行一次變換核的選擇,也不需要根據子分區是否使用LFNST對一次變換核進行區分,而是可以直接將一次變換核透過位元流中的語法單元進行指示。
示例性的,在本申請中,當lfnst_idx ==0時,使用syntax element指示的目標變換核;當lfnst_idx ==1or2時,使用syntax element指示的目標變換核。
可以理解的是,在本申請的實施例中,如果子分區使用LFNST,那麼編碼器可以在位元流中以一個語法單元syntax element指示子分區進行一次變化時所使用的一次變換核;如果子分區不使用LFNST,那麼編碼器可以在位元流中以另一個語法單元syntax element指示子分區進行一次變化時所使用的一次變換核。
具體地,對於子分區使用LFNST和不使用LFNST這兩種不同的情況,編碼器可以在位元流中以兩個不同的語法單元分別對第一目標核和第二目標核進行指示。
需要說明的是,在本申請的實施例中,第一目標核和第二目標核可以為DCT-2、DST-7或DCT-8中的任意兩個。
可見,在本申請中,在當前塊的子分區不使用LFNST的情況下,編碼器不需要再根據子分區的的尺寸進行一次變換核的選擇,而是可以直接將第一變換核透過位元流中的一個語法單元進行指示,同時,在子分區使用LFNST的情況下,可以將第二變換核透過位元流中的另一個語法單元進行指示。
示例性的,在本申請中,當lfnst_idx ==0時,使用語法單元s0指示的第一變換核;當lfnst_idx ==1or2時,使用語法單元s1指示的第二變換核。
需要說明的是,在本申請的實施例中,編碼器在位元流中signal syntax element的方式可以包括:塊層、slice層、圖像頭、參數集(序列層參數集、圖像層參數集,APS等),以及不同資料單元中signal的參數之間的override關係,例如塊層可以override slice層等,參數集之間的override等。
進一步地,在本申請的實施例中,從編碼器的角度,即編碼側,一次變換核是可以自我調整選擇的,然後將該一次變換核在塊層的一個或者多個資料單元中使用相應的語法單元syntax element進行指示並寫入位元流;從解碼器的角度,即解碼側,解析位元流中塊層的一個或多個資料單元的語法單元syntax element,從而可以確定所使用的一次變換核。
可見,在本申請中,在當前塊的子分區不使用LFNST的情況下,編碼器不需要再根據子分區的的尺寸進行一次變換核的選擇,而是可以直接針對子分區進行一次變換核的適應性設置。
進一步地,在本申請的實施例中,編碼器可以透過變數isp_trType的取值的來確定一次變換核。
需要說明的是,在本申請的實施例中,變數isp_trType的取值可以為0、1、2,其中,如果變數isp_trType的取值為0,則代表採用DCT-2作為一次變換核;如果變數isp_trType的取值為1,則代表採用DST-7作為一次變換核;如果變數isp_trType的取值為2,則代表採用DCT-8作為一次變換核。
由此可見,本申請實施例提出的變換方法,對於ISP分區的變換,在當前塊劃分後的子分區不使用二次變換,僅使用一次變換時,子分區使用一次變換的變換類型,即一次變換核,不再由子分區的尺寸決定,即不再根據子分區的高度和寬度對一次變換核進行選擇,而是直接對一次變換核進行設置。
在本申請的實施例中,進一步地,圖14為變換核確定流程的示意圖,如圖14所示,在VVC中,如果lfnst_idx的值為0,即子分區不使用二次變換LFNST,那麼在使用一次變換時,編碼器可以直接對子分區一次變換的一次變換核進行確定;如果lfnst_idx的值為1或2,即子分區使用二次變換LFNST,那麼子分區一次變換的變換核為DCT-2。
需要說明的是,在本申請的實施例中,並不是任何一個當前塊的子分區都可以使用LFNST變換的。具體地,只有子分區同時滿足一定的預設條件時,才可以對子分區進行LFNST變換。其中,該預設條件可以包括:(a)子分區的寬度和高度均大於或等於4;(b)子分區的寬度和高度均小於或等於變換塊的最大尺寸;(c)子分區或當前所在編碼塊的預測模式為幀內預測模式;(d)子分區的一次變換在水平方向和垂直方向上均為二維正向一次變換(DCT-2),即一次變換核為DCT-2;(e)當子分區或當前塊所在編碼塊的幀內預測模式為非MIP模式或者子分區的預測模式為MIP模式且變換塊的寬度和高度均大於或等於16。也就是說,針對本申請實施例中的子分區,需要同時滿足上述的五個條件,才能確定子分區使用LFNST變換技術。
可見,與現有技術相比,本申請提出的變換方法,可以簡化ISP劃分的子分區在lfnstIdx取值等於0情況下確定一次變換核的方法。具體地,在本申請中,如果子分區不使用LFNST,編碼器不再根據子分區的尺寸對子分區使用的一次變換核進行確定,而是直接設定一次變換核,從而省去了透過子分區的尺寸選擇子分區一次變換核的處理流程。
步驟105、使用一次變換核,對殘差值進行變換處理。
在本申請的實施例中,當子分區使用一次變換時,編碼器在確定子分區使用的一次變換核之後,便可以使用一次變換核,對子分區的殘差值進行一次變換處理。
需要說明的是,在本申請的實施例中,編碼器所確定的一次變換核,可以表徵子分區進行一次變換的變換類型,其中,可以包括子分區進行一次變換時的水平變換類型和垂直變換類型。具體地,子分區進行一次變換的水平變換類型和垂直變換類型是相同的,即編碼器採用相同的一次變換核分別對子分區進行水平變換和垂直變換。
進一步地,在本申請的 實施例中,編碼器在使用一次變換核對子分區的殘差值進行一次變換處理之後,可以輸出一次變換後的變換係數矩陣。
圖15為變換方法的實現流程示意圖三,如圖15所示,編碼器進行變換處理的方法還可以包括以下步驟:
步驟106、當子分區不使用LFNST時,將LFNST索引序號的取值設置為指示子分區不使用LFNST。
步驟107、當子分區使用LFNST時,確定子分區使用的LFNST變換核,將LFNST索引序號的取值設置為指示子分區使用LFNST,並將LFNST索引序號寫入位元流中。
步驟108、將LFNST索引序號寫入位元流中。
也就是說,在本申請的實施例中,如果當前塊的子分區不使用LFNST,即子分區不進行二次變換,那麼編碼器可以將LFNST索引序號的取值設置為指示子分區不使用LFNST,然後將LFNST索引序號寫入位元流中。另一方面,在本申請中,如果當前塊的子分區使用LFNST,即子分區進行二次變換,那麼編碼器可以將LFNST索引序號的取值設置為指示子分區使用LFNST,然後將LFNST索引序號寫入位元流中。
需要說明的是,在本申請的實施例中,LFNST索引序號可以指示子分區是否使用二次變換LFNST,同時,還可以對使用二次變換時的類型進行指示,即指示子分區的LFNST變換核。
可以理解的是,在本申請的實施例中,可以將LFNST索引序號理解為一個表明是否使用LFNST的標誌位元。具體地,編碼器可以將變數lfnst_idx作為LFNST索引序號,從而可以透過對變數lfnst_idx取值的設置來實現LFNST索引序號的設置。
示例性的,在本申請中,如果子分區使用LFNST,那麼編碼器可以將LFNST索引序號的取值設置為指示子分區使用LFNST,具體地,編碼器可以將變數lfnst_idx的取值設置為1或2。
示例性的,在本申請中,如果子分區不使用LFNST,那麼編碼器可以將LFNST索引序號的取值設置為指示子分區不使用LFNST,具體地,編碼器可以將變數lfnst_idx的取值設置為0。
也就是說,在本申請的實施例中,針對LFNST索引序號(即lfnst_idx)的取值,當LFNST索引序號的取值等於0時,指示子分區將不使用LFNST;而當LFNST索引序號的取值大於0時,指示子分區將使用LFNST。
需要說明的是,在本申請的實施例中,編碼器在進行LFNST變換核的確定時,可以先確定出LFNST變換核候選集,然後從LFNST變換核候選集中來確定子分區使用的LFNST變換核,然後可以設置LFNST索引序號並寫入位元流中。這裡,LFNST的變換矩陣是透過訓練得到的多個固定係數矩陣,LFNST變換核候選集包括有2組變換矩陣(也可以稱之為LFNST變換核),當確定出LFNST變換核候選集之後,需要從LFNST變換核候選集中選取一組LFNST變換核,即確定子分區LFNST時所使用的變換矩陣。
進一步地,在本申請的實施例中,由於LFNST變換核候選集中包括有預設的兩個或多個變換核,這時候可以使用率失真優化的方式選擇子分區使用的變換核。具體地,可以針對每一種變換核分別使用率失真優化的方式計算率失真代價(Rate Distortion Cost,RDCost),然後選取率失真代價最小的變換核作為子分區使用的變換核。
也就是說,在編碼器側,可以透過RDCost選擇出一組LFNST變換核,並將LFNST索引序號(可以用lfnst_idx表示)寫入位元流中,傳輸到解碼器側。其中,當選擇LFNST變換核候選集中的第一組LFNST變換核(即第一組變換矩陣)時,將lfnst_idx設置為1;當選擇LFNST變換核候選集中的第二組LFNST變換核(即第二組變換矩陣)時,將lfnst_idx設置為2。
進一步地,在本申請的實施例中,編碼器在完成對LFNST索引序號的設置之後,便可以將LFNST索引序號寫入位元流中,以供解碼端解析。
在本申請的實施例中,進一步地,如果當前塊的子分區使用LFNST,那麼在使用一次變換核,對殘差值進行變換處理之後,編碼器還可以確定子分區使用的LFNST變換核,同時,可以將LFNST索引序號的取值設置為指示子分區使用LFNST,然後將LFNST索引序號寫入位元流中。
需要說明的是,在本申請的實施例中,編碼器在確定出子分區使用的LFNST變換核之後,便可以使用LFNST變換核,對子分區一次變換後的變換係數矩陣進行二次變換處理,得到LFNST變換係數矩陣,最後針對LFNST變換係數矩陣進行量化處理,將最終的量化值寫入影像位元流中。
圖16為變換方法的實現流程示意圖四,如圖16所示,在確定子分區的殘差值之前,即步驟103之前,編碼器進行變換處理的方法還可以包括以下步驟:
步驟109、確定當前塊的尺寸參數,並根據尺寸參數判斷當前塊是否使用ISP模式。
在本申請的實施例中,編碼器可以先確定出當前塊的尺寸參數,然後根據當前塊的尺寸參數判斷當前塊是否使用ISP模式。
可以理解的是,在本申請的實施例中,當前塊的尺寸參數可以包括當前塊的高度值和寬度值。
需要說明的是,在本申請中,由於在VVC中,亮度分量所支持的最大變換尺寸為64×64,色度分量所支持的最大變換尺寸為32×32。如果一個CB的尺寸超過限制,那麼該CB會自動進行水平或(和)垂直劃分以滿足對應方向上變換尺寸的要求。
示例性地,在本申請中,編碼器在確定出當前塊的尺寸參數之後,即確定出當前塊的高度值和寬度值之後,如果當前塊的尺寸參數為4x4,即當前塊的高度值和寬度值均等於4,那麼可以判定當前塊不使用ISP模式。
也就是說,在本申請中,對於尺寸參數為4x4以外的亮度塊,編碼器可以判定該亮度塊使用ISP模式。
步驟1010、當判定當前塊使用ISP模式時,確定當前塊的子分區。
在本申請的實施例中,編碼器在確定當前塊的尺寸參數,並根據尺寸參數判斷當前塊是否使用ISP模式之後,如果判定當前塊使用ISP模式,那麼編碼器可以先確定當前塊的子分區,同時,編碼器可以將ISP模式參數的取值設置為指示當前塊使用ISP模式,然後將ISP模式參數寫入位元流中。
進一步地,在本申請的實施例中,編碼器在確定當前塊使用ISP模式之後,便可以將當前塊劃分為多個子分區。具體地,在本申請中,根據當前塊的尺寸參數,編碼器可以將當前塊劃分為尺寸相同的2個子分區或4個子分區。
示例性的,在本申請中,如果當前塊的尺寸參數為8x4,那麼編碼器可以將當前塊劃分為尺寸相同的2個子分區。
示例性的,在本申請中,如果當前塊的尺寸參數為4x8,那麼編碼器可以將當前塊劃分為尺寸相同的2個子分區。
示例性的,在本申請中,如果當前塊的尺寸參數為Nx4(N>8),那麼編碼器可以將當前塊劃分為尺寸相同的4個子分區。
示例性的,在本申請中,如果當前塊的尺寸參數為4xN(N>8),那麼編碼器可以將當前塊劃分為尺寸相同的4個子分區。
可以理解的是,在本申請的實施例中,編碼器在對當前塊進行劃分時,既可以是水平劃分,也可以是垂直劃分。也就是說,編碼器可以將當前塊水平劃分為尺寸相同的多個子分區,也可以將當前塊垂直劃分為尺寸相同的多個子分區。
在本申請的實施例中,進一步地,編碼器在確定當前塊的子分區時,可以先確定當前塊的劃分類型,然後可以基於當前塊的尺寸參數和劃分類型獲得子分區。
需要說明的是,在本申請的實施例中,劃分類型可以包括水平劃分和垂直劃分。具體地,編碼器在基於當前塊的尺寸參數和劃分類型獲得子分區時,可以按照當前塊的高度值和寬度值對當前塊進行水平劃分或垂直劃分,從而可以獲得當前塊的多個子分區。
示例性的,在本申請中,當當前塊的尺寸參數為4x8,即寬度值等於4且高度值等於8,編碼器在對當前塊進行水平劃分後,獲得2個子分區,其中,每個子分區的尺寸參數為1x8。
示例性的,在本申請中,當當前塊的尺寸參數為4x16,即寬度值等於4且高度值等於16,編碼器在對當前塊進行垂直劃分後,獲得4個子分區,其中,每個子分區的尺寸參數為4x4。
進一步地,在本申請的實施例中,編碼器在判定當前塊使用ISP模式之後,還可以將ISP模式參數的取值設置為指示當前塊使用ISP模式,然後將ISP模式參數寫入至影像位元流中。
圖17為變換方法的實現流程示意圖五,如圖17所示,編碼器在確定當前塊的尺寸參數,並根據尺寸參數判斷當前塊是否使用ISP模式之後,即步驟109之後,編碼器進行變換處理的方法還可以包括以下步驟:
步驟1011、當判定當前塊不使用ISP模式時,將ISP模式參數的取值設置為指示當前塊不使用ISP模式,並將ISP模式參數寫入位元流中。
在本申請的實施例中,編碼器在確定當前塊的尺寸參數,並根據尺寸參數判斷當前塊是否使用ISP模式之後,如果判定當前塊不使用ISP模式,那麼編碼器可以將ISP模式參數的取值設置為指示當前塊不使用ISP模式,然後將ISP模式參數寫入位元流中。
可以理解的是,在本申請的實施例中,編碼器在確定當前塊的尺寸參數,並根據尺寸參數判斷當前塊是否使用ISP模式之後,如果判定當前塊不使用ISP模式,那麼編碼器可以將ISP模式參數的取值設置為指示當前塊不使用ISP模式,然後將ISP模式參數寫入至影像位元流中。
需要說明的是,在本申請的實施例中,ISP模式參數可以指示當前塊是否可以使用幀內子分區編碼模式,即指示當前塊是否可以使用ISP模式。
可以理解的是,在本申請的實施例中,可以將ISP模式參數理解為一個表明是否使用了ISP模式標誌位元。具體地,編碼器可以將變數intra_subpartitions_mode_flag作為ISP模式參數,從而可以透過對變數intra_subpartitions_mode_flag取值的設置來實現ISP模式參數的設置。
示例性的,在本申請中,如果當前塊使用ISP模式,那麼編碼器可以將ISP模式參數的取值設置為指示當前塊使用ISP模式,具體地,編碼器可以將變數intra_subpartitions_mode_flag的取值設置為1。
示例性的,在本申請中,如果當前塊不使用ISP模式,那麼編碼器可以將ISP模式參數的取值設置為指示當前塊不使用ISP模式,具體地,編碼器可以將變數intra_subpartitions_mode_flag的取值設置為0。
進一步地,在本申請的實施例中,編碼器在完成對ISP模式參數的設置之後,便可以將ISP模式參數寫入位元流中,以供解碼端解析。
本申請提出了一種變換方法,應用於編碼器中,編碼器確定當前塊的ISP模式參數;當ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值時,確定當前塊的子分區;確定子分區的殘差值;當子分區使用一次變換時,確定子分區使用的一次變換核;使用一次變換核,對殘差值進行變換處理。由此可見,在本申請的實施例中,對於ISP分區的變換,在當前塊劃分後的子分區不使用二次變換,僅使用一次變換時,子分區使用一次變換的一次變換核,不再由子分區的尺寸決定,即不再根據子分區的高度和寬度對一次變換核進行選擇,而是直接對一次變換核進行設置。從而可以簡化變換核的選擇過程,降低了變換過程的複雜程度,有效地提高了編解碼效率。
本申請的另一實施例提出了一種變換方法,應用於解碼器,圖18為變換方法的實現流程示意圖六,如圖18所示,解碼器進行變換處理的方法可以包括以下步驟:
步驟201、解析位元流,確定當前塊的ISP模式參數。
在本申請的實施中,解碼器可以在接收到影像的位元流之後,先解析位元流,從而確定當前塊對應的ISP模式參數。
需要說明的是,在本申請的實施中,ISP模式參數可以指示當前塊是否可以使用幀內子分區編碼模式,即指示當前塊是否可以使用ISP模式。
可以理解的是,在本申請的實施例中,可以將ISP模式參數理解為一個表明是否使用了ISP模式標誌位元。具體地,解碼器可以將變數intra_subpartitions_mode_flag作為ISP模式參數,從而可以透過對變數intra_subpartitions_mode_flag取值的設置來實現ISP模式參數的設置。
示例性的,在本申請中,如果當前塊使用ISP模式,那麼ISP模式參數的取值設置為指示當前塊使用ISP模式,具體地,可以將變數intra_subpartitions_mode_flag的取值設置為1。
示例性的,在本申請中,如果當前塊不使用ISP模式,那麼ISP模式參數的取值設置為指示當前塊不使用ISP模式,具體地,可以將變數intra_subpartitions_mode_flag的取值設置為0。
進一步地,在本申請的實施例中,在完成對ISP模式參數的設置之後,便可以將ISP模式參數寫入位元流中,傳輸至解碼器,從而可以使解碼器在解析位元流之後獲得ISP模式參數。
也就是說,在本申請的實施例中,在編碼器側,會針對當前塊進行預測編碼,在這過程中就可以確定出當前塊的ISP模式參數,並將相應的ISP模式參數寫入位元流,由編碼器傳輸到解碼器。
步驟202、當ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值時,確定當前塊的子分區。
在本申請的實施例中,解碼器在解析位元流,確定當前塊的ISP模式參數之後,如果ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值,那麼解碼器可以繼續對當前塊的子分區進行確定。
可以理解的是,在本申請的實施例中,解碼器在確定當前塊的子分區時,可以根據split flag確定當前塊的大小和位置,也就是說,從代碼的角度來說,將指標變數指向緩衝區中正確的起始位置、確定寫入儲存空間時的寬度和高度。
可以理解的是,在本申請的實施例中,由於ISP技術主要針對亮度解碼塊,因此,如果ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值,那麼當前塊為影像圖像中當前待進行亮度分量預測的解碼塊,即當前塊為亮度塊。
需要說明的是,在本申請的實施例中,在應用ISP技術時,限制解碼塊的最小尺寸為8x4和4x8,最大尺寸為64x64,且使用多參考行模式時禁用ISP。因此,在本申請中,如果ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值,那麼當前塊的尺寸參數需要滿足ISP模式的要求。
也就是說,在本申請中,只有在當前塊為亮度塊,且當前塊的尺寸參數滿足大小要求的條件下,當前塊才可以使用ISP模式。
可以理解的是,在本申請的實施例中,當前塊的尺寸參數可以包括當前塊的高度值和寬度值。
需要說明的是,在本申請的實施例中,解碼器在確定ISP模式參數指示當前塊使用ISP模式之後,便可以根據當前塊的尺寸參數確定當前塊的子分區。
進一步地,在本申請的實施例中,解碼器在確定當前塊使用ISP模式之後,便可以將當前塊劃分為多個子分區。具體地,在本申請中,根據當前塊的尺寸參數,解碼器可以將當前塊劃分為尺寸相同的2個子分區或4個子分區。
示例性的,在本申請中,如果當前塊的尺寸參數為8x4,那麼解碼器可以將當前塊劃分為尺寸相同的2個子分區。
示例性的,在本申請中,如果當前塊的尺寸參數為4x8,那麼解碼器可以將當前塊劃分為尺寸相同的2個子分區。
示例性的,在本申請中,如果當前塊的尺寸參數為Nx4(N>8),那麼解碼器可以將當前塊劃分為尺寸相同的4個子分區。
示例性的,在本申請中,如果當前塊的尺寸參數為4xN(N>8),那麼解碼器可以將當前塊劃分為尺寸相同的4個子分區。
可以理解的是,在本申請的實施例中,解碼器在對當前塊進行劃分時,既可以是水平劃分,也可以是垂直劃分。也就是說,解碼器可以將當前塊水平劃分為尺寸相同的多個子分區,也可以將當前塊垂直劃分為尺寸相同的多個子分區。
在本申請的實施例中,進一步地,解碼器在確定當前塊的子分區時,可以先確定當前塊的劃分類型,然後可以基於當前塊的尺寸參數和劃分類型獲得子分區。
需要說明的是,在本申請的實施例中,劃分類型可以包括水平劃分和垂直劃分。具體地,解碼器在基於當前塊的尺寸參數和劃分類型獲得子分區時,可以按照當前塊的高度值和寬度值對當前塊進行水平劃分或垂直劃分,從而可以獲得當前塊的多個子分區。
步驟203、解析位元流,確定子分區的變換係數矩陣。
在本申請的實施例中,解碼器在對位元流進行解析之後,還可以獲得子分區的變換係數矩陣。
需要說明的是,在本申請的實施例中,子分區的變換係數矩陣即為編碼器在對子分區的殘差值使用一次變換之後所輸出的。相應地,在解碼側,解碼器在對子分區使用一次變換時的輸入包括該子分區的變換係數矩陣。
進一步地,在本申請的實施例中,在解碼器側,除了變換係數矩陣d[x][y]以外,反向一次變換的輸入資料可以包括:當前亮度塊位置(xTbY,yTbY),當前塊的寬度nTbW,當前塊的高度nTbH,當前塊色度分量cIdx,以及當前解碼單元的預測模式predMode。其中,x=0,1,…,nTbW-1,y=0,1,…,nTbH-1。
相應地,在本申請中,反向一次變換的輸出資料可以包括:透過反向一次變換獲得的殘差係數res[x][y],其中,x=0,1,…,nTbW-1,y=0,1,…,nTbH-1。
進一步地,在本申請的實施例中,解碼器在解析影像的位元流之後,還可以獲得子分區的變換類型參數。
可以理解的是,在本申請的實施例中,變換類型參數可以指示子分區進行一次變換時所使用的一次變換核,即對子分區進行一次變換的變換類型進行指示。
進一步地,在本申請的實施例中,可以將變換類型參數理解為一個表明變換類型的標誌位元。具體地,解碼器可以透過對變數isp_trType的取值確定一次變換核。
需要說明的是,在本申請的實施例中,變數isp_trType的取值可以為0、1、2,其中,如果變數isp_trType的取值為0,則代表採用DCT-2作為一次變換核;如果變數isp_trType的取值為1,則代表採用DST-7作為一次變換核;如果變數isp_trType的取值為2,則代表採用DCT-8作為一次變換核。
可以理解的是,在本申請的實施例中,如果子分區使用一次變換,那麼解碼器解析位元流後便可以獲得子分區使用一次變換時的變換類型,從而可以確定出子分區使用的一次變換核。
步驟204、當子分區使用一次變換時,確定子分區使用的一次變換核。
在本申請的實施例中,當子分區使用一次變換時,解碼器可以確定子分區使用的一次變換核。
可以理解的是,在本申請的實施例中,如果子分區使用一次變換,那麼解碼器可以先對一次變換時的變換類型進行確定,即確定出子分區使用的一次變換核。
具體地,在數學上共有8種類型的DCT變換,而在HEVC變換編碼中只使用了DCT-2變換。進一步地,在VVC中提出了MTS技術,因此可以使用更多類型的變換。其中,對於一次變換,可選的變換核包括DCT-2、DCT-8以及DST-7。
可以理解的是,在本申請的實施例中,DCT-2變換核指的是基於DCT-2設計的整數變換的變換核或變換矩陣。類似的,DST-7變換核指的是基於DST-7設計的整數變換的變換核或變換矩陣;DCT-8變換核指的是基於DCT-8設計的整數變換的變換核或變換矩陣。
在本申請的實施例中,進一步地,圖19為變換方法的實現流程示意圖七,如圖19所示,當ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值時,確定當前塊的子分區之後,即步驟102之後,解碼器進行變換處理的方法還可以包括以下步驟:
步驟206、解析位元流,確定子分區的LFNST索引序號。
在本申請的實施例中,解碼器透過解析位元流,還可以獲得子分區的LFNST索引序號。
需要說明的是,在本申請的實施例中,LFNST索引序號可以指示子分區是否使用二次變換LFNST,同時,還可以對使用二次變換時的類型進行指示,即指示子分區的LFNST變換核。
可以理解的是,在本申請的實施例中,可以將LFNST索引序號理解為一個表明是否使用LFNST的標誌位元。具體地,解碼器可以將變數lfnst_idx作為LFNST索引序號,從而可以透過對變數lfnst_idx取值的設置來實現LFNST索引序號的設置。
示例性的,在本申請中,如果子分區使用LFNST,那麼解碼器可以將LFNST索引序號的取值設置為指示子分區使用LFNST,具體地,解碼器可以將變數lfnst_idx的取值設置為1或2。
示例性的,在本申請中,如果子分區不使用LFNST,那麼解碼器可以將LFNST索引序號的取值設置為指示子分區不使用LFNST,具體地,解碼器可以將變數lfnst_idx的取值設置為0。
需要說明的是,在本申請的實施例中,解碼器在進行LFNST變換核的確定時,可以先確定出LFNST變換核候選集,然後從LFNST變換核候選集中來確定子分區使用的LFNST變換核,然後可以設置LFNST索引序號並寫入位元流中。這裡,LFNST的變換矩陣是透過訓練得到的多個固定係數矩陣,LFNST變換核候選集包括有2組變換矩陣(也可以稱之為LFNST變換核),當確定出LFNST變換核候選集之後,需要從LFNST變換核候選集中選取一組LFNST變換核,即確定子分區LFNST時所使用的變換矩陣。
進一步地,在本申請的實施例中,由於LFNST變換核候選集中包括有預設的兩個或多個變換核,這時候可以使用率失真優化的方式選擇子分區使用的變換核。具體地,可以針對每一種變換核分別使用率失真優化的方式計算率失真代價(Rate Distortion Cost,RDCost),然後選取率失真代價最小的變換核作為子分區使用的變換核。
也就是說,在編碼器側,可以透過RDCost選擇出一組LFNST變換核,並將LFNST索引序號(可以用lfnst_idx表示)寫入位元流中,傳輸到解碼器側。其中,當選擇LFNST變換核候選集中的第一組LFNST變換核(即第一組變換矩陣)時,將lfnst_idx設置為1;當選擇LFNST變換核候選集中的第二組LFNST變換核(即第二組變換矩陣)時,將lfnst_idx設置為2。
進一步地,在本申請的實施例中,編碼器在完成對LFNST索引序號的設置之後,便可以將LFNST索引序號寫入位元流中,傳輸至解碼器,解碼器在解析位元流之後,獲得LFNST索引序號,並根據LFNST索引序號確定子分區是否使用LFNST,並在子分區使用LFNST時,確定子分區使用的LFNST變換核。
也就是說,在本申請的實施例中,解碼器在解析位元流之後,針對LFNST索引序號(即lfnst_idx)的取值,當LFNST索引序號的取值等於0時,解碼器可以確定LFNST索引序號指示子分區將不使用LFNST;當LFNST索引序號的取值等於1時,解碼器可以確定LFNST索引序號指示子分區將使用LFNST,且選擇LFNST變換核候選集中的第一組LFNST變換核;當LFNST索引序號的取值等於2時,解碼器可以確定LFNST索引序號指示子分區將使用LFNST,且選擇LFNST變換核候選集中的第二組LFNST變換核。
進一步地,在本申請的實施例中,解碼器確定子分區使用的一次變換核的方法可以包括以下步驟:
步驟204a、將DCT-2確定為一次變換核。
在本申請的實施例中,解碼器在對子分區使用一次變換時的變換類型進行確定時,可以直接將DCT-2確定為一次變換核。
也就是說,在本申請中,無論子分區是否使用LFNST,子分區使用的一次變換核均為DCT-2。
步驟204b、當LFNST索引序號指示子分區不使用LFNST時,將預設變換核確定為一次變換核;當LFNST索引序號指示子分區使用LFNST時,將DCT-2確定為一次變換核。
在本申請的實施例中,解碼器在對子分區使用一次變換時的變換類型進行確定時,如果LFNST索引序號指示子分區不使用LFNST,那麼解碼器可以將預設變換核確定為一次變換核;如果LFNST索引序號指示子分區使用LFNST,那麼解碼器可以將DCT-2確定為一次變換核。其中,預設變換核為DCT-2、DST-7或DCT-8中的任意一個。
也就是說,在本申請中,子分區使用LFNST時的一次變換核和子分區不使用LFNST的一次變換核可以不相同。具體地,在子分區使用LFNST時,解碼器可以將子分區的一次變換核確定為DCT-2;在子分區不使用LFNST時,解碼器可以將DCT-2、DST-7或DCT-8中的任意一個確定為子分區的一次變換核。
步驟204c、當LFNST索引序號指示子分區不使用LFNST時,將DCT-2確定為一次變換核;當LFNST索引序號指示子分區使用LFNST時,將預設變換核確定為一次變換核。
在本申請的實施例中,解碼器在對子分區使用一次變換時的變換類型進行確定時,如果LFNST索引序號指示子分區使用LFNST,那麼解碼器可以將預設變換核確定為一次變換核;如果LFNST索引序號指示子分區不使用LFNST,那麼解碼器可以將DCT-2確定為一次變換核。其中,預設變換核為DCT-2、DST-7或DCT-8中的任意一個。
也就是說,在本申請中,子分區使用LFNST時的一次變換核和子分區不使用LFNST的一次變換核可以不相同。具體地,在子分區不使用LFNST時,解碼器可以將子分區的一次變換核確定為DCT-2;在子分區使用LFNST時,解碼器可以將DCT-2、DST-7或DCT-8中的任意一個確定為子分區的一次變換核。
步驟204d、若位元流中以一個語法單元指示目標變換核,則將目標變換核確定為一次變換核。
在本申請的實施例中,解碼器在對子分區使用一次變換時的變換類型進行確定時,如果位元流中以一個語法單元指示目標變換核,那麼解碼器可以將目標變換核確定為一次變換核。其中,目標變換核為DCT-2、DST-7或DCT-8中的任意一個。
也就是說,在本申請中,無論子分區是否使用LFNST,子分區使用的一次變換核均為目標變換核。即對於子分區使用LFNST和不使用LFNST這兩種不同情況,解碼器可以設置相同的一次變換核。
進一步地,在本申請的實施例中,解碼器在將目標變換核確定為一次變換核以後,需要在在位元流中以一個語法單元syntax element指示一次變換的變換類型,即利用語法單元對目標變換核進行指示。
需要說明的是,在本申請的實施例中,在編碼側,在位元流中,指示目標變換核的語法單元包含在以下位元流中的一個或多個資料單元中:包含當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集。
相應地,在解碼側,解碼器解析位元流中的、包含當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集中的一個或多個資料單元,獲得語法單元的取值,以確定目標變換核。
步驟204e、若位元流中以兩個語法單元分別指示第一變換核和第二變換核,則當LFNST索引序號指示子分區不使用LFNST時,將第一變換核確定為一次變換核;當LFNST索引序號指示子分區使用LFNST時,將第二變換核確定為一次變換核。
在本申請的實施例中,如果位元流中以兩個語法單元分別指示第一變換核和第二變換核,那麼解碼器在對子分區使用一次變換時的變換類型進行確定時,如果LFNST索引序號指示子分區不使用LFNST,那麼解碼器可以將第一變換核確定為一次變換核;如果LFNST索引序號指示子分區使用LFNST,那麼解碼器可以將第二變換核確定為一次變換核。其中,第一變換核和第二變換核為DCT-2、DST-7或DCT-8中的任意兩個。
也就是說,在本申請中,對於子分區使用LFNST和不使用LFNST這兩種情況,解碼器可以設置不同的一次變換核,以使子分區子不使用LFNST時,使用第一變換核進行一次變換,在使用LFNST時,使用第二變換核進行一次變換。
進一步地,在本申請的實施例中,對於子分區使用LFNST和不使用LFNST這兩種情況,編碼器在將第一變換核或第二變換核確定為一次變換核以後,需要在位元流中以兩個語法單元syntax element分別指示一次變換的變換類型,即利用一個語法單元對第一變換核進行指示,同時,利用另一個語法單元對第二變換核進行指示。
需要說明的是,在本申請的實施例中,在編碼側,在位元流中,指示第一變換核和第二變換核的語法單元包含在以下位元流中的一個或多個資料單元中:包含當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集。
相應地,在解碼側,解碼器解析位元流中的、包含當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集中的一個或多個資料單元,獲得語法單元的取值,以確定第一變換核和第二變換核。
由此可見,在本申請的實施例中,解碼器在確定子分區進行一次變換時使用的一次變換核時,無論子分區是否使用LFNST,解碼器均可以透過多種方式進行一次變換核的確定。
可以理解的是,在本申請的實施例中,無論子分區是否使用LFNST,解碼器都可以直接將DCT-2確定為子分區進行一次變化時所使用的一次變換核。也就是說,對於當前塊的任意一個子分區,在該子分區不使用LFNST或使用LFNST時,該子分區一次變換時所使用的一次變換核均為DCT-2。
可見,在本申請中,解碼器既不需要再根據子分區的的尺寸進行一次變換核的選擇,也不需要根據子分區是否使用LFNST對一次變換核進行區分,而是可以直接將一次變換核設置為DCT-2。
示例性的,在本申請中,當lfnst_idx ==0時,直接使用DCT-2;當lfnst_idx ==1or2時,直接使用DCT-2。
可以理解的是,在本申請的實施例中,如果子分區不使用LFNST,那麼解碼器可以直接將預設變換核確定為子分區進行一次變化時所使用的一次變換核;如果子分區使用LFNST,那麼解碼器可以將DCT-2確定為子分區進行一次變化時所使用的一次變換核。
需要說明的是,在本申請的實施例中,預設變換核為解碼器預先設置的一個固定類型,具體地,預設變換核可以為DCT-2、DST-7或DCT-8中的任意一個。
可見,在本申請中,在當前塊的子分區不使用LFNST的情況下,解碼器不需要再根據子分區的的尺寸進行一次變換核的選擇,而是可以直接將一次變換核設置為預設變換核,同時,在子分區使用LFNST的情況下,將DCT-2設置為確定一次變換核。
示例性的,在本申請中,當lfnst_idx ==0時,直接使用DST-7;當lfnst_idx ==1or2時,直接使用DCT-2。
可以理解的是,在本申請的實施例中,如果子分區使用LFNST,那麼解碼器可以直接將預設變換核確定為子分區進行一次變化時所使用的一次變換核;如果子分區不使用LFNST,那麼解碼器可以將DCT-2確定為子分區進行一次變化時所使用的一次變換核。
需要說明的是,在本申請的實施例中,預設變換核為解碼器預先設置的一個固定類型,具體地,預設變換核可以為DCT-2、DST-7或DCT-8中的任意一個。
可見,在本申請中,在當前塊的子分區不使用LFNST的情況下,解碼器不需要再根據子分區的的尺寸進行一次變換核的選擇,而是可以直接將DCT-2設置為確定一次變換核,同時,在子分區使用LFNST的情況下,將一次變換核設置為預設變換核。
示例性的,在本申請中,當lfnst_idx ==0時,直接使用DCT-2;當lfnst_idx ==1or2時,直接使用DST-7。
可以理解的是,在本申請的實施例中,無論子分區是否使用LFNST,解碼器都可以直接在位元流中以一個語法單元syntax element指示子分區進行一次變化時所使用的一次變換核。也就是說,對於當前塊的任意一個子分區,在該子分區不使用LFNST或使用LFNST時,該子分區一次變換時所使用的一次變換核均為一個相同的目標變換核。其中,目標變換核可以為DCT-2、DST-7或DCT-8中的任意一個。
可見,在本申請中,解碼器既不需要再根據子分區的的尺寸進行一次變換核的選擇,也不需要根據子分區是否使用LFNST對一次變換核進行區分,而是可以直接將一次變換核透過位元流中的語法單元進行指示。
示例性的,在本申請中,當lfnst_idx ==0時,使用syntax element指示的目標變換核;當lfnst_idx ==1or2時,使用syntax element指示的目標變換核。
可以理解的是,在本申請的實施例中,如果子分區使用LFNST,那麼解碼器可以在位元流中以一個語法單元syntax element指示子分區進行一次變化時所使用的一次變換核;如果子分區不使用LFNST,那麼解碼器可以在位元流中以另一個語法單元syntax element指示子分區進行一次變化時所使用的一次變換核。
具體地,對於子分區使用LFNST和不使用LFNST這兩種不同的情況,解碼器可以在位元流中以兩個不同的語法單元分別對第一目標核和第二目標核進行指示。
需要說明的是,在本申請的實施例中,第一目標核和第二目標核可以為DCT-2、DST-7或DCT-8中的任意兩個。
可見,在本申請中,在當前塊的子分區不使用LFNST的情況下,解碼器不需要再根據子分區的的尺寸進行一次變換核的選擇,而是可以直接將第一變換核透過位元流中的一個語法單元進行指示,同時,在子分區使用LFNST的情況下,可以將第二變換核透過位元流中的另一個語法單元進行指示。
示例性的,在本申請中,當lfnst_idx ==0時,使用語法單元s0指示的第一變換核;當lfnst_idx ==1or2時,使用語法單元s1指示的第二變換核。
需要說明的是,在本申請的實施例中,解碼器在位元流中signal syntax element的方式可以包括:塊層、slice層、圖像頭、參數集(序列層參數集、圖像層參數集,APS等),以及不同資料單元中signal的參數之間的override關係,例如塊層可以override slice層等,參數集之間的override等。
進一步地,在本申請的實施例中,從編碼器的角度,即編碼側,一次變換核是可以自我調整選擇的,然後將該一次變換核在塊層的一個或者多個資料單元中使用相應的語法單元syntax element進行指示並寫入位元流;從解碼器的角度,即解碼側,解析位元流中塊層的一個或多個資料單元的語法單元syntax element,從而可以確定所使用的一次變換核。
可見,在本申請中,在當前塊的子分區不使用LFNST的情況下,解碼器不需要再根據子分區的尺寸進行一次變換核的選擇,而是可以直接針對子分區進行一次變換核的適應性設置。
進一步地,在本申請的實施例中,解碼器可以透過變數isp_trType的取值的來確定一次變換核。
需要說明的是,在本申請的實施例中,變數isp_trType的取值可以為0、1、2,其中,如果變數isp_trType的取值為0,則代表採用DCT-2作為一次變換核;如果變數isp_trType的取值為1,則代表採用DST-7作為一次變換核;如果變數isp_trType的取值為2,則代表採用DCT-8作為一次變換核。
由此可見,本申請實施例提出的變換方法,對於ISP分區的變換,在當前塊劃分後的子分區不使用二次變換,僅使用一次變換時,子分區使用一次變換的變換類型,即一次變換核,不再由子分區的尺寸決定,即不再根據子分區的高度和寬度對一次變換核進行選擇,而是直接對一次變換核進行設置。
可見,與現有技術相比,本申請提出的變換方法,可以簡化ISP劃分的子分區在lfnstIdx取值等於0情況下確定一次變換核的方法。具體地,在本申請中,如果子分區不使用LFNST,解碼器不再根據子分區的尺寸對子分區使用的一次變換核進行確定,而是直接設定一次變換核,從而省去了透過子分區的尺寸選擇子分區一次變換核的處理流程。
步驟205、使用一次變換核,對變換係數矩陣進行變換處理。
在本申請的實施例中,解碼器在確定子分區使用的一次變換核之後,便可以使用一次變換核,對變換係數矩陣進行變換處理。
可以理解的是,在本申請的實施例中,解碼器在使用一次變換核,對變換係數矩陣進行變換處理時,可以利用一次變換核對變換係數矩陣進行反向一次變換,從而可以獲得子分區的殘差值。
需要說明的是,在本申請的實施例中,解碼器所確定的一次變換核,可以表徵子分區進行反向一次變換的變換類型,其中,可以包括子分區進行反向一次變換時的水平變換類型和垂直變換類型。具體地,子分區進行反向一次變換的水平變換類型和垂直變換類型是相同的,即解碼器採用相同的一次變換核分別對子分區進行水平變換和垂直變換。
進一步地,在本申請的 實施例中,解碼器在使用一次變換核對子分區的殘差值進行反向一次變換處理之後,可以輸出一次變換後的子分區的殘差係數。
可以理解的是,在本申請的實施例中,透過上述步驟201至步驟206所提出的變換方法,解碼器在進行變換處理時,透過解析位元流,可以先配置核心參數,然後再進行變換類型的選擇,進而可以基於變換類型進行反向一次變換,以完成一次變換處理。其中,在進行變換類型的選擇時,如果子分區不使用LFNST,那麼一次變換的變換類型,即一次變換核,不再基於子分區的尺寸進行選擇,而是直接對一次變換核進行適用性的確定。
具體地,在本申請中,反向一次變換的輸入包括:當前亮度塊位置(xTbY,yTbY),當前塊的寬度nTbW,當前塊的高度nTbH,當前塊色度分量cIdx,當前解碼單元的預測模式predMode以及經過反向二次變換後掃描得到的反向一次變換係數矩陣d[x][y]。其中,x=0,1,…,nTbW-1,y=0,1,…,nTbH-1。
在配置核心參數時,ISP由變數intra_subpartitions_mode_flag[x0][y0]決定是否使用ISP模式。具體地,如果intra_subpartitions_mode_flag[x0][y0]為1,便可以確定使用ISP模式;如果intra_subpartitions_mode_flag[x0][y0]等於0,便可以確定不使用ISP模式,則表示當前解碼單元未進行劃分。
具體地,ISP可以根據形狀進行水平或者垂直劃分,變數IntraSubPartitionsSplitType指定當前亮度解碼塊的劃分類型,其中,變數IntraSubPartitionsSplitType為0時,表徵當前解碼塊未進行劃分,即ISP_NO_SPLIT;變數IntraSubPartitionsSplitType為1時,表徵對當前解碼塊進行水平劃分,即ISP_HOR_SPLIT;變數IntraSubPartitionsSplitType為2時,表徵對當前解碼塊進行垂直劃分,即ISP_VER_SPLIT。
由於ISP根據當前解碼塊的尺寸可以將當前解碼塊劃分為2個或4個子分區,因此可以利用變數NumIntraSubPartitions指定當前解碼塊劃分的子分區的數量。在推導NumIntraSubPartitions時,具體地,
如果IntraSubPartitionsSplitType等於ISP_NO_SPLIT,則NumIntraSubPartitions設置為等於1;
否則,如果滿足以下條件之一,則將NumIntraSubPartitions設置為等於2:
nTbW等於4,nTbH等於8;
nTbW等於8,nTbW等於4。
否則,將NumIntraSubPartitions設置為等於4。
進一步地,隱性選擇變數implicitMtsEnabled推導如下:
如果sps_mts_enabled_flag等於1並且下列條件中的一個或者多個成立,則implicitMtsEnabled設置等於1:
cu_sbt_flag等於1且Max(nTbW,nTbH)小於等於32;
sps_explicit_mts_intra_enabled_flag等於0且CuPredMode[0][xTbY][yTbY]等於MODE_INTRA且lfnst_idx[x0][y0]等於0且intra_mip_flag[x0][y0]等於0。
可見,現有技術中,在進行變數implicitMtsEnabled的推導時,如果IntraSubPartitionsSplitType不等於ISP_NO_SPLIT,則可以將變數implicitMtsEnabled的取值設置等於1,而在本申請中,推導變數implicitMtsEnabled的取值時不再需要對變數IntraSubPartitionsSplitType的取值進行參考。
進一步地,變數非零係數塊尺寸,即非零寬度係數nonZeroW和非零高度係數nonZeroH推導如上述公式(1)至(4)。
其中,變數ApplyLfnstFlag推導如上述公式(5)和(6)。
進一步地,在選擇變換類型時,變數trTypeHor表示水平變換類型,變數trTypeVer表示垂直變換類型,trTypeHor和trTypeVer的推導如下:
以下任意條件滿足則trTypeHor和trTypeVer都設置為0:
cIdx大於0;
IntraSubPartitionsSplitType不等於ISP_NO_SPLIT;
否則,如果變數implicitMtsEnabled等於1,則:
如果cu_sbt_flag等於1,則trTypeHor和trTypeVer由表5中cu_sbt_horizontal_flag和cu_sbt_pos_flag決定;
否則(cu_sbt_flag等於0),trTypeHor和trTypeVer推導上述公式(7)和(8);
否則,trTypeHor和trTypeVer由表4中的mts_idx.決定。
可見,現有技術中,在進行變數trTypeHor和trTypeVer的推導時,在IntraSubPartitionsSplitType不等於ISP_NO_SPLIT且lfnst_idx不等於0的情況下,會將trTypeHor和trTypeVer都設置為0;在將變數implicitMtsEnabled的取值等於1的情況下,如果cu_sbt_flag等於1,則trTypeHor和trTypeVer由表5中cu_sbt_horizontal_flag和cu_sbt_pos_flag決定;否則(cu_sbt_flag等於0),trTypeHor和trTypeVer推導上述公式(7)和(8);否則,trTypeHor和trTypeVer由表4中的mts_idx.決定。而在本申請中,一方面,推導變數implicitMtsEnabled時不再對變數IntraSubPartitionsSplitType的取值進行參考,即在IntraSubPartitionsSplitType不等於ISP_NO_SPLIT的情況下變數implicitMtsEnabled的取值並不為1,進而在IntraSubPartitionsSplitType不等於ISP_NO_SPLIT的情況下不再需要根據表4、表5以及公式(7)和(8)進行變數trTypeHor和trTypeVer的推導;另一方面,在將trTypeHor和trTypeVer都設置為0的條件中,不再需要對lfnst_idx不等於0的情況進行參考。
可以理解的是,在本申請的實施例中,如果子分區使用ISP模式,那麼在子分區不使用LFNST的情況下,不再根據子分區的尺寸對子分區使用的一次變換核進行確定,而是直接設定與子分區相適應的一次變換核,從而省去了透過子分區的尺寸選擇子分區一次變換核的處理流程。
進一步地,在進行反向一次變換時,可以一次對子分區依次進行一維垂直變換、計算中間係數值、一維水平變換以及獲取殘差係數這幾個變換過程。
具體地,對於一維垂直變換,如果nTbH大於1,則調用下述的一維反向一次變換過程,其輸入為經過反向二次變換後得到的反向一次變換係數d[x][y],x =0……nonZeroW−1,y=0……nonZeroH−1,變換塊高度nTbH和非零高度係數nonZeroH,垂直變換類型trTypeVer;輸出為e[x][y],x =0……nonZeroW −1,y=0……nonZeroH−1。
具體地,在計算中間係數值時,如果nTbH和nTbW均大於1,中間樣本值g[x][y],x =0……nonZeroW −1,y=0……nonZeroH−1匯出如上述公式(9)。
具體地,對於一維水平變換,如果nTbW大於1,調用下述的一維反向一次變換過程,其輸入為中間樣本值g[x][y],x =0……nonZeroW−1,y=0……nonZeroH−1,變換塊寬度nTbW和非零寬度係數nonZeroW,水平變換類型trTypeHor;輸出為r[x][y],x =0……nonZeroW −1,y=0……nonZeroH−1。
如果nTbW等於1,則r[x][y]設置等於e[x][y],x =0……nonZeroW −1,y=0……nonZeroH−1
具體地,在獲取殘差係數時,殘差係數矩陣res[x][y],x =0……nonZeroW −1,y=0……nonZeroH−1推導如上述公式(10)和(11)。
具體地,對於一維反向一次變換過程,該過程主要是進行一維反向一次變換,其輸入nTbS表示變換係數的長度,nonZeroS表示非零係數的長度,x[j],j=0……nonZeroS表示未進行一維反向一次變換的係數,trType表示變換類型;輸出是經過一維反向一次變換的係數y[i],i=0……nonZeroS。
首先根據變換係數長度nTbS和變換類型trType獲得變換矩陣transMatrix,然後根據trType計算y[i],i=0……nonZeroS:
如果trType等於0,則計算方法如上述公式(12);否則(trType等於1或2),計算方法如上述公式(13)。
在本申請的實施例中,解碼器在確定子分區使用的LFNST變換核之後,即解碼器透過解析位元流,獲得LFNST索引序號(lfnst_idx)的取值;然後可以根據lfnst_idx的取值,從LFNST變換核候選集中選擇出lfnst_idx所指示的變換矩陣(變換核)。例如,當lfnst_idx為1時,解碼過程中可以使用第一組變換矩陣作為LFNST變換核;當lfnst_idx為2時,解碼過程中可以使用第二組變換矩陣作為LFNST變換核。
本申請提出了一種變換方法,應用於解碼器,解碼器解析位元流,確定當前塊的ISP模式參數;當ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值時,確定當前塊的子分區;解析位元流,確定子分區的變換係數矩陣;確定子分區使用的一次變換核;使用一次變換核,對變換係數矩陣進行變換處理。由此可見,在本申請的實施例中,對於ISP分區的變換,在當前塊劃分後的子分區不使用二次變換,僅使用一次變換時,子分區使用一次變換的一次變換核,不再由子分區的尺寸決定,即不再根據子分區的高度和寬度對一次變換核進行選擇,而是直接對一次變換核進行設置。從而可以簡化變換核的選擇過程,降低了變換過程的複雜程度,有效地提高了編解碼效率。
基於上述實施例,在本申請的再一實施例中,圖20為編碼器的組成結構示意圖一,如圖20所示,本申請實施例提出的編碼器300可以包括第一確定部分301,第一變換部分302,設置部分303,
所述第一確定部分301,配置為確定當前塊的ISP模式參數;以及當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區;以及確定所述子分區的殘差值;以及當所述子分區使用一次變換時,確定所述子分區使用的一次變換核;
所述第一變換部分302,配置為使用所述一次變換核,對所述殘差值進行變換處理。
進一步地,在本申請的實施例中,所述第一確定部分301,具體配置為確定所述當前塊的劃分類型;基於所述當前塊的尺寸參數和所述劃分類型獲得所述子分區。
進一步地,在本申請的實施例中,所述尺寸參數包括寬度值和高度值,所述劃分類型包括水平劃分和垂直劃分,所述第一確定部分301,還具體配置為當所述寬度值等於4且高度值等於8,或者,所述寬度值等於8且高度值等於4時,所述當前塊水平劃分或垂直劃分後獲得2個子分區;當所述寬度值等於4且高度值大於8,或者,所述寬度值大於8且高度值等於4時,所述當前塊水平劃分或垂直劃分後獲得4個子分區。
進一步地,在本申請的實施例中,所述第一確定部分301,還具體配置為確定所述子分區的幀內預測值;計算所述子分區的真實值與所述幀內預測值之間的所述殘差值。
進一步地,在本申請的實施例中,所述第一確定部分301,還具體配置為將DCT-2確定為所述一次變換核。
進一步地,在本申請的實施例中,所述第一確定部分301,還具體配置為當所述子分區不使用LFNST時,將預設變換核確定為所述一次變換核;其中,所述預設變換核為DCT-2、DST-7或DCT-8中的任意一個;當所述子分區使用LFNST時,將DCT-2確定為所述一次變換核。
進一步地,在本申請的實施例中,所述第一確定部分301,還具體配置為當所述子分區不使用LFNST時,將DCT-2確定為所述一次變換核;當所述子分區使用LFNST時,將預設變換核確定為所述一次變換核;其中,所述預設變換核為DCT-2、DST-7或DCT-8中的任意一個。
進一步地,在本申請的實施例中,所述第一確定部分301,還具體配置為將目標變換核確定為所述一次變換核;其中,所述目標變換核為DCT-2、DST-7或DCT-8中的任意一個;相應地,在位元流中以一個語法單元指示所述目標變換核。
進一步地,在本申請的實施例中,在所述位元流中,所述語法單元包含在以下所述位元流中的一個或多個資料單元中:包含所述當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集。
進一步地,在本申請的實施例中,所述第一確定部分301,還具體配置為當所述子分區不使用LFNST時,將第一變換核確定為所述一次變換核;當所述子分區使用LFNST時,將第二變換核確定為所述一次變換核;其中,所述第一變換核和所述第二變換核為DCT-2、DST-7或DCT-8中的任意兩個;相應地,在位元流中以兩個語法單元分別指示所述第一變換核和所述第二變換核。
進一步地,在本申請的實施例中,在所述位元流中,所述語法單元包含在以下所述位元流中的一個或多個資料單元中:包含所述當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集。
進一步地,在本申請的實施例中,所述設置部分303,配置為當所述子分區不使用LFNST時,將LFNST索引序號的取值設置為指示所述子分區不使用LFNST;將所述LFNST索引序號寫入位元流中。
進一步地,在本申請的實施例中,所述設置部分303,還配置為當所述子分區使用LFNST時,確定所述子分區使用的LFNST變換核,將LFNST索引序號的取值設置為指示所述子分區使用LFNST;將所述LFNST索引序號寫入位元流中。
圖21為編碼器的組成結構示意圖二,如圖21所示,本申請實施例提出的編碼器300還可以包括第一處理器304、儲存有第一處理器304可執行指令的第一記憶體305、第一通訊介面306,和用於連接第一處理器304、第一記憶體305以及第一通訊介面306的第一匯流排307。
進一步地,在本申請的實施例中,上述第一處理器304,用於確定當前塊的ISP模式參數;當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區;確定所述子分區的殘差值;當所述子分區使用一次變換時,確定所述子分區使用的一次變換核;使用所述一次變換核,對所述殘差值進行變換處理。
集成的單元如果以軟體功能模組的形式實現並非作為獨立的產品進行銷售或使用時,可以儲存在一個電腦可讀取儲存媒介中,基於這樣的理解,本實施例的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟體產品的形式體現出來,該電腦軟體產品儲存在一個儲存媒介中,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)或processor(處理器)執行本實施例方法的全部或部分步驟。而前述的儲存媒介包括:隨身碟、行動硬碟、唯讀記憶體(Read Only Memory,ROM)、隨機存取記憶體(Random Access Memory,RAM)、磁碟或者光碟等各種可以儲存程式碼的媒介。
本申請實施例提供了一種編碼器,對於ISP分區的變換,在當前塊劃分後的子分區不使用二次變換,僅使用一次變換時,子分區使用一次變換的一次變換核,不再由子分區的尺寸決定,即不再根據子分區的高度和寬度對一次變換核進行選擇,而是直接對一次變換核進行設置。從而可以簡化變換核的選擇過程,降低了變換過程的複雜程度,有效地提高了編解碼效率。
圖22為解碼器的組成結構示意圖一,如圖22所示,本申請實施例提出的解碼器400可以包括解析部分401,第二確定部分402,第二變換部分403,
所述解析部分401,配置為解析位元流,確定當前塊的ISP模式參數;
所述第二確定部分402,配置為當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區;
所述解析部分401,還配置為解析位元流,確定所述子分區的變換係數矩陣;
所述第二確定部分402,還配置為確定所述子分區使用的一次變換核;
所述第二變換部分403,配置為使用所述一次變換核,對所述變換係數矩陣進行變換處理。
進一步地,在本申請的實施例中,所述第二確定部分402,具體配置為確定所述當前塊的尺寸參數和劃分類型;基於所述當前塊的尺寸參數和所述劃分類型獲得所述子分區。
進一步地,在本申請的實施例中,所述尺寸參數包括寬度值和高度值,所述劃分類型包括水平劃分和垂直劃分,所述第二確定部分402,還具體配置為當所述寬度值等於4且高度值等於8,或者,所述寬度值等於8且高度值等於4時,所述當前塊水平劃分或垂直劃分後獲得2個子分區;當所述寬度值等於4且高度值大於8,或者,所述寬度值大於8且高度值等於4時,所述當前塊水平劃分或垂直劃分後獲得4個子分區。
進一步地,在本申請的實施例中,所述解析部分401,還配置為當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區之後,解析位元流,確定所述子分區的LFNST索引序號。
進一步地,在本申請的實施例中,所述第二確定部分402,還具體配置為將DCT-2確定為所述一次變換核。
進一步地,在本申請的實施例中,所述第二確定部分402,還具體配置為當所述LFNST索引序號指示所述子分區不使用LFNST時,將預設變換核確定為所述一次變換核;其中,所述預設變換核為DCT-2、DST-7或DCT-8中的任意一個;當所述LFNST索引序號指示所述子分區使用LFNST時,將DCT-2確定為所述一次變換核。
進一步地,在本申請的實施例中,所述第二確定部分402,還具體配置為當所述LFNST索引序號指示所述子分區不使用LFNST時,將DCT-2確定為所述一次變換核;當所述LFNST索引序號指示所述子分區使用LFNST時,將預設變換核確定為所述一次變換核;其中,所述預設變換核為DCT-2、DST-7或DCT-8中的任意一個。
進一步地,在本申請的實施例中,所述第二確定部分402,還具體配置為若位元流中以一個語法單元指示目標變換核,則將所述目標變換核確定為所述一次變換核;其中,所述目標變換核為DCT-2、DST-7或DCT-8中的任意一個。
進一步地,在本申請的實施例中,解析位元流中的、包含所述當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集中的一個或多個資料單元,獲得所述語法單元的取值,以確定所述目標變換核。
進一步地,在本申請的實施例中,所述第二確定部分402,還具體配置為若位元流中以兩個語法單元分別指示第一變換核和第二變換核,則當所述LFNST索引序號指示所述子分區不使用LFNST時,將所述第一變換核確定為所述一次變換核;當所述LFNST索引序號指示所述子分區使用LFNST時,將所述第二變換核確定為所述一次變換核;其中,所述第一變換核和所述第二變換核為DCT-2、DST-7或DCT-8中的任意兩個。
進一步地,在本申請的實施例中,解析位元流中的、包含所述當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集中的一個或多個資料單元,獲得所述語法單元的取值,以確定所述第一變換核和所述第二變換核。
進一步地,在本申請的實施例中,所述第二變換部分403,具體配置為利用所述一次變換核對所述變換係數矩陣進行反向一次變換,獲得所述子分區的殘差值。
圖23為解碼器的組成結構示意圖二,如圖23所示,本申請實施例提出的解碼器400還可以包括第二處理器404、儲存有第二處理器404可執行指令的第二記憶體405、第二通訊介面406,和用於連接第二處理器404、第二記憶體405以及第二通訊介面406的第二匯流排407。
進一步地,在本申請的實施例中,上述第二處理器404,用於解析位元流,確定當前塊的ISP模式參數;當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區;解析位元流,確定所述子分區的變換係數矩陣;當所述子分區使用一次變換時,確定所述子分區使用的一次變換核;使用所述一次變換核,對所述變換係數矩陣進行變換處理。
集成的單元如果以軟體功能模組的形式實現並非作為獨立的產品進行銷售或使用時,可以儲存在一個電腦可讀取儲存媒介中,基於這樣的理解,本實施例的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟體產品的形式體現出來,該電腦軟體產品儲存在一個儲存媒介中,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)或processor(處理器)執行本實施例方法的全部或部分步驟。而前述的儲存媒介包括:隨身碟、行動硬碟、唯讀記憶體(Read Only Memory,ROM)、隨機存取記憶體(Random Access Memory,RAM)、磁碟或者光碟等各種可以儲存程式碼的媒介。
本申請實施例提供了一種解碼器,對於ISP分區的變換,在當前塊劃分後的子分區不使用二次變換,僅使用一次變換時,子分區使用一次變換的一次變換核,不再由子分區的尺寸決定,即不再根據子分區的高度和寬度對一次變換核進行選擇,而是直接對一次變換核進行設置。從而可以簡化變換核的選擇過程,降低了變換過程的複雜程度,有效地提高了編解碼效率。
本申請實施例提供電腦可讀儲存媒介和電腦可讀儲存媒介,其上儲存有程式,該程式被處理器執行時實現如上述實施例所述的方法。
具體來講,本實施例中的一種變換方法對應的程式指令可以被儲存在光碟,硬碟,隨身碟等儲存媒介上,當儲存媒介中的與一種變換方法對應的程式指令被一電子設備讀取或被執行時,包括如下步驟:
確定當前塊的ISP模式參數;
當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區;
確定所述子分區的殘差值;
當所述子分區使用一次變換時,確定所述子分區使用的一次變換核;
使用所述一次變換核,對所述殘差值進行變換處理。
具體來講,本實施例中的一種變換方法對應的程式指令可以被儲存在光碟,硬碟,隨身碟等儲存媒介上,當儲存媒介中的與一種變換方法對應的程式指令被一電子設備讀取或被執行時,包括如下步驟:
解析位元流,確定當前塊的ISP模式參數;
當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區;
解析位元流,確定所述子分區的變換係數矩陣;
當所述子分區使用一次變換時,確定所述子分區使用的一次變換核;
使用所述一次變換核,對所述變換係數矩陣進行變換處理。
本領域內的技術人員應明白,本申請的實施例可提供為方法、系統、或電腦程式產品。因此,本申請可採用硬體實施例、軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本申請可採用在一個或多個其中包含有電腦可用程式碼的電腦可用儲存媒介(包括但不限於磁碟記憶體和光學記憶體等)上實施的電腦程式產品的形式。
本申請是參照根據本申請實施例的方法、設備(系統)、和電腦程式產品的實現流程示意圖和/或方塊圖來描述的。應理解可由電腦程式指令實現流程示意圖和/或方塊圖中的每一流程和/或方塊、以及實現流程示意圖和/或方塊圖中的流程和/或方塊的結合。可提供這些電腦程式指令到通用電腦、專用電腦、嵌入式處理機或其他可程式設計資料處理設備的處理器以產生一個機器,使得透過電腦或其他可程式設計資料處理設備的處理器執行的指令產生用於實現在實現流程示意圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能的裝置。
這些電腦程式指令也可儲存在能引導電腦或其他可程式設計資料處理設備以特定方式工作的電腦可讀記憶體中,使得儲存在該電腦可讀記憶體中的指令產生包括指令裝置的製造品,該指令裝置實現在實現流程示意圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能。
這些電腦程式指令也可裝載到電腦或其他可程式設計資料處理設備上,使得在電腦或其他可程式設計設備上執行一系列操作步驟以產生電腦實現的處理,從而在電腦或其他可程式設計設備上執行的指令提供用於實現在實現流程示意圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能的步驟。
以上所述,僅為本申請的較佳實施例而已,並非用於限定本申請的保護範圍。
本申請實施例提供了一種變換方法、編碼器、解碼器以及儲存媒介,編碼器確定當前塊的ISP模式參數;當ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值時,確定當前塊的子分區;確定子分區的殘差值;當子分區使用一次變換時,確定子分區使用的一次變換核;使用一次變換核,對殘差值進行變換處理。解碼器解析位元流,確定當前塊的ISP模式參數;當ISP模式參數指示當前塊使用ISP模式確定當前塊的幀內預測值時,確定當前塊的子分區;解析位元流,確定子分區的變換係數矩陣;確定子分區使用的一次變換核;使用一次變換核,對變換係數矩陣進行變換處理。由此可見,在本申請的實施例中,對於ISP分區的變換,在當前塊劃分後的子分區不使用二次變換,僅使用一次變換時,子分區使用一次變換的一次變換核,不再由子分區的尺寸決定,即不再根據子分區的高度和寬度對一次變換核進行選擇,而是直接對一次變換核進行設置。從而可以簡化變換核的選擇過程,降低了變換過程的複雜程度,有效地提高了編解碼效率。
上述實施方式僅為例示性說明本申請之原理及其功效,而非用於限制本申請。任何熟習此項技藝之人士均可在不違背本申請之精神及範疇下,對上述實施例進行修飾與變化。因此,本申請之權利保護範圍,應如後述之申請專利範圍所列。
11:正一次變換單元
12:量化單元
13:反量化單元
14:反一次變換單元
110:解碼圖像暫存單元
111:變換單元
112:量化單元
113:編碼控制邏輯單元
114:幀內預測單元
115:幀間預測單元
116:反量化單元
117:反變換單元
118:迴路濾波單元
119:編碼單元
121:解碼單元
122:反量化單元
123:幀內預測單元
124:運動補償單元
125:迴路濾波單元
126:解碼圖像暫存單元
127:反變換單元
300:編碼器
301:第一確定部分
302:第一變換部分
303:設置部分
304:第一處理器
305:第一記憶體
306:第一通訊介面
307:第一匯流排
400:解碼器
401:解析部分
402:第二確定部分
403:第二變換部分
404:第二處理器
405:第二記憶體
406:第二通訊介面
407:第二匯流排
101~109:步驟
104a~104e:步驟
1010~1011:步驟
201~206:步驟
圖1為LFNST技術的應用示意圖;
圖2為LFNST具體過程的流程方塊圖;
圖3為編碼塊劃分示意圖一;
圖4為編碼塊劃分示意圖二;
圖5為編碼塊劃分示意圖三;
圖6為編碼塊劃分示意圖四;
圖7為ISP模式變換選擇示意圖;
圖8為反向一次變換的實現示意圖一;
圖9為反向一次變換的實現示意圖二;
圖10為影像編碼系統的組成方塊圖;
圖11為影像解碼系統的組成方塊圖;
圖12為變換方法的實現流程示意圖一;
圖13為變換方法的實現流程示意圖二;
圖14為變換核確定流程的示意圖;
圖15為變換方法的實現流程示意圖三;
圖16為變換方法的實現流程示意圖四;
圖17為變換方法的實現流程示意圖五;
圖18為變換方法的實現流程示意圖六;
圖19為變換方法的實現流程示意圖七;
圖20為編碼器的組成結構示意圖一;
圖21為編碼器的組成結構示意圖二
圖22為解碼器的組成結構示意圖一;
圖23為解碼器的組成結構示意圖二。
101~105:步驟
Claims (20)
- 一種變換方法,應用於編碼器,所述方法包括: 確定當前塊的幀內子分區ISP模式參數; 當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區; 確定所述子分區的殘差值; 當所述子分區使用一次變換時,確定所述子分區使用的一次變換核; 使用所述一次變換核,對所述殘差值進行變換處理。
- 根據請求項1所述的方法,其中,所述確定所述當前塊的子分區,包括: 確定所述當前塊的劃分類型; 基於所述當前塊的尺寸參數和所述劃分類型獲得所述子分區。 其中,所述尺寸參數包括寬度值和高度值,所述劃分類型包括水平劃分和垂直劃分,所述基於所述當前塊的尺寸參數和所述劃分類型獲得所述子分區,包括: 當所述寬度值等於4且高度值等於8,或者,所述寬度值等於8且高度值等於4時,所述當前塊水平劃分或垂直劃分後獲得2個子分區; 當所述寬度值等於4且高度值大於8,或者,所述寬度值大於8且高度值等於4時,所述當前塊水平劃分或垂直劃分後獲得4個子分區。
- 根據請求項1所述的方法,其中,所述確定所述子分區的殘差值,包括: 確定所述子分區的幀內預測值; 計算所述子分區的真實值與所述幀內預測值之間的所述殘差值。
- 根據請求項1所述的方法,其中,所述確定所述子分區使用的一次變換核,包括: 將DCT-2確定為所述一次變換核。
- 根據請求項1所述的方法,其中,所述確定所述子分區使用的一次變換核,包括: 當所述子分區不使用低頻不可分變換LFNST時,將預設變換核確定為所述一次變換核;其中,所述預設變換核為DCT-2、DST-7或DCT-8中的任意一個; 當所述子分區使用LFNST時,將DCT-2確定為所述一次變換核。
- 根據請求項1所述的方法,其中,所述確定所述子分區使用的一次變換核,包括: 當所述子分區不使用LFNST時,將DCT-2確定為所述一次變換核; 當所述子分區使用LFNST時,將預設變換核確定為所述一次變換核;其中,所述預設變換核為DCT-2、DST-7或DCT-8中的任意一個。
- 根據請求項1所述的方法,其中,所述確定所述子分區使用的一次變換核,包括: 將目標變換核確定為所述一次變換核;其中,所述目標變換核為DCT-2、DST-7或DCT-8中的任意一個; 相應地, 在位元流中以一個語法單元指示所述目標變換核。
- 根據請求項7所述的方法,所述方法還包括: 在所述位元流中,所述語法單元包含在以下所述位元流中的一個或多個資料單元中:包含所述當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集。
- 根據請求項1所述的方法,其中,所述確定所述子分區使用的一次變換核,包括: 當所述子分區不使用LFNST時,將第一變換核確定為所述一次變換核; 當所述子分區使用LFNST時,將第二變換核確定為所述一次變換核;其中,所述第一變換核和所述第二變換核為DCT-2、DST-7或DCT-8中的任意兩個; 相應地, 在位元流中以兩個語法單元分別指示所述第一變換核和所述第二變換核。
- 根據請求項9所述的方法,所述方法還包括: 在所述位元流中,所述語法單元包含在以下所述位元流中的一個或多個資料單元中:包含所述當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集。
- 根據請求項4至10任一項所述的方法,所述方法還包括: 當所述子分區不使用LFNST時,將LFNST索引序號的取值設置為指示所述子分區不使用LFNST; 將所述LFNST索引序號寫入位元流中; 或者, 當所述子分區使用LFNST時,確定所述子分區使用的LFNST變換核,將LFNST索引序號的取值設置為指示所述子分區使用LFNST; 將所述LFNST索引序號寫入位元流中。
- 一種變換方法,應用於解碼器,所述方法包括: 解析位元流,確定當前塊的ISP模式參數; 當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區; 解析位元流,確定所述子分區的變換係數矩陣; 當所述子分區使用一次變換時,確定所述子分區使用的一次變換核; 使用所述一次變換核,對所述變換係數矩陣進行變換處理。
- 根據請求項12所述的方法,其中,所述確定所述當前塊的子分區,包括: 確定所述當前塊的尺寸參數和劃分類型; 基於所述當前塊的尺寸參數和所述劃分類型獲得所述子分區; 其中,所述尺寸參數包括寬度值和高度值,所述劃分類型包括水平劃分和垂直劃分,所述基於所述當前塊的尺寸參數和所述劃分類型獲得所述子分區,包括: 當所述寬度值等於4且高度值等於8,或者,所述寬度值等於8且高度值等於4時,所述當前塊水平劃分或垂直劃分後獲得2個子分區; 當所述寬度值等於4且高度值大於8,或者,所述寬度值大於8且高度值等於4時,所述當前塊水平劃分或垂直劃分後獲得4個子分區。
- 根據請求項12所述的方法,其中,所述當所述ISP模式參數指示所述當前塊使用ISP模式確定所述當前塊的幀內預測值時,確定所述當前塊的子分區之後,所述方法還包括: 解析位元流,確定所述子分區的LFNST索引序號。
- 根據請求項12所述的方法,其中,所述確定所述子分區使用的一次變換核,包括: 將DCT-2確定為所述一次變換核。
- 根據請求項14所述的方法,其中,所述確定所述子分區使用的一次變換核,包括: 當所述LFNST索引序號指示所述子分區不使用LFNST時,將預設變換核確定為所述一次變換核;其中,所述預設變換核為DCT-2、DST-7或DCT-8中的任意一個; 當所述LFNST索引序號指示所述子分區使用LFNST時,將DCT-2確定為所述一次變換核。
- 根據請求項14所述的方法,其中,所述確定所述子分區使用的一次變換核,包括: 當所述LFNST索引序號指示所述子分區不使用LFNST時,將DCT-2確定為所述一次變換核; 當所述LFNST索引序號指示所述子分區使用LFNST時,將預設變換核確定為所述一次變換核;其中,所述預設變換核為DCT-2、DST-7或DCT-8中的任意一個。
- 根據請求項12所述的方法,其中,所述確定所述子分區使用的一次變換核,包括: 若位元流中以一個語法單元指示目標變換核,則將所述目標變換核確定為所述一次變換核;其中,所述目標變換核為DCT-2、DST-7或DCT-8中的任意一個;以及 解析位元流中的、包含所述當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集中的一個或多個資料單元,獲得所述語法單元的取值,以確定所述目標變換核。
- 根據請求項14所述的方法,其中,所述確定所述子分區使用的一次變換核,包括: 若位元流中以兩個語法單元分別指示第一變換核和第二變換核,則當所述LFNST索引序號指示所述子分區不使用LFNST時,將所述第一變換核確定為所述一次變換核;當所述LFNST索引序號指示所述子分區使用LFNST時,將所述第二變換核確定為所述一次變換核;其中,所述第一變換核和所述第二變換核為DCT-2、DST-7或DCT-8中的任意兩個;以及 解析位元流中的、包含所述當前塊的資料單元,分片頭訊息資料單元,圖像頭訊息資料單元,圖像層參數集,序列層參數集中的一個或多個資料單元,獲得所述語法單元的取值,以確定所述第一變換核和所述第二變換核。
- 根據請求項12所述的方法,其中,所述使用所述一次變換核,對所述變換係數矩陣進行變換處理,包括: 利用所述一次變換核對所述變換係數矩陣進行反向一次變換,獲得所述子分區的殘差值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/CN2020/083367 | 2020-04-03 | ||
PCT/CN2020/083367 WO2021196231A1 (zh) | 2020-04-03 | 2020-04-03 | 变换方法、编码器、解码器以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202139714A true TW202139714A (zh) | 2021-10-16 |
Family
ID=77927574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110109410A TW202139714A (zh) | 2020-04-03 | 2021-03-16 | 變換方法、編碼器、解碼器以及儲存媒介 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN114556943A (zh) |
TW (1) | TW202139714A (zh) |
WO (1) | WO2021196231A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023197195A1 (zh) * | 2022-04-13 | 2023-10-19 | Oppo广东移动通信有限公司 | 视频编解码方法、编码器、解码器及存储介质 |
WO2024007120A1 (zh) * | 2022-07-04 | 2024-01-11 | Oppo广东移动通信有限公司 | 编解码方法、编码器、解码器以及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014003423A1 (ko) * | 2012-06-29 | 2014-01-03 | 한국전자통신연구원 | 영상 부호화/복호화 방법 및 장치 |
US9762927B2 (en) * | 2013-09-26 | 2017-09-12 | Qualcomm Incorporated | Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC |
KR102423880B1 (ko) * | 2015-10-06 | 2022-07-21 | 삼성전자주식회사 | 인코더의 작동방법과 상기 인코더를 포함하는 시스템 온 칩의 작동 방법 |
MX2021012481A (es) * | 2016-03-16 | 2022-05-30 | Hfi Innovation Inc | Metodo y aparato de procesamiento de datos de video con tama?o restringido de bloque en codificacion de video. |
CN106961606B (zh) * | 2017-01-26 | 2020-04-07 | 浙江工业大学 | 基于纹理划分特征的hevc帧内编码模式选择方法 |
JP6770192B2 (ja) * | 2017-06-01 | 2020-10-14 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America | 符号化装置、符号化方法、復号装置及び復号方法 |
KR20190113591A (ko) * | 2018-03-28 | 2019-10-08 | 한국전자통신연구원 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
CN115426493B (zh) * | 2018-09-02 | 2024-05-31 | Lg电子株式会社 | 对视频信号进行编码的方法和计算机可读介质 |
WO2020050702A1 (ko) * | 2018-09-07 | 2020-03-12 | 주식회사 윌러스표준기술연구소 | 다중 변환 커널을 사용하는 비디오 신호 처리 방법 및 장치 |
CN110636313B (zh) * | 2019-09-18 | 2022-07-15 | 浙江大华技术股份有限公司 | 变换、二次变换矩阵训练方法、编码器及相关装置 |
-
2020
- 2020-04-03 WO PCT/CN2020/083367 patent/WO2021196231A1/zh active Application Filing
- 2020-04-03 CN CN202080071780.2A patent/CN114556943A/zh active Pending
-
2021
- 2021-03-16 TW TW110109410A patent/TW202139714A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN114556943A (zh) | 2022-05-27 |
WO2021196231A1 (zh) | 2021-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7047119B2 (ja) | 変換領域における残差符号予測のための方法および装置 | |
KR101708265B1 (ko) | 영상 부호화 및 복호화 장치 및 그 방법 | |
TW202007166A (zh) | 解碼器的視訊解碼方法及裝置 | |
CN111741299B (zh) | 帧内预测模式的选择方法、装置、设备及存储介质 | |
JP2023504408A (ja) | クロマサンプリングのための方法及び装置 | |
TW202139714A (zh) | 變換方法、編碼器、解碼器以及儲存媒介 | |
JP2023090929A (ja) | ビデオ復号化方法、ビデオ復号化装置及び記憶媒体 | |
JP2022548354A (ja) | ビデオ復号方法、ビデオ符号化方法、装置、機器及び記憶媒体 | |
WO2021134635A1 (zh) | 变换方法、编码器、解码器以及存储介质 | |
JP2024503193A (ja) | フレーム内予測方法、装置、及びデコーダとエンコーダ | |
JP7437426B2 (ja) | インター予測方法および装置、機器、記憶媒体 | |
JP7467687B2 (ja) | 符号化・復号方法及び装置 | |
CN113676732A (zh) | 图像分量预测方法、编码器、解码器以及存储介质 | |
US9491455B2 (en) | Picture encoding method, picture decoding method, picture encoding apparatus, picture decoding apparatus, picture encoding program, and picture decoding program | |
WO2022140905A1 (zh) | 预测方法、编码器、解码器以及存储介质 | |
CN113395520B (zh) | 解码预测方法、装置及计算机存储介质 | |
KR20220057620A (ko) | 변환-스킵 모드에서 비디오 데이터를 코딩하기 위한 방법 및 장치 | |
TW202101990A (zh) | 圖像編碼裝置、圖像解碼裝置、方法及程式 | |
TW202025747A (zh) | 圖像編碼裝置、圖像解碼裝置、其等之控制方法及程式 | |
WO2023141970A1 (zh) | 解码方法、编码方法、解码器、编码器和编解码系统 | |
WO2024007116A1 (zh) | 解码方法、编码方法、解码器以及编码器 | |
TWI833620B (zh) | 圖像編碼裝置、圖像編碼方法、圖像解碼裝置及圖像解碼方法 | |
WO2023231008A1 (zh) | 编解码方法、编码器、解码器以及存储介质 | |
US20240089457A1 (en) | Coding a merged block that overlaps a reference block in intra block copy mode | |
WO2020258001A1 (zh) | 亮度分量预测方法、编码器、解码器以及存储介质 |