더북(TheBook)

10.1.2 색 공간 변환

컴퓨터에서는 보통 빛의 삼원색이라고 부르는 빨간색(R), 녹색(G), 파란색(B) 성분의 조합으로 색을 표현합니다. OpenCV에서는 컬러 영상을 Mat 객체에 저장할 때 파란색, 녹색, 빨간색 순서로 색 정보를 저장하기 때문에 정확하게 BGR 표현이지만, 빛의 삼원색 조합으로 색을 표현한다는 것은 같습니다. 이처럼 빨간색, 녹색, 파란색 세 가지 색 성분의 조합으로 색을 표현하는 방식을 RGB 색 모델(color model) 또는 RGB 색 공간(color space) 표현이라고 합니다. 우리가 흔히 사용하는 모니터에서도 빨간색, 녹색, 파란색 성분을 조합하여 색상을 표현합니다. 디지털 카메라에서 컬러 영상을 획득할 때에도 빨간색, 녹색, 파란색 필터를 사용하여 색상 정보를 추출합니다. 이처럼 RGB 색 공간은 일상생활에 널리 사용되고 있지만, 컬러 영상 처리 관점에서는 그렇게 환영받지 못하는 편입니다. 컬러 영상 처리에서는 보통 색상 구분이 용이한 HSV, HSL 색 공간을 사용하거나 또는 휘도 성분이 구분되어 있는 YCrCb, YUV 등 색 공간을 사용하는 것이 유리합니다. 그래서 OpenCV는 BGR 순서로 색상이 저장된 컬러 영상의 색 공간을 HSV, YCrCB 등 다른 색 공간으로 변환하는 인터페이스를 제공합니다.

OpenCV에서 영상의 색 공간을 다른 색 공간으로 변환할 때에는 cvtColor() 함수를 사용합니다. cvtColor() 함수 원형은 다음과 같습니다.

void cvtColor(InputArray src, OutputArray dst, int code, int dstCn = 0);

src

입력 영상. CV_8U, CV_16U, CV_32F 중 하나의 깊이를 사용해야 합니다.

dst

결과 영상. src와 크기 및 깊이가 같습니다.

code

색 공간 변환 코드. ColorConversionCodes 열거형 상수 중 하나를 지정합니다.

dstCn

결과 영상의 채널 수. 0이면 자동으로 결정됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.