반응형

IDL/Image Processing 34

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 함수를 사용하여 커널의 형태를 먼저 정의한 후, 이 커널 데이터를 대상 ..

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

지난 회차에서는 IDL에 HSV 체계를 기반으로 컬러테이블을 생성하는 방법 및 예제들을 소개하였습니다. 오늘은 HLS 체계를 기반으로 컬러테이블을 생성하는 방법 및 예제들을 소개해보도록 하겠습니다. HLS라는 명칭의 이니셜들은 각각 Hue(색상), Lightness(명도), Saturation(채도)를 뜻합니다. 얼핏 보면 HSV와 비슷해보일 수도 있지만 분명한 차이가 있습니다. 일단 색상 및 채도의 개념은 HSV의 경우와 동일합니다. 하지만 명도의 개념이 서로 다르다는 점을 염두에 두면 좋을 것 같습니다. 먼저 색상의 경우는 컬러휠(Color Wheel)이라고 하는 마치 개별 색상들로 구성된 원형의 바퀴같은 형태로 구성되어 있는데, 각도 0~360도에 걸쳐 각각의 각도 값에 대하여 고유의 색상이 매칭되..

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

IDL에서 컬러테이블(Color Table)을 사용하는데 있어서 원래 IDL이 기본적으로 지원하는 75종과는 별도로 사용자가 직접 커스텀 컬러테이블을 정의하여 사용하는 방법에 관해서는 제가 이 블로그를 통하여 여러 차례 소개해드린 바 있습니다. 그리고 이러한 작업에 있어서는 색상을 Red, Green, Blue 값으로 정의하는 RGB 체계를 기반으로 설명을 해왔습니다. 실제로도 RGB 체계가 가장 일반적이고 보편화된 색상 체계이긴 합니다. 그런데 RGB 이외에도 다른 컬러 체계들도 있는데, 바로 이번에 소개할 HSV 및 HLS 체계들입니다. 물론 컬러테이블을 만드는데 있어서 RGB 체계 기반으로도 충분하긴 하지만, HSV 및 HLS 기반의 방법도 나름의 특성과 장단점이 있습니다. 물론 IDL에서도 HSV..

제임스웹 우주망원경(JWST) 데이터의 입수 및 표출

제임스웹 우주망원경(JWST)에 관해서는 이미 언론 기사 등을 통하여 많이 보셨을 것 같습니다. JWST(James Webb Space Telescope)는 현존하는 최대 크기의 우주망원경으로서 얼마전(7월 12일) 첫번째 관측 이미지를 공개하면서 많은 화제와 관심을 불러일으키고 있습니다. 그리고 초기 관측 데이터들이 관련 웹페이지를 통하여 제공되고 있는데요. 오늘은 이 데이터 파일을 수신하고 IDL에서 간단하게 처리 및 표출해보는 예제를 소개하고자 합니다. 현재 JWST 데이터는 MAST(Mikulski Archive for Space Telescopes)라는 포탈 웹사이트를 통하여 제공되고 있습니다. 이 웹페이지에서는 계정 등록이나 로그인 절차 없이도 데이터의 조회 및 다운로드가 가능하게 되어 있습니..

COLOR_QUAN 함수의 사용법

오늘 소개할 COLOR_QUAN 함수는 24비트 RGB 이미지를 8비트 이미지로 변환하는 역할을 합니다. 물론 8비트 이미지로 변환되더라도 원본 이미지가 갖고 있던 컬러들이 어느 정도 유지되기는 하지만 비트의 수가 24비트에서 8비트로 줄어들기 때문에 컬러 디테일은 당연히 열화가 됩니다. 결국은 컬러 품질이 떨어질 수 밖에 없는데 그럼에도 불구하고 이 COLOR_QUAN 함수는 여전히 나름대로의 사용 가치는 존재합니다. COLOR_QUAN 함수가 필요한 경우는 대략 두가지로 볼 수 있습니다. 1) 이미지의 색상 갯수를 256개 또는 그 이하의 단계로 제한하는 것이 더 나을 경우 2) GIF 형식과 같은 8비트 이미지 파일로 저장해할 경우 이렇게 두가지 정도로 볼 수는 있지만 통상적으로는 주로 2)와 같은..

RGB 이미지에 대한 처리 방법

이미 많이들 아시겠지만 IDL에서는 여러가지 다양한 이미지 처리 기능들을 지원하며, 제가 이 블로그를 통해서 이미 여러 차례 소개해드린 바 있습니다. 그런데 이러한 이미지 처리 기능들 중 상당수는(100%는 아니지만) 단색광 이미지 즉 배열 구조가 2차원인 경우에만 지원되는 경우가 꽤 많습니다. 예를 들어 어떤 이미지의 가로 및 세로 방향의 화소(Pixel) 크기가 각각 816 및 612일 경우, 그 이미지 데이터의 배열은 816x612의 2차원 구조를 갖는다고 볼 수 있습니다. 즉 이러한 배열은 각 화소마다 단일한 색상값을 갖는 단색광 이미지에 해당됩니다. 그런데 우리가 얻게 되는 여러가지 이미지 데이터들 중에서는 하나의 화소가 Red, Green, Blue 3종의 화소값들을 동시에 갖는 RGB 이미지..

ROT 함수 소개

오늘 소개할 ROT 함수는 IDL에서 지원되는 배열 처리 함수들 중 하나입니다. 사실 원래는 배열 처리 기능을 수행하는 함수들 중 하나이긴 하지만, 그 특성상으로 보면 오히려 이미지 처리 기능의 함수에 더 가까운 성격이라고 봐도 될 것 같습니다. 그럴만도 한 것이 IDL 도움말에서 이 함수에 관한 내용을 찾아보면 첫 문장이 "The ROT function rotates an image by an arbitrary amount"입니다. 즉 이미지를 임의로 회전시키는 기능을 수행한다는 의미로 보면 됩니다. 다만 제가 알기로는 이 ROT 함수는 IDL 사용자들 사이에서도 그리 잘 알려지거나 널리 사용되는 편은 아닌 것 같습니다. 그래도 잘 알아두면 나름 쏠쏠하게 사용할 수 있는 함수일 것 같아서 이번 기회에 ..

이미지에서 노이즈(Noise) 제거하기 [2]

지난 회차 게시물에서는 IDL에서 이미지의 노이즈를 제거하는 기법들 중 컨볼루션(Convolution) 기반의 기법들을 예제와 함께 소개해보았습니다. 오늘은 FFT(Fast Fourier Transform) 기반의 노이즈 제거 기법들을 소개해보도록 하겠습니다. 일단 두 종류의 예제 이미지 데이터는 지난 회에서 사용했던 것을 똑같이 사용할 것입니다. 인위적으로 노이즈를 추가하여 예제 데이터를 생성하고 이를 표출하는 과정은 지난 회와 동일하지만 여기서도 다시 적어봅니다. file = FILEPATH('moon_landing.png', SUBDIRECTORY=['examples', 'data']) img0 = FLOAT(READ_PNG(file)) sz = SIZE(img0, /DIM) noise = RAND..

이미지에서 노이즈(Noise) 제거하기 [1]

Noise라고 하는 것은 우리말로는 흔히 잡음이라고 부르기도 합니다. 넓은 의미로 본다면 우리가 데이터로서 얻게 되는 Signal(신호) 내에서 배경에 존재하는 말그대로 잡음과 같은 지저분한 형상들을 뜻합니다. 통상적으로 이러한 잡음은 제거해야 할 대상이 됩니다. 그래야 깨끗한 신호를 데이터로서 얻을 수 있기 때문입니다. 1차원적인 신호라 할 수 있는 음파(Sound Wave)의 예를 든다면 잡음이 많이 섞인 음성 신호에 대하여 잡음 제거 처리를 함으로써 좀 더 깨끗한 음질의 신호를 얻게 됩니다. 2차원적인 신호라고 할 수 있는 이미지(Image)의 경우도 마찬가지입니다. 우리가 이미지의 형태로 얻는 데이터를 보면 의미있는 형체 뿐 아니라 잡음(노이즈)과 같은 불필요하고 지저분한 형체들도 함께 뒤섞여있는..

클리핑(Clipping) 기법의 이해와 응용

클리핑(Clipping) 기법은 어떤 배열을 대상으로 하여 배열 내 모든 값들 중 특정한 범위 내에 속하는 것들은 그대로 살리고 범위 바깥에 속하는 것들은 범위 경계값으로 대체하는 기법입니다. 주로 2차원 이미지 배열에 대하여 적용하는 경우가 많기는 하지만, 어차피 기법 자체는 배열의 차원을 가리지 않기 때문에 어떤 형태의 배열이든 적용 대상이 될 수 있습니다. 사실 마스킹(Masking) 기법의 경우도 그랬지만 이 클리핑(Clipping) 기법에 대해서도 제가 이 블로그에서 올렸던 다른 게시물들, 특히 이미지 처리와 관련된 내용들에서 여러번 언급을 한 적은 있습니다. 하지만 오늘은 클리핑 기법 자체에만 촛점을 맞추어서 그 개념 및 관련 예제들을 함께 소개해보고자 합니다. 우선 클리핑 기법의 원리에 대한..