[공부]/컴퓨터 그래픽스

[컴퓨터 그래픽스] 좌표계, 컬러 모델, 이미지 저장 방식

개발꿈냥무 2024. 2. 28. 17:33

좌표계

윈도우 시스템 좌표계

  • 프레임버퍼의 좌표계
  • 정수 좌표 사용 (integer)
  • upper-left corner에 원점이 위치

 

3D 그래픽스 좌표계

  • 수학에서 사용하는 3차원 좌표계
  • 실수 좌표 사용 (float)
  • lower-left 또는 center에 원점이 위치

 


컬러 모델

가산 모델 (additive model)

  • 빛의 인식 C = T1 x R + T2 x G + T3 x B
  • T1, T2, T3 을 조정해서 임의의 색상 합성 가능

 

 

컬러 모델 : 컴퓨터 HW나 SW에서 컬러를 표현하는 방법 (RGB, CMY, grayscale 등)

 

RGB 컬러 모델

  • 적, 녹, 청 : 인간 시각에 가장 민감한 3원색
  • 가산 색계 : 더할 수록 밝아짐
  • RGB cube : 채널 별로 0.0 ~ 1.0의 실수값
  • 모니터, LCD용

 

CMY 컬러 모델

  • 청록, 자홍, 노랑 (cyan, magenta, yello) : 인쇄용으로 가장 적합한 3원색
  • 감산 색계 : 더할 수록 어두워짐
  • CMY cube
  • 프린터, 인쇄용

 

CMYK 컬러 모델

  • CMY + K
  • 이론적으로 C + M + Y = Black이지만, 실제로는 짙은 회색임 → 공학적 해결책 : K(=black)를 별도 지원
  • 컬러프린터 토너용

 

변환 가능! : RGB 색상 ↔ CMY 잉크

 [C M Y] = [1 1 1] - [R G B]

 


RGBA 컬러 모델

RGB + A (alpha channel)

= 알파 채널투명도(transparency) 저장하여, 이미지 합성 또는 편집에 사용

 

 

투명도 설정

  • A = 1.0  (완전 불투명)
  • A = 0.5  (50% 투명)
  • A = 0.0  (완전 투명)

 


컬러 심도 (Color Depth, 색 깊이, bit 깊이)

= 픽셀당 몇 bit를 쓸 것인가 ?

- 품질 : 더 많은 bit → 더 좋은 품질 !

- 비용 : 더 많은 bit → 더 많은 비용...

 

인간의 시각은 얼마 정도의 차이를 인식하는가?

일반인 기준 : 약 200 단계 ( → 8 bits : 256단계 표현 가능)

 

  1. BW (black&white, 흑백)
    • 1 픽셀 = 1 bit
    • 0(백) ~ 1(흑)
  2. grayscale (회색 척도)
    • 1 픽샐 = 8 bits
    • 0(흑) ~ grays ~ 255(백)

 

 

컬러 이미지 저장 방식

3 color channels 로 RGB 표현

즉, 컬러 이미지의 R, G, B 각각이 이미지에 들어가는 비율을 grayscale image로 저장

  • color → 3 color channels → 채널마다 8 bits씩 사용
  • 정리 : 1 픽셀 = 3 color channels = 3x8 bits = 24 bits per pixel

 

그래픽 카드 내부 구조

  • 프레임버퍼(framebuffer) : 픽셀마다 R,G,B의 3개 채널을 가짐
  • 각 채널마다 n개 bits를 할당 : 2^n x 2^n x 2^n 색상 => 총 2^3n 색상
  • 역사적으로, 3n = 8, 12, 24, 30, ... 사용
  • 3n = 16 → (5, 6, 5) 컬러 시스템 for classic mobile phone

- True Color System : 3n = 24 (LCD 모니터에서 많이 사용하는 방식)

- HDRI (high dynamic range imaging) : 3n = 30 → 더 넓은 명도 범위로 고품질임, 이미지 편집시 유리

 

- True Color System, with alpha channel : 4n = 32 (픽셀 당 4 bytes 사용 → RGBA)

  • 직관적 표현 : 정수 사용 → RGBA 모두 0~255 사이의 정수
  • 단, 정수 표현은 4n = 32일 때만 정확한 색상!
  • 정확성을 위해서는 0.0~1.0 사이의 실수를 사용하는 것이 좋음 (어떤 디바이스에 가더라도 정확한 색을 표현하려면 정수보다 실수가 good)

 


cf)

Decolorize : 컬러 이미지를 흑백 grayscale 이미지로 변환하는 것

 - 변환 공식 : I = 0.30 x R + 0.59 x G + 0.11 x B

 

Film Colorization : 단색(흑백) 이미지를 color로 변환

 - 이론상으로는 unsolvable (이미 information loss가 발생했기 때문)

 - hand colorization → (최근) digital colorization