할로윈 특가사탕 안 주면, 영상을 고친다!세 플랜 모두 인하. 영구 라이선스 $30 할인11월 2일 23:59(태평양 시간)까지

요금 보기
색과 HDR심층 분석

SDR vs HDR 심화: PQ, HLG, 톤 매핑, HDR10 인코딩

PQ와 HLG가 빛을 기록하는 방식, HDR에 10비트가 필요한 이유, HDR10 메타데이터의 의미, 톤 매핑 원리와 직접 테스트한 x265, SVT-AV1, FFmpeg 명령을 정리했습니다.

핵심 요약

SDR과 HDR의 차이는 영상이 코드값을 빛으로 바꾸는 방식에 있습니다. SDR은 100니트 디스플레이를 기준으로 만든 감마 곡선과 BT.709 색을 씁니다. HDR은 ITU-R BT.2100의 PQ 또는 HLG 곡선, BT.2020 색, 최소 10비트를 쓰며, 마스터가 얼마나 밝았는지 디스플레이에 알려 주는 메타데이터가 붙는 경우가 많습니다.

  • SDR과 HDR은 네 가지 층위에서 다릅니다. 전달 함수, 색 원색, 비트 심도, 메타데이터입니다.
  • PQ는 코드값 하나하나를 최대 10,000니트까지의 고정된 밝기에 대응시킵니다. HLG는 디스플레이의 피크를 기준으로 한 상대값이라 마스터링 메타데이터가 필요 없습니다.
  • PQ에는 최소 10비트가 필요합니다. 계산해 보면 100니트 부근에서 8비트 PQ의 한 단계는 빛이 4.7% 뛰는 것이고, 10비트는 1.1%입니다.
  • 톤 매핑은 HDR 하이라이트를 더 어두운 디스플레이에 맞춥니다. 작품 전체에 정적 곡선 하나를 쓰거나, 장면마다 동적 메타데이터(HDR10+, Dolby Vision)를 씁니다.
  • 태그는 픽셀에 이름표를 붙일 뿐입니다. 픽셀의 의미를 바꾸려면 실제 변환이 필요하며, ffprobe로 둘 다 확인할 수 있습니다.

영상을 HDR로 만드는 것은?

HDR 영상은 코드값이 SDR보다 훨씬 넓은 범위의 빛을 나타내는 영상으로, ITU-R BT.2100의 PQ 또는 HLG 전달 함수로 인코딩하고 BT.2020 원색, 10비트 또는 12비트로 담습니다.

층위SDRHDR
전달 함수BT.709 카메라 곡선, BT.1886 디스플레이 곡선(감마 2.4)PQ(SMPTE ST 2084) 또는 HLG(ARIB STD-B67), 둘 다 BT.2100에 정의
기준 피크100니트PQ는 최대 10,000니트, HLG는 상대값이며 1,000니트를 기준으로 삼음
기준 백색그레이딩한 SDR에서 신호의 약 90%203니트: PQ 신호의 58%, HLG의 75%
원색BT.709BT.2020
비트 심도배포용은 8비트가 일반적10비트 또는 12비트
메타데이터없음정적(HDR10), 동적(HDR10+, Dolby Vision), 또는 없음(HLG)

각 층위는 서로 독립적입니다. 10비트 SDR 파일도, 메타데이터 없는 PQ 파일도 있을 수 있습니다. 층위마다 자체 태그가 있고, 플레이어는 픽셀을 보고 추측하지 않고 태그를 읽습니다.

전달 함수: BT.1886, PQ, HLG

전달 함수는 신호값을 빛에 대응시킵니다. ITU-R BT.1886은 SDR 디스플레이 곡선을 기준 백색 100니트의 2.4 거듭제곱 함수로 정의합니다. 그 짝인 BT.709 카메라 곡선은 0.45 거듭제곱에 검은색 근처의 선형 구간을 더한 것입니다.

PQ(SMPTE ST 2084)는 디스플레이 기준입니다. 코드값마다 최대 10,000니트까지의 특정 휘도를 뜻합니다. BT.2100은 PQ가 사람의 시각에 맞춘 곡선으로 주어진 비트 심도에서 아주 넓은 밝기 범위에 도달한다고 설명합니다. 공식으로 계산해 보면 100니트는 신호의 51%, 203니트는 58%, 1,000니트는 75%에 해당하고, 범위의 아래쪽 절반이 0에서 약 92니트를 차지합니다.

HLG(ARIB STD-B67)는 장면 기준입니다. 신호는 장면의 상대적인 빛을 나타내고, 얼마나 밝게 보여 줄지는 디스플레이가 정합니다. ITU-R 보고서 BT.2390은 신호 아래쪽 절반은 SDR에 가까운 제곱근 곡선, 그 위는 로그 곡선이라고 설명합니다. BT.2100은 디스플레이의 시스템 감마를 1,000니트에서 1.2로 정하고 다른 피크에 맞춰 조정하므로(γ = 1.2 + 0.42 log10(Lw / 1000)), HLG 신호 하나가 메타데이터 없이도 600니트 TV나 1,500니트 모니터에 맞춰집니다.

신호 레벨과 로그 스케일 휘도로 그린 세 가지 전달 함수: 100니트까지의 BT.1886 감마 2.4, 10,000니트까지의 PQ, 1,000니트 디스플레이의 HLG, 203니트에 표시한 HDR 기준 백색

참고: BT.2100은 제작 과정에서 한 가지 방식을 일관되게 쓰고 PQ와 HLG를 섞지 말라고 권합니다. 둘 사이를 오가는 것은 이름표를 바꾸는 일이 아니라 변환입니다.

색 원색: BT.709 vs BT.2020

원색은 신호가 표현할 수 있는 가장 붉은 빨강, 가장 초록다운 초록, 가장 파란 파랑을 정합니다. BT.709는 CIE 1931 xy 색도도에서 (0.640, 0.330), (0.300, 0.600), (0.150, 0.060)에 원색을 두고, BT.2100은 (0.708, 0.292), (0.170, 0.797), (0.131, 0.046)의 BT.2020 원색을 씁니다. 둘 다 D65 백색점을 씁니다. 계산하면 BT.2020 삼각형의 면적은 BT.709의 약 1.9배이고, 이를 다 채우는 마스터는 드뭅니다. 그레이딩 모니터는 P3-D65인 경우가 많아서, x265 문서의 마스터링 문자열 예시도 P3-D65 모니터를 기준으로 합니다.

스펙트럼 궤적, BT.709·P3-D65·BT.2020 삼각형, D65 백색점을 표시한 CIE 1931 xy 색도도

같은 색이라도 컨테이너마다 코드값이 다릅니다. 순수한 BT.709 빨강은 BT.2020에서 선형 RGB 약 (0.627, 0.069, 0.016)이 됩니다. BT.709 픽셀을 변환 없이 BT.2020으로 이름만 바꾸면 모든 색의 채도가 높아집니다. YouTube도 Rec. 2020 원색으로 태그한 P3 마스터는 채도가 과해지고 색조가 틀어져 보인다고 경고합니다.

비트 심도: PQ에 10비트 이상이 필요한 이유

밴딩은 이웃한 코드값 사이의 빛 차이가 눈에 보일 만큼 클 때 나타납니다. PQ는 SDR이 0~100니트에 쓰는 코드 범위에 0~10,000니트를 펼쳐 놓습니다. BT.2100과 BT.1886 공식으로 계산한 협대역 코드 기준 값은 다음과 같습니다.

밝기8비트 PQ10비트 PQ12비트 PQ8비트 SDR, 감마 2.4
1니트단계당 9.4%단계당 2.3%단계당 0.56%단계당 7.7%
100니트단계당 4.7%단계당 1.1%단계당 0.28%단계당 1.1%
1,000니트단계당 4.3%단계당 1.1%단계당 0.26%SDR 범위 밖

100니트 부근에서 10비트 PQ는 백색 부근의 8비트 SDR과 비슷한 정밀도를 내면서 10,000니트까지 다룹니다. BT.2390은 이 단계를 Barten 모델의 가시 임계값과 비교합니다. 12비트 PQ는 10,000니트에서 0.001니트 미만까지 임계값 아래에 머물고, 10비트 PQ는 임계값을 살짝 넘지만 실제로는 현실적인 카메라 노이즈가 이를 가립니다.

PQ 8·10·12비트와 감마 2.4 8·10비트에서 이웃 코드값 사이의 대비 단계(퍼센트)를 로그 축 휘도에 대해 그린 그래프

그러니 중간 단계는 10비트 이상으로 유지하고, 8비트로 내릴 때는 디더링을 하세요. 테스트에서 zscale의 d=error_diffusion은 톤 매핑한 어두운 그라데이션에서 레벨 수는 그대로 두면서 곧은 밴드 경계를 미세한 노이즈로 흩어 놓았습니다. 밴딩 제거는 8비트 vs 10비트 영상을 참고하세요.

HDR 메타데이터: 정적과 동적

HDR10은 BT.2020 원색, 10비트의 PQ에 정적 메타데이터, 즉 작품 전체에 대한 설명 하나를 더한 것입니다.

메타데이터설명하는 내용정의
마스터링 디스플레이그레이딩 모니터의 원색, 백색점, 피크와 블랙SMPTE ST 2086(x265 master-display)
MaxCLL작품에서 가장 밝은 픽셀의 밝기(니트)CTA-861.3(max-cll 첫 번째 값)
MaxFALL프레임 평균 밝기의 최댓값(니트)CTA-861.3(max-cll 두 번째 값)
HDR10+장면별 또는 프레임별 밝기, 대비, 색SMPTE ST 2094-40(x265 dhdr10-info)
Dolby Vision모든 이미지에 대한 동적 메타데이터, 최대 12비트 색Dolby

정적 메타데이터를 쓰면 대체로 어둡고, 밝은 폭발 장면은 하나뿐인 영화도 그 폭발을 염두에 두고 고른 곡선 하나를 받습니다. HDR10+는 자사의 동적 메타데이터를 디스플레이가 톤 매핑을 실시간으로 최적화하게 해 주는 지시라고 설명하고, Dolby는 Dolby Vision이 모든 이미지를 TV 성능에 맞춰 매핑한다고 말합니다. HLG에는 마스터링 메타데이터가 없고, 디스플레이의 시스템 감마가 맞춰 주는 역할을 합니다.

팁: 실제 그레이딩 모니터와 측정한 레벨을 적으세요. MaxCLL을 측정할 수 없다면 x265에서 '최댓값 표시 없음'을 뜻하는 0을 지정할 수 있고, 어림짐작보다 이쪽이 낫습니다.

톤 매핑: HDR을 더 어두운 디스플레이에 맞추기

톤 매핑은 화면의 다이내믹 레인지를 디스플레이에 맞게 줄이는 것이고, ITU-R 보고서 BT.2446은 그 반대를 역톤 매핑이라고 부릅니다. 정적 매핑은 작품 전체에 곡선 하나를 쓰며, 보통 마스터링 피크나 MaxCLL을 기준으로 고릅니다. 동적 매핑은 메타데이터나 프레임 측정에 따라 시간에 맞춰 바뀝니다. BT.2390은 동적 매핑이 장면 최댓값 같은 통계에 적응할 수 있다고 설명합니다.

곡선하는 일대가
Clip범위 안의 값은 두고 나머지는 잘라 냄하이라이트가 평평한 덩어리가 됨
Reinhard단순한 롤오프, L / (L + c)밝기는 고르지만 디테일과 색이 밋밋해짐
Hable(필르믹)토와 숄더가 있는 S자 곡선양 끝의 디테일을 지키지만 화면이 약간 어두워짐
Möbius니 아래는 그대로, 위는 롤오프범위 안의 대비와 색을 지킴
BT.2390 EETFPQ 신호에서 니 아래는 1:1, 위는 에르미트 스플라인마스터보다 어두운 PQ 디스플레이용으로 설계됨

EETF는 PQ 신호를 마스터링 범위로 정규화하고, KS = 1.5 × maxLum − 0.5(maxLum은 그 척도에서의 목표 피크)에서 니를 시작한 뒤, 소스 피크가 디스플레이 피크에 닿도록 위쪽을 굽힙니다. 1,000니트 마스터라면 100니트 디스플레이에서는 니가 약 28니트, 300니트 디스플레이에서는 약 161니트에 놓입니다.

1,000니트 마스터를 100니트 디스플레이에 보여 줄 때의 톤 매핑 곡선: FFmpeg에 구현된 clip, Reinhard, Hable, Möbius와 BT.2390 EETF

FFmpeg의 tonemap 필터는 clip, linear, gamma, Reinhard, Hable, Möbius를 구현합니다. 문서에 따르면 곡선은 부동소수점 선형광에서만 작동하므로, zscale로 선형화하고 톤 매핑한 뒤 다시 변환하는 체인을 씁니다.

ffmpeg -i hdr10.mp4 -vf "zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=mobius:peak=10:desat=0,zscale=t=bt709:m=bt709:r=tv:d=error_diffusion,format=yuv420p" -c:v libx264 -crf 18 -color_primaries bt709 -color_trc bt709 -colorspace bt709 -color_range tv -c:a copy sdr.mp4

npl=100은 선형 1.0을 100니트로 만들므로 peak=10은 1,000니트를 뜻합니다. 0으로 두면 피크는 파일의 메타데이터에서 가져옵니다. desat=0은 아주 밝은 픽셀을 흰색 쪽으로 바래게 하는 기본 동작을 끕니다. 0~1,000니트의 합성 PQ 그라데이션에서 나온 8비트 출력 코드는 다음과 같습니다(평균값, 제한 범위이므로 235가 흰색).

소스 레벨clipreinhardhablemobius
25니트코드 139코드 133코드 98코드 139
100니트코드 235코드 187코드 151코드 201
204니트코드 235코드 209코드 182코드 218
1,000니트코드 235코드 235코드 235코드 235

Clip은 100니트 위를 모두 같은 흰색으로 만들었고, Hable은 하이라이트 구분을 가장 많이 남긴 대신 중간 톤을 가장 많이 어둡게 했고, Möbius는 니 아래 값을 건드리지 않았습니다. 내 영상으로 직접 판단하세요. SDR 쪽 증상은 내보낸 영상이 물 빠진 것처럼 보이는 이유를 참고하세요.

참고: tonemap에는 BT.2390 모드가 없고, 테스트한 FFmpeg 8.1 빌드에는 libplacebo, tonemap_opencl, tonemap_vaapi 필터가 없어서 이들은 테스트하지 않았습니다.

SDR→HDR: 배치와 확장

배치는 화면의 다이내믹 레인지는 그대로 두고 PQ나 HLG로 다시 인코딩해, SDR 소재를 HDR 프로그램 안에 넣는 방법입니다. BT.2446은 이를 위해 ITU-R 보고서 BT.2408을 참조하라고 하며, 기준점은 BT.2100이 203니트로 정의한 HDR 기준 백색입니다.

ffmpeg -i input_sdr.mp4 -vf "zscale=t=linear:npl=203,format=gbrpf32le,zscale=p=bt2020:t=smpte2084:m=bt2020nc:r=tv:npl=203,format=yuv420p10le" -c:v libx265 -preset slow -crf 18 -profile:v main10 -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc -color_range tv -tag:v hvc1 -c:a copy sdr_in_pq.mp4

테스트에서 SDR의 최대 백색은 10비트 코드 573, 즉 PQ의 203니트로 나왔습니다. npl=100은 코드 509(100니트), npl=1000은 723(1,000니트)이 됐습니다. 파일은 올바른 PQ이지만 기준 백색보다 밝은 부분은 하나도 없습니다.

확장은 역톤 매핑입니다. 하이라이트를 기준 백색 위로 끌어올리고 색을 넓힙니다. BT.2446은 그림자와 중간 톤은 원래와 가깝게 두고, 평균 밝기를 보기 불편할 만큼 올리지 말라고 하며, 확장이 소스에 이미 있던 아티팩트를 키울 수 있다고 경고합니다. 보고서의 방법은 정적 곡선이지만, 적응형이면서 공간적으로 달라지는 방법도 있다고 언급하는데, AI 기반 SDR→HDR이 여기에 속합니다. 다른 처리와 어떻게 결합하는지는 SDR→HDR 변환과 부드러운 움직임을 참고하세요.

참고: 태그만 바꾸면 둘 다 되지 않습니다. 10비트 SDR의 최대 백색(코드 940)을 PQ로 읽으면 디스플레이에 10,000니트를 요구하게 됩니다.

x265와 SVT-AV1로 HDR10 인코딩하기

인코더는 10비트 프로파일, 색 정보, 정적 메타데이터를 기록해야 합니다.

x265(HEVC Main 10)

ffmpeg -i master_pq.mov -c:v libx265 -preset slow -crf 18 -pix_fmt yuv420p10le -x265-params "profile=main10:colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc:range=limited:hdr10=1:repeat-headers=1:master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,50):max-cll=1000,400" -tag:v hvc1 -c:a copy hdr10.mp4

-x265-params의 각 키는 x265 옵션(--colorprim, --hdr10, --master-display 등)에 대응합니다.

설정하는 일
colorprim, transfer, colormatrixBT.2020, PQ, 비일정 휘도(NCL) 행렬을 스트림 태그로 기록
master-displayST 2086 값. x,y는 0.00002 단위, 휘도는 0.0001니트 단위이므로 L(10000000,50)은 피크 1,000니트, 블랙 0.005니트
max-cll=1000,400니트 단위의 MaxCLL과 MaxFALL
hdr10=1HDR10 메시지를 강제로 기록. master-display나 max-cll을 지정해도 x265가 켬
repeat-headers=1키프레임마다 스트림 헤더를 반복

원색 값은 x265 문서에 나온 P3-D65 1,000니트 모니터 예시이니, 내 값으로 바꾸세요. HLG라면 transfer=arib-std-b67로 설정하고 마스터링 값을 빼고, x265가 HLG에 필요하다고 명시한 atc-sei=18을 추가합니다. 전체 명령은 YouTube HDR 가이드에 있습니다. hdr10-opt=1은 10비트 4:2:0 BT.2020 PQ 입력에 대해 x265의 블록 단위 QP 튜닝을 더합니다.

SVT-AV1(AV1, 10비트)

ffmpeg -i master_pq.mov -c:v libsvtav1 -preset 6 -crf 30 -pix_fmt yuv420p10le -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc -color_range tv -svtav1-params "mastering-display=G(0.265,0.690)B(0.150,0.060)R(0.680,0.320)WP(0.3127,0.3290)L(1000,0.005):content-light=1000,400" -c:a copy hdr10_av1.mkv

SVT-AV1은 CIE x,y를 소수로, 휘도를 니트로 받습니다. FFmpeg는 -color_* 플래그를 인코더의 색 옵션으로 넘겼습니다. FFmpeg 8.1과 SVT-AV1 4.0.1에서 두 명령 모두 BT.2020, PQ, BT.2020 NCL로 태그된 10비트 파일을 만들었고, 첫 프레임에 마스터링 메타데이터와 밝기 메타데이터가 들어 있었습니다.

다시 인코딩하지 않고 빠진 태그 고치기. 픽셀이 이미 PQ라면 hevc_metadata 비트스트림 필터가 색 정보만 다시 쓰고 화면은 건드리지 않습니다.

ffmpeg -i untagged.mp4 -c copy -bsf:v "hevc_metadata=colour_primaries=9:transfer_characteristics=16:matrix_coefficients=9" retagged.mp4

MP4에 담은 HEVC 테스트 파일에서 디코딩한 프레임의 체크섬은 전후가 같았고, 태그는 unknown에서 BT.2020, PQ, BT.2020 NCL(코드 9, 16, 9. HLG는 18)로 바뀌었습니다. ST 2086이나 MaxCLL은 추가하지 않으므로, 이들은 다시 인코딩해야 합니다.

ffprobe로 파일 검증하기

ffprobe -v error -select_streams v:0 -show_entries stream=profile,pix_fmt,color_range,color_space,color_transfer,color_primaries:frame=side_data_list -read_intervals "%+#1" -show_frames -of json hdr10.mp4

한 번 호출로 색 태그와 첫 프레임의 사이드 데이터가 나옵니다. 위 x265 파일의 결과입니다.

필드값의미
profile, pix_fmtMain 10, yuv420p10le10비트 HEVC, 4:2:0
color_primaries, color_transfer, color_spacebt2020, smpte2084, bt2020ncBT.2020, PQ, 비일정 휘도(NCL)
color_rangetv제한(협대역) 범위
Mastering display metadatamax_luminance=10000000/10000, min_luminance=50/10000피크 1,000니트, 블랙 0.005니트
Content light level metadatamax_content=1000, max_average=400MaxCLL과 MaxFALL

값은 코덱별 단위의 분수로 출력됩니다. AV1 파일은 max_luminance=256000/256으로 나왔는데 이것도 1,000니트입니다. HLG 파일은 arib-std-b67로 표시되고 보통 마스터링 데이터가 없습니다. HDR로 그레이딩했는데 bt709나 unknown으로 읽히는 파일은 SDR로 재생됩니다.

KwaFlux의 HDR 처리 방식

  • SDR→HDR 변환은 역톤 매핑입니다. AI 색보정의 SDR→HDR 변환은 AI 모델로 SDR 클립을 더 넓은 다이내믹 레인지, 더 밝은 하이라이트, 더 또렷한 그림자 쪽으로 확장합니다. 분위기는 장면에서 정합니다. 풍경(기본값), 야경, 또는 2.0~5.0(기본값 3.8)의 밝기 슬라이더가 있는 사용자 지정입니다.
  • 내보내기 선택지. 색 공간에는 HDR PQ (Rec.2020)(기본값), HDR HLG (Rec.2020), SDR (BT.709)가 있으며, H.265(권장) 또는 AV1, 그리고 MKV가 권장됩니다. HDR 내보내기는 10비트, SDR은 8비트이고, 내보내기 설정이 선택마다 그에 맞는 전달 함수, BT.2020 원색과 행렬, 제한 범위 태그를 짝지어 줍니다.
  • 납품 전에 확인합니다. 내보낸 파일에 위의 ffprobe 명령을 실행하세요. 플랫폼이 요구하는 ST 2086과 MaxCLL 값이 없다면 x265 설정으로 다시 인코딩하세요.
  • SDR 화면에서의 HDR 미리보기. 미리보기 렌더러는 PQ와 HLG를 디코딩하고 BT.2020 색을 BT.709로 변환한 뒤 Reinhard 계열 곡선으로 하이라이트를 압축합니다. HDR 출력을 위한 HDR 패스스루 모드도 있습니다.
  • 복구와 다단계 작업. 화질 복구 내보내기에는 색 공간 옵션이 없으므로, 복구한 HDR 파일의 태그를 확인하세요. 다단계 작업의 단계 사이에서 KwaFlux는 10비트 중간 파일을 넘기므로, 8비트 반올림이 쌓여 밴딩이 되는 일이 없습니다.

문제 해결

문제추정 원인해결
HDR 파일이 회색빛으로 밋밋해 보임태그가 없거나 HDR을 지원하지 않는 플레이어태그를 확인하고, 픽셀이 PQ일 때만 태그를 다시 쓰고, 톤 매핑한 SDR 사본 만들기
PQ로 태그한 SDR 클립이 거칠게 보임변환 없이 태그만 바꿈zscale 배치나 역톤 매핑으로 다시 인코딩하기
색이 과포화됨BT.709나 P3 픽셀을 BT.2020으로 태그함먼저 zscale p=bt2020으로 원색 변환하기
SDR 사본의 하늘에 밴딩디더링 없는 8비트 출력d=error_diffusion을 추가하고 중간 파일은 10비트 유지하기
하이라이트에 평평한 흰 덩어리Clip 곡선이거나 peak가 너무 낮음실제 피크로 Möbius, Reinhard, Hable 쓰기
마스터링 메타데이터 없음master-display와 max-cll 미지정x265나 SVT-AV1에서 추가하고 첫 프레임 확인하기

할 수 없는 것

  • 톤 매핑으로 100니트 화면에 1,000니트를 보여 줄 수는 없습니다. 하이라이트 디테일, 중간 톤 대비, 색 중 무엇을 지킬지 고를 뿐입니다.
  • 역톤 매핑은 잘려 나간 디테일을 되살리지 못하며, BT.2446은 압축 아티팩트를 드러낼 수 있다고 경고합니다.
  • 메타데이터로 그레이딩을 고칠 수는 없습니다. 디스플레이가 맞출 수 있도록 마스터를 설명할 뿐입니다.
  • 태그로 픽셀을 변환할 수는 없습니다. 변환 없이 태그를 바꾸면 화면이 바뀝니다.

마치며

SDR과 HDR의 선택은 하나가 아니라 곡선, 원색, 비트 심도, 메타데이터라는 네 가지 결정입니다. 하나하나 의도를 갖고 정하고, ffprobe로 확인하고, 화면이 SDR과 HDR 사이를 오갈 때는 이름표만 바꾸지 말고 변환하세요.

KwaFlux는 PQ나 HLG로 내보내는 SDR→HDR 변환을 포함해 AI 색보정을 사용자 GPU에서 실행합니다. AI 처리는 사용자 GPU에서 실행되며 미디어 파일이 처리를 위해 업로드되지 않습니다. Windows 10(64비트, 버전 1809 이상), Windows 11, Apple Silicon 탑재 macOS 12 이상에서 실행됩니다. 미리보기에는 계정이 필요 없습니다. 어떤 클립이든 1·3·5초 미리보기를 렌더링할 수 있습니다. 내보내기, 변환, 파일 복구, 링크에서 파일 다운로드에만 로그인과 유료 플랜이 필요합니다.

내 실제 영상으로 효과를 확인하세요

KwaFlux를 받고 결제 전에 내 영상으로 효과를 무료 미리보기하세요. 계정이 필요 없고, 내 GPU에서 처리하며 미디어는 업로드하지 않습니다. 영상 미리보기는 1, 3 또는 5초, 흔들림 보정 미리보기는 5, 15 또는 30초 중에서 고를 수 있습니다.

자주 묻는 질문

PQ는 왜 SDR 감마보다 비트가 더 필요한가요?

PQ는 SDR이 0~100니트에 쓰는 코드 범위에 0~10,000니트를 펼쳐 놓기 때문입니다. 계산해 보면 100니트 부근에서 8비트 PQ의 한 단계는 빛을 약 4.7% 바꿔 눈에 띄는 밴딩이 생기고, 10비트는 이를 약 1.1%로 낮춥니다. 밴딩 해결법은 8비트 vs 10비트 영상에서 다룹니다.

HLG는 SDR TV에서도 호환되나요?

일부만 그렇습니다. ITU-R 보고서 BT.2390은 HLG가 SDR 디스플레이와 상당한 수준으로 호환되도록 설계됐다고 하지만, BT.2020 색 컨테이너를 받아들이는 디스플레이에 한해서입니다. BT.709만 처리하는 화면에는 여전히 변환한 SDR 버전이 필요합니다.

MaxCLL과 MaxFALL이 뭔가요?

MaxCLL은 작품에서 가장 밝은 픽셀의 밝기, MaxFALL은 프레임 하나의 평균 밝기 중 가장 높은 값이며 둘 다 니트 단위입니다. CTA-861.3에서 정의했고, HDR10과 함께 정적 메타데이터로 전달되어 플레이어가 톤 매핑 곡선을 고르는 데 쓸 수 있습니다.

HDR을 SDR로 톤 매핑하면서 하이라이트 디테일을 지킬 수 있나요?

일부는 가능합니다. Hable, Möbius, BT.2390 EETF 같은 롤오프 곡선은 하이라이트를 잘라 내지 않고 계조를 남깁니다. 다만 추가 밝기 자체는 100니트 디스플레이에서 살아남을 수 없고, 어느 곡선이든 그 디테일을 지키는 대신 중간 톤 대비나 색을 일부 내줍니다.

색 태그만 바꾸면 SDR이 HDR이 되나요?

아닙니다. 태그는 플레이어에게 숫자를 어떻게 읽을지 알려 줄 뿐이고, 10비트 SDR의 최대 백색을 PQ로 읽으면 10,000니트를 요구하게 됩니다. 실제 변환으로 SDR을 PQ 컨테이너에 배치하거나 역톤 매핑으로 확장하세요. SDR→HDR 변환과 부드러운 움직임을 참고하세요.

참고 자료

  1. ITU-R, Recommendation BT.2100-3 (PQ constants, HLG system gamma, BT.2020 primaries, 203-nit reference white) (2026-10-21 확인)
  2. ITU-R, Recommendation BT.1886 (gamma 2.4 display curve, 100 cd/m² white, BT.709 camera curve and primaries) (2026-10-21 확인)
  3. ITU-R, Report BT.2390-12 (PQ bit depth against the Barten threshold, HLG curve and compatibility) (2026-10-21 확인)
  4. ITU-R, Report BT.2390-8, sections 5.4.1 and 7.4 (EETF; clip, static, and dynamic mapping) (2026-10-21 확인)
  5. ITU-R, Report BT.2446-1 (tone mapping and inverse tone mapping, reference white levels, artifact amplification) (2026-10-21 확인)
  6. x265 Documentation, "Command Line Options" (color, HDR10, and HLG options) (2026-10-21 확인)
  7. SVT-AV1, "Parameters" (color description, mastering-display, content-light) (2026-10-21 확인)
  8. FFmpeg Filters Documentation (`tonemap`, `zscale`) (2026-10-21 확인)
  9. FFmpeg source, vf_tonemap.c (curve formulas for our chart) (2026-10-21 확인)
  10. FFmpeg Bitstream Filters Documentation (`hevc_metadata`) (2026-10-21 확인)
  11. YouTube Help, "Upload High Dynamic Range (HDR) videos" (P3 masters tagged as Rec. 2020) (2026-10-21 확인)
  12. Dolby Professional, "Dolby Vision HDR at Home" (dynamic metadata, 12-bit color) (2026-10-21 확인)
  13. HDR10+, "How does dynamic metadata in HDR10+ improve upon this?" (2026-10-21 확인)
  14. CVRL, CIE 1931 2-degree colour matching functions (spectral locus for our chart) (2026-10-21 확인)
  • SDR→HDR
  • 영상 화질
  • AI 영상 초고화질

KwaFlux 작성자 겸 편집자. 글은 KwaFlux 편집팀이 검토하며, 제품 조사 노트와 공개된 사양을 바탕으로 합니다.