본문 바로가기

Computer Vision by OpenCV

OpenCV HLS형식의 이미지 채널별 분리 (Split HLS-formated image)

반응형
SMALL

HLS형식의 이미지 채널별 분리


HLS영상은 Hue, Luminance, Saturation 채널을 가진 영상으로, 각각이 의미하는 바는 다음과 같다.


Hue: 색조라는 뜻. Color와 동의어. 일상적으로 color 단어가 많이 쓰임.

       Hue is synonymous with color.

Luminance: 밝기라는 뜻.

Saturation

1. 색채의 강도, 또는 색깔의 포화도. 즉, 흰색이나 회색이 들어있지 않은 색의 순수한 정도 또는 색의 선명도에 관한 언급.
2. 색의 3속성의 하나로 색의 강도나 순수한 정도.
3. 같은 색 계열에서 나타나는 색의 선명한 정도. 또는 그 차이. 아무 것도 섞지 않아 맑고 깨끗하며 원색에 가까운 것을 채도가 높다고 표현한다.
4. 색의 채도는 검정과 흰색이 포함된 양과 관련한다. 그러나 검정과 흰색, 그리고 회색은 색상이 없고 단지 ‘밝기(brightness)’만 있기 ‘때문에 무채색(achromatic color)’이라고 한다.

[네이버 지식백과] 채도 [saturation, chroma, 彩度] (만화애니메이션사전, 2008. 12. 30., 한국만화영상진흥원)



Hue와 Saturation간의 관계

Saturation이 높을수록 원색에 가깝고, 낮을 수록 회색에 가까와진다.



<그림 1> HLS원본영상

<그림 2> Hue 채널만 분리한 결과

<그림 3> Luminance 채널만 분리한 결과. 흰색영역이 밝은 부분이다.

<그림 4> Saturation 채널영상. 흰색으로 표시한 부분이 원색에 가까운 부분이다.




소스프로그램


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { if (argc != 2) { cout << " Provide image name to read" << endl; return -1; } Mat inputImg; Mat hlsImg; inputImg = imread(argv[1], CV_LOAD_IMAGE_COLOR); cvtColor(inputImg, hlsImg, CV_BGR2HLS); vector<Mat> hls_images(3); split(hlsImg, hls_images); // H, L, S로 분리하는 부분 namedWindow("Original", CV_WINDOW_AUTOSIZE); namedWindow("H", CV_WINDOW_AUTOSIZE); namedWindow("L", CV_WINDOW_AUTOSIZE); namedWindow("S", CV_WINDOW_AUTOSIZE); moveWindow("Original", 100, 100); moveWindow("H", 120, 120); moveWindow("L", 140, 140); moveWindow("S", 160, 160); imshow("Original", inputImg); imshow("H", hls_images[0]); imshow("L", hls_images[1]); imshow("S", hls_images[2]); waitKey(0); return 0; }


반응형
LIST