KR20130039429A - MVD를 이용한 bi-predictive temporal motion vector derivation 방법 - Google Patents
MVD를 이용한 bi-predictive temporal motion vector derivation 방법 Download PDFInfo
- Publication number
- KR20130039429A KR20130039429A KR1020110103957A KR20110103957A KR20130039429A KR 20130039429 A KR20130039429 A KR 20130039429A KR 1020110103957 A KR1020110103957 A KR 1020110103957A KR 20110103957 A KR20110103957 A KR 20110103957A KR 20130039429 A KR20130039429 A KR 20130039429A
- Authority
- KR
- South Korea
- Prior art keywords
- motion vector
- mode
- motion
- current
- merge
- 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
Merge mode에서 bi-predictive temporal motion을 이용할 때, list0와 list1의 motion information이 같은 경우 ( mvL0Col = mvL1col and RefPicOrderCnt (currPic, refidxL0 , L0) = RefPicOrderCnt (currPic , refidxL1 , L1) ) 인 경우가 발생을 한다. Bi-predictive mode에서 두 motion information이 같기 때문에 압축 성능이 떨어지고, 연산량이 필요이상으로 늘어난다. Bi-predictive temporal motion information이 같으면, bi-prediction을 uni-prediction으로 바꾸어 주어서 complexity를 줄이거나, list1의 motion을 주변 block에서 찾거나[JCTVC-F712], list1의 Co-located picture를 변형 시켜주어서[JCTVC-F325], 동일하지 않은 motion information으로 bi-prediction하는 방법이 제안 되었다. 본 발명에서는 list1에서는 mergeMVD mode를 적용하여, motion information 변형시켜 압축성능 향상을 높이는 방법을 제안하고자 한다.
Description
본 발명은 MVD를 이용한 bi-predictive temporal motion vector derivation에 관한 것이다.
Merge mode에서 bi-predictive temporal motion을 이용할 때, list0와 list1의 motion information이 같은 경우 ( mvL0Col = mvL1col and RefPicOrderCnt (currPic, refidxL0 , L0) = RefPicOrderCnt (currPic , refidxL1 , L1) ) 인 경우가 발생을 한다.
본 발명은 MVD를 이용한 bi-predictive temporal motion vector derivation 방법을 제공한다.
본 발명의 일 실시예에 다르면 MVD를 이용한 bi-predictive temporal motion vector derivation 방법이 제공된다.
motion information 변형시켜 압축 성능을 향상시킬 수 있다.
도 1은 Spatial neighboring Search Order을 나타낸다.
도 2는 List1의 Co-located picture 변경 방법을 나타낸다.
도 3은 Mvd를 전송할 reference index 선택 방법을 나타낸다.
도 4는 HM4.0에서의 spatial merge candidates를 나타낸다.
도 2는 List1의 Co-located picture 변경 방법을 나타낸다.
도 3은 Mvd를 전송할 reference index 선택 방법을 나타낸다.
도 4는 HM4.0에서의 spatial merge candidates를 나타낸다.
1 개요
Merge mode에서 bi-predictive temporal motion을 이용할 때, list0와 list1의 motion information이 같은 경우 ( mvL0Col = mvL1col and RefPicOrderCnt (currPic, refidxL0 , L0) = RefPicOrderCnt (currPic , refidxL1 , L1) ) 인 경우가 발생을 한다. Bi-predictive mode에서 두 motion information이 같기 때문에 압축 성능이 떨어지고, 연산량이 필요 이상으로 늘어난다. Bi-predictive temporal motion information이 같으면, bi-prediction을 uni-prediction으로 바꾸어 주어서 complexity를 줄이거나, list1의 motion을 주변 block에서 찾거나[JCTVC-F712], list1의 Co-located picture를 변형 시켜주어서[JCTVC-F325], 동일하지 않은 motion information으로 bi-prediction하는 방법이 제안되었다. 본 발명에서는 list1에서는 mergeMVD mode를 적용하여, motion information 변형시켜 압축성능 향상을 높이는 방법을 제안하고자 한다.
2 기존방법
2.1 Spatial neighboring에서 motion information을 derivation하는 방법 [JCTVC-F712]
Bi-predictive Merge mode에서 현재 PU의 list0와 list1의 motion information이 같은 경우 ( mvL0Col = mvL1col and RefPicOrderCnt ( currPic , refidxL0, L0) = RefPicOrderCnt (currPic , refidxL1 , L1) ) , spatial neighboring에서 non-zero motion vector를 가져와서, list1의 motion vector로 사용한다. 다음과 같은 순서로 주변 neighboring을 search하여, list1의 motion vector로 사용한다.
1. A (Left PU) : PU left to the top-left corner pixel of current PU
2. B (Above PU) : PU above to the top-left corner pixel of current PU
3. E (Corner PU) : PU up-left to the top-left corner pixel of current PU
도 1은 list1의 motion vector를 derivation하기 위한, spatial neighboring을 search하는 순서를 나타내고 있다.
2.2 Co-located Picture를 변형시켜 motion information을 derviation하는 방법 [JCTVC-F325]
Bi-predictive Merge mode에서 현재 PU의 list0와 list1의 motion information이 같은 경우 ( mvL0Col = mvL1col and RefPicOrderCnt (currPic , refidxL0, L0) = RefPicOrderCnt (currPic , refidxL1 , L1) ) , list1의 co-located Picture를 RefPicList[0] 가 아니고, RefPicList[1] 이 가리키는 picture로 지정하고, motion vector를 가져온다.
도 2는 merge mode에서 temporal motion information이 같을 때, list1의 ColPic를 변형시키는 방법에 대해 나타내고 있다.
2.3 Merge based MVD transmission [JCTVC-F373]
기존 HM4.0에서는 merge mode와 Advanced Motion Vector Prediction (AMVP) 를 사용하여, motion information을 최소화하는 방법을 사용하고 있는데, merge mode의 경우, merge index만 부호화 하고, 나머지 motion information은 merge index가 가리키는 block의 motion information을, 현재 PU의 motion information으로 사용한다. JCTVC-F373에서는 mvd를 전송하는 merge mode를 제안하였다. 이 경우, merge index와 mvd를 부호화 하고, reference index는 부호화하지 않으며, One directional Mvd만 전송하게 된다. 표 1은 각 motion prediction mode 별 전송하는 motion information을 나타내고 있으며, 표 2은 merge candidate type에 따른 mvd reference picture를 선택하는 방법을 제시하고 있다.
표 1: 각 Inter preidiction mode별 전송되는 motion 정보
표 2: MVD를 전송하기 위한 reference picture 선택 방법
도 3은 각 merge type에 따른 reference picture를 선택하는 방법을 나타내고 있다.
3 제안방법
3.1 MVD를 이용한 bi-predictive temporal motion vector derivation 방법
Bi-predictive Merge mode에서 현재 PU의 list0와 list1의 motion information이 같은 경우 ( mvL0Col = mvL1col and RefPicOrderCnt ( currPic , refidxL0, L0) = RefPicOrderCnt (currPic , refidxL1 , L1) ) , list1의 motion information은 mergeMVD mode를 사용하여 얻는다. 즉 list0는 merge mode이고, list1은 mergeMVD mode를 사용하는 방법이다. mergeMVD mode의 spatial candidates은 merge mode의 spatial candidates과 같거나, JCTVC-F712에서 사용하고 있는 spatial neighboring (도 1) 을 사용할 수 있다.
도 4은 HM4.0에서의 spatial merge candidates를 나타내고 있다. 위 방법은 JCTVC-F325에서 사용한 것처럼, co-located PU를 변형한 후에도, mergeMVD mode를 적용할 수 있다. 또한 list0 또는 list1 중에서, 어느 쪽의 motion information을 refinement할 지를 선택할 수도 있다. 그 정보는 Sliceheaer, CU 또는 PU 단위로 syntax를 추가로 부호화하여 알려 줄 수 있다.
4
Encoder
Description
1. 현재 프레임의 새로운 코딩유닛 (CU) 이 입력된다.
· 하나의 Inter CU는 여러 개의 Inter PU로 구성되며, 2가지의 예측모드 (PredMode) , MODE_SKIP와 MODE_INTER를 가진다. MODE_SKIP의 경우 더 작은 PU로 분할되지 않으며, 파티션모드 (PartMode) 가 PART_2Nx2N인 PU의 모션정보가 할당된다.
· MODE_INTER CU인 경우에는 4가지 형태의 PU 파티션으로 존재할 수 있으며, CU 레벨의 신택스에 PredMode==MODE_INTER와 파티션 형태를 나타내는 PartMode==PART_2Nx2N 또는 PART_2NxN, PART_Nx2N, PART_NxN이 시그널링된다.
2. 현재 Inter PU에 대해 모션예측을 수행한다.
· CU가 여러 개의 PU로 파티션 되면 현재 부호화될 PU가 입력된다.
· 현재의 PU에 대해 이전 프레임, 또는 이전 및 이후 프레임을 이용하여 모션예측을 수행한다. 모션예측을 통해 현재의 PU에 대한 모션정보 모션벡터, 참조픽처인덱스, 예측방향 인덱스를 구한다.
3. 현재 Inter PU의 모션예측값 (MVP) 을 구한다.
· 현재 PU의 모션정보는 그대로 보내지 않고, 압축효율을 높이기 위하여 시공간적으로 인접한 블록들로부터 얻은 예측 값과의 차이를 보낸다. 예측모드의 종류에는 Merge 모드와 AMVP 모드, MergeMVD 모드가 있다.
· 모션예측값을 구하기 위해 Merge 후보리스트와 AMVP 후보리스트 그리고 MergeMVD 후보리스트를 작성한다.
· Merge 모드는 시공간적으로 현재 PU와 인접한 블록들의 모션정보로부터 Merge 후보들을 구한다. 후보들 중 현재 PU의 모션정보와 같은 후보가 있으면, Merge 모드를 사용한다.는 플래그와 그 후보의 인덱스를 전송한다.
- 계산된 참조픽처인덱스 (refIdxLX) 를 이용하여 가용한 Temporal 모션벡터 예측값을 구한다.
- Merge 후보 리스트 (MergeCandList) 를 작성한다.
- 현재 PU와 같은 모션정보를 가지는 후보가 있으면, Merge_Flag=1로 세팅하고, 그 후보의 인덱스 (Merge_Idx) 를 부호화한다.
- Temporal bi-predictive mode이고, refIdxL0와 refidxL1이 같고, mvL0와 mvL1이 같으면, MergeMVD를 이용해, mvd를 구하여 전송하고, mvLX + mvd를 motion vector로 사용한다.
· MergeMVD 모드는 시공간적으로 현재 PU와 인접한 블록들의 모션정보로부터 Merge 후보들을 구한 후, mvd를 전송한다. 후보들 중 현재 PU의 모션정보와 같은 후보가 있으면, MergeMVD 모드를 사용한다.는 플래그와 그 후보의 인덱스를 전송한다.
· 계산된 참조픽처인덱스 (refIdxLX) 를 이용하여 가용한 Temporal 모션벡터 예측 값을 구한다.
· Merge 후보 리스트 (MergeCandList) 를 작성한다.
· 현재 PU와 같은 모션정보를 가지는 후보가 있으면, Merge_Flag=1로 세팅하고, 그 후보의 인덱스 (Merge_Idx) 를 부호화한다.
· List0 또는 List1 중 현재 frame과의 temporal distance가 큰 쪽에는 merge 후보에서 얻은 motion information을 mvp로 사용하고, mvd를 구해 전송한다.
· AMVP 모드는 시공간적으로 현재 PU와 인접한 블록들의 모션정보로부터 AMVP 후보들을 구한다.
- Luam 모션벡터 예측 값 (mvpLX) 을 구한다.
a) 인접 PU들로부터 Spatial 모션벡터후보 (MVP) 를 추출한다.
b) 모션추정 프로세스에서 구해진 RefIdxLX을 가지고 Co-located 블록의 Temporal 모션벡터후보를 추출한다.
c) MVP 리스트 (mvpListLX) 를 작성한다. 모션벡터의 우선순위는 다음과 같다. 단 가용한 벡터에 한정한다.
- Temporal Co-located 블록의 모션벡터 (mvLXCol)
- 왼쪽 인접블럭 (mvLXA)
- 상위 인접블럭 (mvLXB)
d) 여러 개의 모션벡터가 동일한 값을 가지면, 가장 우선순위가 높은 것을 제외한 모든 모션벡터를 리스트에서 삭제한다.
e) mvListLX 내 모션후보들 중 best predictor의 모션벡터를 mvpLX에 할당한다. Best Predictor는 코스트 함수 J MotSAD 를 최소화하는 후보블럭이다.
4. 현재 PU의 모션정보를 부호화한다.
· Merge 모드의 경우, Merger 후보들 중 현재 PU와 같은 모션정보를 가진 후보가 존재하면 현재 PU를 Merge 모드로 선언하고, Merge 모드를 사용했음을 알리는 Merge_Flag와 Merge 후보들 중 어떤 후보인지를 알리는 Merge_Idx를 보낸다. 그 다음 모션보상을 한 후 현재 PU와 Merge 모드로 예측된 PU와의 차이신호 (잔여신호) 를 얻는다. 보내야 할 잔여신호가 없을 때는 Merge_SKIP 모드로 보낸다.
· 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) × B (n, n) × T (n, n)
T
· 변환계수를 양자화한다.
7. Residual 신호와 변환계수 중 어떤 것을 전송할 지 RDO를 통해 결정한다.
· 예측이 잘된 경우 변환부호화 하지 않고 Residual 신호를 그대로 전송할 수 있다.
· 변환부호화 전/후 코스트 함수를 비교하여 코스트가 minimize되는 방법을 선택한다.
· 현재 블록에 대해 전송할 신호의 타입 (Residual 또는 변환계수) 을 시그널링한다.
8. 변환계수를 스캔한다.
9. 스캔된 변환계수와 Inter 에측모드를 엔트로피 부호화한다.
5
Decoder
Description
1. 수신된 비트스트림을 엔트로피 복호화한다.
· VLC 테이블로부터 블록타입을 알아내고, 현재 블록의 예측모드를 얻는다.
· 현재 블록에 대해 전송되어 온 신호가 Residual 인지, 아니면 변환계수인지 타입을 알아낸다.
· 현재 블록에 대한 Residual 신호나 변환계수를 얻는다.
2. 엔트로피 복호화된 Residual 신호나 변환계수를 역스캔 (inverse scan) 하여 2차원 블록을 생성한다.
· Residual 신호의 경우, Residual 블록을 생성한다.
· 변환계수인 경우, 변환블록을 생성한다.
3. 변환계수인 경우, 역양자화, 역변환을 하여 Residual 블록을 얻는다.
· B (n, n) = T (n, n) × C (n, n) × T (n, n)
T
.
· 역변환을 통해 Residual 신호를 얻는다.
4. Inter 예측을 수행한다.
· Merge 모드의 경우
- PredMode==MODE_SKIP && Merge_Flag==1이면 Merge 모드를 통해 Luma 모션벡터 (mvLX) , 참조픽처인덱스 (refIdxLX) 를 구해야 한다.
- 이 정보들을 구하기 위해 인접 PU 파티션들로부터 Merge 후보를 추출한다.
- 현재 PU의 Temporal Merge 후보를 구하기 위해 참조픽처인덱스 (refIdxLX) 를 구한다.
- 계산된 참조픽처인덱스 (redIdxLX) 를 이용하여, 가용한 Temporal 모션벡터 예측 값 (MVP) 을 구한다.
- MergeCandList 내의 후보갯수 (NumMergeCand) 가 ‘1’ 이면 Merge_Idx=1로 세팅하고, 그렇지 않으면 Merge_Idx를 수신한 Merge 인덱스 값으로 세팅한다. 이 인덱스값이 가리키는 후보의 모션벡터 (mvLX) 와 참조픽처인덱스 (refIdxLX) 를 추출하여, 움직임보상에 사용한다.
- Temporal bi-predictive mode이고, refIdxL0와 refidxL1이 같고, mvL0와 mvL1 이 같으면, mvd 값을 복호화하여, 다음과 같이 motion vector를 구하여 사용한다. Motion_VectorLX = mvLX + mvd
· MergeMVD 모드의 경우
- PredMode==MODE_SKIP && MergeMVD_Flag==1이면 MergeMVD 모드를
통해 Luma 모션벡터 (mvLX) , 참조픽처인덱스 (refIdxLX) 를 구해야 한다.
* MVD 값을 복호화
* 인접 PU 파티션들로부터 MergeMVD 후보를 추출한다.
* 현재 PU의 Temporal MergeMVD 후보를 구하기 위해 참조픽처인덱스 (refIdxLX) 를 구한다.
* 계산된 참조픽처인덱스 (redIdxLX) 를 이용하여, 가용한 Temporal 모션벡터예측값 (MVP) 을 구한다.
* MergeCandList 내의 후보갯수 (NumMergeCand) 가 ‘1’ 이면 MergeMVD_Idx=1로 세팅하고, 그렇지 않으면 MergeMVD_Idx를 수신한 MergeMVD 인덱스 값으로 세팅한다. 이 인덱스 값이 가리키는 후보의 모션벡터 (mvLX) 를 mvpLX로 결정한다.
* 위에서 결정된 mvp와 복호화된 MVD를 이용하여, 모션벡터 (mvLX) 를 결정한다.
· AMVP 모드의 경우
- Merge 모드가 아니면, 현재 PU의 참조픽처인덱스 (refIdxLX) 를 추출한다.
- 참조픽처인덱스를 이용하여 Luma 모션벡터예측값 (mvpLX) 을 구한다.
* 인접 PU들로부터 Spatial 모션벡터후보 (MVP) 를 추출한다.
* 참조픽처인덱스가 가리키는 Co-located 블록의 Temporal MVP를 추출한다.
* MVP 리스트 (mvpListLX) 를 작성한다. 모션벡터의 우선순위는 다음과 같다. 단, 가용한 벡터에 한정한다.
- Temporal Co-located 블록의 모션벡터 (mvLXCol)
- 왼쪽 인접블럭 (mvLXA)
- 상위 인접블럭 (mvLXB)
* 여러 개의 모션벡터가 동일한 값을 가지면, 가장 우선순위가 높은 것을 제외한 모든 모션벡터를 리스트에서 삭제한다.
* mvpListLX 안에 있는 Mvp 후보의 개수 (NumMVPCand (LX) ) 가 ‘1’ 이면, mvpIdx=0으로 세팅하고, ‘1’ 이 아니면 (즉 후보가 2개 이상이면) mpvIdx를 수신한 인덱스값으로 세팅한다.
* mvListLX 내 모션후보들 중 mvpIdx가 가리키는 모션벡터를 mvpLX에 할당한다.
* 모션벡터 mvLX를 계산한다.
mvLX[0] = mvdLX[0] + mvpLX[0] ; x 방향
mvLX[1] = mvdLX[1] + mvpLX[1] ; y 방향
5. Residual 신호와 이전 프레임의 신호를 더하여 재생신호를 생성한다.
· 계산된 모션벡터를 이용하여 이전 프레임에서 이동보상된 예측신호과 디코딩된 현재 PU의 잔여신호를 더해서 재생신호를 생성한다.
Claims (1)
- MVD를 이용한 bi-predictive temporal motion vector derivation 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110103957A KR20130039429A (ko) | 2011-10-12 | 2011-10-12 | MVD를 이용한 bi-predictive temporal motion vector derivation 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110103957A KR20130039429A (ko) | 2011-10-12 | 2011-10-12 | MVD를 이용한 bi-predictive temporal motion vector derivation 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20130039429A true KR20130039429A (ko) | 2013-04-22 |
Family
ID=48439614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110103957A KR20130039429A (ko) | 2011-10-12 | 2011-10-12 | MVD를 이용한 bi-predictive temporal motion vector derivation 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20130039429A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015051533A1 (en) * | 2013-10-11 | 2015-04-16 | Mediatek Singapore Pte. Ltd. | Improved advanced residual prediction in 3dvc |
-
2011
- 2011-10-12 KR KR1020110103957A patent/KR20130039429A/ko not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015051533A1 (en) * | 2013-10-11 | 2015-04-16 | Mediatek Singapore Pte. Ltd. | Improved advanced residual prediction in 3dvc |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102085183B1 (ko) | 움직임 정보의 부호화 방법 및 장치, 그 복호화 방법 및 장치 | |
EP3606076B1 (en) | Encoding and decoding motion information | |
KR102614946B1 (ko) | 가중 예측을 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법 | |
WO2012122786A1 (en) | Method and apparatus for derivation of spatial motion vector candidate and motion vector prediction candidate | |
SG186978A1 (en) | Methods and apparatuses for encoding and decoding motion vector | |
JP2013529878A (ja) | インターモード、スキップモード及びマージモードについて動きベクトル/動きベクトルの予測子の候補を導出する方法及び装置 | |
KR20190093172A (ko) | 움직임 정보를 처리하는 영상 처리 방법, 그를 이용한 영상 복호화, 부호화 방법 및 그 장치 | |
KR20130039429A (ko) | MVD를 이용한 bi-predictive temporal motion vector derivation 방법 | |
KR20130084053A (ko) | Sample Adaptive Offset(SAO)에서의 edge offset prediction simplification 방법 | |
KR20130002221A (ko) | Inter 예측에서의 MVP후보 결정 방법 | |
KR102679376B1 (ko) | 가중 예측을 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법 | |
KR20130084052A (ko) | Sample Adaptive Offset(SAO)에서의 diagonal edge offset을 이용한 성능향상 방법 | |
KR20130084054A (ko) | Sample Adaptive Offset(SAO)에서의 edge offset 성능향상 방법 | |
KR20130083314A (ko) | LCU boundary에서의 deblocking filtering 방법 | |
KR20130039778A (ko) | AMVP에서 Reference Index 부호화 효율 향상방법 | |
KR20130050851A (ko) | 서브블록을 이용한 변환 계수 부호화 방법 | |
KR20130083313A (ko) | Asymmetric motion partition에서의 deblocking filtering 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |