ACEScg에서 디스필했더니 피부색이 틀어질 때: 초록 원색 위치가 다르다
ACEScg 디스필 후 피부가 자홍색으로 밀릴 수 있습니다. 같은 식을 Rec.709에서 쓰면 왜 결과가 달라질까요?
이 차이가 표시 변환에서 온 건지, 픽셀 계산에서 온 건지 먼저 나눠 보겠습니다.
차이는 키어 이름보다 픽셀의 RGB가 어떤 원색을 기준으로 적혀 있는지에서 시작합니다.
이번 글에서는 초록 원색 좌표, 같은 피부·스필 색, 직접 계산 결과를 차례로 봅니다.
먼저 비교 조건을 고정합니다. 여기서 Rec.709는 감마가 적용된 디스플레이 신호가 아니라 선형 Rec.709 원색으로 표현한 작업값입니다. ACEScg도 선형 AP1 작업값으로 계산합니다.
출력용 색공간과 작업용 색공간이 헷갈리면 ACEScg와 sRGB의 역할 차이부터 확인해 보세요.
1. 매트와 색을 먼저 나눕니다
초록 테두리가 보이면 먼저 알파에 남은 회색과 RGB에 남은 초록을 구분해야 합니다.
알파는 얼마나 비칠지를 정합니다. RGB는 그 픽셀이 어떤 색으로 보일지를 정합니다.
머리카락 가장자리의 초록은 알파를 세게 조여서 없어지는 문제가 아닙니다. 색에 남은 스필은 매트와 분리해 다뤄야 합니다. 기본 진단은 머리카락 초록 테두리에서 매트와 디스필을 나누는 방법을 참고하세요.
차이를 보여주기 위해 G 채널을 R과 B의 평균 이하로 내리는 간단한 식을 씁니다.
G' = min(G, (R + B) / 2)
이 식은 비교를 위한 단순 모델입니다. Nuke의 Keylight 같은 실제 키어가 내부에서 똑같이 계산한다는 뜻은 아닙니다.
2. 초록 원색 위치부터 다릅니다
RGB의 G는 모든 색공간에서 같은 초록을 뜻하지 않습니다. 각 공간이 정한 초록 원색과 백색점을 기준으로 색을 숫자 세 개에 나눠 담습니다.
- 선형 Rec.709의 초록 원색은 CIE xy (0.300, 0.600), 기준 백색은 D65 (0.3127, 0.3290)입니다.
- ACEScg의 AP1 초록 원색은 CIE xy (0.165, 0.830), 백색점은 (0.32168, 0.33767)입니다.
초록 원색의 위치부터 다릅니다. 따라서 Rec.709에서 G만 있던 색도 ACEScg로 바꾸면 R·G·B 값이 함께 생깁니다.
예를 들어 Rec.709 초록 [0, 1, 0]은 백색점을 맞춘 AP1 변환에서 대략 [0.340, 0.916, 0.110]으로 표현됩니다.
같은 숫자 [0, 1, 0]을 ACEScg에 그대로 입력하면 같은 색을 옮긴 것이 아닙니다. ACEScg의 초록 원색을 새로 지정한 셈입니다.
3. ACEScg 디스필 계산으로 같은 색을 비교합니다
계산 예시의 깨끗한 피부 픽셀은 선형 Rec.709 [0.450, 0.240, 0.120]입니다. 여기에 초록 스필 기여 [0.000, 0.250, 0.000]을 더합니다.
Rec.709에서 오염된 픽셀은 [0.450, 0.490, 0.120]입니다. 두 색공간을 같은 색으로 비교하려면 값만 복사하지 말고 원색과 백색점에 맞춰 변환해야 합니다.
이 예시는 D65와 ACES 백색점 차이를 Bradford 색순응으로 맞춰 변환했습니다. 백색점이 다른 두 공간의 수치를 직접 비교하지 않기 위한 단계입니다.
- 깨끗한 피부: Rec.709 [0.450, 0.240, 0.120] → ACEScg [0.363065, 0.253126, 0.139952]
- 초록 스필 기여: Rec.709 [0.000, 0.250, 0.000] → ACEScg [0.084881, 0.229088, 0.027392]
- 스필이 섞인 픽셀: Rec.709 [0.450, 0.490, 0.120] → ACEScg [0.447946, 0.482215, 0.167344]

피부와 스필은 같은 색을 나타내지만, ACEScg에서는 초록 스필에도 R과 B 값이 있습니다. 이 차이가 G만 보는 식의 계산값을 바꿉니다.
4. 같은 식을 적용하고 Rec.709로 되돌립니다
먼저 선형 Rec.709에서는 R과 B의 평균이 0.285입니다.
따라서 G는 0.490에서 0.285로 내려가고 결과는 [0.450, 0.285, 0.120]입니다.
ACEScg에서는 R과 B의 평균이 0.307645입니다.
G를 그 값으로 제한한 AP1 결과는 [0.447946, 0.307645, 0.167344]입니다.
이 결과를 다시 선형 Rec.709로 변환하면 [0.558546, 0.290850, 0.142514]가 됩니다. Rec.709에서 직접 계산한 [0.450, 0.285, 0.120]과 같지 않습니다.
두 결과 모두 같은 선형 Rec.709로 되돌려 비교했습니다. 뷰어나 출력용 톤 변환은 끼우지 않았습니다.
따라서 수치 차이는 화면 설정이 아니라 색공간 변환과 채널별 제한의 적용 순서에서 확인할 수 있습니다.
같은 색을 다른 공간의 채널값으로 바꾸면, 식이 실제로 누르는 G의 양도 달라집니다.
이제 처음 질문에 답할 수 있습니다.
같은 디스필 식이 다른 결과를 내는 이유는 RGB 채널이 색공간마다 다른 원색 좌표를 기준으로 정해지기 때문입니다.
색공간 변환은 채널을 서로 섞는 행렬 계산입니다. 반면 G를 평균 이하로 자르는 식은 채널별로 다른 값을 남깁니다. 이 두 계산은 순서를 바꿔도 같은 결과가 되지 않습니다.
5. 피부색이 틀어질 때 확인할 순서
- 작업값부터 확인합니다. 뷰어에 보이는 색과 노드가 계산하는 RGB를 구분합니다. 표시 변환이 다른 두 이미지를 눈으로만 비교하지 말고 같은 변환을 거쳐 비교합니다.
- 모든 입력을 같은 공간에 둡니다. 원본 픽셀, 초록 스필 샘플, 피부 기준색을 같은 선형 작업공간으로 변환한 뒤 계산합니다. 한 공간에서 만든 숫자를 다른 공간의 고정 임계값처럼 쓰지 않습니다.
- 효과를 가장자리에 제한합니다. 얼굴 전체의 G를 누르기보다 키 가장자리의 스필을 먼저 확인합니다. 별도 디스필 기준색을 정할 때는 Keylight의 Use Alpha Bias for Despill을 끄고, Despill Bias에서 피부색이나 머리카락색을 샘플링합니다.
- 깨끗한 피부색과 나란히 봅니다. 같은 작업공간에서 보정 전후의 RGB를 확인하고, 최종 출력 변환도 동일하게 적용합니다. 피부가 붉거나 자홍색으로 밀리면 디스필 강도와 적용 범위를 줄여 다시 비교합니다.
이 계산 예시가 보여주는 것은 모든 ACEScg 디스필이 피부를 틀어지게 한다는 뜻이 아닙니다. 고정된 채널 식을 다른 원색 공간에서 그대로 반복하면 결과가 달라질 수 있다는 뜻입니다.
결국, 디스필 결과는 공식만이 아니라 계산이 실행되는 색공간 좌표에 달려 있습니다.
참고 자료
vfx 잡학지식



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