색공간

전종원·2022년 11월 1일
0

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 값 범위
    • 0 <= Y,Cr,Cb <= 255

2. 채널분리와 병합

채널분리

void split(const Mat& src, Mat* mvbegin);
void split(InputArray src, OutputArrayOfArray mv);
  • src: 다채널 행렬
  • mvbegin: Mat 배열의 주소
  • mv: 출력행렬의 벡터.

0개의 댓글