본문 바로가기
Nuke/Color

Colour Space 이해

by 르면가게 2024. 12. 13.

https://compositormathematic.wordpress.com/2013/07/17/colour-space/

 

Colour Space

This subject can be a pretty daunting, so to simplify let’s start by inventing our own colour space. We’ll call it RAINBOW! RAINBOW colour space is going to be very simple and only repr…

compositormathematic.wordpress.com

 

RAINBOW 색공간 이해하기


RAINBOW 색공간이란?

RAINBOW는 가상의 색공간으로, 7가지 색상을 숫자값으로 매핑합니다.

숫자값과 대응되는 색상은 다음과 같습니다:

숫자값 색상

0.1 빨강 (Red)
0.2 주황 (Orange)
0.3 노랑 (Yellow)
0.4 초록 (Green)
0.5 파랑 (Blue)
0.6 남색 (Indigo)
0.7 보라 (Violet)

RAINBOW 색공간의 동작 방식

  1. 이미지 데이터:
    • RAINBOW 색공간의 이미지 파일은 픽셀마다 **숫자값(0.1~0.7)**을 포함합니다.
  2. 메타데이터:
    • 파일은 "이 이미지가 RAINBOW 색공간에 속한다"는 정보를 담은 메타데이터를 포함해야 합니다.
  3. 이미지 표시 과정:
    • 컴퓨터는 메타데이터를 읽고, 픽셀 값(예: 0.1)을 RAINBOW 색공간의 정의에 따라 해석합니다.
      • 예: 픽셀 값이 0.1이면 빨강(RED)으로 표시.
    • 이렇게 각 픽셀의 숫자값을 색상으로 변환해 이미지를 화면에 표시합니다.

메타데이터가 없는 경우

  • 메타데이터가 누락되면, 컴퓨터는 기본적으로 가장 일반적인 색공간인 sRGB로 추정합니다.
  • 이로 인해 색상이 엉뚱하게 표시될 수 있습니다.

실제 색공간과의 비교

RAINBOW는 단순한 예제지만, 실제 색공간(예: sRGB, Rec.709, ACES)도 비슷한 방식으로 작동합니다:

  • 각 색공간은 특정 값과 색상을 연결합니다.
  • 메타데이터가 중요하며, 없을 경우 색상이 잘못 해석될 가능성이 있습니다.

 

색공간 이해하기: 한계와 다중 선택의 이유


RAINBOW 색공간의 한계

RAINBOW 색공간은 아래와 같은 치명적인 한계를 가지고 있습니다:

  • 7가지 색상만 표현 가능: 색상 간의 **점진적인 변화(gradation)**가 불가능합니다.
  • 검정(Black)과 흰색(White)을 표현 불가: 명암과 색조(saturation) 표현에 한계가 있습니다.
  • 좁은 색역(Gamut): 특정 색공간이 표현할 수 있는 색의 범위를 Gamut이라고 하는데, RAINBOW의 Gamut은 극히 작습니다.

결론: RAINBOW는 교육 목적으로 만들어진 색공간으로, 실제 활용에는 적합하지 않지만 색공간의 개념을 설명하는 데 유용합니다.


색공간이란?

색공간은 숫자로 색상을 표현하는 방법입니다.

기기는 이를 해석해 색을 화면에 표시합니다.

  • 색공간은 서로 다른 언어와 같아서, 특정 색공간에서 표현된 색상이 다른 색공간에서는 정확히 재현되지 않을 수 있습니다.

왜 모든 작업에 하나의 색 공간을 사용할 수 없을까요?


1. 색 공간의 역할

  • 색 공간은 소프트웨어와 하드웨어 간의 간극을 연결하기 위해 설계되었습니다.
  • 기기별로 작동 방식이 다르기 때문에 다양한 색 공간이 필요합니다.
    • 인쇄용 (CMYK):
      • 감산 혼합 방식을 사용합니다(잉크가 빛의 파장을 차단).
      • 흰 종이(모든 파장의 빛을 반사하는 상태)에서 시작해 잉크를 추가하여 색을 만듭니다.
    • 빛을 방출하는 장치 (RGB):
      • 가산 혼합 방식을 사용합니다(빛의 파장을 조합하여 색을 생성).
      • 빨강, 초록, 파랑(RGB) 빛이 결합해 흰색 또는 다양한 색을 만듭니다.

2. 기기 간 호환성 문제

  • RGB와 CMYK의 차이:
    • 프린터는 RGB 잉크를 사용하지 않으므로 RGB 데이터를 직접 해석할 수 없습니다.
    • 마찬가지로, CMYK 데이터는 RGB 기반 장치에서 올바르게 표시되지 않습니다.
  • RGB의 다양한 변형:
    • 카메라, 모니터, 프로젝터 등 다양한 장치마다 RGB 구현 방식이 다르며, 각 하드웨어에 맞는 고유한 색 공간이 필요합니다.
    • 이를 통해 한 장치에서 생성된 이미지를 다른 장치에서도 정확히 표현할 수 있도록 변환됩니다.

3. 색 공간 변환의 필요성

  • 카메라 센서에서 생성된 데이터는 디스플레이에 맞게 내부적으로 변환된 후 저장됩니다.
  • 이미지 파일의 저장 방식 또한 영향을 미칩니다:
    • 예를 들어, 8비트 색상에서는 감마(gamma)를 적용하여 중요한 데이터가 더 많은 저장 공간을 차지하도록 설계됩니다(압축의 한 형태).

4. 하드웨어 기반이 아닌 색 공간

  • 일부 색 공간은 하드웨어가 아니라 컴퓨터 내 작업을 더 쉽게 하기 위해 설계되었습니다.
    • 예:
      • Linear RGB (Nuke의 기본 색 공간): 밝기 값이 선형적으로 표현됨.
      • HSV (Hue, Saturation, Value): 색조, 채도, 밝기를 개별적으로 조작할 수 있음.
      • XYZ: 인간의 시각을 넘어서는 색 범위를 포함하는 색 공간.

채널(Channels)이란?


채널의 정의

  • 채널은 색상 데이터를 저장하는 개별적인 값의 집합을 의미합니다.
  • 특정 색공간에서 색상을 표현하기 위해 사용하는 숫자 데이터의 구성 요소입니다.

RAINBOW 색공간과 일반 색공간의 차이

  • RAINBOW 색공간:
    • 단일 채널로 구성되며, 숫자 하나로 색상을 표현.
    • 예: 0.1은 빨강, 0.2는 주황.
  • 일반 색공간 (예: sRGB):
    • 3개의 채널(R, G, B)로 구성.
    • 예: (1.0, 0.0, 0.0)은 빨강, (0.0, 1.0, 0.0)은 초록.

색공간별 채널 수

  • RGB 계열 (예: sRGB, Linear RGB):
    • 3개의 채널 사용 (Red, Green, Blue).
    • 빛을 조합하여 색을 만드는 가산 혼합 방식.
  • CMYK (프린터 등):
    • 4개의 채널 사용 (Cyan, Magenta, Yellow, Black).
    • 잉크로 빛을 흡수하여 색을 만드는 감산 혼합 방식.
  • HSV (Hue, Saturation, Value):
    • 3개의 채널 사용.
    • 색상, 채도, 명도를 독립적으로 조작 가능.
  • XYZ:
    • 3개의 채널로 구성되며, 인간의 시각 범위를 넘어서는 색도 표현 가능.

채널 수와 하드웨어

  • 채널의 개수는 과학적 기준이 아니라 하드웨어와 효율성에 따라 결정됩니다.
    • 디스플레이 기술: 인간의 눈이 빨강, 초록, 파랑의 조합으로 색을 인식하는 점을 이용해 RGB를 채택.
    • 프린터 기술: 잉크의 물리적 특성에 따라 CMYK 채널 사용.

채널의 역할

  • 채널은 각 색상의 데이터를 저장하며, 이 데이터를 통해 색상, 명도, 채도를 제어합니다.
  • 여러 채널을 통해 다양한 색조를 섬세하게 표현할 수 있습니다.

Nuke의 컬러 워크플로우


Nuke의 기본 색공간: Linear RGB

  • Linear RGB 색공간:
    • 밝기의 스케일이 선형적.
    • 예:
      • 0 = 검정, 1 = 중간 밝기, 2 = 1보다 두 배 밝음.
    • 선형적 특성 덕분에 이미지 계산이 간단하고 예측 가능하며, 일관된 결과를 제공합니다.
  • 작동 원리:
    • Nuke는 모든 입력 이미지를 Linear RGB로 변환 후 작업.
    • 출력 시 사용자가 지정한 색공간으로 다시 변환.

부동소수점 컬러 처리

  • Nuke는 부동소수점(floating point) 컬러 깊이를 사용.
    • 이로 인해 색공간 변환 시 품질 저하가 거의 없음.
    • 정확하고 손실 없는 결과를 보장.

뷰어 LUT (Look-Up Table)

  • 뷰어 LUT의 역할:
    • 컴퓨터 모니터는 선형 색공간을 직접 처리할 수 없음.
    • 작업 중 이미지를 모니터에 적합한 색공간(예: sRGB)으로 변환하여 표시.
    • 예:
      • 영화관 프로젝션 환경에 맞춘 LUT 설정 가능.
    • 주의: 뷰어 LUT는 작업 이미지에 영향을 주지 않음.
      • 실제 데이터에 변화를 주지 않고 단지 보기 편하도록 설정.

노이즈 및 그레인 처리

  • 디지털 이미지의 노이즈와 필름의 그레인은 보통 이미지의 밝기와 상관없이 고르게 분포.
  • Linear RGB로 변환 시:
    • 이미지 자체는 선형화되지만, 노이즈는 비선형화.
    • 선형 상태에서 노이즈를 처리하는 것이 더 효율적이지만, 이미지와 노이즈가 동시에 선형 상태가 되는 경우는 드묾.
  • 결론:
    • 일부 작업(노이즈 제거, 필터링 등)에서는 원래 색공간에서 작업하는 것이 유리.

색공간 변환을 포함한 작업 노드

  • Nuke의 일부 노드는 작업 과정에서 자동으로 색공간 변환 수행.
    • HSV 노드:
      • Hue(색상), Saturation(채도), Value(밝기)를 개별적으로 조정하기 위해 HSV 색공간으로 변환 후 작업.
      • 작업 후 Linear RGB로 다시 변환.
    • Keyer 노드:
      • 블루스크린/그린스크린 키잉 작업 시, HSV 색공간의 일부 요소를 활용.

함수와 LUT (Look-Up Table)


색 공간 변환의 두 가지 방법

색 공간 변환은 크게 두 가지 방법으로 이루어질 수 있습니다:

  • 수학적 함수
  • LUT (Look-Up Table)

수학적 함수 (Mathematical Function)

  • 함수는 수학적인 공식으로 색 값들을 변환하는 방법입니다. 예를 들어, HSV 색 공간의 채도(Saturation) 값을 구하는 함수는 다음과 같습니다: (LUT). S = max(R, G, B) – min(R, G, B) 이 함수는 RGB 값 중에서 가장 밝은 채널과 가장 어두운 채널의 차이를 계산하여 채도를 결정합니다.
    • 예: RGB 값이 [0.1, 0.8, 0.5]일 경우:
      • 가장 밝은 값은 0.8 (초록)
      • 가장 어두운 값은 0.1 (빨강)
      • 따라서 채도는 0.8−0.1=0.7입니다.
      • 0.8−0.1=0.70.8 - 0.1 = 0.7
  • 장점:
    • 함수는 계산을 통해 정확한 값을 도출할 수 있습니다. 입력에 따라 일관된 결과를 얻을 수 있습니다.

LUT (Look-Up Table)

  • LUT는 색 값의 입력과 출력이 미리 정의된 표로, 수학적 공식 없이 색 값을 변환합니다.
    • 예: RGB 값 [0.1, 0.8, 0.5]에 대해 출력 값이 S [0.8]로 설정될 수 있습니다.
  • 장점:
    • LUT는 빠른 계산을 제공하며, 복잡한 변환을 수학적으로 설명하기 어려운 경우 유용합니다.
    • LUT는 큰 배열로 구성되어 있으며, 요구하는 정확한 값이 없으면 가장 근접한 값을 선택합니다.
  • 단점:
    • LUT는 손실이 발생할 수 있습니다. 즉, 색 값 변환 과정에서 이미지의 세부 정보가 손상될 수 있습니다.

함수와 LUT의 선택 기준

  • 수학적 함수는 정확하고 예측 가능한 변환을 제공합니다. 하지만 복잡한 변환에는 한계가 있을 수 있습니다.
  • LUT는 계산 비용이 높거나 복잡한 변환이 필요할 때 사용됩니다. 그러나 LUT의 손실로 인해 품질 저하가 발생할 수 있습니다.

예시: Linear RGB와 sRGB 변환

  • Linear RGB와 sRGB 변환은 함수로 간단하게 설명할 수 없어서, Nuke는 이 변환을 간략하게 다음과 같은 함수로 처리합니다:
  • $\text{Linear} = \text{sRGB}^{1/2.2}$
  • 이 함수는 sRGB 모델을 아주 근사하게 구현한 것입니다. 정확한 함수 대신 이 간단한 근사값을 사용함으로써 계산 비용을 줄이고 효율성을 높였습니다.
  • 이 방식은 LUT를 사용한 정확한 변환보다 효율적인 방법으로, 일부 손실이 있긴 하지만 실용적인 방법으로 받아들여집니다.

결론: Compositing에서 LUT의 사용

  • 컴포지팅 작업에서는 가능한 한 LUT 사용을 피하는 것이 좋습니다. 왜냐하면 LUT는 품질 저하를 일으킬 수 있기 때문입니다.
  • 대신, LUT는 디스플레이 용도로만 사용하는 것이 이상적입니다. 예를 들어, Nuke의 Viewer LUT는 최종 이미지에 영향을 주지 않고 화면에서만 이미지 색을 조정하는 역할을 합니다.

'Nuke > Color' 카테고리의 다른 글

The Academy Color Encoding System (ACES) — Overview  (0) 2025.01.16
Grade Node  (1) 2024.12.17
When to Utilize a Different Colourspace(다른 색 공간을 활용하는 시기)  (1) 2024.12.17
Float  (1) 2024.12.13
ColorMatrix 노드 이해하기  (1) 2024.12.13