Main Content

RGB 컬러스페이스와 HSV 컬러스페이스 간에 전환하기

이 예제에서는 영상을 HSV 컬러스페이스로 변환하여 컬러 영상의 채도를 조정하는 방법을 보여줍니다. 그런 다음 합성 영상의 개별 HSV 색 평면(색상, 채도, 명도)을 표시합니다.

RGB 영상을 HSV 영상으로 변환하기

RGB 영상을 작업 공간으로 읽어 들입니다. 영상을 표시합니다.

RGB = imread("llama.jpg");
imshow(RGB)

Figure contains an axes object. The axes object contains an object of type image.

영상을 HSV 컬러스페이스로 변환합니다.

HSV = rgb2hsv(RGB);

HSV 영상을 처리합니다. 이 예제에서는 S 채널에 스케일링 인자를 곱하여 영상의 채도를 높입니다.

[h,s,v] = imsplit(HSV);
saturationFactor = 1.5;
s_sat = s*saturationFactor;
HSV_sat = cat(3,h,s_sat,v);

처리된 HSV 영상을 다시 RGB 컬러스페이스로 변환합니다. 새 RGB 영상을 표시합니다. 처리된 영상의 색이 더 선명합니다.

RGB_sat = hsv2rgb(HSV_sat);
imshow(RGB_sat)

Figure contains an axes object. The axes object contains an object of type image.

HSV 컬러스페이스 자세히 살펴보기

HSV 컬러스페이스를 더 자세히 살펴보려면 합성 RGB 영상을 만드십시오.

RGB = reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]);

합성 RGB 영상을 HSV 컬러스페이스로 변환합니다.

HSV = rgb2hsv(RGB);

합성 영상의 HSV 버전을 성분 평면(색상, 채도, 명도)으로 분할합니다.

[h,s,v] = imsplit(HSV);

개별 HSV 색 평면을 원본 영상과 함께 표시합니다.

montage({h,s,v,RGB},BorderSize=10,BackgroundColor="w");

Figure contains an axes object. The axes object contains an object of type image.

앞 그림의 색상 평면 영상이 보여주는 것처럼, 색상는 높음에서 낮음으로 선형 변환합니다. 색상 평면 영상을 원본 영상과 비교하면, 진한 파란색 음영의 값이 가장 높고 진한 빨간색 음영의 값이 가장 낮습니다. (앞서 설명한 것처럼 색상 스케일의 양 끝에 빨간색의 값이 있습니다. 혼동을 피하고자 이 샘플 영상에서는 색상 범위의 시작에 있는 빨간색 값만 사용합니다.)

채도는 색의 순도라고 할 수 있습니다. 채도 평면 영상에서 보여주는 것처럼, 채도가 가장 높은 색이 가장 큰 값을 가지며 흰색으로 표시됩니다. 채도 영상의 중심에 다양한 회색 음영이 있습니다. 이는 색의 혼합에 해당합니다. 청록색, 녹색, 노란색 음영은 트루컬러의 혼합입니다. 명도는 대체로 밝기와 같습니다. 명도 평면에서 가장 밝은 영역이 원본 영상에서 가장 밝은색에 해당합니다.