SMALL

분류 전체보기 770

배열간 연산과 반복형 구문에 의한 연산 사이의 비교 [2]

지난 회차 게시물에서는 배열들을 사용하여 연산 결과를 얻는 방식에 있어서 배열간 연산과 반복형 구문에 의한 연산이라는 두가지 방식에 대하여 살펴보고 서로 비교해보았습니다. 특히 대용량 데이터를 다루게 될 경우에는 두 방식의 소요 시간이 서로 상당히 큰 차이를 보인다는 것도 함께 확인한 바 있습니다. 그러면 이번 회차에는 이러한 차이를 가늠할 수 있는 다른 예제를 살펴보기로 하겠습니다. 이번 예제에서는 반복형 구문 내에서 IF와 같은 조건형 구문이 사용되는 경우입니다. 예제를 보면 다음과 같습니다. n = 10000000 a = RANDOMU(-1, n)*100 b = RANDOMU(-2, n)*100 c = RANDOMU(-3, n)*100 TIC r = FLTARR(n) FOR j = 0, n-1 DO..

IDL/Programming 2026.02.26

배열간 연산과 반복형 구문에 의한 연산 사이의 비교 [1]

우리가 IDL에서 대용량 데이터를 처리하는데 있어서는 배열로 정의된 데이터를 다루는 것이 일반적입니다. 즉 대용량의 데이터를 배열에 담고 이러한 배열에 대하여 필요한 연산을 수행하는 방식입니다. 이러한 작업에 있어서는 반복형 구문을 사용하는 연산을 수행하는 경우도 있고 그냥 배열끼리의 연산으로 처리하는 경우도 있습니다. 통상적으로는 배열끼리의 연산으로 처리하는 경우가 많지만 작업의 특성에 따라서는 반복형 구문을 사용하는 연산을 하게 되는 경우도 있습니다. 오늘은 이러한 두가지 연산 방식을 서로 비교해보고 그 차이점도 확인해보고자 합니다. 이를 위하여 간단한 예제를 다음과 같이 작성해봅시다. n = 10a = RANDOMU(-1, n)*100 b = RANDOMU(-2, n)*100 c = RANDOMU(..

IDL/Programming 2026.02.23

TIC, TOC 명령을 활용한 시간 측정 방법

오늘은 IDL에서 특정한 프로세스가 돌아가는데 걸리는 시간을 측정할 때 사용하는 TIC, TOC 명령들에 관하여 간략히 살펴볼까 합니다. 사실 TIC, TOC 명령들은 제가 이 블로그에서 올린 몇몇 게시물들에서도 이미 여러번 사용한 바 있습니다. 사용 방법은 매우 간단하며 마치 스톱워치처럼 사용하면 됩니다. 즉 TIC 명령을 실행하면 시간 측정이 시작되고 TOC 명령을 실행하면 시간 측정이 멈추면서 그때까지 경과한 시간을 초 단위로 표시해줍니다. 먼저 다음과 같이 IDL의 명령 프롬프트에서 간단히 시도해봅시다. IDL> TIC IDL> TOC % Time elapsed: 3.4210000 seconds. 이와 같이 TIC 명령을 실행하고 어느 정도 이후에 TOC 명령을 실행하면 경과 시간 즉 TIC 명령..

IDL/Miscellaneous 2026.02.12

이미지(Image)에 대한 광원 효과 적용 [2]

지난 회차 게시물에서는 2차원 데이터를 이미지의 형태로 표출하면서 화소값의 높낮이에 따른 명암 및 그림자 효과를 구현하기 위하여 IDL의 OG(Object Graphics) 체계 기반으로 2차원 데이터를 서피스(Surface) 객체로 구현하고 여기에 광원(Light Source) 객체를 추가하여 이용하는 예제를 살펴본 바 있습니다. 일단 지난 회차에서 작업했던 내용을 그대로 가져와서 계속 작업을 이어나가기로 하겠습니다. 그 내용은 다음과 같습니다. dd = 0.02x = [-5:5:dd]#MAKE_ARRAY(10/dd+1, VALUE=1)y = [-5:5:dd]##MAKE_ARRAY(10/dd+1, VALUE=1)z = 5*((x^2+y^2)^0.3+SIN((x^2+y^2)*0.5))HELP, zPRIN..

IDL/Object Graphics 2026.02.05

이미지(Image)에 대한 광원 효과 적용 [1]

2차원 데이터를 이미지(Image)의 형태로 표출하면서 광원(Light Source)을 추가적으로 사용하여 명암 및 그림자 효과를 연출하는 것이 필요할 경우가 있습니다. 예를 들면 고도(Elevation) 값들로 구성된 지형 데이터를 이미지로 표출한 다음 태양의 위치에 따른 그림자의 변화를 보고 싶은 경우를 가정해볼 수 있습니다. 이러한 방식의 연출이 IDL에서 가능할까요? 물론 가능합니다. 다만 이를 위해서는 2차원 데이터를 이미지(Image) 대신 서피스(Surface)의 형태로 표출해야 합니다. 그런 다음에는 광원(Light Source)을 별도로 추가하여 그 위치에 따라 그림자가 형성되도록 해야 합니다. 서피스(Surface)는 X, Y, Z 성분이 모두 존재하는 3차원적인 표출 방식이므로 광원의..

IDL/Object Graphics 2026.01.28

감마 보정 (Gamma Correction) [2]

지난 회차 게시물에서는 IDL에서 이미지 데이터에 대하여 감마 보정(Gamma Correction) 기법을 적용하는 방법과 예제를 소개한 바 있습니다. 오늘은 앞서 소개되었던 방법을 그대로 응용하여 감마 보정 기법을 다른 예제 이미지 데이터에 적용해보기로 하겠습니다. 예제로 사용할 이미지 파일은 다음과 같습니다. 이 파일로부터 이미지 데이터를 읽고 감마 보정을 해보기로 합니다. 일단 이미지 데이터를 읽는 작업부터 다음과 같이 시작합니다. READ_JPEG, 'my_photo1.jpg', data, /GRAYSCALEHELP, data 사실 원본 이미지는 컬러이긴 하지만 여기서는 처리 작업의 편의를 위하여 READ_JPEG 명령을 GRAYSCALE 키워드와 함께 사용하여 RGB가 아닌 단색광 이미지 데이..

감마 보정(Gamma Correction) [1]

감마 보정(Gamma Correction)은 이미지 처리 분야에서 널리 사용되고 있는 기법으로서 비선형적인 전달 함수(Nonlinear Transfer Function)를 사용하여 신호의 강도를 변형시키는 작업을 의미합니다. 이 기법에서 사용되는 비선형 전달 함수의 형태는 다음과 같습니다. 이 식에서 지수 형태로 들어가는 gamma 값이 가장 핵심적인 역할을 합니다. f(x) = gain*x^gamma+offset 물론 IDL에서도 이러한 기법을 사용하는 것이 가능합니다. 어떻게 보면 여기서 예전에 소개되었던 클리핑(Clipping) 기법 또는 히스토그램 균일화(Histogram Equalization) 기법과 유사한 맥락일 수도 있지만, 감마 보정 기법의 경우는 전달 함수의 형태를 다양하게 변형시켜서 ..

막대 차트(Bar Chart) 표출하기

막대 차트(Bar Chart)는 막대 모양의 그래프를 표출하면서 막대 내에서 값에 따라 마디마디가 구분되어 보이도록 하는 표출 방식을 의미합니다. 이해를 돕기 위하여 예제 그림만 먼저 본다면 다음과 같습니다. 이 그림에서는 어떤 설문 조사를 6개의 집단들을 대상으로 실시하고 각 카테고리별 응답 비율을 막대 차트의 형태로 표시하고 있습니다. 오늘은 이러한 막대 차트(Bar Chart) 그림을 IDL에서 표출하는 방법을 소개해보고자 합니다. 위의 그림은 당연히 IDL로 표출한 것이며 그 과정을 지금부터 살펴보겠습니다. 먼저 예제 데이터부터 정의해봅시다. 그 과정은 다음과 같습니다. cats = ['very bad', 'bad', 'not bad', 'good', 'very good'] colors = ['..

IDL/New Graphics 2025.12.09

BOXPLOT 함수 소개

오늘은 NG 체계에서 지원되는 그래픽 함수들 중에서 BOXPLOT 함수에 관하여 소개해보기로 하겠습니다. BOXPLOT 함수는 NG 체계의 그래픽 함수들 중에서도 비교적 나중에 도입된 경우에 속하며 IDL 8.2.2 버전에서부터 지원되기 시작하였습니다. IDL에서 이 함수에 대한 설명을 보면 box and whisker plot(상자 수염 그림) 형태의 표출 기능이라고 언급되어 있습니다. 이것은 통계 분야에서 흔히 사용되는 표출 형태로서 최소값(Minimum), 1사분위값(25% Quartile), 2사분위값(50% Quartile or Median), 3사분위값(75% Quartile), 최대값(Maximum) 등의 5종의 통계값들을 박스 및 에러바(box and error bar)의 형태로 나타내는 ..

IDL/New Graphics 2025.12.03

2종의 막대 그래프를 서로 붙여서 표출하기

오늘은 IDL에서 BARPLOT 함수를 이용하여 막대 그래프를 표출하는데 있어서 서로 다른 두 종류의 데이터에 대한 막대 그래프 그림을 서로 붙여서 표출하는 예제를 소개해보고자 합니다. 먼저 이를 위하여 필요한 두 종류의 예제 데이터를 다음과 같이 생성해봅시다. n = 10000 data1 = RANDOMN(-1, n)*10 data2 = RANDOMN(-2, n)*20+5 여기서 생성된 data1 및 data2는 모두 정규 분포를 하는 10000개의 값들로 구성된 1차원 배열인데, data1은 평균 및 표준편차가 각각 0 및 10이고 data2는 평균 및 표준편차가 각각 5 및 20인 데이터입니다. 그리고 각 데이터에 대한 분포 자료를 얻기 위하여 HISTOGRAM 함수를 다음과 같이 사용합니다. bs..

IDL/New Graphics 2025.11.27
728x90