[컴퓨터 그래픽스] 좌표계, 컬러 모델, 이미지 저장 방식
좌표계
윈도우 시스템 좌표계
- 프레임버퍼의 좌표계
- 정수 좌표 사용 (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단계 표현 가능)
- BW (black&white, 흑백)
- 1 픽셀 = 1 bit
- 0(백) ~ 1(흑)
- 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