📁 File2. 이미지03 · 비트심도와 HDR

03 · 비트심도와 HDR

이 문서가 답하는 질문: 8 vs 10 vs 12bit는 무엇이 다르고, 밴딩과 dithering은 어떻게 관련되며, HDR 이미지(HEIF의 HLG/PQ)는 SDR과 무엇이 다른가?


한 줄 답 (Pyramid Top)

비트심도는 한 채널이 가질 수 있는 단계 수이고, 이 수가 부족하면 그라디언트에 줄(밴딩)이 생긴다. HDR은 단순히 “밝다”가 아니라 더 넓은 다이내믹 레인지를 표현하기 위해 10bit + Rec.2020 + PQ/HLG의 3종 세트가 필요한 시스템이다.


Why — 왜 8bit로는 부족한가

8bit/채널(0~255) = 16.7M 색상이면 충분히 많아 보이지만, 두 가지 한계가 있다:

  1. 그라디언트 밴딩: 256단계는 부드러운 하늘·노을·그라디언트에 줄무늬를 만든다.
  2. HDR 표현 불가: 사람 눈은 약 14 stops(약 16,000:1)의 밝기 차이를 동시에 본다. 8bit sRGB는 약 8 stops(256:1) 정도.

How — 비트심도가 어떻게 작동하는가

1) 비트심도 비교

비트심도채널당 단계RGB 색상 수사용처
1bit28 (RGB) / 1 (mono)흑백 팩스, 1bit dither 아트
8bit25616.7M (24bit color)sRGB 표준, 일반 JPEG/PNG
10bit10241.07B (30bit)HDR10, Dolby Vision, Rec.2020
12bit409668.7B (36bit)Dolby Vision 마스터, ProRes
16bit65536281T (48bit)사진 RAW, TIFF, PSB
32bit float-∞~+∞사실상 무한OpenEXR, HDR 합성

2) 밴딩 (Banding) — 단계 부족이 만드는 줄

8bit sRGB로 0% → 5% 그라디언트를 그리면 약 13단계(0~12)밖에 못 쓴다. 화면 너비 1920px에 13단계를 펼치면 단계 하나가 ~150px → 명확한 줄.

선형 빛 0.00 → 0.05 :  sRGB 8bit 값으로는 0 → 12 (13단계)
선형 빛 0.95 → 1.00 :  sRGB 8bit 값으로는 248 → 255 (8단계)

→ 어두운 영역은 단계가 풍부하지만, 선형 빛 기준으로 보면 어두운 영역도 밴딩이 보임.

3) Dithering — 의도적 노이즈로 밴딩 가리기

원리: 인접 픽셀에 랜덤 노이즈를 더해서 단계 경계를 흐림.

알고리즘특징사용처
Random noise가장 단순, 지글거림빠른 dither
Ordered (Bayer)4×4 / 8×8 매트릭스, 패턴 보임레트로 게임
Floyd-Steinberg오차를 인접 픽셀로 전파GIF 양자화
Blue noise고주파 노이즈, 시각적으로 균일HDR → SDR 변환

코드 예 (간단한 8bit → 1bit threshold dither):

for (y = 0; y < h; y++)
  for (x = 0; x < w; x++) {
    old = pixel[y][x];
    new = old > 127 ? 255 : 0;
    pixel[y][x] = new;
    err = old - new;
    pixel[y][x+1]   += err * 7/16;
    pixel[y+1][x-1] += err * 3/16;
    pixel[y+1][x]   += err * 5/16;
    pixel[y+1][x+1] += err * 1/16;
  }

4) HDR — 더 넓은 다이내믹 레인지

**HDR(High Dynamic Range)**는 다음 3가지의 결합:

구성 요소SDRHDR
비트심도8bit10/12bit
색공간sRGB / BT.709Rec.2020 (또는 P3)
TransfersRGB γ≈2.2PQ (SMPTE ST 2084) 또는 HLG
Peak luminance100 nits1000~10000 nits

Transfer 함수 비교

Transfer표준특징
sRGB / BT.1886일반 SDRγ≈2.2, 0~100 nits
PQ (Perceptual Quantizer)SMPTE ST 2084절대 밝기 매핑, 0~10000 nits, Dolby Vision/HDR10
HLG (Hybrid Log-Gamma)ARIB STD-B67상대 밝기, SDR과 호환, BBC/NHK 방송

PQ vs HLG의 핵심 차이:

  • PQ: “100% 신호 = 10,000 nits”라고 절대 정의. 메타데이터로 마스터링 디스플레이의 peak를 알려줌.
  • HLG: 신호의 절반까지는 SDR γ, 그 이상은 logarithmic. SDR TV에서 그냥 SDR로 보여도 자연스러움.

5) HEIF의 HDR 이미지

HEIF (High Efficiency Image File Format, 2015) = ISOBMFF 컨테이너 + HEVC/AV1 코덱.

iPhone (Pro 모델, 2020~)이 찍는 HDR 사진:

  • 컨테이너: HEIF
  • 코덱: HEVC (H.265)
  • 비트심도: 10bit
  • 색공간: Display P3 또는 Rec.2020
  • Transfer: HLG (Apple은 HLG 선호 — SDR 호환성 때문)
  • 메타: Gain Map (SDR 버전 + HDR boost map)

Apple Gain Map (2023~):

  • HEIF 안에 SDR 이미지 + Gain Map를 함께 저장
  • HDR 디스플레이: SDR × GainMap = HDR
  • SDR 디스플레이: SDR만 사용 → 자연스러운 fallback

What — 구체 사양과 수치

비트심도별 밴딩 임계 (sRGB 그라디언트 1920px)

비트심도0~5% 구간 단계 수단계당 픽셀밴딩 시인성
8bit13~148px보임
10bit51~38px거의 안 보임
12bit205~9px안 보임

HDR 이미지 포맷 비교

포맷비트색공간TransferiOS SafariChrome Android
HEIF (HDR)10P3/Rec.2020HLG/PQiOS 16+Chrome 105+ (limited)
AVIF (HDR)10/12Rec.2020HLG/PQiOS 16.4+Chrome 85+
JPEG XL (HDR)10/16Rec.2020PQ/HLGiOS 17+ (flag)Chrome (없음, 2026.05)
JPEG + Gain Map8 + 8sRGB + mapsRGB + logiOS 17.4+Chrome 121+
HDR PNG (cICP)16Rec.2020PQiOS 16+Chrome 113+

iPhone HEIF HDR 사진 헤더 예 (exiftool 출력)

Image Width                     : 4032
Image Height                    : 3024
Bit Depth                       : 10
Color Profile                   : Display P3
Transfer Characteristics        : HLG
Color Primaries                 : Display P3
Matrix Coefficients             : BT.2020 NCL
Has Gain Map                    : True
HDR Headroom                    : 4.0 (= 400 nits 대비 SDR 100 nits)

What-if — 잘못 다루면 어떻게 깨지는가

사례 1) 하늘 사진의 줄무늬

상황: 8bit JPEG로 저장한 노을 사진을 4K 모니터로 봤더니 하늘에 계단 줄.

원인: JPEG 8bit + DCT 양자화로 인접 블록 사이 단차가 강조됨.

해결:

  • 10bit 포맷 (HEIF/AVIF) 사용
  • 또는 약한 dithering 적용 후 8bit JPEG 저장
  • Photoshop: Filter → Noise → Add Noise (Gaussian, 1~2%)

사례 2) HDR 사진을 인스타에 올렸더니 까맣게 보임

상황: iPhone HEIF HDR 사진을 SNS에 업로드 → 일부 사용자에게 어두운 회색 또는 깨진 색으로 표시.

원인:

  • 옛 디코더는 HLG의 신호값을 SDR sRGB로 직접 디코드 → 신호의 0.5 (= SDR 100% 지점)이 SDR 50%로 표시
  • Gain Map 미지원 디코더는 boost map 무시

해결: 업로드 시 SDR 버전으로 tone-map해서 보내거나, Gain Map 포함 JPEG로 변환.

사례 3) PQ 비디오의 PNG 썸네일이 새카맣다

상황: HDR(PQ) 영상의 첫 프레임을 ffmpeg로 PNG 추출 → 거의 검정.

원인: PQ 신호값 0.1 = 약 1 nit. SDR sRGB로 그냥 출력하면 8bit 1~3 정도.

해결:

# Tone-map PQ → sRGB
ffmpeg -i hdr.mp4 -vf "zscale=t=linear,tonemap=hable,zscale=t=bt709,format=rgb24" -frames:v 1 thumb.png

사례 4) 16bit TIFF를 8bit JPEG로 저장 → 그림자 디테일 사라짐

상황: 사진가가 16bit RAW를 편집 후 JPEG export → 그림자가 까맣게 뭉침.

원인: 16bit의 어두운 8 stops 정보가 8bit의 0~30 단계로 압축됨.

해결: Curves로 그림자를 미리 들어올린 후 export, 또는 HEIF/AVIF 10bit 사용.


Insight — 비트심도와 HDR의 역사

“왜 영상은 10bit, 사진은 8bit가 표준이었나”

영상은 시간 차원이 있어 인접 프레임 간 노이즈가 자연스러운 dither 역할 → 8bit로도 그럭저럭 견딤. 하지만 정지된 사진은 한 프레임을 오래 보기 때문에 8bit 밴딩이 더 잘 보인다. 그럼에도 사진이 8bit인 이유: JPEG 표준이 8bit였고, 모든 디코더가 그렇게 만들어졌기 때문. HEIF/AVIF가 비로소 사진의 10bit 시대를 연다.

“Dolby Vision의 12bit는 마케팅이 아니다”

사람 눈의 명도 단계 식별 한계는 약 2^12 = 4096단계. 10bit + dithering으로 가려지지만, 어두운 영역(특히 영화관)에서 12bit가 미세하게 더 부드럽다. Dolby Vision 마스터는 12bit, 배포는 10bit로 변환된다.

“Apple Gain Map은 똑똑한 fallback의 정수”

같은 파일이 HDR 디스플레이와 SDR 디스플레이 모두에서 자연스러워 보이려면:

  • 옛 방식: 두 버전을 따로 저장 → 용량 2배
  • HLG: SDR 호환이지만 완전히 자연스럽지는 않음
  • Apple Gain Map: SDR 이미지 + 작은 boost map → SDR 디바이스는 SDR만, HDR 디바이스는 boost 적용

2025년 ISO 21496-1로 표준화되어 Adaptive HDR이라는 이름으로 보급 중.


한 단락 요약

비트심도는 단계 수, HDR은 다이내믹 레인지다. 8bit는 그라디언트에 줄(밴딩)을 만들고, dithering으로 가릴 수 있다. HDR은 단순히 밝은 게 아니라 10bit + Rec.2020 + PQ/HLG의 결합이며, HEIF/AVIF가 사진 HDR을 가능하게 한다. 다음 문서(04-formats-overview.md)는 이 모든 결정이 합쳐진 코덱 비교를 다룬다.