3. HEVC 화면 내 예측 (Intra Prediction)

김범수·2022년 6월 2일
0

HEVC

목록 보기
3/5

HEVC에서 효율적으로 영상을 압축하기 위해 이웃 블록 간 유사도를 기반으로 화면 내 예측을 통해 공간적 중복성을 제거하여 압축을 진행합니다.

  • 화면 내 예측

  • Reference Sample Padding

그림 1. Reference Sample Padding

Intra 예측은 주변 블록의 화소 값을 통해 예측을 진행하기 때문에 해당 화소 값이 존재하지 않을 경우 Padding을 진행하게 됩니다.

좌측 그림처럼 아예 참조 샘플이 존재하지 않을 경우 '참조 샘플 = 1 << bitdepth -1 (중간 값)'로 Padding 합니다

예시로 8bit의 경우 128을 Padding하게 됩니다.

우측 그림처럼 일부 샘플만 존재하지 않을 경우 가장 가깝게 존재하는 화소 값으로 Padding합니다.

  • MDIS (Mode Dependent Intra Smoothing)

양자화 과정에서 Artifact가 포함되어 있기 때문에 필터링을 진행하여 양자화 에러를 감소시킵니다.

필터링 조건

그림 2. MDIS 필터링 조건

위 조건을 통해 필터링을 한다면 Strong Filter / Weak Filter 중 어떤 필터를 사용할지 결정합니다.

필터 결정 조건

만족 시

그림 3. MDIS Strong Filter

만족 안할 시

그림 4. MDIS Weak Filter (3-tap filter)

를 이용하여 필터링을 진행합니다.

  • Luma 예측

HEVC에서 보통 Luma (휘도), Chroma (색차) 차이를 두고 인코딩을 진행하는데 사람의 눈으로 영상을 볼 때, Luma 성분이 영향을 더 많이 주기 때문에 더 정확한 인코딩을 진행하게 되는 경향이 있습니다.

그림 5. 35가지 Luma Intra 예측

Luma Intra 예측은 0번부터 34번까지 35가지 예측을 통해 진행합니다.

[0]. Planar

그림 6. Planar 예측

Planar 예측은 위 그림에 보이는 TR 과 LB의 위치해 해당하는 화소값을 거리에 따른 가중치를 곱한 후 Shift를 진행하여 현재 화소 값을 예측하는 방법입니다.

[1]. DC

DC 예측은 말 그대로 주변 화소들의 평균 값을 통해 예측하는 방법으로 크게 두가지 단계로 나누어집니다.

그림 7. DC 예측 Step1

Step 1 :현재 블록의 상단과 좌측에 위치한 픽셀 값들의 평균 값을 구합니다

그림 8. DC 예측 Step2

주변 블록과 현재 블록간의 비연속성을 제거하기 위해서 그림과 같이 보간을 수행하여 예측을 수행합니다.

[26]. Horizon

그림 9. 수평 예측

26번 예측인 Horizon 예측은 말 그대로 좌측 이웃 블록에서 화소값을 받아 수평 예측을 진행합니다.

DC 예측 처럼 비연속성을 제거하기 위해 ds값을 통해 필터링을 수행해줍니다.

[10]. Vertical

그림 10. 수직 예측

Horizon 예측과 같은 논리를 통해 수직 예측을 진행하는 방법입니다.

[2 ~ 34] Angular

그림 11. Angular 예측1

2 ~ 17번은 수평, 18 ~ 34번은 수직 방향으로 각도 값을 통해 예측을 수행합니다.

intraPredAngular = 32tanθ로 변수를 설정하며

그림 12. Angular 예측2

11번부터 25번 예측의 경우 음의 각도를 나타내기 때문에 invAngle = 256/tanθ를 구합니다.

그림 13. Angular 예측3

수평, 수직 예측에 경우 각도에 따라 필요한 화소값이 존재하므로 참조에 필요한 값을 복사합니다.

이 과정은 압축 효과는 거의 없지만 복잡성을 감소시킵니다.

그림 14. Angular 예측4

Positive Angle, Negative Angle 모두 해당 각도에 따라 해당 하는 참조 픽셀들 사이를 32등분 하여 해당하는 위치를 찾습니다.

해당 거리에 따른 가중치의 합을 구한 후 5만큼 shift (나누기 32)를 통하여 예측 픽셀 값을 구합니다.

즉, Angular 예측은 해당 모드에 대한 각도에 대해서 참조 픽셀 과의 거리에 따른 가중치 합을 통해 예측 화소 값을 구하는 과정입니다.

  • Chroma 예측

그림 15. Angular 예측4

Chroma 예측은 대부분 Luma 예측과 비슷하지만 4번 DM 모드가 추가된 형태입니다.

DM 모드는 Luma 예측 방향을 그대로 예측하는 방법으로 Chroma는 Luma와 비슷한 경향의 영상을 띄기 때문에 DM 모드를 이용해 복잡도를 감소시켜 효율적인 예측을 가능하게 합니다.

  • MPM (Most Probable Mode)

그림 16. Angular 예측4

MPM (Most Probable Mode)이란 말 그대로 높은 확률의 모드를 미리 정해진 MPM 후보로 설정하고 MPM_idx를 이용하여 표현해 발생 bit를 감소시키는 기술입니다.

기존 방법대로 35가지의 Mode를 전송한다면 6bit가 들지만 MPM을 사용 후 현재 모드가 MPM 후보에 있다면 2~3 bit, 없다면 6bit가 필요하기 때문에 전송하는 비트량을 감소시킬 수 있습니다.

위 순서도를 보면 조건에 따라 발생 확률이 높은 MPM 후보를 정하는 알고리즘이 표현되어있습니다.

Intra 예측은 기본적으로 주변 블록의 화소 값을 참조하기 때문에 해당 주변 블록과 예측 각도에 따라 거리에 따른 가중치를 통해서 현재 예측 화소 값을 결정하게 됩니다.

개인적으로 MPM 기술이 인상깊게 느껴졌는데 현재 블록의 성격에 따라 특정 예측 모드가 많이 발생한다는 통계적 특성을 이용하여 발생 비트를 감소시키는 것을 보고 이론적인 관점에만 국한되지않는 시야를 가져야 새로운 아이디어를 찾아낼 수 있다는 생각이 들었습니다.

profile
iOS Developer

0개의 댓글