조회 수 14541 추천 수 3 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

점차 대세가 돼가고 있는 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 인코딩을 하는 많은 릴 그룹들이 현재 그렇게 하고 있습니다.)

 

이런 10비트 인코딩이 8비트 인코딩보다 더 우수한 화질의 동영상을 만들어내느냐 하는 의문이 있을 수 있겠는데, 결과적으로 말씀드리자면 인코더에 따라 다르다고 할 수 있겠습니다. 인코더 내의 inloop 내장 필터가 강하게 적용되는 x265나 aomenc(AV1)의 경우 (특히 banding과 관련해서) 유의미한 차이가 나온다고 많이 보고되고 있습니다. (자세한 내용은 이 게시물 참고)

 

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

 

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

이 글을 추천한 사람
Prosecol bluedove Rina
Facebook Twitter Pinterest Kakao
  • ?
    태양 2021.01.31 01:29
    좋은 정보 감사합니다. 10비트가 뭔 필요있나 그러고 있었는데 점점 발전하네요
  • ?
    MuR 2022.01.23 01:36
    찾아 헤메던 정보네요 ㅠㅠㅎ
  • ?
    Prosecol 2022.11.30 13:06
    좋은 정보 한국어로 풀어서 설명해주셔서 정말 감사합니다. 인코딩에 관해서 여기서 정말 많이 알아갑니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수 추천 수
33 샤나에서 HEVC(x265)로 2패스 인코딩하기 12 file JKyle 2018.08.28 14805 0
32 샤나인코더 4.9 버전부터 추가된 편의기능 >>프리셋 메뉴 및 설정 메뉴를 빠르게 열기<< file Rina 2018.06.28 7470 0
31 하드웨어 가속 디코딩을 꺼서 인코딩 속도를 높이기 6 JKyle 2018.06.19 27901 1
30 소장용 고화질 1080p 영상 인코딩 팁 2 퍼플군단 2018.06.12 30135 0
29 샤나인코더와 자막, Q&A 1 file JKyle 2018.05.31 21058 2
28 QuickTime/Apple TV에서 재생이 안 되는 HEVC mp4/m4v 동영상 문제 해결 2 file JKyle 2018.05.21 4937 1
27 HD(720p) 이상 고해상도 동영상을 HD의 WebM(VP9, Opus 코덱)으로 인코딩하기 file JKyle 2018.05.20 5564 0
26 wINDOWS10 멀티 데스크톱 정군 2018.05.07 2645 0
25 HDR 영상 인코딩하기! 8 황금별똥 2018.01.23 9187 0
24 ASS 자막 파일을 aegisub으로 작업 시 libass를 사용하세요. file Rina 2018.01.20 4787 1
23 MP3 파일 비트레이트 320 이상 설정방법 / 자막크기 및 자막 위치 설정 방법 1 file 능소화 2017.10.28 5744 0
22 AMD 플루이드모션 60프레임 인코딩 (real 프레임레이트) 설정방법 (ffmpeg 프레임 보간기법) 23 file 능소화 2017.06.06 24393 0
21 막강한 ★샤나인코더★ 기능 제대로 사용하기 [영상-음성 분리하기 및 외부 음성파일 넣기] 37 file 능소화 2017.04.15 35385 4
20 2Audio 내장 플레이어로 재생시 기본재생 음성 지정하기 file 능소화 2017.04.09 5043 1
19 메타데이터, 챕터정보 삽입하기 1 file Rina 2017.04.02 4215 2
18 [TIP] 기존의 '귀여운 소녀' 아이콘으로 돌아가기 1 file 유밍 2017.03.30 10666 0
17 ※ 설정방법 / 프리셋파일포함 ※ 샤나인코더외부 자막 Mux 기능 추가 [v 4.5.1] 9 file 능소화 2017.03.30 15990 2
16 MKV 포맷에 ErrorDetectionType 에 대해서(지우는 방법 포함) file Rina 2017.03.14 3567 0
15 8쓰레드 부터 점유율 100프로 못찍을때 해결방법 입니다. 쩌는사냐인코더 2017.03.11 9157 0
14 webm VP9 인코딩 속도 올리는 방법 1 file 마소리스 2017.01.18 8251 0
Board Pagination Prev 1 2 3 4 Next
/ 4