Images and Displays
컴퓨터 그래픽스 : 컴퓨터 속 눈에 보이는 이미지를 창조, 조작 ,사용하는 학문
이미지는 2D distribution of intensity or color
I : R^2
색 : R, G, B 만 섞어도 인간이 구분 가능한 색 모두 나타낼 수 있음
이미지는 픽셀로 표현한다.
숫자의 2D 배열을 통해서 (pixel) 이미지 표현
임의의 이미지를 표현하는데 유리,작은 사각형을 모아 이미지 표현
메모리가 싸지면서 가능해짐
raster images 의 데이터타입
비트맵 bitmaps : boolean per pixel ( 1bpp) : 1, 0으로 이루어짐, 흰색, 검정으로만 표시
Grayscale : integer per pixel
픽셀당 빛의 양(intensity)를 나타낸다.
8bit이 일반적, 2^8 이면 256가지 빛의 강도를 나타낼 수 있다. 단색 기준
10, 12, 16bit 을 쓸 때도 있다.
Color : 3 integers per pixel
RGB 각각에 대해서 8bpp씩, 총 24bits 24bpp 사용한다.
용량에 맞춰서 16, 30, 36, 48 bpp 쓰는 경우도 있다.
gif format의 경우 8bpp 고정, 정해져있는 색상 256가지로 이미지 표현한다.
요즘은 메모리가 저렴해서 픽셀당 비트 더 쓸 수 있음
한 채널당 4byte를 쓰면? 훨씬 더 사실적으로 표현 가능, 이미지 변형에 대한 손실도 줄어듦
HDR : High Dynamic Range 32-bit float (RGBA) has 32-bits per color channel, 128-bits per pixel
24bpp img : 8bpp per color, 채널별 256 단계
alpha channel :각 화소에 대한 색상표현, 데이터로 부터 분리한보조데이터 , 투명도, 매트데이터 등등
사진 배경날릴 때 사용
이미지를 위해 필요한 용량
1024 * 1024 image = 2^20 = 1 mega pixel : pixel 개수가 가로세로 1024개씩 있는 이미지파일
용량을 계산하려면, 전체 픽셀수와 픽셀당 비트수를 곱한다.
8bit = 1byte
2^10 byte = 1kb
2^20 byte = 1mb
2^30 byte = 1gb
...
bitmap img = 1bpp : 128KB // 1024 * 1024 * 1bit = 2^20 bit = 2^17 byte = 2^7 KB
grayscale img = 8bpp : 1byte per pixel : 1MB
color 24bpp : 3byte per pixel : 3MB
floating point HDR color : 4byte* 3 per pixel = 12byte per pixel, 12MB
이미지 프로세싱
컬러->회색
24bit 짜리를 8bit으로 바꾼다. 한가지 색 채널만 사용하면 이상해진다.
예를 들어 컬러이미지에서 파란색의 픽셀정보만 가져와서 흑백사진으로 바꾸면..
파란색이 없는 색상(노랑) 은 검은색으로 표현되는 등의 문제가 생긴다. - 맘에 안드는 상황
현실과 비슷한 회색 사진을 만들고 싶다면..
컬러이미지의 각 채널정보의 조합을 이용한다.
R에서 얼마, G에서 얼마, B에서 얼마 이런식으로
bpp 줄이기
8bpp이미지를 1bpp로 바꾸면
256종류 색을 쓰던 이미지에서 2가지 색을 쓰는 이미지로 바뀐다.
정보 손실은 당연한 것
quantize 필요, 일관된 규칙도 필요하다.
만약 pixel intensity가 0.5 이상이면 1, 아니면 0으로 변환하는 등
디더링을 이용해서 이미지 부드럽게
pixel value : 얼마나 픽셀이 밝은가를 나타냄
큰 값이면 더 밝다.
value 200 이 value 100 pixel 보다 2배 밝을까? 아님
얼마나 밝은거지?
pixel 배치에 따라서 value 낮은데도 더 밝게 보이는 영역도 생김
light intensity와 pixel value 가 선형관계가 아님
transfer function 필요 : input pixel value를 디스플레이에 올려진 이미지의 밝은 정도로 매핑해주는 함수
하지만 장치, 매체에 따라 제약이 심하다.
Maximum displayable intensity : I_max
픽셀에 전력이 얼마나 전달될 수 있나
Minimum displayable intensity : I_min
꺼진 상태에서 빛 나는 정도에 따라
viewing flare, k : light reflected by the display
실전에서 이미지 대비 결정하는데 정말 중요한 요소이다
contrast : 물체를 다른물체, 배경과 구분할 수 있게
I_max 의 5% 평범한 사무 공간
CRT나 LCD 화면을 아주 검게 만드려는 노력
영화관에서 주변환경을 다 검게 만드는 노력
k=0 이면, 암실이라는 뜻,
Dynamic Range: 디스플레이의 품질을 측정하는 방법
Rd = Imax/Imin : 암실에서 측정했을 때, (k=0, 성능이 좋아보일것)
Rd = Imax+k / Imin+k
디스플레이에서 얻을 수 있는 image contrast의 정도를 결정한다.
좋은 디스플레이 or 좋은 환경(어두운) = 100000 : 1 매우 크다.
안좋은 디스플레이 or 주변 밝은 환경 = 20 : 1 작다.
transfer function shpae
얼마나 바뀌어야 우리가 알아차릴 수 있나? intensity가 2% 바뀌면 알아차릴수 있음
밝은 곳 보단 어두운 곳에서 작은 양자화 과정
ideal quantization
1.02 증가, 100:1 dynamic rage가 240과정이다.
10:1 위해서는 120과정
일반적으로 8bits를 많이 쓴다.(채널당)
linear quantization : i(n) = (n/N) Imax
간단, 편리하지만 메모리 낭비
power-law quantization : I(n) = (n/N)^r Imax
꽤 간단, 편리
linearize가 계산 전에 필요하다.
감마 값에 대한 동의가 필요하다. 일반적으로 2.2를 쓴다.
꽤 간편하면서도 잘 들어맞는 식이 된다.
n = pixel value
N = 2^n -1
n = Na^(1/r) intensity를 계산
감마값이 낮으면 직선과 비슷 너무 밝아 보일수 있음, 높여야해
감마값이 높으면 너무 가팔라짐, 어두운 부분 너무 어두워, 낮춰야 해