Favicon

Change color space

Peponi2/24/20253m

C#
NugetPackageOpenCvSharp4

1. Introduction

OpenCvSharp4에는 색상 공간을 바꾸기 위한 Cv2.CvtColor() 메서드가 존재한다. 이미지 프로세싱을 할 때 색상 공간을 여러 이유로 바꾸게 되는데, 주요 용도는 다음과 같다.

  1. 색상 분리 : 대체로 많이 사용하는 RGB 색상 공간의 경우 조명에 대한 영향이 각 채널별로 존재한다. 이를 HSV와 같은 색상 공간으로 변경하면 조명의 영향을 분리하여 색상 추출에 유리할 수 있다.
  2. 이미지 분석 : 색상 정보가 필요하지 않은 작업에서는 그레이스케일이 유리할 수 있으며 (속도), 색상을 기준으로 객체를 탐지하는 경우에는 HSV 색상 공간이 유리할 수 있다.
  3. 미디어 압축 : YCbCr, YUV 색상 공간은 이미지, 비디오 압축에 많이 사용된다.

Cv2.CvtColor()ColorConversionCodes에는 매우 많은 수의 enum이 존재하여 여기서는 자주 사용하는 색상 공간 변경에 대해 간략하게 알아본다. 자세한 내용은 Github/opencv - imgproc.hpp를 참조한다.

2. Example

originalOriginal
grayscaleGrayscale
rgbRGB
hsvHSV
private void ToGrayscale(Mat image)
{
    using var grayscale = image.CvtColor(ColorConversionCodes.BGR2GRAY);
}
 
private void ToRGB(Mat image)
{
    using var rgb = image.CvtColor(ColorConversionCodes.BGR2RGB);
}
 
private void ToHSV(Mat image)
{
    using var hsv = image.CvtColor(ColorConversionCodes.BGR2HSV);
}

IMPORTANT

색상 공간을 그레이스케일로 변경하는 경우에는 단일 채널로 변경되기 때문에, 다시 원래의 색상으로 되돌릴 수 없다.

3. 참조 자료