칼라 분석 및 처리 목적에 따라 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 참조)
'영상처리 도구' 카테고리의 다른 글
OpenCV 이미지 산술연산과 논리연산, 혼합 Image Blending (0) | 2023.11.26 |
---|---|
OpenCV 모폴로지 연산 Morphological Transformations (0) | 2023.11.19 |
OpenCV 이미지 평활화 Histogram Equalization (0) | 2023.11.04 |
OpenCV 블러링 Blurring, 스무딩 Smoothing (0) | 2018.06.14 |
OpenCV 윤곽선 검출 Edge Detection (0) | 2018.01.15 |