IDL/Image Processing

HSV 및 HLS 체계 기반의 컬러테이블 생성 [2]

이상우_idl 2023. 4. 4. 16:34
728x90
반응형

지난 회차에서는 IDL에 HSV 체계를 기반으로 컬러테이블을 생성하는 방법 및 예제들을 소개하였습니다. 오늘은 HLS 체계를 기반으로 컬러테이블을 생성하는 방법 및 예제들을 소개해보도록 하겠습니다.

 

HLS라는 명칭의 이니셜들은 각각 Hue(색상), Lightness(명도), Saturation(채도)를 뜻합니다. 얼핏 보면 HSV와 비슷해보일 수도 있지만 분명한 차이가 있습니다. 일단 색상 및 채도의 개념은 HSV의 경우와 동일합니다. 하지만 명도의 개념이 서로 다르다는 점을 염두에 두면 좋을 것 같습니다. 먼저 색상의 경우는 컬러휠(Color Wheel)이라고 하는 마치 개별 색상들로 구성된 원형의 바퀴같은 형태로 구성되어 있는데, 각도 0~360도에 걸쳐 각각의 각도 값에 대하여 고유의 색상이 매칭되어 있습니다. 대표 색상들은 Red(0), Yellow(60), Green(120), Cyan(180), Blue(240), Magenta(300) 등입니다. 그래서 0~360도의 범위 내에서 어떤 색상들을 위주로 할 것인지를 미리 결정해야 합니다. 컬러휠의 모습은 어차피 HSV 체계에서와 동일하며, 그 모습은 이전 게시물에서 확인할 수 있습니다. 채도의 경우는 영문으로는 Saturation으로서 포화도라도 볼 수도 있는 개념인데요. Hue에서 지정된 색상에 대하여 회색(Gray)이 얼마나 포함될 것인가를 결정하는 수치입니다. 이 값은 퍼센티지(%)의 성격을 띄며 그 범위는 0~100입니다. 값이 작을수록 회색의 반영 비율이 높아지며 결국 색상 자체가 흐릿해지는 효과가 됩니다. 이제 명도의 개념을 봐야하는데 영문으로는 Lightness라고 되어 있습니다. 물론 이 값도 퍼센티지(%)의 성격을 가지며 범위는 0~100입니다. 그런데 HSV 체계에서는 명도가 0이면 완전한 검정색이 되고 100이면 그 색상이 원래의 밝기 그대로 나타나는 개념인 것과 달리 HLS 체계에서는 명도가 100이면 그 색상의 원래 밝기로 나타나는 것이 아니라 흰색(White)으로 나타나게 됩니다. 즉 HLS 체계에서는 가장 밝은(명도가 가장 높은) 값이 흰색이 된다는 차이점이 있습니다. 이러한 특성은 이어서 소개될 관련 예제들에서 확인해보기로 합니다.

 

IDL에서 HSV 체계 기반의 컬러테이블을 만드는 기능은 HLS 명령이 담당합니다. 일단 HLS 명령을 사용하는 문법은 다음과 같습니다. HSV 명령의 문법과 거의 비슷합니다.

 

HLS, Litlo, Lithi, Satlo, Sathi, Hue, Loops [, Colr]

 

이와 같이 6개의 필수 입력 인자들이 필요합니다. 각 인자값의 의미는 다음과 같습니다.

 

Litlo : 명도의 시작값

Lithi : 명도의 끝값

Satlo : 채도의 시작값

Sathi : 채도의 끝값

Hue : 색상의 시작값

Loops : 색상휠에서 거쳐가야할 바퀴수로서 정수 뿐 아니라 실수 및 (-) 값도 가능

Colr : 컬러테이블 배열(256x3의 구조)을 돌려받고자할 경우의 배열 이름

 

그러면 실제로 HLS 명령을 사용하여 컬러테이블을 생성해봅시다. HLS 체계 기반의 컬러테이블을 생성하는 과정은 HSV 체계와 거의 비슷합니다. 즉 먼저 주로 사용될 색상을 결정을 하고 이 색상에 대하여 명도 및 채도를 어떻게 변화시킬 것인지를 결정하는 방식이 되며, 주로 사용될 색상은 컬러휠에서 선택해야 합니다. 지난 회에서 소개한 HSV 체계와의 비교를 위하여 이번에도 초록색에 해당되는 120도라는 값을 사용하겠습니다. 즉 위의 인자들 중 Hue의 값을 120으로 설정하면 됩니다. 그 다음에는 명도 및 채도의 값 범위를 어느 정도로 설정할 것인가의 결정해야 하는데요. 먼저 채도의 시작값 및 끝값을 모두 100으로 통일하고, 명도의 경우는 시작값 및 끝값을 0 및 100으로 설정하는 예제를 보기로 합니다. 이 과정은 다음과 같습니다.

 

v1 = 0
v2 = 100
s1 = 100
s2 = 100
degree = 120
loop = 0
HLS, v1, v2, s1, s2, degree, loop, ct
HELP, ct

 

이와 같이 색상과 채도는 고정하고 명도의 변화만 반영된 컬러테이블을 생성하게 됩니다. 생성된 컬러테이블 정보는 ct라는 배열로 가져오게 되며 이 배열은 256x3의 구조를 갖습니다. 그러면 가상의 2차원 데이터를 생성하고 이를 이미지의 형태로 표출하면서 위에서 얻은 컬러테이블 배열 ct를 적용해봅시다. 그 과정은 다음과 같이 처리합니다.

 

data = HANNING(600, 600)*100
add = FLTARR(600, 600)
add[300, 300] = HANNING(300, 300)*50
data = data+add

win = WINDOW(DIMENSIONS=[600, 600], /NO_TOOLBAR)
i = IMAGE(data, RGB_TABLE=ct, MARGIN=0, /CURRENT)

 

이와 같은 과정에 의하여 표출된 모습은 다음 그림과 같습니다.

 

 

이 그림을 보면 초록색 계열의 색상들로만 구성되면서 가장 값이 낮은 부분은 검정색에 대응되고 가장 값이 높은 부분은 흰색에 대응되는 컬러테이블이 생성되어 적용된 것을 볼 수 있습니다. 즉 원래의 초록색 자체는 중간 밝기에 대응된 셈입니다. HSV 체계에서는 최대 밝기에 대응되는 색상이 초록색이었던 것과는 다르다는 점을 유의해야 합니다. 따라서 HLS 체계에서 명도가 적용되는 방식은 HSV 체계와는 분명히 다르다는 점을 유의해야 합니다. 이번에는 채도의 고정값을 100 대신 50으로 설정해봅시다. 즉 s1, s2만 다음과 같이 설정하고 나머진 그대로 가면 됩니다.

 

s1 = 50
s2 = 50

 

이러한 경우의 표출 결과는 다음 그림과 같습니다.

 

 

즉 채도의 값이 50이 되면서 회색의 포함 비율이 더 높아졌기 때문에 처음보다는 약간 탁한 색으로 보이게 됩니다. 만약 채도의 고정값을 0으로 설정할 경우에는 초록색은 완전히 사라지고 그냥 흑백 색상으로만 보이게 된다는 점도 참조하시기 바랍니다. 그러면 이번에는 명도를 고정하고 채도만 변화되도록 해보겠습니다. 즉 색상과 명도는 고정하고 채도의 변화만 반영된 컬러테이블을 생성해보는 것입니다. 이를 위하여 다음과 같이 변수값들을 변경하고 다시 실행해봅시다.

 

v1 = 70
v2 = 70
s1 = 0
s2 = 100

 

이렇게 하면 결과는 다음 그림과 같습니다.

 

 

이 그림의 경우 명도를 70으로 고정하고 채도만 0부터 100으로 변화하도록 처리된 것으로서, 채도의 증감에 따른 색상의 변화를 확인할 수 있습니다. 이전 회차 게시물에서 HSV 체계 기반으로도 동일한 방식의 처리 예제를 얻었는데 서로 비교해보면 이번 HLS 체계 기반의 그림들이 확실히 더 밝아진 모습입니다. 즉 밝기가 높을 경우 흰색의 반영 비율이 더 높기 때문에 그러한 차이가 발생한다고 보면 됩니다.

 

여기까지 2회에 걸쳐서 HSV 및 HLS 체계 기반으로 컬러테이블을 생성하는 방법을 소개하고 관련 예제들을 살펴보았는데요. 일단 두 체계 모두 색상의 다양성보다는 색상 자체의 명도 또는 채도 변화에 중점을 두는 컬러테이블의 생성에 더 효율적이라는 특성은 유사합니다. 다만 명도라는 개념이 두 체계에서 서로 차이가 나기 때문에, 사용자의 목적에 따라서 선택하여 활용하면 좋을 것 같습니다. 어쨌든 색상을 제한적으로 사용하면서 명도나 채도의 변화에 중점을 두는 컬러테이블도 데이터 표출에 있어서 종종 사용이 됩니다. 예를 하나 들어보자면, 주로 자외선(Ultraviolet) 영역의 파장들로 태양을 관측하는 SDO(Solar Dynamic Observatory)라는 관측위성이 있는데, 관측된 이미지들에 대한 처리 과정에서 아마도 이러한 컬러테이블이 사용되는 것이 아닐까 추측이 됩니다. 실제로 131 Angstrom 파장으로 관측된 SDO 태양 이미지를 보면 다음과 같습니다. NASA에서 공식적으로 공개하는 이미지입니다.

 

 

이 이미지의 표출에 사용된 컬러테이블이 아마도 오늘 소개한 HLS 색상 체계 기반이 아닐까 싶습니다. 물론 제가 정확히 확인한 것은 아니고 그냥 경험적인 추측일 뿐입니다. 어쨌든 이러한 표출에 있어서는 배경의 우주공간은 검정색이 되어야 하고, 태양 표면 상의 여러 형체들은 단일 색상으로 명도만 변화하도록 처리하는 것이 아마도 이러한 성격의 데이터를 표출하는데 적절하다고 판단되지 않았을까 하는 것이 제 짐작입니다.

 

어쨌든 RGB, HSV, HLS 등의 색상 체계를 기반으로 얼마든지 다양한 형태의 컬러테이블들을 커스텀으로 제작할 수 있기 때문에, 연구자의 판단에 따라 데이터의 특성에 맞는 적절한 방식으로 표출에 활용해볼 수 있다는 점을 참조해두시면 좋을 것 같습니다.

반응형