Posts List

[컴퓨터비전] 5. Digital Image Processing

Digital Image Processing

Spatial domain은 이미지의 픽셀로 이루어져 있는 도메인이고, Frequency domain은 이미지의 주파수로 이루어진 도메인이다.

Intensity transformation은 Spatial domain processing의 일종이며, 1개 픽셀 포인트만 보고 transformation 시키는 방법이다. (point transformation) 예를 들어 전체적으로 색을 낮추거나 반전시키는 등을 예로 들 수 있다.

대표적인 Intensity transformation은 Power-low(gamma) transformation이 있다. 여기서 output 픽셀 s는 위와 같이 정의된다. (r = input 픽셀) 여기서 γ를 조절해서 명도나 대비(contrast)를 조정할 수 있다. (AdobePhotoshop과 같은 이미지처리 툴에서 위 그래프를 자주 봤을 것이다.)

※ 이 방법은 과거 CRT 모니터의 출력이 항상 어두웠던 문제점(결함)을 Gamma=2.2로 processing 한 뒤 출력을 내보내는 방법으로 결함을 만회하는데 사용하기도 했다. (gamma correction)

※ gamma correction은 CRT 모니터의 결함때문에 고안된 방법인데, 어두운 영역을 더 넓은 영역으로 표현하는 장점을 취하기 위해 현재까지도 자주 사용되는 방법이다. 

또 다른 자주쓰는 Intensity transformation에는 Contrast stretching이 있다. 이 방법은 gamma transformation의 custom버전이라 볼 수 있고, function의 모양을 사용자가 직접 적용하는 방법인데, 사실 이미 PhotoShop과 같은 SW에는 이미 최적의 function을 제공하고 있다.

이번에는 Frequency domain의 image processing을 살펴보도록 하자.

Histogram processing은 0~255값의 histogram을 파악한다. Gray scale 이미지을 예를 들면 이 이미지가 밝은 픽셀값이 많은지 어두운 픽셀값이 많은지를 파악하는 것이다. 그리고 이 분포를 사용자가 원하는 방향으로 변형시키는 것이 바로 Histogram processing이다. (PhotoShop과 같은 Tool에서 RGB histogram을 본 적이 한번쯤은 있을 것이다.)

대표적인 operation으로는 histogram equalization / matching이 있다.

histogram equalization : 한쪽으로 몰려 있는 분포를 고르게 만들어 주는 방법 (= cumulative histogram을 선형적으로 만들어준다.) 

※ cumulative histogram : histogram의 적분 함수

histogram matching : source 이미지를 reference 이미지의 분포와 유사하게 만들어주는 방법 (두 이미지를 비교할 때 많이 사용한다.)


[ Color model : (a) RGB    (b) CMYK   (c) HSV ]

이번에는 Color를 다루기 위한 image processing에 대해서 알아볼텐데, 일단 먼저 color를 묘사하는 color model에 대해서 알아보자. 

color model은 (R, G, B), (C, M, Y), (C, M, Y, K), (Hue=색조, Saturation=채도, Intensity=밝기)와 같이 색의 구성요소를 3차원으로 표현한 것을 의미한다. 그리고 color model의 값이 어떤 색을 표현하는지 mapping function을 이용해 매칭 시킨 것을 color space라 한다. (mapping function에 따라 같은 빨간색이라도 다른 색일 수 있다. ex. sRGB, AdobeRGB)

그럼 몇 가지 color model에 대해 알아보도록 하자.

RGB model은 빛의 삼원색을 직교좌표계로 표현한 모델이다. (ex. (1, 0, 0) = red)

이 모델은 빛의 삼원색으로 이미지를 표현하는데, 사실 실제 영상내 object는 R, G, B 모두를 이용해서 색이 결정되기 때문에 채널별로 분석하기가 쉽지 않다. 예를 들면, 위 사진에서 '집'이 특정 채널에서만 인식되지 않기 때문에 분석이 어려운 것이다.


CMY model은 색의 삼원색을 표현한 모델이며, 영상을 프린트할 때 따르는 모델이다. 이론적인 Black은 C+M+Y이지만 염료가 완벽하지 않기 때문에 Black을 따로 뺀 CMYK 모델이 printing device에 일반적으로 사용된다.


이렇게 색을 기준으로 한 모델보다 사람이 이해하기 더 직관적인 모델이 바로 HSI, HSV, HSL 모델이다. (사람은 영상을 보고 R00%, G00%, B00% 라고 생각하지 않고, 색조(hue)가 낮다, 채도(saturation)이 높다, 밝기(Intensity)가 높다라고 생각한다.)

※ 위와 같은 색상표를 PowerPoint나 PhotoShop에서 많이 봤을 것이다.

이렇게 색이 아닌 차원으로 이미지를 표현하면 각 채널의 thresholding을 통해 object와 background를 분리할 수 있어 영상처리에도 상당한 도움이 된다.


예를 들어, 특정 색의 성분을 강하게 하는 것이 아니라 영상의 명도, 밝기 등을 조절할 수 있고,

smoothing이나 sharpening 시에도 1개 채널만 조정하는 것으로 수행할 수 있다.

※ 압축에도 활용할 수 있다. 생각보다 사람의 눈은 색보다는 밝기에 훨씬 민감하기 때문에, 특정 채널을 압축시켜도 사람의 눈은 큰 변화를 탐지하지 못한다.


Multi-resolution processing

사진에 등장하는 object는 size가 모두 다르다. 그리고 사용자는 모든 object의 품질을 높이길 원하는데, 이를 위해서는 다양한 size의 이미지를 처리할 수 있어야 한다.

만약 위와 같은 사진이 있다고 했을때, 오리를 찾기 위한 가장 간단한 방법은 왼쪽 모서리에서 오른쪽 모서리로 이동하면서 patch안에 오리와 유사한 패턴이 있는지 비교해봐야 한다. 그런데 사진 속에는 사이즈가 다른 오리가 존재하기 때문에 결국 이미지의 사이즈를 늘리고 줄이는 과정이 필요하다.

Down sampling은 이미지 사이즈를 줄이는 과정이며, 전 포스팅에서 설명했듯 aliasing을 방지하기 위한 low-pass filtering과 sampling, 총 2개 step으로 진행된다.

진짜 어려운 것은 Up-sampling 이다. Up sampling은 이미지 사이즈를 늘리는 과정이며, 데이터 수를 늘리기 위해 linear/cubic interpolation 하는 방법(1-D)으로 부족한 데이터를 생성해낸다. 

이 방법을 이미지(2-D)로 확장하면 Bilinear/Bicubic interpolation이 된다.

※ 그 외에도 Nearest / Lanczos3 / Jinc3 등 interpolation 방법은 다양히 있지만, 계산량 등 가성비를 따졌을 때 대부분의 서비스는 Bicubic interpolation을 적용하고 있다.

Image Pyramids는 1개의 이미지를 미리 사이즈별로 압축시켜놓은 집합이다. 

Laplacian Pyramid는 sub-sampling 하면서 잃었던 정보들을 저장한 집합이다.

Low-pass + Gaussian filter로 축소한 Image Pyramid와 Laplacian Pyramid를 사용한다는 것은 이미지를 주파수별로 구분한 것을 의미하며, 이미지를 복원하거나 압축할 때 작업을 효율적으로 만들어준다.




댓글 쓰기

0 댓글