Skip to menu

본문시작



질문하기 전에 검색하세요(Search before asking a question)


Views 2403 Votes 1 Comment 0
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

점차 대세가 돼가고 있는 HDR 영상에 대한 것을 소개합니다.

 

1. 기본적인 원리

■ 10비트 샘플 크기와 HDR 영상

색공간과 Bit Depth에서 볼 수 있듯, 8비트 영상과 10비트 영상을 구분하는 기준은 샘플(각 픽셀의 채널당 데이터 조각)크기(bit depth)입니다. 8비트 영상의 경우 각 채널당 2의 8제곱 단계, 즉 256 단계까지 값을 가질 수 있지만 10비트 영상은 채널당 8비트 영상의 네 배인 1024 단계(=2의 10제곱)까지 값을 가질 수 있어 표현의 범위가 넓어집니다. 이것은 영상 신호의 동적 범위(DR, dynamic range)를 확대할 수 있기 때문에 기존의 SDR(standard dynamic range)보다 표현 범위가 넓어진 HDR(high dynamic range) 영상의 기반이 됩니다. 일반적으로, 모든 10비트 영상이 HDR 영상인 것은 아니지만 HDR 영상이 되기 위해서는 샘플의 크기가 최소한 10비트는 되어야 합니다.

 

<HDR10 영상 스크린샷>

 

<톤매핑이 제대로 처리되지 않을 경우 재생기에서 보이는 HDR10 영상>

 

■ 색공간

HDR 영상을 이해하기 위해서는 영상 표현의 기반이 되는 색공간(color space)에 대한 것을 간략하게나마 알아야 합니다. 색공간에 대한 국제적인 표준안은 UN의 ITU(International Telecommunication Union) 중 무선통신 담당 섹터인 ITU-R에서 제정하는 권고안에 따르고 있는데, TV 관련 기술의 발달에 따라 다음과 같은 권고안들이 표준이 되고 있습니다.

① Rec. 601 (BT.601)

SDTV를 위한 색공간 규정

② Rec. 709 (BT.709)

HDTV를 위한 색공간 규정. Rec. 601과 거의 동일. sRGB 색공간과 동일.

 

<CIE 1931 x, y 색상 도표상의 BT.709 색공간>

 

③ Rec. 2020 (BT.2020)

UHDTV를 위한 색공간 규정. BT.709보다 약 211% 색 표현 범위가 넓어짐.

<CIE 1931 x, y 색상 도표상의 BT.2020 색공간>

 

<BT.709와 BT.2020 색공간 비교>

 

④ Rec. 2100 (BT.2100)

HDR 영상을 위한 규정. 색공간 자체는 BT.2020과 동일하나 감마 변환[transfer function]은 HDR 용으로 새롭게 규정함.

 

결론적으로, 현재 우리가 인코딩할 때 신경 써야 할 색공간은 BT.709와 BT.2020 두 가지뿐입니다. 단지 BT.2020은 HDR 영상과 연관돼 있어서 추가적인 설정에 좀 더 신경을 써야 하는 것이 다릅니다.

 

■ 변환 함수(transfer function)

전자기적 용어로, 입력값에 대해 기기의 출력값을 상정하는 함수입니다. 그냥 간단하게 밝기를 적절하게 변환하기 위한 '감마 변환 함수'라고 생각하면 됩니다. 변환 특성(transfer characteristics)이라고도 불립니다.

 

SDR 영상을 위한 변환 함수는 색공간 이름과 동일하게 BT.601, BT.709로 불리고 인코딩 시 별로 신경 쓸 것이 없지만, HDR 영상을 위한 인코딩을 위해서는 다음의 두 가지 변환 함수를 기억할 필요가 있습니다.

 

① PQ(Perceptual Quantizer)

SMPTE라는 기관에 의해 제안된 SMPTE ST 2084로, BT.2020 색공간을 기반으로 10,000 cd/m2까지의 밝기를 지원합니다. x265에서는 smpte2084. 주로 사용되는 변환 함수

 

② HLG(Hybrid Log-Gamma)

BBC와 NHK에 의해 제안된 것으로, 기존 SDR의 감마 곡선과 로그 곡선의 혼합 형태. SDR 디스플레이에서도 사용할 수 있다는 장점이 있습니다. x265에서는 arib-std-b67.

 

 

■ HDR 표준들

HDR 영상이라는 용어 자체가 모호한 부분이 있기 때문에 다음과 같은 표준안들이 사용되고 있습니다.

 

① HDR10

미국의 CTA(Consumer Technology Association)에서 제안된 표준안으로, 10비트 bit depth + Rec. 2020 색공간 + SMPTE ST 2084 (PQ) 변환 함수 사용의 조합입니다. 거기에 추가적으로 비디오 스트림 내에 SEI(supplemental enhancement information) 메시지로 SMPTE ST 2086으로 제정된 "Mastering Display Color Volume" 정적 메타데이터 - MaxFALL(Maximum Frame Average Light Level)과 MaxCLL(Maximum Content Light Level)과 같은 - 를 삽입해야 합니다. 공개 표준안으로, 가장 광범위하게 채택되고 있습니다.

 

② HDR10+

삼성과 아마존 비디오에서 제안한 표준안으로, 기존의 HDR10에 SMPTE ST 2086 정적 메타데이터와 더불어 삼성이 제안한 SMPTE ST 2094-40 동적 메타데이터를 추가할 것을 규정한 안입니다. 라이센스 비용을 지불할 필요가 없는 표준안으로, 삼성, 파나소닉, 20세기 폭스 사가 설립한 HDR10+ Alliance가 관리하고 있습니다.

 

③ 돌비 비전(Dolby Vision)

돌비가 제안한 유료 포맷입니다. 기존의 다른 표준안에 비해 12비트 지원 및 더 높은 최대 밝기 지원(10,000 cd/m2)의 장점이 있습니다. 돌비가 제안한 SMPTE ST 2094-10 동적 메타데이터를 추가합니다. LG, TCL, Vizio 등이 지원합니다.

 

④ SL-HDR1

유럽 회사들에 의해 제안된 표준안으로, PQ 대신 HLG를 변환 함수로 사용합니다. SDR 컨텐츠와 하위 호환성을 가지고 있고, SMPTE ST 2086 정적 메타데이터 외에 SMPTE ST 2094-20, 2094-30 동적 메타데이터를 추가합니다.

 

HDR 영상에 대한 보다 자세한 내용은 해당 위키피디어 문서를 참고하십시오.

 

2. HDR 인코딩의 방법

■ HDR 원본을 HDR 동영상으로 인코딩

원본이 HDR인 동영상을 HDR 동영상(대부분 HDR10)으로 재인코딩할 때는 다음의 몇 가지 사항을 주의해야 합니다.

 

① 픽셀 포맷 관련

현재 배포되는 HDR 동영상들은 대부분 10비트의 샘플 크기를 갖고 있기 때문에 비압축 데이터 포맷이 10비트임을 명시하고 이를 처리할 수 있는 프로파일을 선택해야 합니다.

 

FFmpeg의 경우 -pix_fmt yuv420p10le 일반 옵션으로 10비트 픽셀 포맷을 명시하고, x264의 경우 high10, x265의 경우 main10을 프로파일로 선택합니다.

 

② 색공간, 변환 함수 관련 (HDR10)

출력 영상의 정확한 색공간 정보(primaries와 color matrix)와 변환 함수(transfer characteristics)를 명시해야 합니다.

 

FFmpeg의 경우 -color_primaries bt2020 -colorspace bt2020nc -color_trc smpte2084 일반 옵션을 주고, x264와 x265 모두 비디오 스트림의 VUI(video usability info) 메타데이터로 각각 해당하는 항목을 명시합니다.

 

x265의 경우 아래의 고유 옵션 설정을 추가:

 

-x265-params colorprim=bt2020:colormatrix=bt2020nc:transfer=smpte2084

 

③ 정적 메타데이터를 비디오 스트림에 삽입 (HDR10, SMPTE ST 2086)

HDR10을 지원하는 TV 재생을 위해 재생에 필요한 정적 메타데이터를 비디오 스트림에 삽입할 수 있도록 인코더에 매개변수로 넣어 줍니다.

 

x264는 이 부분에 대한 지원이 부족하여 주로 x265를 이용합니다. -x265-paramsmaster-display, max-cll 옵션 등으로 설정합니다. (x265 매뉴얼의 이 부분이 부분 참조)

 

샤나인코더에서는 HDR -> HDR(HDR10) 인코딩 (HEVC(x265), 1080p) 프리셋을 이용해서 작업을 할 수 있습니다.

 

■ HDR 원본을 SDR 동영상으로 인코딩

원본이 HDR인 동영상을 8비트 SDR 영상으로 인코딩할 수도 있는데, 이때 주의할 점은 원본의 풍부한 색감을 비교적 정확하게 보존하는 것입니다. 이를 위해서는 톤매핑(tone-mapping)이라는 과정을 거쳐야 하는데, FFmpeg에서는 tonemap 필터와 zscale 필터로 이를 수행할 수 있습니다. 이때 픽셀 포맷 및 색공간, 변환 함수 관련 정보를 8비트 영상에 맞추어서 주어야 함은 물론입니다.

 

FFmpeg에서 구체적으로 적용하는 방법은 tonemap, zscale 필터를 이용한 HDR->SDR 변환 (FFmpeg CLI)를 참고하시기 바랍니다.

 

샤나인코더는 4.9.0.6 버전 이후 빠른 설정에서 HDR ⇒ SDR 변환에 필수적인 톤매핑 기능을 제공하고 있으므로 프리셋과 함께 비교적 쉽게 인코딩을 진행할 수 있습니다.

 

 

□ 10비트 인코딩에 관한 몇 가지 코멘트

가끔 원본이 8비트인데 색공간 변환(톤매핑) 없이 10비트로 인코딩된 경우를 볼 수 있습니다. (SDR인 블루레이를 립하여 x265 인코딩을 하는 많은 릴 그룹들이 현재 그렇게 하고 있습니다.) 이런 인코딩 방식을 고집하는 이유는 몇 가지가 있는데, 예전 버전의 x265가 8비트 버전과 10비트, 12비트 버전으로 분리돼 있을 때 본인들에게 10비트 인코딩이 익숙하기 때문이거나, x265 개발이 10비트 위주로 진행돼 왔기 때문에 이를 반영한다는 식입니다.

 

하지만 이런 10비트 인코딩이 8비트 인코딩보다 더 우수한 화질의 동영상을 만들어내느냐 하면 그건 전혀 그렇지 않습니다. 8비트에 담긴 정보가 그릇만 10비트로 바뀐다고 더 나아질 수는 없습니다. 단지 인코딩 과정에서 8비트로 인코딩할 때보다 용량이 줄어들 수는 있는데 (실제 파일 용량은 8비트로 인코딩할 때보다 소폭이나마 줄어드는 경우가 많습니다), 이는 10비트 샘플의 손실 압축에는 8비트 샘플과는 다른 기준이 적용되기 때문입니다. 용량이 8비트 때보다 더 줄어든다는 것은 어떤 의미에서는 더 많은 손실을 가져왔다는 것이니 화질 면에서는 오히려 더 안 좋아졌다고 볼 수도 있습니다.

 

물론 등고선 현상(banding, 계조 무너짐)을 완화하기 위해 8비트 입력을 받아서 필터 처리 과정에서 16비트로 변환하고, 채널을 분리해서 디더링 작업을 하고 나서 10비트로 최종 출력하는 방식으로 필터 처리를 한다면 화질상의 변화가 있을 수 있습니다. 이런 경우는 단순히 bit depth를 10비트로 선택해서 인코딩하는 것과는 다른 결과를 만들어냅니다. 하지만 이 경우에도 10비트 영상을 8비트 디스플레이에서 보기 위해 디더링 단계를 거쳐야 하므로 이 과정에서 추가적인 변형이 일어날 수 있다는 점은 고려해야 합니다.

 

대부분 8비트만을 지원하는 PC 모니터에서 10비트 인코딩된 영상을 화면에 뿌리기 위해서는 디더링 단계를 거쳐야 합니다. 그런데 이렇게 하드웨어에 의한 재생 단계의 디더링이 가끔 우리 눈에는 8비트 영상보다 조금 더 나아 보일 수도 있습니다. 하지만 이런 방식은 근본적으로 화질이 개선되는 것은 아닙니다.

 

8비트 SDR 원본을 10비트로 인코딩할 때 발생하는 또다른 문제는 범용성색감입니다. 이런 식으로 인코딩된 영상은 컴퓨터로 감상한다면 상관없지만 HDR 지원이 안 되는 HDTV로는 10비트 영상을 재생할 수 없으므로 감상이 불가능합니다. 그리고 HDR HDTV로 감상하더라도 색감은 전혀 HDR처럼 생생하지 않습니다. 그냥 SDR을 10비트로만 인코딩한 것뿐이니까요.

 

HDR 지원이 안 되는 HDTV로 감상하기 위해서는 8비트로 재인코딩해야 하는데, 이 경우 픽셀 포맷 변환과 톤매핑을 거쳐야 하므로 번거로운 추가 작업이 되는 것은 물론 또다른 화질 저하가 초래됩니다.

 

이러한 이유들로 HDR 영상도 아닌 8비트 원본을 단순히 10비트나 보다 큰 샘플 크기로 인코딩하는 것은 별로 권하고 싶지 않습니다. 물론 어디까지나 선택은 본인의 몫입니다.

 
이 글을 추천한 사람
Rina
Facebook Twitter Pinterest Kakao

List of Articles
No. Subject Author Date Views Votes
Notice 사용 팁 게시판 이용 안내 Rina 2020.03.18 2127 0
56 기초 용어 정리 (샤나인코더 기준) file JKyle 2020.06.01 3305 0
55 오디오 채널 중 원하는 부분만 선택해서 인코딩하기 2 file JKyle 2020.05.22 1939 0
54 다중 오디오 동영상 인코딩하기 2 file JKyle 2020.03.17 3055 2
53 HEVC 코덱 설정->튜닝 옵션별 각 화질 비교 3 file 바봉이 2020.02.05 8001 0
52 H264(AMF), HEVC(AMF) 옵션 도움말 1 JKyle 2020.02.03 3959 0
51 H264(NVENC), HEVC(NVENC) 옵션 도움말 1 JKyle 2020.02.03 3615 0
50 필터 적용 사례: 로고/워터마크 제거 1 JKyle 2020.01.31 3118 1
» HDR 영상과 10비트 영상 JKyle 2020.01.29 2403 1
48 색공간과 Bit Depth 5 JKyle 2020.01.28 1044 1
47 샤나인코더 영상 사이즈 변경 옵션을 통한 FFmpeg 필터의 기초 이해 1 JKyle 2020.01.27 2844 1
46 샤나인코더의 H264 설정과 FFmpeg의 x264 설정 이해 8 JKyle 2020.01.27 5939 1
45 FFmpeg 명령어 구조와 샤나인코더 작동 방식 이해 JKyle 2020.01.26 1354 0
44 [인포그래픽] 인코딩 작업 흐름과 자막 작업 1 JKyle 2020.01.25 1018 0
43 [인포그래픽] 인코딩 작업의 흐름도 1 JKyle 2020.01.25 1813 0
42 [필독] 비디오 코덱과 기본 용어 (H.264, HEVC) 1 JKyle 2020.01.25 5059 1
41 샤나인코더로 움짤 만들기 file JKyle 2019.09.08 2770 0
40 기록 보기에서 Consider increasing the value for the 'analyzeduration' and 'probesize' options 내용이 있을 때 해결법 4 Rina 2019.09.04 1342 1
39 SRT SMI 자막 인코딩 이용시 한글 깨짐 자막변환 방법 file 나그네3 2019.03.14 7024 1
38 webm VP9 멀티스레드 활성화하는 방법, 속도 향상시키는 방법 마소리스 2018.09.25 3686 0
Board Pagination Prev 1 2 3 Next
/ 3