Local illumination compensation (LIC)
- VVC에 채택될 뻔했지만 하드웨어 기술 부족으로 채택되지 못했다
- 예측을 좀 더 정확하게 하는 Tool이다
- 아이디어
- 현재 블록에서 MV를 가지고 참조 블록을 가지고 예측을 한다. 이 예측 블록으로 잔차 신호를 만들어낸다
- 천천히 변화되는 영상일 경우(illumination이 천천히 변화되는 경우) 참조 영상에 그라데이션 효과를 적용해서 보정해주면 잔차 신호를 더 줄일 수 있지 않을까 하는 생각에서 나왔다
- 기술
- 현재 블록의 참조 샘플과 참조 블록의 참조 샘플을 비교해서 α와 β를 구한다
- 구한 α와 β를 예측 블록에 적용시키면 예측이 원본과 좀 더 유사해진다
- 디코더에서도 똑같이 계산할 수 있기 때문에 오버헤드가 필요없는 방법이다
Non-adjacent spatial candidate
- VVC의 condidate는 두 가지로 나눌 수 있다
- AMVP : MVD를 보내는 방법
- Merge Mode : MVD를 보내지 않는 방법
- 아이디어
- merge candidate가 잘 구성이 되면 MVD를 보내지 않아도 되는 MVP를 찾아서 그 index만 코딩하면 된다
- 즉 Merge mode를 잘 활용해서 MVD를 보내지 않도록 하면 실제로 index만 코딩하기 때문에 MVD를 코딩하지 않아도 돼서 효율이 높아진다
- Merge mode를 잘 활용하려면 candidate를 잘 구성해서 선택될 수 있도록 해야한다
- 이를 위해 candidate를 구성할 때 현재 블록과 거리가 조금 떨어져 있더라도 merge candidate를 잘 만들 수 있는 것이라면 condidate에 추가한다
이미지 삽입 p8
Template matching (TM)
- 아이디어
- 화면간 예측은 MV를 이용하여 예측에 활용할 블록을 찾아내고 찾아낼 때 활용한 MV, MVD, MVP 등을 보낸다
- 그런데 MV의 정보량이 큰 편이다
- 'MV를 보내지 않고 디코더에서 생성할 수 있으면 효율이 좋아지지 않을까?'에서 시작된 기술이다
- 기술
- 템플릿 매칭은 먼저, 찾고자 하는 대상이나 패턴을 템플릿이라는 소규모의 이미지로 정의한다
- 그 다음, 이 템플릿 이미지를 대상 이미지 위에서 슬라이딩하면서, 템플릿 이미지와 대상 이미지 각 부분과의 유사도를 계산한다
- 이 유사도는 일반적으로 상관 계수나 유클리드 거리 등을 이용하여 측정한다
- 유사도가 가장 높은 것을 예측에 활용한다
- MV는 인코더와 디코더에서 같기 때문에 디코더에서 진행해도 복원하는데는 지장이 없다
- TM을 진행할 때 SAD(Sum of Absolute Differences)로 계산한다
- 무작정 searching을 진행하면 오래 걸리기 때문에 search range를 MV에서 [-8, +8] 범위에서 찾는다
- AMVP mode와 Merge mode일 때 MVP 및 merge candidate 중에서 TM을 활용해서 가장 cost가 작은 후보를 찾아 그 후보를 MV로 활용한다
Multi-pass decoder-side motion vector refinement (DMVR)
- Merge mode에서 활용되는 기술이다
- Merge mode에서 선택된 MV가 최적이 아닐 수 있기 때문에 최적화하는 방법이다
- Merge mode에서 양방향 MV가 있을 때 한 번 더 refinement를 한다
- Inteager 단위로 찾은 MV 주위를 돌면서 좀 더 정확한 MV를 활용할 수 있도록 찾는다
- 더 정확한 Inteager를 찾았으면 MV가 Original과 유사할 수 있도록 fractional 단위로 refinement한다
- In the first pass
- VVC와 유사하다
- CU 단위로 진행한다
- start point에서 [-8, +8] 범위를 search하면서 SAD cost가 작아질 수 있도록 refinement를 한다
- In the second pass
- CU 단위가 아닌 16x16 Subblock 단위로 수행한다
- 각각의 블록이 조금 더 MV가 refinement가 될 수 있도록 SATD(Sum of Absolute Transformed Differences) cost를 활용한다
- SATD : 두 영상 블록 사이의 차이를 측정하는 방법
- In the third pass
- 8x8 Subblock 단위로 refinement를 수행한다
- BDOF을 활용하여 refinement한다
Overlapped block motion compensation (OBMC)
- 블록 단위로 코딩을 하다보면 블록마다 MV가 다르고 처리되는 과정도 다르기 때문에 블록 경계부분에서 discontinuity이 발생할 수 있다
- 일반적인 블록 기반 움직임 보상 방법은 각 블록을 독립적으로 처리하는 반면, OBMC는 인접한 블록들 사이의 경계를 더 자연스럽게 만들기 위해 블록들을 겹쳐서 처리한다
- 이 방법은 블록 경계에서의 Block Artifacts를 줄이는 데 효과적이다
- 현재 블록을 예측할 때 참조 블록에서 블록만 가져오는 것이 아닌 주변 참조 샘플까지 가져와서 옆 블록과 가져온 참조 샘플을 블렌딩을 시키면 조금 더 부드럽게 만들어질 수 있다
- Subblock에서도 블렌딩을 해서 discontinutiy가 없어지도록 한다
Template matching based OBMC
- cost 3개로 어떤 부분을 블렌딩할 픽셀로 삼을지에 대해서 결정한다
- Cost 1
- A 블록에 있는 MV를 활용하여 주변에 있는 픽셀을 가져와서 블렌딩의 대상으로 삼는다
- Cost 2
- A 블록의 위에 있는 블록의 MV를 활용하여 주변에 있는 픽셀을 가져와서 블렌딩의 대상으로 삼는다
- Cost 3
- Cost 1, 2에 해당하는 것을 weighted sum하고 해당 픽셀을 블렌딩의 대상으로 삼는다
이미지 삽입 p12
History-parameter-based affine model inheritance and non-adjacent affine mode
- affine model은 subblock 단위로 각각 다른 translation, scailing, rotation, shear을 표현할 수 있도록 해준다
- Affine merge mode와 Affine AMVP mode로 나뉜다
History-parameter-based affine model inheritance
- 기존 프레임의 움직임 정보를 이용하여 현재 프레임의 움직임을 예측하는 기법이다
- 비디오 시퀀스에서 움직임이 연속적이라는 특성을 이용하여, 이전 프레임의 움직임 정보를 토대로 현재 프레임의 움직임을 추정한다
Non-adjacent affine mode
- 인접하지 않은 블록의 움직임 정보를 이용하여 현재 블록의 움직임을 예측하는 기법이다
- 인접한 블록뿐만 아니라, 더 멀리 떨어진 블록의 움직임 정보도 고려하여, 움직임 예측의 범위를 더욱 넓혀준다
Sample-based BDOF
- BDOF는 기본적으로 각 픽셀이 시간에 따라 어떻게 이동하는지를 추정하는 광학 흐름 알고리즘을 기반으로 한다. 이는 현재 프레임과 이전 프레임, 그리고 이후 프레임 사이의 움직임을 모두 고려하여 움직임을 보다 정확하게 예측할 수 있게 한다
- 샘플 기반의 BDOF에서는, 기존 블록 베이스의 4x4가 아닌 특정 샘플들에 대해서만 BDOF를 계산하여 계산 복잡성을 줄인다. 이 샘플들은 일반적으로 이미지의 주요 특징점들이며, 이를 통해 전체적인 움직임을 대략적으로 추정할 수 있다
- 각 샘플 주변의 5x5 윈도우가 Vx와 Vy의 세부 조정을 도출하는 데 사용된다
- 8x8 subblock 단위로 BDOF를 사용할지 말지를 미리 결정해서 안 쓸경우에 복잡도를 줄이고 쓸 경우 샘플 단위로 보정작업을 한다
Interpolation
- VVC의 경우 8-tap interpolation filter는 Luma를 위해서 사용되었고, 4-tap interpolation filter는 Chroma를 위해서 사용되었다. 또한 DCT를 기반으로 사용하였다
- ECM의 경우 Luma에 대해 12-tap interpolation filter로 바뀌었고, DCT 기반이 아닌 sinc functoin 기반 interpolation filter 필터로 바뀌었다
이미지 삽입 p15
- Frequency Response 그래프를 보면 12-tap filter가 기존 VVC filter 보다 좀 더 날카롭다
Multi-hypothesis prediction (MHP)
- 여러 예측 가설을 동시에 고려하여 더 정확한 예측을 가능하게 하는 기술이다
- 핵심 아이디어는 현재의 프레임을 예측하기 위해 이전 프레임의 여러 부분을 동시에 고려하는 것이다
- bi-prediction으로 예측한 값과 특정값 h와 weighted sum하여 예측 신호를 만들어낸 후, 한 번 더 특정값과 weighted sum하여 최종 예측값을 만들어낸다
Adaptive reordering of merge cnadidates with template matching (ARMC-TM)
- merge candidate를 구성할 때 좀 더 자주 발생하는 모드는 리스트의 앞 쪽에 위치해 있다. 여기서 코딩 효율을 높이기 위해 자주 발생하는 모드에 대해서는 적은 비트를 덜 자주 발생하는 모드에는 좀 더 많은 비트를 할당하여 가변적으로 코딩할 수 있게 한다
- ARMC-TM은 candidate들의 순서를 더 잘 찾을 수 있도록 Template Matching을 활용한 기술이다
- 먼저, regular merge mode, TM merge mode, affine merge mode에서 candidate set을 만든다
- 그 후, Template Matcing을 활용해서 각 candidate의 cost를 계산한다
- 계산한 cost를 오름차순으로 정렬하면 정확하게 채택될 확률이 높은 mode 순서대로 정렬되고 이것을 코딩하면 coding bit를 줄일 수 있다
TM based reordering for MMVD and affine MMVD
- kxπ/8 대각선 각도를 따라 추가적인 세부 위치들이 추가되었으며, 이로 인해 방향의 수가 4개에서 16개로 증가하였다
- 각각의 세부 위치에 대해 템플릿(현재 블록의 위쪽 한 줄과 왼쪽 한 열)과 그 참조 사이의 SAD 비용을 기반으로, 각 기본 후보에 대한 가능한 모든 MMVD 세부 위치(16x6)가 재정렬된다
- 가장 작은 템플릿 SAD 비용을 가진 상위 1/8 세부 위치들이 사용 가능한 위치로 유지된다
Geometric partitioning mode (GPM) with merge motion vector differences (MMVD)
- GPM은 블록을 사선으로 분할하여 각각의 MV가 다른 방향을 가질 수 있도록 디자인 되어 있다. 그렇기 때문에 GPM은 merge mode에서만 동작하게 설계되어 있다
- GPM with MMVD는 GPM으로 블록을 기하학적으로 분할한 뒤, 분할된 각 블록에 대해 MMVD를 사용하여 움직임 벡터를 예측하는 방법이다
GPM with adaptive blending
- GPM의 사선으로 분리된 블록 사이의 경계선에서 discontinutiy가 발생하게 되는데 이를 blending으로 완화하는 방법이다
- 두 픽셀에 대해 weighted sum을 하여 blending을 진행한다(VVC)
- ECM에서는 네 개의 추가적인 혼합 영역 크기(기존 영역 크기의 1/4, 1/2, 2배, 4배)를 추가함으로써 개선되었다
- 선택된 혼합 영역 크기를 신호로 보내는 CU 레벨 플래그가 코딩되고, 확장된 가중치 정밀도가 사용되었다. 이는 가중치의 최대값이 8(VVC에서)에서 32로 변경되어 확장된 혼합 영역 크기를 수용하게 된다
GPM with inter and intra prediction
- GPM으로 블록을 분할하여 예측을 진행할 때 inter와 intra를 각각 분할된 블록에 적용하여 예측을 수행하도록 하는 방법이다
- 단, intra의 경우 모든 모드에 대해서 예측을 진행하는 것이 아닌 분할된 사선과 평행한 모드, 사선과 수직인 모드, Planar 모드 이렇게 3가지 모드만 지원한다
Template matching based reordering for GPM split modes
- 현재 GPM 블록의 모션 정보가 주어지면, GPM 분할 모드의 각각에 대한 TM 비용 값이 계산된다
- 그런 다음, 모든 GPM 분할 모드들이 TM 비용 값에 따라 오름차순으로 재정렬된다
- GPM 분할 모드를 보내는 대신에, 재정렬 목록에서 정확한 GPM 분할 모드가 어디에 위치하는지를 나타내는 인덱스를 Golomb-Rice 코드를 사용하여 신호로 보낸다
- GPM 분할 모드에 대한 재정렬 방법은 코딩 유닛의 두 GPM 파티션에 대한 각각의 참조 템플릿이 생성된 후에 수행되는 두 단계 과정은 다음과 같다
- GPM 파티션 가장자리를 두 GPM 파티션의 참조 템플릿으로 확장하여 64개의 참조 템플릿을 결과로 얻고, 64개의 참조 템플릿 각각에 대한 TM 비용을 계산한다
- 그들의 TM 비용 값에 따라 GPM 분할 모드를 오름차순으로 재정렬하고, 가장 좋은 32개를 사용 가능한 분할 모드로 표시한다
IBC reference area
- Inter Prediction 같은 경우 주변에 있는 이전 영상, 이후 영상의 참조 블록을 검색해서 가장 비슷한 MV를 찾는 방식이다
- IBC 참조 영역은 현재 블록 내에서 참조할 수 있는 픽셀의 범위를 나타낸다. 이 영역은 이미 인코딩된 픽셀로 구성되며, 이들 픽셀을 사용하여 현재 블록의 나머지 부분을 재생성한다
- VVC에서는 이 영역이 CU에서 1 행만 가능했지만 ECM에서는 1줄을 더 추가해 예측 정확도를 높였다
MVD predictoin
- 가능한 MVD 부호 조합과 MVD 크기의 가장 중요한 suffix 6개의 가능한 조합이 템플릿 매칭 비용에 따라 정렬되며, 실제 MVD 부호와 MVD 크기에 해당하는 인덱스가 파생되고 컨텍스트 코딩된다
- 디코더 측에서는 MVD를 다음과 같이 진행된다
- MVD 구성 요소의 크기를 분석한다
- 컨텍스트 코딩된 MVD 예측 인덱스를 분석한다
- 가능한 부호와 가능한 MVD 크기 사이의 조합을 생성하여 MV 후보를 만들고, 이를 MV 예측기에 추가한다
- 각 파생된 MV에 대한 MVD 예측 비용을 템플릿 매칭 비용에 따라 파생하고 정렬한다
- 신호된 인덱스를 사용하여 실제 MVD를 선택한다
- MVD 예측은 inter AMVP, affine AMVP, MMVD, 그리고 affine MMVD 모드에 적용된다
- 참고로, wrap around motion 보상이 활성화된 경우, MV 후보는 wrap around offset을 고려하여 클리핑되어야 한다
Enhanced bi-dirctional motion compensation
- bi-prediction을 수행할 때 가끔 블록 경계 밖으로 넘어가는 경우가 있다
- 이를 처리하기 위해서 bi-prediction을 수행할 때 하나라도 블록 밖으로 나가게 되면 그 블록은 predictor로써 제 기능을 수행하지 못하는 것이기 대문에 나간 부분을 제외하고 나가지 않은 부분만 사용한다
출처 및 참조
- MPEG뉴미디어포럼/한국방송∙미디어공학회 2023 Summer School
- 최기호, 경희대학교 전자공학과