728x90

칼라 분석 처리 목적에 따라 RGB 공간에서 다른 공간으로 변환할 있습니다. OpenCV에서 cvtColor 함수를 사용할 있으며 RGB 공간에서 변환할 경우에는 채널의 순서를 명시적으로 지정해야 합니다. OpenCV 기본 형식은 RGB라고 하는 경우가 많지만 실제로는 BGR입니다. 24비트 이미지의 번째 바이트는 8비트 Blue 성분이고 번째 바이트는 Green, 번째 바이트는 Red 됩니다.

 

아래는 C언어와 Python 활용 따른 예이며 src는 원본, dst는 결과입니다. cvtColor 함수를 활용하면 간단히 색 공간변환을 할 수 있습니다.

 

(C언어): cvtColor(src, dst, cv::COLOR_RGB2GRAY);

(Python): dst = cv.cvtColor(src, cv.COLOR_RGB2GRAY)

 

Luv 같은 비선형 변환은 입력 RGB 영상을 적절한 범위로 정규화하여 처리해야 합니다. 예를 들어 8비트 영상에서 직접 변환된 32비트 부동소수점 영상이 있으면 함수에서 가정하는 0.1 아니라 0.255 범위를 갖게 됩니다. 따라서 cvtColor 호출하기 전에 아래 예와 같이 먼저 영상을 축소해야 합니다.

 

src *= 1./255;

cvtColor(src, dst, COLOR_BGR2Luv);

 

아래는 RGB 공간에서 수식적 변환 관계(Gray, HSV, HLS, Lab)이며  cvtColor의 변환 코드 선택으로 간편히 변환할 수 있습니다. cv::COLOR_RGB2HSV (또는 cv::COLOR_BGR2HSV) 등.

RGB to GRAY 변환

RGB to Gray: Y = 0.299⋅R+0.587⋅G+0.114⋅B

 

RGB to HSV 변환 (Hue, Saturation, Value)

R, G, B 부동 소수점 형식으로 변환하여 [0~1] 범위에 맞게 스케일링 계산 적용합니다.

 

RGB to HLS 변환 (Hue, Luminance, Saturation)

R, G, B 부동 소수점 형식으로 변환하여 [0~1] 범위에 맞게 스케일링  계산 적용합니다.

 

RGB to Lab 변환

R, G, B 부동 소수점 형식으로 변환하여 [0~1] 범위에 맞게 스케일링  계산 적용합니다.

(docs.opencv.org 참조)

728x90
728x90

인간의 시각 시스템 The Human Visual System은 가시광선(400nm~700nm) 영역에서 수십만 가지의 색상을 구별 할 수 있지만 회색 음영 변화의 경우 약 100가지 정도를 구별할 수 있습니다. 색상 정보 Color Information도 이미지에 다양하게 포함 될 수 있기 때문에 색상 정보에 기반하여 객체 식별 및 추출 등과 같은 이미지 분석에 활용할 수 있습니다.

 

그레이 이미지 Gray Image는 무채색으로 레벨의 크기 Intensity로 표현되므로 에너지에 의한 물리적 양으로 볼 수 있습니다. 반면 밝기 Brightness 와 휘도 Luminance는 색의 인식적 지각에 의해 결정되므로 심리적 특성에 가깝습니다. 예를 들어 파란색과 초록색이 동일하게 강렬한 경우 파란색은 초록색보다 훨씬 더 어둡게 인식됩니다. 색상은 주로 물체의 반사율 특성에 따라 달라지며 빨간색과 초록색을 모두 반사하는 물체는 녹색이지만 빛을 비추는 빨간색이 없을 때 초록색으로 보이고 반대로 녹색이 없을 때는 빨간색으로 보입니다.

 

색상 모델 Color Model은 3D 좌표계로 표현되며 특정 모델 내에서 구성 가능한 모든 색상을 정의하고 특정 색상을 지정할 수 있도록 합니다. 이미지 분석과 처리를 위한 색상 모델들에는 RGB, CMY, HSI, YIQ, HSV, Lab 등 다양합니다. 현 블로그에서는 일반적인 RGB 외 몇 모델을 살펴 보겠습니다. OpenCV 활용 부분에 색상 모델 좌표 변환 설명을 추가하니 참고해 보면 좋겠습니다.

 

RGB Model

그림에서 같이 직각 좌표계로 표현되는 RGB 모델은 Red, Green, Blue의 3개의 축으로 구성됩니다. 회색 Gray은 검정색 Black과 흰색 White을 잇는 선으로 Spectrum이 표현됩니다. RGB 모델은 실생활에 많이 활용되며 칼라 모니터와 대부분의 비디오 카메라에 사용됩니다.

CMY Model

CMY 모델은 Cyan, Magenta, Yellow를 축으로 하는 색상 모델로, RGB 모델의 경우 특정 색상을 얻기 위해 검정색에 무엇을 추가하는 가산 혼합 Additive Model인 반면 CMY는 흰색에서 무엇을 빼는 Subtractive Model 입니다. 주로 칼라 프린터 및 인쇄물에 사용됩니다. 아래 그림은 색상 인식에 대한 Tristimulus Theory로 좌측은 RGB, 우측은 CMY Model을 나타냅니다.

 

HSI Model

HSI 모델은 Hue 색상, Saturation 채도, 크기(세기) Intensity의 3가지 축에 의해 색상을 정의할 수 있습니다. 그림은 HSI의 색상 입체 공간을 나타내며, Red/Green/Blue는 [0,1]범위로 정규화 됩니다. Hue는 0~360도의 각도, Saturation은 0~1, Intensity는 0(Black)~1(White)로 설정할 수 있으며 RGB 모델 간 변환 관계는 아래와 같습니다.

(homepages.inf.ed.ac.uk 참조)

728x90

+ Recent posts