프로그래밍/스크랩 2011.06.07 10:21
이미지프로세싱  bLife [Project] 

2008/05/25 22:59

복사http://blog.naver.com/jooh55/110031437711

1. 이미지 프로세싱이란?

 

   우리는 항상 수많은 영상을 보면서 살아간다. 눈에 보이는 모든 것을 통해 공간을 인지하고, 상황을 파악하고, 위기에 대처하기도 한다. 컴퓨터 속 세상도 마찬가지이다. 초기의 컴퓨터는 CUI환경에서 문자를 통해 모든 것을 처리해야 했었지만, 이젠 영상이 없는 컴퓨터를 상상하기 힘들다. 지난 1월말 출시한 마이크로소프트의 새로운 운영체제 윈도우 비스타(Windows Vista)는 더욱 예쁜 인터페이스로 사용자들을 사로잡는다. 새로워진 아이콘과 그래픽 덕분이다.
  컴퓨터는 모든 것을 0과 1로 처리한다. 영상에 있어서도 마찬가지이다. 스캐너, 디지털 카메라를 통하여 획득되었거나 컴퓨터를 이용하여 생성된 영상자료를 목적에 맞게 처리하는 일련의 과정을 이미지프로세싱(Image Processing)이라 한다. 이것은 영상의 화질을 개선하거나, 영상을 기하학적으로 변환하거나, 영상의 특징을 두드러지게 변화시키거나, 영상을 압축하는 등의 작업을 포함하며, 방송 영화, 의료, 산업 현장, 사진 편집, 출판 등 매우 광범위한 분야에 활용되고 있다.
  이 학습컨텐츠에서는 이미지 프로세싱의 기본적인 내용이라 할 수 있는 픽셀 기반, 영역 기반 프로세싱과 기하학적 프로세싱에 대한 내용을 다룬 뒤, 나아가 주파수 영역에서 이미지를 처리할 수 있는 방법도 다루도록 하겠다.

 

2. 이미지 프로세싱 기초

 

자연 영상은 컬러와 음영이 연속적으로 변화하지만, 컴퓨터에서 처리하는 디지털 영상은 그렇지 않다. 디지털 카메라나 스캐너와 같은 기기를 이용하면 자연 영상을 디지털화하는 것이 가능하다. 이러한 기기를 디지타이저(Digitizer)라고 하며, 샘플링(Sampling)과 양자화(Quantization)의 두 가지 기능을 한다. 샘플링은 자연 영상에서 일정한 간격으로 데이터를 뽑아내는 것을 말한다. 디지털 카메라에서, 5백만 화소, 7백만 화소와 같은 이야기는 그 디지털 카메라의 샘플링 수준(Sampling Rate)을 이야기한다. 5백만 화소의 카메라로는 5백만 개의 데이터로 이루어진 사진을 찍을 수 있는 것이다. 이 때의 사진을 이루는 각 데이터를 픽셀(pixel)이라고 하며, 이미지의 가장 작은 구성 요소이다. 아래 그림에서 이미지를 확대하여 그것을 이루고 있는 점들인 픽셀을 볼 수 있다. 픽셀들의 배열로 이루어진 이러한 이미지를 비트맵(bitmap) 이미지라 한다.

(그림 1) 이미지를 이루고 있는 픽셀(pixel)들

 

  양자화(Quantization)는 샘플링을 통해 획득된 데이터(픽셀)에 숫자로 된 값을 할당하는 것을 의미한다. 할당되는 숫자의 범위에 따라 여러 양자화 수준이 있을 수 있으며, 256색, 하이 컬러, 트루 컬러 등의 용어는 이러한 양자화 수준을 지칭하는 말이다.


(그림 2) 서로 다른 수준으로 샘플링한 사진의 예


(그림 3) 서로 다른 수준으로 양자화한 사진의 예 

 

 

 

3. 컬러 모델

 

  흑백 영상의 경우에는 각 픽셀의 밝기만으로 영상을 표현할 수 있지만, 컬러 영상에서는 다양한 표현 방법이 요구된다. 컬러 모니터와 같이 빛을 이용해서 색을 표현할 때는 빛의 삼원색을 이용한 RGB 컬러 모델을, 컬러 프린터에서는 색의 삼원색을 이용한 CMY 컬러 모델을 이용한다. 이외에도 색상, 명도, 채도의 혼합으로 색을 나타내는 HSI 컬러 모델이 있다.


(1) RGB 컬러 모델

  RGB컬러 모델은 빛의 삼원색인 빨강(Red), 초록(Green), 파랑(Blue)을 이용하여 색을 표현한다. 어떤 이미지라도 R, G, B 세 가지 색으로 분리하는 것이 가능하다.(그림 4) 흔히 R, G, B의 각 성분을 8비트 (256단계 : 가장 어두운 0.0을 00이, 가장 밝은 1.0은 FF가 나타내게 된다)로 표현하는 방식을 트루 컬러(True Color, Millions of colors)라고 한다. 각 성분에 16진수 두 자리씩 총 여섯 자리를 이용하면 모든 색을 나타내는 것이 가능하다.(그림 5) 빛은 혼합할수록 점점 밝아지기 때문에, RGB컬러 모델을 가산혼합(Additive Color Mixing)이라고 한다.

(그림 4) 사진을 RGB 컬러 모델의 각 성분으로 나눈 예



(그림 5) RGB 색상들과 컬러 큐브(Color Cube)


  3차원 좌표공간의 x, y, z축에 각각 R, G, B 성분을 대입하면 (0,0,0)에 검정색이, (1,1,1)에는 흰색이 있는 정육면체가 완성된다. (그림 5)의 오른쪽에 있는 정육면체가 바로 그것인데, 이것을 RGB 컬러 큐브(RGB Color Cube)라 한다.

  빛의 3원색이 빨강, 파랑, 초록이 된 것은 우리 눈의 감각 체계와 관련이 있다. 사람의 눈에는 빨강, 파랑, 초록에 해당하는 세 가지 파장의 빛을 받아들이는 수용체가 있어서, 각 수용체에 전달되는 감각의 세기로 빛의 색과 밝기를 구분하게 된다. 서로 다른 진동수를 가진 음들이 모두 우리에게 다양하게 들리듯이 400~700nm의 파장을 가진 빛들도 모두 다양하지만, 빨강, 파랑, 초록의 빛을 적절히 혼합하는 것만으로도 다른 모든 색의 빛을 보는 것과 같은 효과를 낼 수 있는 것이다. 만약 우리 눈에 네 가지 수용체가 있었으면, 컬러 큐브를 4차원에 그려야 했을지도 모른다.

 

(2) CMYK 컬러 모델

  CMYK 컬러 모델은 청록(Cyan), 자홍(Magenta), 노랑(Yellow), 검정(Key, black) 으로 구성된다. 원래 검정색이던 화면에 빛을 쏘아서 색을 만들어내는 모니터에서는 빛의 삼원색인 RGB를 이용했지만, 프린터와 같이 원래 흰색이던 종이에 잉크를 이용해 색을 만들어낼 때에는 물감의 삼원색인 CMY컬러를 이용해야 한다. 색을 섞을수록 더 어두워지기 때문에 이것을 감산혼합 (subtractive Color Mixing)이라고 한다. CMY만을 이용해도 이론적으로 모든 색을 표현할 수 있으나 검정색이 추가적으로 이용되는 까닭은 아래와 같다.


  • 완전히 순수한 컬러 잉크를 생산하는 것은 어렵기 때문에, CMY를 섞는 것으로 순수한 검정색을 만들어내는 것이 불가능하다.
  • 세 잉크를 모두 뿌리면 종이가 마르는 데에 오래걸리고, 특히 빠른 속도로 문서를 인쇄해야 하는 경우에 다음 페이지에까지 잉크가 번질 수 있다.
  • 흔히 문자는 검정색으로 인쇄된다. 하지만 세가지 색깔의 잉크가 정확히 똑같은 위치에 뿌려지려면 매우 섬세한 처리가 필요하게 된다.
  • 검정 잉크가 컬러 잉크보다 훨씬 싸기 때문에 검정 잉크를 사용하면 비용을 절감할 수 있다.


  RGB와 CMY는 서로 보색 관계에 있기 때문에, RGB를 CMY로 변환하는 작업은 간단하다.


RGB와 CMY의 상호 변환

RGB → CMY

CMY → RGB

C = 1.0 – R

M = 1.0 – G

Y = 1.0 - B

R = 1.0 – C

G = 1.0 – M

B = 1.0 - Y


  CMYK는 컬러 잉크를 가장 조금 쓰는 데에 그 목적이 있기 때문에, C, M, Y 성분 중 가장 작은 성분만큼을 검정으로 나타내고, 그 차이에 해당하는 부분을 컬러 성분으로 나타낸다. 수식으로 표현하면 아래와 같다.


RGB와 CMYK의 상호 변환

RGB → CMYK

CMYK → RGB

C = (1.0 – R – K) / (1.0 – K)

M = (1.0 – G – K) / (1.0 – K)

Y = (1.0 – B – K) / (1.0 – K)

K = min { 1.0 – R , 1.0 – G , 1.0 – B }

R = (1.0 – C)(1.0 – K)

G = (1.0 – M)(1.0 – K)

B = (1.0 – Y)(1.0 – K)



  아래의 (그림 6)는 같은 사진을 CMY만 써서 나타낸 것(왼쪽)과, CMYK를 이용하여 컬러 잉크 사용량을 최소화한 경우를 비교한 것이다. CMYK 컬러 모델을 쓰는 경우에 컬러 잉크가 훨씬 절약된다는 것을 알 수 있다.


(그림 6) CMY 컬러 모델(왼쪽 4개)과 CMYK 컬러 모델(오른쪽 4개)



(3) HSB 컬러 모델과 HSL 컬러 모델

  색상을 이루는 원소별로 나누는 방법 외에도, 이미지의 색상과 채도와 밝기 정보를 구분해서 상을 만드는 HSB와 HSL 컬러 모델도 있다.

  HSB 컬러 모델(HSV컬러 모델)은 색상(Hue), 채도(Saturation), 밝기(Brightness 또는 Value)로 구성된다. 색상은 그 색의 원색을 나타내고, 채도는 색의 순수도를 나타내는 것으로 원색에 어느 정도의 흰색이 혼합되었는지를 나타낸다. 밝기는 색깔의 밝은 정도를 나타낸다.

  HSB 컬러 모델은 (그림 7)과 같이 원뿔 모양의 좌표계로 표현된다. 색상은 0도에서 360도 사이의 각도로 표현된다. 0도는 빨강색, 120도는 초록색, 240도는 파란색을 각각 나타낸다. 채도는 0에서 1까지의 값을 가지며 원뿔 중심으로부터의 수평거리 (z축과의 거리)로 표현된다. 명도는 세로축에 해당하며, 가장 아래쪽이 명도 0인 검정색을 나타내고, 가장 위쪽이 명도 1인 흰색을 나타낸다.

  RGB나 CMYK 컬러 모델이 인간의 신경계가 생물학적으로 빛을 감지하는 방법을 통해 구성되었다고 한다면, 이 컬러 모델은 인간이 감성적으로 색을 받아들이는 방법과 가장 가깝게 구성되었다고 할 수 있다. 인간이 색을 구분할 때에는 어떤 색상인가(Hue), 얼마나 선명한 색인가(Saturation), 얼마나 밝은 색인가(Brightness) 등을 기준으로 하기 때문이다.



(그림 7) HSB 컬러 모델


(그림 8) HSL 컬러 모델


  HSB 컬러 모델과 비슷한 HSL컬러 모델은 원뿔 두 개를 이용하여 색상공간을 구성한다. HSL 컬러 모델은 밝기를 그대로 하고 채도를 변화하면 원색으로부터 같은 밝기의 회색을 얻을 수 있기 때문에 '밝기'의 직관적인 개념과 일치하고, 밝은 색과 어두운 색이 공간상에서 서로 대칭적이라는 이점이 있다. 반면 분홍색과 같이 원색과 흰색 사이에 있는 색들이 100%의 채도를 가지게 되기 때문에 '채도'의 직관적인 개념과는 다소 차이가 생기게 된다.

  HSL 컬러 모델을 이용하는 Windows의 색 편집 대화상자(그림 9)에서는 2차원 영역에서 색상과 채도를 선택하고 1차원 막대로 밝기를 설정할 수 있다. HSB컬러 모델을 이용하는 포토샵(그림 10)의 경우 색상(Hue)를 1차원 막대로 설정하고 채도와 밝기를 2차원 영역에서 선택할 수 있도록 했다. 이 경우에는 2차원 영역을 적절히 변형하는 것으로 HSB원뿔의 단면이 될 수도 있고 HSL 원뿔의 단면이 될 수도 있기 때문에, 두 모델의 구분이 불필요해진다.

  많은 소프트웨어에서는 각 성분의 수치를 직접 입력할 수 있는데, 이 때 HSB 컬러 모델을 사용하는 소프트웨어는 MacOS X시스템, GIMP, Paint.NET과 Adobe사의 그래픽 프로그램들이 있고, HSL 컬러 모델을 사용하는 소프트웨어는 Inkspape, Macromedia Studio, Windows의 색 편집 대화상자, Paint Shop Pro등이 있다.

(그림 9) Windows의 색 편집 대화상자


(그림 10) 포토샵의 색깔 선택 화면



 

(4) 기타 컬러 모델들

  앞서 다룬 세 가지 컬러 모델 이외에도 YCbCr, YUV, YIQ 등 다양한 컬러 모델들이 있다. 여기서 Y는 공통적으로 광도를 나타낸다. YCbCr 모델에서 Cb와 Cr은 각각 푸른 정도와 붉은 정도를 나타내며 JPEG파일의 압축에 사용된다. 사람의 눈이 색상보다 광도에 더 민감하기 때문에, Cb와 Cr보다 밝기 정보를 더 구체적으로 저장하는 것으로 압축률을 높일 수 있다. YUV와 YIQ는 각각 PAL과 NTSC 컬러 TV방송에 사용되는 컬러 모델이다. 

'프로그래밍 > 스크랩' 카테고리의 다른 글

QR 코드 인신 실패  (0) 2011.06.07
QR코드 원리  (0) 2011.06.07
이미지 프로세싱 기본 원리  (0) 2011.06.07
차세대 동화상 부호화 방식 H.264  (0) 2011.06.07
유용한 영상처리 메소드  (0) 2011.06.07
이미지 프로세싱  (0) 2011.06.07
posted by zerowns

티스토리 툴바