미들 그레이 18%가 소프트웨어마다 다른 숫자인 이유
미들 그레이 18%를 장면 선형값으로 읽으면 0.18, sRGB 정규화 코드값으로는 0.46, 카메라 Log 파일에서는 0.39나 0.41로 볼 수 있습니다. 숫자가 달라 보이면 어느 값을 기준으로 맞춰야 할까요?
아래 변환기에 선형값 0.18을 넣으면 sRGB, ACEScct, ARRI LogC3 EI800, Sony S-Log3에서의 정규화 코드값과 10bit 환산값을 한 번에 확인할 수 있습니다. 반대로 코드값을 넣어 선형값을 구하고, 노출을 ±EV로 바꾼 표도 비교합니다.
1. 미들 그레이 18% 변환기
선형값은 기본 0.18입니다. 값을 바꾸면 네 인코딩의 출력과 표가 함께 갱신됩니다. 표 중심에 넣을 노출 스톱도 ±EV로 입력하세요. 역변환은 인코딩과 0~1 코드값을 넣으면 됩니다. 계산은 브라우저 안에서만 이뤄집니다.
선형값에서 코드값으로
10bit 값은 full-range(0~1023) 비교값으로, 정규화 코드값에 1023을 곱해 반올림합니다. legal-range로 재매핑하지 않습니다. 0~1을 벗어난 결과도 자르지 않고 수학적 값 그대로 표시합니다.
코드값에서 선형값으로
선형값 0.180000 · 미들 그레이 기준 0.00 EV
입력 선형값 기준 노출 변화
입력한 장면 선형값에 2EV를 곱합니다. 입력한 EV를 중심으로 위아래 두 스톱씩 보여 줍니다. 표를 좌우로 움직여 전체 인코딩을 확인하세요.
| 노출 | 선형 | sRGB | ACEScct | LogC3 EI800 | S-Log3 |
|---|---|---|---|---|---|
| −2 EV | 0.045000 | 0.234795 (240) | 0.299433 (306) | 0.257097 (263) | 0.272933 (279) |
| −1 EV | 0.090000 | 0.331830 (339) | 0.356511 (365) | 0.321800 (329) | 0.339302 (347) |
| 0 EV | 0.180000 | 0.461356 (472) | 0.413588 (423) | 0.391007 (400) | 0.410557 (420) |
| +1 EV | 0.360000 | 0.634253 (649) | 0.470666 (481) | 0.462718 (473) | 0.484546 (496) |
| +2 EV | 0.720000 | 0.865042 (885) | 0.527744 (540) | 0.535754 (548) | 0.559985 (573) |
기본 선형값 0.18을 계산했습니다.
2. 18% 반사율과 선형값 0.18은 같은 표기가 아닙니다
18% 그레이 카드는 빛을 반사하는 중성 기준물입니다. 반사율 18%라는 물리적 설명과 파일 안의 RGB 코드값은 서로 다른 단계의 값입니다. 노출을 기준에 맞춘 장면 선형 데이터에서는 중성 패치가 대략 0.18로 표현됩니다.
카메라에서 읽은 픽셀은 노출, EI, 센서 응답, 플레어, 입력 변환을 거칩니다. 그래서 모든 촬영본의 픽셀값이 그대로 0.18이 되는 것은 아닙니다. 여기서 0.18은 각 전달 함수를 비교하기 위한 노출 정규화된 선형 기준입니다.
sRGB 화면의 코드값 0.46을 선형값 0.46으로 잘못 읽거나, Log 코드값 0.39를 다른 Log 설정에 그대로 넣으면 노출이 달라집니다. 먼저 현재 숫자가 선형 데이터인지, Log 인코딩인지, 뷰 변환을 거친 표시값인지 구분해야 합니다.
3. 같은 선형값 0.18을 인코딩하면 숫자가 달라집니다
아래 값은 중성 RGB의 각 채널에 같은 선형값 0.18을 넣은 결과입니다. 표의 10bit 값은 full-range(0~1023) 비교값으로, 정규화 코드값에 1023을 곱해 반올림했습니다. legal-range 재매핑은 하지 않았습니다.
| 표현 | 정규화 값 | 10bit 환산 | 뜻 |
|---|---|---|---|
| 선형 | 0.180000 | 184 | 노출 정규화한 장면 선형값 |
| sRGB | 0.461356 | 472 | 선형값을 sRGB 인코딩한 코드 |
| ACEScct | 0.413588 | 423 | AP1 선형값을 ACEScct로 인코딩 |
| ARRI LogC3 EI800 | 0.391007 | 400 | EI800 노출값 곡선, 400/1023 근사 |
| Sony S-Log3 | 0.410557 | 420 | 10bit 코드 420/1023 |
ACEScct는 32bit 부동소수점 인코딩으로 정의됩니다. 따라서 표의 423은 ACEScct 파일이 10bit라는 뜻이 아니라, 다른 곡선과 비교하기 위한 0~1023 환산값입니다. 선형 EXR도 보통 정수 10bit 코드로 취급하지 않습니다.
각 곡선은 다른 입력과 목적을 가집니다
sRGB는 선형 빛 값을 화면 표시용 코드로 바꾸는 전달 함수입니다. 선형값 x가 0.0031308 이하이면 12.92x, 그보다 크면 1.055 × x1/2.4 − 0.055를 적용합니다. sRGB 색상 코드와 선형 데이터가 왜 다른지는 sRGB와 Linear의 차이에서 이어서 볼 수 있습니다.
ACEScct는 ACES의 AP1 선형값을 그레이딩에 쓰기 좋은 준로그 값으로 바꿉니다. 0.0078125 이하에서는 10.5402377416545x + 0.0729055341958355를 쓰고, 그보다 크면 (log2(x) + 9.72) ÷ 17.52를 씁니다. 이 값은 뷰 변환이 끝난 화면의 회색이 아니라 ACEScct 데이터값입니다.
ARRI LogC3는 EI에 따라 곡선이 달라집니다. 이 계산기는 ARRI의 VFX 문서에서 권하는 EI800 노출값 파라미터를 사용합니다. 18% 그레이를 0.391, 즉 10bit code 400으로 놓는 기준입니다. 센서 신호용 표의 계수를 섞으면 결과가 달라질 수 있습니다.
Sony S-Log3는 0.01125를 경계로 선형부와 로그부를 나눕니다. 공식식에서 18% 반사율은 420/1023, 약 0.410557입니다. S-Log3 원본이 뿌옇게 보이는 현상과 표시용 변환은 Log 영상의 표시 변환과 함께 살펴보세요.
코드값을 선형값으로 되돌리는 식
sRGB 역변환은 코드값 y가 0.04045 이하일 때 x = y ÷ 12.92, 그보다 크면 x = ((y + 0.055) ÷ 1.055)2.4입니다. ACEScct는 y가 0.155251141552511 이하일 때 x = (y − 0.0729055341958355) ÷ 10.5402377416545, 그보다 크면 x = 217.52y − 9.72입니다.
ARRI LogC3 EI800은 y가 0.149658 이하일 때 x = (y − 0.092809) ÷ 5.367655, 그보다 크면 x = (10(y − 0.385537) ÷ 0.247190 − 0.052272) ÷ 5.555556입니다. Sony S-Log3은 y가 171.2102946929 ÷ 1023 미만일 때 x = (1023y − 95) × 0.01125 ÷ (171.2102946929 − 95), 그 이상일 때 x = 0.19 × 10(1023y − 420) ÷ 261.5 − 0.01입니다.
4. 노출을 한 스톱 바꾸면 코드값은 같은 간격으로 움직이지 않습니다
선형값은 한 스톱 올릴 때마다 두 배가 됩니다. 기준을 0.18로 두면 입력은 0.18 × 2EV입니다. 하지만 sRGB와 Log의 코드값은 비선형 곡선을 지나므로, 한 스톱마다 더해지는 코드 숫자가 일정하지 않습니다.
| 노출 | 선형값 | sRGB | ACEScct | LogC3 EI800 | S-Log3 |
|---|---|---|---|---|---|
| −2 EV | 0.045 | 0.234795 | 0.299433 | 0.257097 | 0.272933 |
| −1 EV | 0.090 | 0.331830 | 0.356511 | 0.321800 | 0.339302 |
| 0 EV | 0.180 | 0.461356 | 0.413588 | 0.391007 | 0.410557 |
| +1 EV | 0.360 | 0.634253 | 0.470666 | 0.462718 | 0.484546 |
| +2 EV | 0.720 | 0.865042 | 0.527744 | 0.535754 | 0.559985 |
예를 들어 sRGB는 −2EV에서 0.234795, +2EV에서 0.865042입니다. ACEScct는 같은 노출 변화에서 0.299433과 0.527744로 움직입니다. 선형에서 같은 스톱 차이를 준 결과라도 전달 함수에 따라 코드값 간격이 달라집니다.
5. 촬영본과 CG 노출을 맞추는 순서
첫째, 촬영본의 카메라 Log 곡선과 색역을 확인하세요. LogC3라면 EI와 LogC 버전, S-Log3라면 S-Gamut3 또는 S-Gamut3.Cine 같은 색역 설정까지 함께 확인해야 합니다. Log 곡선만 맞고 색역이 다르면 색이 정확히 일치하지 않습니다.
둘째, 맞는 입력 변환을 적용해 프로젝트의 장면 선형 작업 공간으로 가져오세요. ACES 파이프라인에서는 입력 변환 뒤 ACEScg 같은 작업 공간에서 노출을 조절하고, 마지막에 같은 뷰·출력 변환으로 확인합니다. 카메라 Log별 입력 변환을 고르는 기준은 ARRI LogC·S-Log3·RED 입력 변환 안내에 정리했습니다.
셋째, 노출 조정은 선형 작업 공간에서 스톱 단위로 하세요. 한 스톱은 선형값을 두 배, 한 스톱 낮추면 절반으로 바꿉니다. Log 코드 숫자에 임의로 일정량을 더하기보다, 입력 변환 뒤 노출을 조정하고 다시 출력 변환을 거치는 편이 기준을 추적하기 쉽습니다.
실사 카메라의 ISO·셔터·조리개를 CG 렌더러 값으로 옮길 때도 기준 단계가 중요합니다. 실사 노출을 CG 렌더러로 옮기는 방법에서 물리 카메라 설정과 장면 노출을 따로 확인할 수 있습니다.
6. 소프트웨어마다 미들 그레이 숫자가 다른 이유
화면에서 0.18, 0.46, 0.41이 번갈아 보여도 그 숫자만으로 노출이 틀렸다고 판단할 수는 없습니다. 하나는 선형값일 수 있고, 다른 하나는 sRGB나 Log 인코딩 코드값일 수 있습니다. 촬영본의 EI·색역·범위와 프로젝트 입력 변환이 맞는지 확인한 뒤 같은 작업 공간과 같은 뷰 변환에서 비교하세요.
미들 그레이 숫자가 다른 이유는 같은 선형 기준값을 서로 다른 전달 함수와 작업 공간으로 인코딩하기 때문입니다.
기준은 숫자 하나를 외우는 일이 아닙니다. 0.18이 어떤 단계의 값인지 확인하고, 그 단계에 맞는 입력 변환과 노출 조정을 적용하세요.
공식 문서
전달 함수와 EI800 기준은 아래 표준·제조사 문서를 바탕으로 했습니다. ARRI LogC3는 VFX용 노출값 표를, Sony S-Log3는 공식 Technical Summary의 정규화 공식을 사용했습니다.
vfx 잡학지식

댓글 0
첫 댓글을 남겨보세요.