IDL/New Graphics

컬러테이블만 표출하는 방법

이상우_idl 2022. 4. 19. 13:46
728x90
반응형

컬러테이블(Color Table)이라는 것은 8비트 컬러 체계에서 256단계(0~255)의 화소값들 각각에 대하여 어떤 색상이 부여되는가에 대한 약속입니다. 따라서 8비트 기반의 그래픽 표출 작업에서 항상 사용되는데, 예를 들면 이미지나 등위선 그림을 표출하면서 참고 자료로서 함께 표출하는 경우가 많습니다. 그런 예제들은 제가 이 블로그에서도 여러 차례 소개를 한 바 있습니다. 그런데 그런 예제들을 보면 항상 메인 그림(이미지 또는 등위선)이 있고 그것에 대한 보조 자료로서 컬러테이블을 함께 표시하는 경우가 대부분입니다. 예를 들면 다음과 같은 방식입니다.

 

 

그런데 경우에 따라서는 컬러테이블 자체에만 촛점을 맞춰서 그 모습만을 보고 싶을 수도 있습니다. 즉 특정한 컬러테이블이 어떤 색상들로 구성되어 있는가를 시각적으로 더 자세히 보고 싶을 경우입니다. 이를 위해서는 NG 체계 기준으로는 COLORBAR 함수를 잘 활용하면 됩니다. 예를 들어 위의 그림에서 사용된 34번 컬러테이블에 촛점을 맞춰서 그 모습만 표출해보는 경우를 가정해보겠습니다. 그 과정은 다음과 같습니다.

 

ct = 34

win = WINDOW(DIMENSIONS=[800, 300], /NO_TOOLBAR)
cb = COLORBAR(RGB_TABLE=ct, FONT_SIZE=11, $
  TICKLAYOUT=1, TICKVALUES=[0, 50, 100, 150, 200, 255], $
  POSITION=[0.05, 0.1, 0.95, 0.85], /BORDER)

tx = TEXT(0.5, 0.9, 'Color Table 34', ALIGNMENT=0.5, FONT_SIZE=16, /NORMAL)

 

이와 같이 가로 방향이 길쭉한 그래픽창을 하나 띄우고 여기서 바로 COLORBAR 함수를 사용하여 34번 컬러테이블의 모습을 표출하는 것입니다. 이 때 COLORBAR 함수 내에서 RGB_TABLE 속성에 대하여 그 대상 컬러테이블의 번호인 34를 부여하면 됩니다. 이 과정에 의하여 표출된 모습은 다음 그림과 같습니다.

 

 

이 그림을 보면 34번 컬러테이블의 모습만을 좀 더 자세히 확인할 수 있습니다. 그리고 위의 예제 프로그램에서 COLORBAR 함수가 사용된 내용을 보면 TICKVALUES 속성을 사용하여 그림상에 표시되는 눈금값들 중 맨 마지막 값이 255가 되도록 조정하였고, TICKLAYOUT 속성을 1로 설정하여 축(Axis)이 보이지 않도록 처리하였습니다. 만약 다음과 같이 COLORBAR 함수를 사용하면서 TICKVALUES 및 TICKLAYOUT 속성에 대한 설정을 별도로 하지 않고 그냥 디폴트 상태로 둘 경우에는 다음과 같이 표출됩니다.

 

cb = COLORBAR(RGB_TABLE=ct, FONT_SIZE=11, $
  POSITION=[0.05, 0.1, 0.95, 0.85], /BORDER)

 

 

그런데 이런 식으로 표출되면 눈금이 색상 이미지 안쪽으로 침투하는 등 그림이 다소 산만해보이는 감이 있어서 앞서 했던 것과 같이 TICKVALUES 및 TICKLAYOUT 속성을 별도로 설정해본 것입니다. 물론 이 상태에서 TICKLEN 속성을 사용하여 눈금의 길이를 짧게 조정하는 방법도 있겠지만, 어차피 이런 부분은 취향의 영역이므로 유저의 판단에 따라 처리하시면 될 것 같습니다. 어쨌든 이와 같은 방식으로 처리를 하면 어떤 컬러테이블이든 그 모습만을 자세히 보여주는 그림을 얻을 수 있습니다. 예를 들어 74번 컬러테이블을 보고자 할 경우라면 위의 예제 코드에서 34였던 부분들만 74로 바꿔주면 됩니다.

 

ct = 74
win = WINDOW(DIMENSIONS=[800, 300], /NO_TOOLBAR)
cb = COLORBAR(RGB_TABLE=ct, FONT_SIZE=11, $
  TICKLAYOUT=1, TICKVALUES=[0, 50, 100, 150, 200, 255], $
  POSITION=[0.05, 0.1, 0.95, 0.85], /BORDER)
tx = TEXT(0.5, 0.9, 'Color Table 74', ALIGNMENT=0.5, FONT_SIZE=16, /NORMAL)

 

표출된 모습은 다음 그림과 같습니다.

 

 

그리고 컬러테이블을 단순히 번호로만 지정하는 것이 아니고 COLORTABLE 함수를 사용하여 커스텀 컬러테이블을 생성하여 사용할 경우에도 마찬가지입니다. 예를 들어 74번 컬러테이블의 색상들의 순서를 뒤집은 커스텀 컬러테이블을 대상으로 하는 경우라면 그 과정은 다음과 같습니다. 맨 처음에 COLORTABLE 함수가 사용된 부분을 주목하시면 됩니다.

 

ct = COLORTABLE(74, /REVERSE)
win = WINDOW(DIMENSIONS=[800, 300], /NO_TOOLBAR)
cb = COLORBAR(RGB_TABLE=ct, FONT_SIZE=11, $
  TICKLAYOUT=1, TICKVALUES=[0, 50, 100, 150, 200, 255], $
  POSITION=[0.05, 0.1, 0.95, 0.85], /BORDER)
tx = TEXT(0.5, 0.9, 'Color Table 74 Reversed', ALIGNMENT=0.5, FONT_SIZE=16, /NORMAL)

 

표출된 모습은 다음 그림과 같습니다.

 

 

이와 같이 항상 보조 수단으로만 사용되던 컬러테이블이 주인공이 되도록 하려면 이런 방법을 사용해보면 어떨까 싶습니다. 물론 IDL에서 기본 제공되는 75종의 컬러테이블들 각각의 모습을 쉽고 간단하게 살펴보고자 한다면 XLOADCT 명령을 커맨드 입력창에서 실행하여 그 인터페이스 상에서 보는 방법도 있습니다.

 

IDL> xloadct

 

 

하지만 XLOADCT 인터페이스 상에서는 IDL에서 기본 제공 컬러테이블들 위주로 볼 수 있는데, 기본 컬러테이블들 뿐 아니라 커스터마이즈된 컬러테이블들까지 포함하여 그 모습만 자세히 보는 것이 필요할 경우라면 오늘 소개된 방법이 더 적합할 수도 있지 않을까 생각합니다.

반응형