색 관리 시리즈 링크

(1)표색계(COLOR SYSTEM)와 색도도(CHROMATICITY DIAGRAM)
(2)색 공간(COLOR SPACE)
(3)선형 워크플로우(LINEAR WORKFLOW) 완벽 이해

선형 워크플로우(Linear Workflow)

선형 워크플로우(Linear Workflow), 혹은 리니어 워크플로우는 그래픽 작업 시 매우 중요한 개념입니다. 선형 워크플로우란 모든 그래픽 작업이 선형 색 공간(Linear Color Space)에서 이루어지는 방식을 말합니다.

그게 무슨 뜻?

선형 색 공간(Linear Color Space)을 논하려면 감마 색 공간(Gamma Color Space)를 알아야 합니다.

사람의 눈은 베버의 법칙 때문에 밝은 색보다 어두운 색에 훨씬 민감합니다. 베버의 법칙이란 ‘감각기는 약한 자극이 있는 상황에선 자극의 변화가 적어도 자극을 느낄 수 있으나 강한 자극이 있는 상황에선 자극의 변화가 커야 자극을 느낄 수 있는 법칙'입니다. 즉 어두운 환경에선 조금의 빛만 주어져도 감지할 수 있지만, 밝은 환경에선 조금의 빛은 느낄 수가 없다는 것입니다.

이를 직접 확인할 수 있는 방법이 있습니다. 아래 두 그라데이션 중 어떤 게 더 자연스러운 그라데이션 같나요?

gradients

사람의 눈은 어두운 색에 민감하기 때문에 감마 색 공간(Gamma Color Space)의 그라데이션이 더 자연스럽다고 느낍니다. 하지만 실제 수학적으로 정확한 그라데이션은 선형 색 공간(Linear Color Space)의 그라데이션입니다. 즉, 색이 밝아지는 정도를 어두운 색이 밀집해있는 왼쪽에서 더 민감하게 느끼기 때문에 선형 색 공간의 그라데이션은 뭔가 검정색이 급하게 밝아지는 것만 같은 느낌이 드는 것입니다.

선형 색 공간의 그라데이션을 감마 색 공간의 그라데이션처럼 우리 눈에 자연스럽게 만드려면 감마값(Gamma)을 조정해야합니다. 아주 쉽게 말하자면, 중간색을 다소 어둡게 만들어주면 됩니다. 이를 그래프로 그리면 다음과 같습니다.

gamma2 2

이렇게 감마값을 보정한 이미지는 감마 색 공간에 있다고 합니다. 감마값을 보정하지 않은, 원래 이 세상에 존재하는 색 분포 그대로의 이미지는 선형 색 공간에 있다고 합니다.

디스플레이 장치의 감마 보정

많은 디스플레이 장치들은 감마 보정을 한 채 이미지를 출력합니다. 특히, 위와 같은 이유로 이미지를 다소 어둡게 만들어 출력합니다.
하지만 감마 보정을 하면 이미지는 왜곡되어 출력됩니다. 아래의 그림을 살펴봅시다.

gamma_example

감마값을 2.2로 조정할 시 이미지가 어두어집니다. 우리 눈이 아무리 어두운 색에 민감하더라도 이미지를 의도와 다르게 어둡게 만들어 사용할 순 없습니다. 그래서 jpeg와 같은 이미지 파일들은 자체적으로 감마 보정이 된 채 저장됩니다. 즉, 이미지를 원래보다 더 밝게 만들어 저장합니다. 그럼 디스플레이 장치는 이렇게 밝게 저장된 이미지를 다시 감마 보정을 하여 어둡게 만들어 결과적으로 우리가 원하는 원본 이미지를 출력할 수 있게 되는 것입니다.
위의 이미지로 따지면, 이미지 파일은 왼쪽 이미지처럼 밝게 저장되어있는데, 디스플레이 장치는 이를 오른쪽 이미지처럼 만드려고 하다보니 두 효과가 서로 상쇄되어 가운데 이미지가 출력되는 것입니다. 마치 어떤 양의 값을 제곱했다가 다시 루트를 씌우면 원래의 값으로 돌아오는 것처럼 말입니다.

원래는 CRT 모니터의 출력이 감마 보정을 한 것마냥 비선형 특성을 가지고 있었습니다. 그래서 이미지를 감마 보정을 통해 다소 밝게 저장하여 CRT 모니터로 출력하면 원하던 원본 밝기의 이미지가 출력되었습니다.

요즘의 디스플레이 장치는 출력이 비선형 특성을 가지고 있지는 않습니다. 그럼에도 불구하고 두 번의 감마 보정 과정을 거치는 이유는 위에서 말했듯이 우리 눈이 어두운 색에 더 민감하기 때문입니다. 즉, 이미지를 저장할 때 어두운 색 쪽에 더 많은 메모리를 할당하여 이미지를 수정하거나 어떤 효과를 부여할 때 어두운 부분이 디테일하게 표현될 수 있도록 하기 위함입니다.

다시 선형 워크플로우로

자 그럼 다시 선형 워크플로우로 돌아오겠습니다. 우리가 2D, 3D 그래픽 툴을 사용할 때 jpeg와 같은 이미지 파일을 쓰기 마련입니다. 근데 이 이미지 파일들은 이미 감마 보정을 통해 한 번 밝게 만들어진 이미지들입니다. 이런 이미지 파일들을 임의로 수정하거나 임의의 효과를 적용하면 왜곡된 결과가 나올 수 있습니다.

blend 이미지 출처: Unity Documentation

예컨대, 위와 같이 색의 블랜딩을 할 경우, 선형 색 공간에서의 블랜딩은 밝은 부분이 자연스럽게 합쳐지지만, 감마 색 공간에서의 블랜딩은 밝은 부분이 지나치게 진하고 경계가 생기는 모습이 보입니다. 그 이유는 감마 색 공간에서의 이미지들은 위에서 말한 것처럼 한 번 밝아진 상태의 이미지들이며, 선형 색 공간에서의 이미지들은 밝아진 이미지에 역으로 감마 보정을 가하여 원래 색상과 밝기로 되돌린 이미지들이기 때문입니다. 때문에 선형 색 공간에서 작업을 하는 것이 권장되며 이를 선형 워크플로우, 또는 리니어 워크플로우라고 하는 것입니다.

선형 워크플로우에서 작업된 이미지들은 마지막 랜더링 시 다시 감마 보정을 통해 밝게 만들어지고, 이렇게 저장된 이미지들은 디스플레이 장치에서 다시금 어둡게 조정되어 우리가 기대하는 이미지로 출력되게 됩니다.

더 나아가

모든 이미지 파일들이 감마 보정이 된 채 저장되지는 않습니다. png, gif, jpeg 따위의 이미지 파일들은 감마 보정으로 원래보다 밝게 저장되지만, raw, exr 등과 같은 이미지 파일들은 감마 보정이 없습니다. 따라서 이들을 모니터에서 보면 다소 어둡게 나타나는 것입니다.

선형 워크플로우를 적용하는 방법은 그래픽 소프트웨어마다 다릅니다. 자신이 사용하는 소프트웨어의 선형 워크플로우 지원 방식을 알아보고 참고하여 사용하면 됩니다.