Tuesday, January 19, 2010

Making IDL colorbar



질문 :

1. 청색톤의 컬러테이블 1번을 이용하여 최종 컬러테이블의 0~127번을 생성한다.
2. 적색톤의 컬러테이블 7번을 이용하여 최종 컬러테이블의 128~255번을 생성한다.
이 때, 7번 컬러테이블은 반전되어야 한다.
3. 1번과 7번 컬러테이블 모두 0번 부근의 낮은 값들은 검은색 또는 검은 색이 많이 섞여 있으므로
이 색들은 제외한다.

1) 1번 컬러테이블을 로드하여 그 컬러테이블을 구성하는 Red, Green, Blue 값을 읽어 놓습니다.
여기서는 1번의 R, G, B 값이라는 의미로 R1, G1, B1 변수를 사용합니다.

IDL> loadct, 1, /SILENT
IDL> tvlct, r1, g1, b1, /GET


2) 위 값들 중에 컬러 테이블의 왼쪽 부분인 검은 영역을 잘라내기 위하여 대략 100번부터 255번
까지만 사용합니다. 그리고 이 값들을 128개로 재구성하기 위하여 Congrid 함수를 이용합니다.
100~255번까지 156개의 색조합 배열이 있었으나 이를 128개로 재구성하는 것입니다.

IDL> r_1st=congrid(r1[100:255], 128)
IDL> g_1st=congrid(g1[100:255], 128)
IDL> b_1st=congrid(b1[100:255], 128)

128개로 정리된 1번 테이블의 R, G, B 값은 R_1st, G_1st, B_1st 변수에 넣어 두었습니다.

3) 7번 컬러테이블을 로드하여 그 컬러테이블을 구성하는 Red, Green, Blue 값을 읽어 놓습니다.
여기서는 7번의 R, G, B 값이라는 의미로 R7, G7, B7 변수를 사용합니다.

IDL> loadct, 7, /SILENT
IDL> tvlct, r7, g7, b7, /GET

4) 마찬가지로 7번 테이블 중에서도 검은색 영역을 빼고 100~255번 까지의 팔레트만을 취할 것입니다.
그리고 이 값들을 역시 128개로 재구성할 것입니다. 붉은 톤을 담당하는 테이블은 반전시키기 위하여
REVERSE 함수를 사용합니다.

IDL> r_2nd=reverse(congrid(r7[100:255], 128))
IDL> g_2nd=reverse(congrid(g7[100:255], 128))
IDL> b_2nd=reverse(congrid(b7[100:255], 128))

5) 이제부터 최종 컬러테이블에 우리가 원하는 값을 넣습니다.
R_1st, G_1st, B_1st 가 128개의 컬러 조합이므로 0~127번을 설정하게 됩니다.

IDL> tvlct, r_1st, g_1st, b_1st
6) R_2nd, G_2nd, B_2nd 가 128개의 컬러 조합이므로 128번부터 시작하면 128~255번을 설정하게 됩니다.

IDL> tvlct, r_2nd, g_2nd, b_2nd, 128
7) 다음과 같이 원하는 컬러테이블이 만들어졌음을 확인할 수 있습니다(이미 원하는 컬러테이블을 사용할
수 있는 상태입니다).

IDL> tvscl, dist(300)

REFERENCE:
http://www.idluser.org/

No comments:

Post a Comment