SMALL

IDL/Image Processing 43

감마 보정 (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) 기법과 유사한 맥락일 수도 있지만, 감마 보정 기법의 경우는 전달 함수의 형태를 다양하게 변형시켜서 ..

COLORTABLE 함수를 이용한 컬러테이블의 생성 [3]

IDL에서 컬러테이블을 사용하는데 있어서 유저가 직접 커스텀 컬러테이블을 정의하기 위하여 COLORTABLE 함수를 활용하는 방법 및 예제를 소개하는 게시물들을 이전에 2회에 걸쳐서 올린 바 있습니다(게시물 1, 게시물 2). 오늘은 계속 이어지는 내용으로서 특히 COLORTABLE 함수의 NCOLORS 키워드에 주목해보고자 합니다. 그래서 이 NCOLOR 키워드의 역할 및 활용 방법을 관련 예제와 함께 소개해보겠습니다. IDL 도움말에서 COLORTABLE 함수에 관한 섹션에서 NCOLORS 키워드에 대한 설명을 보면 표시될 색상들의 갯수를 설정하는 역할을 하며 디폴트 값은 256이라고 기술되어 있습니다. 이것이 어떤 의미인지 예를 들어서 설명해보겠습니다. 다음과 같이 COLORTABLE 함수를 이용하..

COLORTABLE 함수를 이용한 컬러테이블의 생성 [2]

IDL에서 컬러테이블을 사용하는데 있어서 유저가 직접 커스텀 컬러테이블을 정의하기 위하여 COLORTABLE 함수를 활용하는 방법 및 예제에 관해서는 제가 예전에 관련 게시물을 통하여 소개한 바 있습니다. 이 게시물에서는 컬러테이블을 구성할 색상들을 유저가 직접 구성한 컬러테이블을 생성하는데 있어서 COLORTABLE 함수를 사용하는 방법에 촛점을 맞추었습니다. 오늘은 IDL에서 기본적으로 지원되는 75종의 컬러테이블에 대하여 유저의 편의에 맞게 약간의 수정을 가하여 활용하는 방법에 촛점을 맞춰서 소개해볼까 합니다. 물론 여기서도 COLORTABLE 함수가 핵심적인 역할을 담당하게 될 것입니다. 그러면 먼저 가상의 2차원 배열을 생성하고 67번 컬러테이블을 사용하여 표출하는 예제부터 시작해봅시다. 그 과..

MORPH_OPEN 및 MORPH_CLOSE 함수 소개

얼마전부터 형태학적 이미지 처리(Morphological Image Processing, MIP)의 범주에 속하는 여러가지 기법들을 지원하는 IDL 함수들을 소개하고 있습니다. 최근 2회에 걸쳐서는 Erosion(침식) 기법에 해당되는 ERODE 함수 및 Dilation(확장) 기법에 해당되는 DILATE 함수를 차례로 소개한 바 있습니다. 특히 지난 회차 게시물에서는 DILATE 함수를 사용하는 방법을 먼저 소개한 후 ERODE 및 DILATE 함수를 조합하여 사용하는 처리 방식도 함께 살펴본 바 있습니다. 즉 이미지에 대하여 ERODE 함수를 먼저 사용하여 Erosion 처리를 한 후 이어서 DILATE 함수를 사용하여 Dilation 처리를 수행하는 처리 방법이었습니다. 그리고 이러한 방식의 처리의..

DILATE 함수 소개

얼마전부터 형태학적 이미지 처리(Morphological Image Processing, MIP)의 범주에 속하는 여러가지 기법들을 지원하는 IDL 함수들을 소개하고 있습니다. 지난 회차 게시물에서는 Erosion(침식) 기법에 해당되는 ERODE 함수를 소개하였고, 오늘은 이어지는 순서로서 Dilation(확장) 기법에 해당되는 DILATE 함수를 소개할 차례입니다. 지금부터 DILATE 함수를 이용하여 Dilation 기법을 적용하는 방법을 예제와 함께 살펴봅시다. Dilation(확장) 기법은 지난번에 소개한 Erosion 기법과는 정반대의 역할이라고 보면 됩니다. 즉 Erosion의 경우에는 이미지 내에 존재하는 형체들을 깎아내어서 그 크기를 감소시키거나 아예 제거한다는 개념이었던 반면, Dila..

ERODE 함수 소개

제가 얼마전에 MORPH_GRADIENT 함수를 소개하는 게시물을 올리면서 거기서 형태학적 이미지 처리(Morphological Image Processing, 이후부터는 MIP로 줄여서 부릅니다)라는 개념에 관하여 언급을 한 바 있습니다. 그 이유는 MORPH_GRADIENT 함수의 이미지 처리 알고리즘이 MIP의 범주에 속하는 여러가지 기법들 중 하나였기 때문입니다. 그리고 IDL에서는 MIP에 속하는 여러가지 기법들이 반영된 기능 함수들이 다양하게 지원되고 있다는 것도 함께 언급하였는데요. 이러한 범주에 속하는 여러 기능 함수들 중에는 ERODE 및 DILATE 함수가 있습니다. 이 함수들은 각각 Erosion 및 Dilation이라는 기법에 해당되는 기능을 수행하는데, 굳이 우리말로 번역해본다면 ..

MORPH_GRADIENT 함수 소개

2차원 이미지에 대한 처리 기법들 중에는 특정한 형태(Shape or Morphology)를 갖는 형체들(Features)을 기반으로 분석 및 처리를 수행하는 기법들이 있습니다. 이러한 기법들을 총괄적으로는 흔히 형태학적 이미지 처리(Morphological Image Processing) 기법이라고 부릅니다. 이러한 기법들은 기본적으로는 컨볼루션(Convolution)을 기반으로 하는데, 이 때 적용되는 커널(Kernel)의 형태 그리고 컨볼루션을 적용하는 횟수 및 순서 등에 따라 여러가지 변형 기법들로 나눠지게 됩니다. 예를 들면 Erosion, Dilation, Opening, Closing 등의 기법들입니다. IDL에서도 이러한 형태학적 이미지 처리 기법을 기반으로 하는 여러가지 기능 함수들이 지..

특정 화소들만 강조한 이미지의 표출

2차원적인 데이터를 이미지(Image)의 형태로 표출하는데 있어서는 기본적으로 다양한 컬러테이블(Color Table)들을 적용하여 값이 높낮이를 반영하는 방식이 일반적입니다. 그런데 경우에 따라서는 특정한 화소(Pixel)들만을 강조하여 나타내는 것이 필요할 수 있습니다. 즉 어떤 조건을 내걸고 그 조건을 만족하는 화소들이 판별한 후 이미지 상에서 이러한 화소들만 특별히 강조하는 방식을 뜻합니다. 제가 얼마전에 올렸던 게시물에서 다음과 같은 그림을 제시했던 적이 있습니다. 이 그림은 2차원 데이터를 흑백 계열 색상의 컬러테이블로 표출해놓은 상태에서 특정한 화소들만 붉은색으로 강조하여 표출한 것입니다. 사실 이러한 표출을 위해서는 약간의 요령이 필요한데, 여기서는 NG 체계에서 두 종류의 이미지를 중첩하..

IDL 8.9의 Gabor Filter 기능 소개

IDL 8.9 버전에서 새로 추가된 Gabor Filter 기능은 2차원 이미지에 대하여 적용 가능한 필터링 옵션이라고 볼 수 있으며 주로 경계선 추출(Edge Detection) 또는 텍스쳐 분석(Texture Analysis)에 사용되는 처리 기법입니다. IDL 8.9에서 이 기능을 사용하기 위해서는 GABOR_KERNEL 및 GABOR_FILTER 함수를 사용해야 합니다. 그래서 오늘은 이 기능에 관하여 관련 예제와 함께 소개를 해보고자 합니다. Gabor 필터링 자체는 기본적으로는 컨볼루션(Convolution)의 일종이며 적용되는 커널(Kernel)의 세부 형태에 따라 결과가 달라지게 됩니다. 따라서 GABOR_KERNEL 함수를 사용하여 커널의 형태를 먼저 정의한 후, 이 커널 데이터를 대상 ..

728x90