1. 다양한 색공간
색공간 변환
- 영상처리에서는 특정한 목적을 위해 RGB 색공간을 HSV, YCrCb, Lab 등의 다른 색공간으로 변환하여 처리
색공간 변환함수
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn = 0);
- src: 입력영상
- dst: 출력영상
- code: 식 변환코드
- COLOR_BGR2GRAY / COLOR GRAY2BGR
- COLOR_BGR2RGB / COLOR_RGB2BGR
- COLOR_BGR2HSV / COLOR_HSV2BGR
- COLOR_BGR2YCrCb / COLOR_YCrCb2BGR
- dstCn: 결과영상 채널 수. 0이면 자동결정됨
RGB 색공간
- 빛의 삼원색 R, G, B를 혼합하여 색상을 표현
- TV, 카메라 센서, 비트맵 등에 사용됨
HSV 색공간
- Hue: 색상종류
- Saturation: 채도, 색의 탁하고 선명한 정도
- Value: 명도, 빛의 밝기
- HSV 값 (CV_8U 기준)
- 0 <= H <= 179 (0 < 2H < 360 이라고 보면됨.)
- 0 <= S <= 255
- 0 <= V <= 255
- 예를 들어 녹색영역을 찾고싶다면 H값의 범위는 40~80정도가 된다.
YCrCb 색공간
- PAL, NTSC, SECAM 등의 컬러 비디오 표준에 사용되는 색공간
- 영상의 밝기 정보와 색상 정보를 따로 분리하여 부호화
- Y: 밝기정보(default: 0.5)
- Cr, Cb: 색차
- Cr: 빨강에대한 색 차이
- Cb: 파랑에 대한 색 차이
- YCrCb 값 범위
2. 채널분리와 병합
채널분리
void split(const Mat& src, Mat* mvbegin);
void split(InputArray src, OutputArrayOfArray mv);
- src: 다채널 행렬
- mvbegin: Mat 배열의 주소
- mv: 출력행렬의 벡터.