KR20130050851A - 서브블록을 이용한 변환 계수 부호화 방법 - Google Patents

서브블록을 이용한 변환 계수 부호화 방법 Download PDF

Info

Publication number
KR20130050851A
KR20130050851A KR1020110116131A KR20110116131A KR20130050851A KR 20130050851 A KR20130050851 A KR 20130050851A KR 1020110116131 A KR1020110116131 A KR 1020110116131A KR 20110116131 A KR20110116131 A KR 20110116131A KR 20130050851 A KR20130050851 A KR 20130050851A
Authority
KR
South Korea
Prior art keywords
sub
block
blocks
current
merge
Prior art date
Application number
KR1020110116131A
Other languages
English (en)
Inventor
이배근
권재철
Original Assignee
주식회사 케이티
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 케이티 filed Critical 주식회사 케이티
Priority to KR1020110116131A priority Critical patent/KR20130050851A/ko
Publication of KR20130050851A publication Critical patent/KR20130050851A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

4x4 Sub-block을 이용한 Transform coefficient 부호화 방법

Description

서브블록을 이용한 변환 계수 부호화 방법{.}
본 발명은 4x4 Sub-block을 이용한 Transform coefficient 부호화 방법에 관한 것이다.
JCTVC-F612에서는 Transform coefficient의 계수를 효과적으로 부호화하기 위해서, 매 4x4 sub-block마다 해당 block이 모두 zero coefficient인지 아닌지를 signaling(zeroSubBlockFlag)하고 부호화하는 방법을 사용하고 있다. 이 기술에서는 encoder 단에서 이전 block의 non-zero coefficient의 계수가 3개 이하이고, 현재 block의 non-zero coefficient가 4개 이하이면, 현재 block을 모두 zero coefficient로 만드는 기술을 사용하여, 제안하는 방법이 더욱 효과적으로 하는 방법을 사용하고 있다.
1. 4x4 sub-block을 이용한 transform coefficient 부호화 방법 [JCTVC-F612]
16x16, 32x32 transform을 4x4 sub-block으로 나눈 후, 각 block이 모두 zero coefficient인지 아닌지를 signaling(zeroSubBlockFlag)하는 방법을 제시하고 있다. Encoder에서는 최대한 4x4 sub-block이 모두 zero coefficient로 구성된 block으로 구성되도록, 주변 block의 non-zero coefficient가 3개 이하이고, 현재 block의 non-zero coefficient가 4개 이하면, 해당 block을 모두 zero coefficient로 setting 한 후, 부호화를 진행하고 있다. Decoder 단에서는 먼저 last non-zero coefficient의 position을 복호화 한 후에, 각 sub-block 별로 zeroSubBlockFlag을 복호화 한다. zeroSubBlockFlag이 1이면, 해당 block은 모두 zero setting하고, 나머지 block을 복호화한다. 중간에 all zero 4x4 sub-block이 들어있으면, 그 block에 들어있는 계수는 run 값을 count 하지 않는다.
4x4 Sub-block을 이용한 Transform coefficient 부호화 방법
본 발명에서는 DC 주변 또는 homogeneous region에서는 4x4 sub-block의 계수가 모두 zero인 block이 모여 있을 확률이 높기 때문에, 8x8 sub-block 모두 zero block인지 아닌지를 표시하는 flag을 부호화하거나, DC에 가까운 영역에서는 4개의 zeroSubBlockFlag을 묶어서 부호화하는 방법을 이용하여 부호화 효율을 높이고자 한다.
DC에 가까운 영역에서는 4개의 zeroSubBlockFlag을 묶어서 부호화하는 방법을 이용하여 부호화 효율을 높일 수 있다.
도 1은 8x8 sub-block을 이용한 sub-block scanning 방법을 나타낸다.
1. 8x8 sub-block을 이용한 transform coefficient 부호화 방법
해당 block이 transform의 DC 영역에서 먼 고주파 영역에 있을 때는, 해당 4x4 sub-block이 모두 zero인 영역이 모여 있을 확률이 높다. 본 발명에서는 DC 주변에서는 4x4 sub-block이 모두 zero coefficient인지를 알려주는 zeroSubBlockFlag을 부호화하고, DC 주변이 아니면, 8x8 sub-block이 모두 zero coefficient인지를 알려주는 zero8x8SubBlockFlag을 부호화하고, zero8x8SubBlockFlag이 0인 경우에만 해당 4x4 sub-block의 zeroSubBlockFlag을 부호화 한다.
부호화 과정은 다음과 같다.
1. DC를 포함하고 있는 8x8 sub-block인 경우, 3 번 실행, 그 외 block은 2번 실행
2. 각 Zero8x8SubBlockFlag을 부호화. Zero8x8SubBlockFlag이 1 이면, 해당 4개의 4x4 sub-block의 zeroSubBlockFlag을 모두 1로 setting하고, 4 번 실행
3. 각 4x4 sub-block의 ZeroSubBlockFlag을 부호화하고, 4번 실행
4. Run mode coding
5. Level mode coding
다음 도 1은 8x8 sub-block으로 나누어 transform coefficient를 부호화 할 때의, sub-block scanning 방법을 예시로 나타내고 있다.
2. Grouped coding of all zero coefficient indicator in 4x4 sub-block
DC를 포함하고 있는 8x8 영역의 경우에는 zeroSubBlock flag이 0일 확률이 높기 때문에, 8x8 sub-block에 해당하는 zeroSubBlock Flag을 묶어서, 하나의 codeword로 표현하면서, 연속적으로 0이 나오는 경우에 작은 codeword를 적용할 수 있다. 8x8 sub-block에 해당하는 4x4 sub-block 중 연속된 2개의 block을 묶어서, 하나의 codeword로 표현할 수도 있으며, 표 1에 잘 나타나 있다. 표 1은 Consecutive ZeroSubBlock CodeWord이다
Two consecutive zeroSubBlock Codeword
00 1
01 10
10 110
11 111
DC를 포함하지 않는 8x8 sub-block에서는 여러 개 sub-block의 zeroSubBlock flag을 하나의 codeword로 표현하지 않고, 각 4x4 sub-block마다 signaling하는 방법을 사용할 수 있다.
III. 인코딩 프로세스
1. 현재 프레임의 새로운 코딩유닛(CU)이 입력된다.
A. 하나의 Inter CU는 여러 개의 Inter PU로 구성되며, 2가지의 예측모드(PredMode), MODE_SKIP와 MODE_INTER를 가진다. MODE_SKIP의 경우 더 작은 PU로 분할되지 않으며, 파티션모드(PartMode)가 PART_2Nx2N인 PU의 모션정보가 할당된다.
B. MODE_INTER CU인 경우에는 4가지 형태의 PU 파티션으로 존재할 수 있으며, CU 레벨의 신택스에 PredMode==MODE_INTER와 파티션 형태를 나타내는 PartMode==PART_2Nx2N 또는 PART_2NxN, PART_Nx2N, PART_NxN이 시그널링된다.
2. 현재 Inter PU에 대해 모션예측을 수행한다.
A. CU가 여러 개의 PU로 파티션 되면 현재 부호화될 PU가 입력된다.
B. 현재의 PU에 대해 이전 프레임, 또는 이전 및 이후 프레임을 이용하여 모션예측을 수행한다. 모션예측을 통해 현재의 PU에 대한 모션정보 {모션벡터, 참조픽처인덱스, 예측방향 인덱스}를 구한다.
3. 현재 Inter PU의 모션예측값(MVP)을 구한다.
A. 현재 PU의 모션정보는 그대로 보내지 않고, 압축효율을 높이기 위하여 시공간적으로 인접한 블록들로부터 얻은 예측값과의 차이를 보낸다. 예측모드의 종류에는 Merge 모드와 AMVP 모드가 있다.
B. 모션예측값을 구하기 위해 Merge 후보리스트와 AMVP 후보리스트를 작성한다.
C. Merge 모드는 시공간적으로 현재 PU와 인접한 블록들의 모션정보로부터 Merge 후보들을 구한다. 후보들 중 현재 PU의 모션정보와 같은 후보가 있으면, Merge 모드를 사용한다는 플래그와 그 후보의 인덱스를 전송한다.
i. 계산된 참조픽처인덱스(refIdxLX)를 이용하여 가용한 Temporal 모션벡터 예측값을 구한다.
ii. Merge 후보 리스트(MergeCandList)를 작성한다.
iii. 현재 PU와 같은 모션정보를 가지는 후보가 있으면, Merge_Flag=1로 세팅하고, 그 후보의 인덱스(Merge_Idx)를 부호화한다.
D. AMVP 모드는 시공간적으로 현재 PU와 인접한 블록들의 모션정보로부터 AMVP 후보들을 구한다.
i. Luma 모션벡터 예측값(mvpLX)을 구한다.
1) 인접 PU들로부터 Spatial 모션벡터후보(MVP)를 추출한다.
2) 모션추정 프로세스에서 구해진 RefIdxLX을 가지고 Co-located 블록의 Temporal 모션벡터후보를 추출한다.
3) MVP 리스트 (mvpListLX)를 작성한다. 모션벡터의 우선순위는 다음과 같다. 단 가용한 벡터에 한정한다.
A) 왼쪽 인접블럭 (mvLXA)
B) 상위 인접블럭 (mvLXB)
C) Temporal Co-located 블록의 모션벡터 (mvLXCol)
4) 여러 개의 모션벡터가 동일한 값을 가지면, 가장 우선순위가 높은 것을 제외한 모든 모션벡터를 리스트에서 삭제한다.
5) mvListLX 내 모션후보들 중 best predictor의 모션벡터를 mvpLX에 할당한다. Best Predictor는 코스트함수 JMot SAD를 최소화하는 후보블럭이다.
4. 현재 PU의 모션정보를 부호화한다.
A. Merge 모드의 경우, Merger 후보들 중 현재 PU와 같은 모션정보를 가진 후보가 존재하면 현재 PU를 Merge 모드로 선언하고, Merge 모드를 사용했음을 알리는 Merge_Flag와 Merge 후보들 중 어떤 후보인지를 알리는 Merge_Idx를 보낸다. 그 다음 모션보상을 한 후 현재 PU와 Merge 모드로 예측된 PU와의 차이신호(잔여신호)를 얻는다. 보내야 할 잔여신호가 없을 때는 Merge_SKIP 모드로 보낸다.
B. AMVP 모드의 경우, AMVP 후보들 중 현재 부호화할 PU의 모션벡터 정보와 비교하여 코스트함수가 최소화되는 후보를 결정한다. 코스트함수를 최소화하는 후보의 모션정보와의 차이값과 이 AMVP 후보를 이용하여 모션보상 후 잔여신호를 얻는다. PU의 모션벡터를 best predictor 모션벡터와의 차이(MVD)를 엔트로피 부호화한다.
5. 이동보상을 통해 현재블럭의 픽셀값과 예측블록의 픽셀값을 픽셀단위로 차분을 구해서 Residual 신호를 얻는다.
6. Residual 신호를 변환 부호화한다.
A. 변환부호화 커널은 2x2, 4x4, 8x8, 16x16, 32x32, 64x64 를 사용할 수 있으며, 변환에 사용될 커널을 사전에 제한할 수도 있다.
B. n*n 블록에 대해 변환계수 C는 다음과 같이 계산된다.
C(n,n)=T(n,n) x B(n,n) x T(n,n)T
C. 변환계수를 양자화한다.
7. Residual 신호와 변환계수 중 어떤 것을 전송할 지 RDO를 통해 결정한다.
A. 예측이 잘된 경우 변환부호화 하지 않고 Residual 신호를 그대로 전송할 수 있다.
B. 변환부호화 전/후 코스트함수를 비교하여 코스트가 minimize되는 방법을 선택한다.
C. 현재 블록에 대해 전송할 신호의 타입(Residual 또는 변환계수)을 시그널링한다.
8. 변환계수를 스캔한다.
9. 스캔된 변환계수와 Inter 예측모드를 엔트로피 부호화한다.
A. 현재 block의 8x8 sub-block의 모든 계수가 0인지 아닌지를 부호화 한다.
B. 8x8 sub-block의 모든 계수가 0이 아니면, 8x8 sub-block을 4등분한 4x4 sub-block들에 대해, 그 해당 sub-block에 속하는 변환계수가 모두 0인자 아닌지를 부호화 한다.
IV. 디코딩 프로세스
1. 수신된 비트스트림을 엔트로피 복호화한다.
A) VLC 테이블로부터 블록타입을 알아내고, 현재 블록의 예측모드를 얻는다.
B) 현재 블록에 대해 전송되어 온 신호가 Residual 인지, 아니면 변환계수인지 타입을 알아낸다.
C) 현재 블록에 대한 Residual 신호나 변환계수를 얻는다.
i. Zero8x8SubBlockFlag을 복호화한다.
ii. Zero8x8SubBlockFlag =1 이면, 해당 8x8 sub-block의 변환계수를 모두 0으로 setting한다.
iii. Zero8x8SubBlockFlag =0 이면, 해당 4개의 4x4 sub-block에 대해 ZeroSubBlockFlag을 복호화 한다.
iv. ZeroSubblockFlag =1 이면, 해당 4개의 4x4 sub-block의 변환계수를 모두 0으로 setting한다.
v. ZeroSubblockFlag =0 이면, 해당 4개의 4x4 sub-block의 변환계수를 복호화한다.
2. 엔트로피 복호화된 Residual 신호나 변환계수를 역스캔(inverse scan)하여 2차원 블록을 생성한다.
A. Residual 신호의 경우, Residual 블록을 생성한다.
B. 변환계수인 경우, 변환블록을 생성한다.
3. 변환계수인 경우, 역양자화, 역변환을 하여 Residual 블록을 얻는다.
A. B(n,n)=T(n,n) x C(n,n) x T(n,n)T.
B. 역변환을 통해 Residual 신호를 얻는다.
4. Inter 예측을 수행한다.
A. Merge 모드의 경우
i. PredMode==MODE_SKIP && Merge_Flag==1이면 Merge 모드를 통해 Luma 모션벡터(mvLX), 참조픽처인덱스(refIdxLX)를 구해야 한다.
ii. 이 정보들을 구하기 위해 인접 PU 파티션들로부터 Merge 후보를 추출한다.
iii. 현재 PU의 Temporal Merge 후보를 구하기 위해 참조픽처인덱스(refIdxLX)를 구한다.
iv. 계산된 참조픽처인덱스(redIdxLX)를 이용하여, 가용한 Temporal 모션벡터예측값(MVP)을 구한다.
v. MergeCandList 내의 후보갯수(NumMergeCand)가 ‘1’이면 Merge_Idx=1로 세팅하고, 그렇지 않으면 Merge_Idx를 수신한 Merge 인덱스값으로 세팅한다. 이 인덱스값이 가리키는 후보의 모션벡터(mvLX)와 참조픽처인덱스(refIdxLX)를 추출하여, 이동보상에 사용한다.
B. AMVP 모드의 경우
i. Merge 모드가 아니면, 현재 PU의 참조픽처인덱스(refIdxLX)를 추출한다.
ii. 참조픽처인덱스를 이용하여 Luma 모션벡터예측값(mvpLX)을 구한다.
1) 인접 PU들로부터 Spatial 모션벡터후보(MVP)를 추출한다.
2) 참조픽처인덱스가 가리키는 Co-located 블록의 Temporal MVP를 추출한다.
3) MVP 리스트 (mvpListLX)를 작성한다. 모션벡터의 우선순위는 다음과 같다. 단 가용한 벡터에 한정한다.
A) 왼쪽 인접블럭 (mvLXA)
B) 상위 인접블럭 (mvLXB)
C) Temporal Co-located 블록의 모션벡터 (mvLXCol)
4) 여러 개의 모션벡터가 동일한 값을 가지면, 가장 우선순위가 높은 것을 제외한 모든 모션벡터를 리스트에서 삭제한다.
5) mvpListLX 안에 있는 Mvp 후보의 개수 (NumMVPCand(LX))가 ‘1’이면, mvpIdx=0으로 세팅하고, ‘1’이 아니면(즉 후보가 2개 이상이면) mpvIdx를 수신한 인덱스값으로 세팅한다.
6) mvListLX 내 모션후보들 중 mvpIdx가 가리키는 모션벡터를 mvpLX에 할당한다.
7) `모션벡터 mvLX를 계산한다.
A) mvLX[0] = mvdLX[0] + mvpLX[0] ; x 방향
B) mvLX[1] = mvdLX[1] + mvpLX[1] ; y 방향
5. Residual 신호와 이전 프레임의 신호를 더하여 재생신호를 생성한다.
A. 계산된 모션벡터를 이용하여 이전 프레임에서 이동보상된 예측신호과 디코딩된 현재 PU의 잔여신호를 더해서 재생신호를 생성한다.

Claims (1)

  1. 4x4 Sub-block을 이용한 Transform coefficient 부호화 방법
KR1020110116131A 2011-11-08 2011-11-08 서브블록을 이용한 변환 계수 부호화 방법 KR20130050851A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110116131A KR20130050851A (ko) 2011-11-08 2011-11-08 서브블록을 이용한 변환 계수 부호화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110116131A KR20130050851A (ko) 2011-11-08 2011-11-08 서브블록을 이용한 변환 계수 부호화 방법

Publications (1)

Publication Number Publication Date
KR20130050851A true KR20130050851A (ko) 2013-05-16

Family

ID=48661107

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110116131A KR20130050851A (ko) 2011-11-08 2011-11-08 서브블록을 이용한 변환 계수 부호화 방법

Country Status (1)

Country Link
KR (1) KR20130050851A (ko)

Similar Documents

Publication Publication Date Title
US20230276066A1 (en) Method for generating prediction block in amvp mode
KR102549022B1 (ko) 영상 부호화/복호화 방법
KR102644043B1 (ko) 화면내 예측 모드 부호화/복호화 방법 및 장치
EP3958564B1 (en) Apparatus for encoding a moving picture
KR20220004781A (ko) 영상 부호화/복호화 방법 및 장치
KR20210137982A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20170058838A (ko) 화면간 예측 향상을 위한 부호화/복호화 방법 및 장치
KR20170058837A (ko) 화면내 예측모드 부호화/복호화 방법 및 장치
KR20130050406A (ko) 머지 모드에서의 움직임 정보 생성 방법
KR20130050407A (ko) 인터 모드에서의 움직임 정보 생성 방법
KR20130050405A (ko) 인터 모드에서의 시간 후보자 결정방법
KR20130050149A (ko) 인터 모드에서의 예측 블록 생성 방법
KR20130050403A (ko) 인터 모드에서의 복원 블록 생성 방법
KR102390452B1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20130050404A (ko) 인터 모드에서의 복원 블록 생성 방법
KR20120138706A (ko) 움직임 정보의 부호화 방법 및 장치, 그 복호화 방법 및 장치
KR20130001708A (ko) 움직임 정보의 부호화 방법 및 장치, 그 복호화 방법 및 장치
KR20150048637A (ko) 색 성분 간 예측 방법 및 장치
KR20130084053A (ko) Sample Adaptive Offset(SAO)에서의 edge offset prediction simplification 방법
KR20130050851A (ko) 서브블록을 이용한 변환 계수 부호화 방법
KR20130002221A (ko) Inter 예측에서의 MVP후보 결정 방법
KR20130083314A (ko) LCU boundary에서의 deblocking filtering 방법
KR20130084052A (ko) Sample Adaptive Offset(SAO)에서의 diagonal edge offset을 이용한 성능향상 방법
KR20210037205A (ko) 효율적인 화면 내 예측 화소 생성을 통한 영상 부호화 및 복호화 방법과 장치
KR20130039778A (ko) AMVP에서 Reference Index 부호화 효율 향상방법

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination