[OpenCV] 색공간(RGB, HSV, YCbCr)

Yoons·2023년 6월 27일
1
post-thumbnail

객체탐지, 이미지 처리에 관심이 있다면 색공간에 대한 지식이 필요하다. 객체를 탐지하기 위해서는 적절한 색 변환을 통해 객체를 감지할 수 있는 최적의 환경을 만드는 것이 중요하기 때문이다.

OpenCV에서는 3가지 색공간을 통한 변환을 지원한다.

  1. BGR
  2. HSV
  3. YCrCb

뭔가 이상하다..
RGB는 BGR로 되어있고.. YCbCr도 YCrCb로 되어있다..

이거는 별 의미가 있는 것은 아니고, OpenCV에서 위의 순서로 지원하기 때문에 맞춰줄 필요가 있다. 통일 좀 해주지..

그럼 하나씩 색공간을 어떻게 표현하는지 알아보겠다!

1. BGR

BGR은 가장 기본적인 색공간으로 B(Blue), G(Green), R(Red)를 의미한다.
이 세가지 색상으로 모든 색을 표현할 수 있다.

색상을 표현할 때는 BGR 순서대로 (123, 255, 0) 등으로 표현하며 각 색상은 최대 8비트이므로 0~255 사이의 숫자를 갖는다.

2. HSV

HSV는 H(Hue), S(Saturation), V(Value)를 의미한다. Hue는 색조를 의미하고 Saturation은 채도(색이 맑고 탁한 정도), Value는 명도(밝고 어두운 정도)를 나타낸다.

그림에서 확인할 수 있듯 Hue는 원기둥을 한바퀴 다 돌면 360도이지만, 8비트는 0~255이므로 모든 색 표현이 불가능하기 때문에 가까운 2가지 색조를 묶어서 180도 취급한다. 따라서 Hue는 0~179 사이의 숫자를 갖는다.

Saturation과 Value는 모두 0~255 사이의 숫자를 갖는다.

3. YCrCb

YCrCb는 보통 YCbCr이라고 부르지만 YCC라고도 불린다. Y(Luminace)는 밝기, Cr(Chroma red)는 적색 색차(빨간색에서 Y를 뺀 것), Cb(Chroma blue)는 청색 색차(파란색에서 Y를 뺀 것)이라는 의미를 갖는다.

Y는 밝기만 나타내므로 Y성분만 사용하게되면 사진과 같이 흑백으로 나온다. Cb는 파란색에서 Y를 뺀 모습이고, Cr은 빨간색에서 Y를 뺀 모습이다.

주의할 점은 Y에서 빨간/파란색을 뺸 것이 아니다. 빨간/파란색에서 Y를 뺸 것이다.

이것이 의미하는 바는 Cb와 Cr은 각각 파란색이 강한 정도, 빨간색이 강한 정도를 나타내는 척도이다.

그림을 보면 누가봐도 파란색보다는 빨간색이 많이 들어가 있다.

그 결과 Cb는 파란 모습이 거의 보이지 않고, Cr은 빨간 모습이 많이 보이는 것을 확인 할 수 있다.

profile
모든 글은 저의 눈물을 머금으며 작성한 글이니..재밌게 봐주세요 :) 깃헙 맞팔@

0개의 댓글