• 검색 결과가 없습니다.

의료 영상 처리를 위한 오픈 소스 라이브러리: ITK 리뷰

N/A
N/A
Protected

Academic year: 2022

Share "의료 영상 처리를 위한 오픈 소스 라이브러리: ITK 리뷰"

Copied!
12
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

서 론 1. 오픈 소스 라이브러리 및 ITK 소개

오픈 소스는 개발한 소스를 다양한 라이센스를 기반으로 공 개 배포함으로써 연구그룹이나 개인이 소스 코드를 통해 직접 프로그램을 이용하거나 배포된 소스 코드를 기반으로 원하는 작업에 맞는 프로그램을 만들어 이용하고 이를 다시 재 배포할 수 있는 프레임워크를 일컫는다. 오픈 소스 프레임워크는 기존 에 개발된 소스 코드들을 통해 초기개발을 빠르게 할 수 있으 며 자유도와 확장성이 용이하다는 장점이 있다. 또한 개발한 프로그램의 소스 코드를 공개 배포함으로써 다른 연구자와 공 동 개발하면서 개발하는 프로그램에 대한 평가를 받을 수 있고

향상 시킬 수 있는 장점도 있다. 오픈 소스의 이러한 장점을 바 탕으로 미국 국립 보건원(National Institute of Health)의 지원을 통해 1999년 여러 연구소와 대학들이 공동으로 의료영 상의 분할 및 정합을 위한 라이브러리인 ITK를 개발하였고 지 속적으로 발전시키고 있다.

ITK는 다양한 타입의 의료 영상을 유연하게 다룰 수 있도록 Generic Programming 기법을 이용한 개발 프레임워크를 제 공하며, 오픈 소스 프로젝트로써 모든 소스코드가 공개되어 있 기 때문에 의료 영상 처리에 대한 응용 소프트웨어 개발이나 관련 연구를 효율적으로 수행할 수 있는 기반이 된다. 특히 입 력된 데이터와 독립적으로 영상 처리 알고리즘을 구현할 수 있 는 C++ Template 기반의 ITK 프로그래밍 방식과 함께 다 양한 영상 처리 모듈 간의 입출력을 자연스럽게 연결하면서 메 모리 관리를 내부적으로 수행해 주는 ITK 영상 처리 파이프라 인은 ITK가 의료 영상 처리 분야에서 활발하게 사용될 수 있 게 하는 주 요소이다.

ITK외에도 의료 영상에 적용할 수 있는 다양한 알고리즘들 을 포함하는 라이브러리들이 오픈 소스로 배포되고 있다. 대표

의료 영상 처리를 위한 오픈 소스 라이브러리: ITK 리뷰

김의태∙류호진∙김재일∙박진아 카이스트 전산학과

Open Source Library for Medical Image Processing: Review on ITK UiTae Kim, Hojin Ryoo, Jaeil Kim, Jinah Park

Department of Computer Science, KAIST, Daejeon, Korea

= Abstract =

The ITK (Insight Segmentation and Registration Toolkit) provides various image processing algo- rithms including multi-dimensional image enhancement, segmentation, and registration. The toolkit is an open-source software development framework based on object-oriented C++ scheme. Since the ITK supports cross platforms and covers the Apache 2.0 license, it allows the users to modify and dis- tribute the developed source codes freely and easily. For these reasons, the ITK is widely used for processing and analyzing medical images. It also supports GPU acceleration for advanced users.

Key words: Insight Toolkit (ITK), Medical image processing, Open source library

통신저자: 박진아, (305-701) 대전광역시 유성구 대학로 291, 카이스트 전산학과

Tel: 042-350-3555, Fax: 042-350-3510 E-mail: [email protected]

(2)

적으로는 시각화를 위한 VTK(Visualization Toolkit)와 부분 적으로 공개된 OpenInventorTM라이브러리가 있으며, 의료영 상 과 의 상 호 작 용 을 위 한 MITK(Medical Imaging Interaction Toolkit) 라이브러리와 영상 유도 수술에 사용되 는 IGSTK(Image-Guided Surgery Toolkit) 그리고 실시간 의료 시뮬레이션에 사용되는 SOFA(Simulation Open Framework Architecture) 라이브러리가 있다. 이외에도 특 정 목적 전용으로 사용할 수 있게 개발된 오픈 소스 라이브러 리들이 공개되어 있으며, 기존에 공개된 라이브러리들을 이용 하여 원하는 목적에 맞게 수정한 라이브러리들도 배포되고 있 다 [1]. 대 표 적 으 로 는 뇌 영 상 의 분 석 을 도 와 주 는 FSL(fMRIB Software Library)과 ITK를 기반으로 한 의료 영상의 분할 도구인 ITK-Snap 그리고 VTK를 기반으로 혈관 모델링을 도와주는 VMTK(Vascular Modeling Toolkit) 등 을 들 수 있다.

ITK에서는 웹 기반의 전자 논문지인 Insight Journal (http://www.insight-journal.org)을 통해 새롭게 개발한 알고리즘의 소스 코드와 설명을 논문형식으로 투고 받고 있으 며 즉시 소스 코드가 일반인들에게 공개되기 때문에 다양한 분 야의 전문가들로부터 자신의 알고리즘을 평가받을 수 있으며 개재한 알고리즘은 검토를 통해 ITK 라이브러리에 포함될 수 있다.

2. ITK의 확장성

ITK는 크로스 플랫폼을 지원하는 라이브러리이기 때문에 확 장성이 용이하며 다른 개발 환경과 쉽게 연동이 가능하다.

ITK는 현재 사용되는 주요 운영체제인 윈도우와 유닉스 계열, 그리고 컴파일러는 gcc/g++, Xcode, Miscrosoft Visual Studio를 통해 사용이 가능하다. 일반적으로 개발 환경이 개 발자마다 다르고 ITK를 기반으로 개발된 프로그램을 사용하는 사용 환경이 다르기 때문에 개발이나 사용 환경에 맞게 ITK를 컴파일링하는 작업은 CMake(www.cmake.org)를 이용하여 원활하게 수행할 수 있다. 라이브러리를 생성하기에 앞서 필요 한 설정들을 선택할 수 있고, 개발 환경을 컴파일러에서 직접 설정하는 대신에 CMake 환경을 설정하여 라이브러리나 해더 추가를 수월하게 할 수 있기 때문에 연구 및 개발을 수행하는 데 유용하다.

ITK 라이브러리에는 영상 처리 알고리즘을 적용한 의료 영 상을 시각화하는 기능을 포함하지 않기 때문에 시각화를 위해 서는 이에 특화되어 있는 라이브러리들을 이용하여 보고자 하 는 영상을 가시화해야 한다. 공개되어 있는 여러 시각화 라이

브러리들을 중에서 대표적으로 VTK가 많이 활용되고 있다.

VTK는 ITK와 같은 오픈 소스 라이브러리로써 3D 컴퓨터 그래픽스, 영상 처리 그리고 시각화 기술에 특화되어 있다. 특 히 스칼라, 벡터, 텍스처, 볼륨 데이터 등 다양한 형태의 2D/3D 데이터를 효과적으로 시각화하는 시각화 기술을 제공 하는데 목적을 두고 있다. 특히, VTK의 시각화 파이프라인은 데이터 시각화 기술 자체를 데이터 타입, 데이터 처리, 시각화, 상호작용 등 세부 요소로 구분하여, 개발할 수 있는 유연성을 제공한다. 또한 ITK와의 데이터 맵핑 기능이 제공됨으로써 ITK를 이용한 영상 처리 과정에서의 결과를 효과적으로 시각 화할 수 있다는 장점이 있다.

MITK(Medical Imaging Interaction Toolkit)은 의료 영 상 처리 및 분석 분야에서 기본적으로 요구되는 의료 영상 로 드 및 저장, 영상 탐색, 수동 영상 분할 등의 다양한 기술이 포 함된 GUI(graphical user interface)를 제공하며, ITK에서 제공하는 영상 처리 알고리즘과 결합되어 매우 효율적으로 의 료 영상 처리 소프트웨어를 개발할 수 있는 기반을 제공한다 [1, 2]. 특히 사용자가 MITK에서 제공하는 소프트웨어의 플 러그인(plug-in) 형태로 자신의 알고리즘을 포함시킬 수 있기 때문에 소프트웨어의 배포와 접근성에 매우 용이하다.

3. 논문의 목적과 구성

본 논문은 ITK를 사용하는 의료영상 연구와 방법에 대해서 소개하고 이를 활용하는 연구 및 알고리즘 개발 프레임워크를 제안하여 의료영상 연구를 도모하고자 한다. 본론에서의 1절 에서는 의료영상 연구에서 주요하게 사용되는 영상 처리 (image processing) 및 컴퓨터 비젼(computer vision) 알고 리즘들의 간략한 소개와 ITK에서의 구현방법에 대해서 소개하 며, 2 절에서는 ITK에서 제공하는 클래스들을 이용하여 연구 의 목적에 맞게 새로운 알고리즘을 개발하는 과정과 연산 속도 를 높이기 위한 다중 쓰레딩 기법 및 그래픽스 처리 장치 (graphics processing unit)기반 가속 기법을 소개한다.

본 론 1. ITK 기본 클래스의 사용법

ITK의 여러 기능들을 사용하기에 앞서, ITK에서 의료 영상 을 읽어오는 방법을 살펴보면 크게 다음의 세가지 단계로 나눌 수 있다. 첫 단계는 영상 타입 선언인데, 의료영상은 보통 바이 너리 영상이므로 데이터의 타입이 정수(short, int)나 양의 정

(3)

수(unsigned)인 경우가 많다. 따라서 이를 실수(float) 타입 으로 바꿔주는 것이 계산 중에 값을 잃어버릴 우려가 적기 때 문에, 이를 위한 영상의 타입을 선언한다. 두 번째 단계는 작업 을 진행할 의료 영상을 불러오는 단계로, ITK에 구현된 itk::ImageFileReader 클래스를 사용한다. 마지막 단계에서 는 첫 번 째 단 계 에 서 정 의 한 타 입 을 기 반 으 로 itk::CastImageFilter 클래스를 이용하여 두 번째 단계에서 불러온 영상을 float 등으로 변환해준다.

이 밖에도 itk::ImageSeriesReader 클래스를 사용하면 2 차원 슬라이스 영상을 순차적으로 읽어오는 것이 가능하며, itk::GDCMImageIO 클래스를 생성한 reader 객체에 SetImageIO()함수를 이용해 입출력 방식으로 설정하면 DICOM 영상 역시 불러올 수 있다.

1.1. ITK에서의 영상 향상 알고리즘

영상 향상은 의료영상에서 분할이나 정합, 혹은 분석에 앞서 영상 상의 원하는 정보를 더 부각시키거나 지우는 것에 그 목 적을 둔다. 영상 향상에는 명암이나 레벨 조정뿐만 아니라 영 상 잡음 제거 및 경계선 검출이 포함되며, 본 논문에서는 이 중 영상 잡음 제거 및 경계선 검출이 ITK에 어떻게 구현되어 있 는지 살펴본다.

1.1.1. 영상 잡음 제거

영상 잡음 제거는 영상을 얻는 과정에서 생긴 전자 잡음 등 의 작은 잡음을 제거하는 기법으로, 잡음 값을 골고루 분산시 켜 주는 스무딩 기법과 경계선을 유지하며 값을 분산시키는 경 계선 유지 스무딩 기법들이 있다. ITK에 구현되어 있는 대표 적인 스무딩 기법은 이동 평균 필터(moving average), 가우

시안 필터(Gaussian), 그리고 재귀형 가우시안 필터 (Recursive Gaussain)등이 있으며, 구현되어 있는 대표적인 엣지 보존 스무딩 기법은 양방향 필터(Bilateral), 곡률 흐름 필터(Curvature Flow), 그리고 비등방성 확산 필터 (Anisotropic) 등이 있다. 이 중 본 논문에서는 가우시안 필터 및 양방향 필터를 통해 ITK에 영상 잡음 제거가 어떻게 구현 되어 있으며 이를 어떻게 연구에 활용할 수 있는지 살펴본다.

1.1.1.1. 가우시안 필터

ITK의 다차원 가우시안 함수는 각 축의 분리를 통해 최적화 되 어 있 다 . 3차 원 가 우 시 안 필 터 를 예 로 들 면 , G(x,y,z)=G(x)G(y)G(z)의 형태로 분리한 후, x축, y축, z축 방향을 따라 순차적으로 가우시안 마스크를 적용시켜 중복되 는 연산을 제거한다.

ITK에서는 itk::DiscreteGaussianImageFilter를 이용하 여 영상의 잡음 제거에 이산 가우시안 필터를 사용할 수 있다.

특히 ITK에서는 가우시안 마스크가 Lindeberg(1991)가 제안 한 기법으로 구현되어 있어 가우시안 함수의 값을 직접 계산하

순서도 1. ITK에서의 영상 불러오기

순서도 2. 가우시안 필터의 사용 방법

그림 1. 원본 뇌 영상(좌)과 가우시안 필터가 적용된 영상(우)

(4)

지 않고, 변형 베셀 함수를 이용한 근사를 통해 계산한다 [3].

마스크는 itk::GaussianOperator에 구현되어 있다.

ITK에서 제공하는 이산 가우시안 필터를 적용시키기 위해서 사용자는 가우시안 함수의 분산 값을 설정해주어야 한다.

1.1.1.2. 양방향 필터

양방향 필터는 대표적인 엣지 보존 스무딩 기법의 영상 잡음 제거 필터로, ITK에서는 공간적 유사성에 가중치를 준 도메인 필터(domain filter)와 화소 값의 유사성에 가중치를 준 레인 지 필터(range filter)의 조합으로 이루어진다.

ITK에서는 itk::BilateralImageFilter를 이용하여 영상의 잡음 제거에 양방향 필터를 사용할 수 있다. ITK에서는 양방 향 필터가 Tomasi와 Manduchi(1998)가 제안한 기법으로 구 현되어 있다 [4]. ITK는 Tomasi와 Manduchi의 논문에서 제 안한 방법인 가우시안 필터를 이용한 양방향 필터를 채택하였 다. 따라서 ITK의 양방향 필터는 도메인 필터로서의 가우시안 필터와 레인지 필터로서의 가우시안 필터를 만들어 사용한다.

따라서 ITK에서 이산 가우시안 필터를 적용시킬 때와 마찬 가지로 사용자는 도메인 필터와 레인지 필터 각각에 대해 가우

시안 함수의 분산 값을 설정해줘야 한다.

1.1.2. 경계선 검출

영상 내에서의 경계선은 밝기 값이 지역적으로 급격하게 변 화하는 곳을 의미하며 영상 내에서 다른 밝기 값을 가진 두 영 역 사이 존재한다. 경계선은 객체나 표면의 윤곽과 동일하며 의료 영상에서 가장 기본적이며 필수적인 정보이기 때문에 영 상 분할과 관심 영역 추출 등에 사용된다. 경계선 검출 기법은 경계선을 모델링 하는 방법에 따라 다양해지는데, 대표적인 경 계선 검출 기법으로는 Roberts, Prewitt, Sobel와 Canny, Laplacian 경계선 검출 기법이 있으며 본 절에서는 널리 사용 되고 있는 Sobel과 Canny 기법을 ITK를 통해 정의와 사용방 법에 대해서 다루고자 한다.

1.1.2.1. 소벨 경계선 검출법

영상에서의 밝기 경도(gradient)를 기반으로 하는 경계선 검출법은 단순한 구조를 갖고 있기 때문에 영상 잡음이 적은

순서도 3. 양방향 필터의 사용 방법

그림 2. 원본 뇌 영상(좌)과 양방향 필터가 적용된 영상(우)

순서도 4. Sobel 경계선 검출법의 사용 방법

그림 3. 원본 뇌 영상(좌)과Sobel 필터가 적용된 영상(우)

(5)

영상에서는 효율적인 연산으로 경계선을 추출할 수 있다. 경도 는 각 픽셀마다 1차 미분을 통해 구하는데 영상은 2차/3차원 이기 때문에 각 축에 대해 편미분을 하여 경도 영상(gradient image)을 구하게 된다. 대표적으로 Roberts, Prewitt나 Sobel의 기법을 적용시킬 수 있으며 ITK에서는 소벨 기법만 을 제공한다 [5].

각 축에 대해 소벨 마스크를 모든 픽셀에 적용하고 두 축에 대한 경도 영상을 얻게 되며 이를 통해 경도의 크기(magni- tude) 영상과 방향(direction) 영상을 얻게 된다. 경도의 크기 는 두 축에 대한 경도 값의 제곱의 합의 제곱근으로 영상의 경 계선의 강도와 비례하게 된다.

ITK에선 itk::SobelEdgeDetectionImageFilter를 통해 영상에 대한 밝기 경도 (gradient)의 크기 값을 통해 경계선 을 추출하나 경계선의 방향은 직접 ITK의 함수들을 이용하여 경도의 방향을 구하여 한다. Sobel 마스크는 itk::

SobelOperator를 통해 입력 영상의 각 축에 대해서 생성하고, 이를 영상의 모든 픽셀과 그 주변에 적용시키기 위해서는 itk::NeighborhoodOperatorImageFilter를 이용하여 각 축 에 대한 경도 영상을 얻는다. 각 축에 대한 경도 영상들을 itk::Atan2ImageFilter에 적용하여 경도의 방향을 구한다.

1.1.2.2. 캐니 경계선 검출법

1차 미분만을 이용한 경도(gradient) 영상에서 경계선을 추 출하게 되면 영상 잡음에 의한 잘못된 경계선들이 추출되기 때 문에 캐니 기법에서는 앞서 언급된 가우시안 필터를 통해 영상 에서의 잡음을 줄인 후에 경도 영상을 구하게 된다 [6]. 경도 영상에서 경계선 추출은 기울기 방향에 따라 국부 최댓값 (local maxima)만을 추출하여 실제 경계선만을 검출하게 되 는데 이를 비 최대점 억제(non-maximum suppression)작업 이라 한다.

ITK에선 itk::CannyEdgeDetectionImageFilter를 이용

하여 영상 내에서 캐니 기법을 통한 경계선을 검출할 수 있다.

특히 ITK에서는 비 최대점 억제 과정이 Lindeberg(1998)가 제안한 기법으로 구현되어있어서 가우시안 필터를 통과한 영 상에 1차 미분 대신에 2차 미분을 적용하고 ITK에서 제공하는 itk::ZeroCrossingImageFilter() 필터를 적용해 국부 최댓 값들을 구하게 된다 [7].

비 최대점 억제는 영상 내에서 모든 픽셀에 대해서 2차 미분 을 계산하고 부호 변환점(zero-crossing)을 연산하기 때문에 의료 영상과 같이 입력 영상의 크기가 크거나 영상이 3차원일 경우에는 연산의 양이 많아지게 되어 ITK는 이 과정을 다중 쓰레딩을 통해 매우 빠르게 동작시킨다.

ITK에서 제공하는 캐니 경계선 검출 기법을 사용하기 위해 서 사용자는 입력 영상과 네 개의 입력 변수들을 설정해줘야 한 다. 처음 두 개의 변수들은 전처리 과정에서 적용되는 가우시안 필터에, SetUpperThreshold()와 SetLowerThreshold()는 이력 임계 설정 과정에 사용하게 되는데 경계선의 검출 품질을 직접적으로 결정하게 되므로, 일반적으로 하한과 상한 임계 값 의 초기 추정을 입력 영상의 밝기 평균 또는 중간 값을 기준으 로 정의하게 된다.

1.2. ITK에서의 영상 분할 알고리즘

영상 분할(segmentation)은 영상 내에서 보고자 하는 객체 의 위치와 형태에 대한 1차적인 정보를 제공하며, 이를 이용하 여 객체의 측정 및 3차원 영상일 경우 시각화를 할 수 있는 2 차적인 정보를 제공하기 때문에 의료 영상 분야에서 주요하게 쓰이는 기법이다. 따라서 다양한 목적에 맞게 많은 분할 기법

순서도 5. 캐니 경계선 검출법의 사용 방법

그림 4. 원본 뇌 영상(좌)과 캐니 필터가 적용된 영상(우)

(6)

들이 연구되었으며 ITK에서도 많은 분할 기법들을 제공해주는 데 대상과 분할 목적 그리고 영상에 따른 알고리즘의 선택 및 조합이 중요하다. 본 단원에서는 ITK에서 기본적으로 제공하 는 영역 확장(region growing) 기반, 워터쉐드(watershed) 그리고 마르코프 랜덤 필드(Markov random field, MRF) 기반의 영상 분할 알고리즘에 대해 설명한다.

1.2.1. 영역 확장 기반의 영상 분할

영역 확장(region growing) 기반의 영상 분할 기법은 사용 자가 입력 영상 내에 씨드(seed) 점을 선택하여 이웃한 픽셀들 을 정의된 규준(criteria)에 따라 선택 영역으로 포함하여 영 역을 확장시키는 기법이다. 선택 영역의 평균 밝기와 분산으로 신뢰 구간을 구하고 이를 상하한 임계 구간으로 설정하는 기법 을 이용하면, 사용자가 직접 상하한 값을 설정하지 않아도 되 며 더 이상 영역이 확장이 진행되지 않을 경우 새롭게 선택된 영역의 평균 밝기와 분산을 계산하여 새로운 상하한 임계 구간 으로 반복적으로 영역 확장을 진행할 수 있다.

이는 ITK에 itk::ConfidenceConnectedImageFilter로 구 현되어있으며 앞서 언급한 상하한 임계 구간과 씨드 점에 이웃 한 픽셀들의 크기를 설정함으로써 초기 선택 영역의 평균 밝기 와 분산을 구하여 상하한 임계 구간을 설정할 수 있다 [8]. 밝 기 값에 대한 상하한 임계 구간에 있는 픽셀들을 내부 영역으

로 판별하고 이외에 구간에 있는 픽셀들은 외부 영역으로의 판 별을 ITK에서는 itk::BinaryThresholdImageFunction으로 구현되어 있으며 itk::FloodFilledFunctionConditional- ConstIterator은 씨드 점과 상하한 임계 구간을 기준으로 이 웃 픽셀들을 탐색하면서 영역이 확장을 시킨다.

1.2.2. 분기점(Watershed) 알고리즘

분기점 알고리즘은 영상의 특징에 따른 높이 함수(height function)를 정의하고 동일한 국소 최저치(local minima)로 급강하는 경사들의 집합으로 이루어진 집수구역(catchment basin)을 기준으로 영상을 분할한다 [9].

ITK에서는 집수구역 설정에 두 개의 규준을 제공해준다. 첫 번째 규준은 영상 잡음에 의해 생긴 국소 최저치를 제거하기 위해 하한 임계(threshold)값을 설정하여 하한 임계 값보다 작은 깊이를 갖는 집수구역들은 이웃 집수구역과 병합시켜 과 도 분할(over segmentation)을 피하게 한다. 두 번째 규준은

순서도 6. 영역 확장 기반의 영상 분할 사용 방법

그림 5. 원본 뇌 영상(좌)과 영역 확장 기반의 회백질 분할 영상(우)

순서도 7. 분기점 알고리즘 영상 분할 사용 방법

그림 6. 원본 뇌 영상(좌)과 분기점 알고리즘이 적용된 영상(우)

(7)

깊이 수위(level)를 정함으로써 수위 내에 경계선이 있는 집수 구역들을 병합시켜서 최종 분할 영상을 획득하게 된다.

ITK에 서 는 분 기 점 알 고 리 즘 을 itk::Water- shedImageFilter를 통해 제공하며, 이는 높이 함수와 임계 값 으로 초기 집수구역을 구하는 itk::watershed::Segmenter 와 초기 집수구역과 수위를 규준으로 병합되는 집수구역들을 데이터 구조화 시키는 itk::watershed::SegmentTree- Generator 그리고 병합된 집수구역 정보를 기반으로 초기 집 수구역들을 갱신하는 itk::watershed::Relabeler로 이루어 진다 [10]. ITK외에도 분기점 알고리즘에 대한 다양한 전산기 법들이 제안 되었으며, 원하는 목적에 맞게 구현하면 된다.

1.2.3. 마르코프 랜덤 필드

마르코프 랜덤 필드 기반의 영상 분할에서 초기 입력 변수 값 추정과 상태 유사도 측정 방법 그리고 최적화 문제는 사용 자의 목적에 따라 기존에 제안 된 기법들을 사용하거나 직접 정의하여 사용할 수 있다. ITK에서는 K-평균 모델 추정을 이

용하여 초기 값 추정을 구하며, MRF 모델의 에너지 함수를 최소화하기 위해서는 널리 사용되는 반복 조건 모드(Iterated Conditional Modes-ICM)를 이용한다 [11]. 이외에도 깁스 샘플링(Gibbs sampling), 시뮬레이티드 애닐링(simulated annealing), 신뢰도 확산(belief propagation), 그래프 컷 (graph cuts)을 통해 최적화할 수도 있다.

ITK에서는 마르코프 랜덤 필드를 itk::MRFImageFilter로 구현되어 있으며, MRF 필터는 벡터(vector) 영상을 입력으로 받기 때문에 입력 영상이 스칼라(scalar)일 경우에는 itk::ComposeImageFilter를 통해 변환해준다. 입력 인자로 는 분류(classification) 작업 시 분할할 label의 수를 정하는 것과, MRF 에너지 함수에서 가우시안 항(term)과 깁스 항을 조절하는 평활 인자(smoothing factor)가 있다. 또한, 영상 내에서 특정 픽셀로부터의 주변 탐색 크기를 정의하고 가중치 를 주어 주변의 영향을 얼마만큼 받을지를 설정한다.

1.3. ITK에서의 영상 정합 알고리즘

영상 정합은 의료영상에서 다른 차원, 다른 영상 기법, 다른 시점 및 시간, 서로 다른 대상 등에서 촬영 된 영상의 신체조직 을 고정된 원본영상(fixed image)상의 신체조직에 대응시키는 것을 의미한다. 따라서 영상 정합은 영상의 시공간적 차원, 촬 영 기법 등에 따라 다양한 알고리즘이 존재하며, 각각에 따른 자세한 알고리즘은 Francisco (2012)나 Markelj(2012)의 리 뷰 논문 등에서 확인할 수 있다 [12, 13].

본 논문에서는 영상 정합의 일반적 프레임워크와 함께 3차 원 경사 하강법(gradient descent) 기반 비강성(non-rigid) 정합 알고리즘인 데몬 알고리즘이 ITK에 어떻게 구현되어 있 는지 살펴본다.

1.3.1. 영상 정합의 일반적 프레임워크

영상 정합 알고리즘은 이동 영상(moving image)과 원본 영 상을 입력 받아 맞출 영상을 원본 영상의 좌표계로 옮겨준다.

실제 구현은 크게 영상 계량, 최적화, 영상 변환, 그리고 영상 보간의 네 단계로 나뉘며, 이는 영상이 원하는 수준까지 정합 될 때까지 반복된다.

순서도 8. 마르코프 랜덤 필드 영상 분할 사용 방법

그림 7. 원본 뇌 영상(좌)과 마르코프 랜덤 필드 기반 영상 분할(우)

순서도 9. 영상 정합의 일반적 프레임워크[20]

(8)

1.3.1.1. 영상 계량

영상 계량은 맞출 영상이 원본 영상에 얼마나 잘 정합되었는 지를 측정하는 단계이다. ITK는 두 영상 간의 계량을 위해 다 양한 척도를 제공하는데, 본 논문에서는 그 중 제곱 평균 척도, 상관관계 정규화 척도, 그리고 상호 정보 기반 척도가 ITK에 어떻게 구현되어 있는지 살펴본다.

제 곱 평 균 척 도 는 ITK의 itk::MeanSquares- ImageToImageMetric 클래스에 정의되어 있다. 이는 두 영상 간의 값의 차이를 제곱한 값들의 평균으로 두 영상 간의 차이 를 계량하는 방식으로, F를 원본 영상, M을 이동 영상, xi

=T(xi, p), T를 변환 행렬이라 할 때, 제곱 평균 척도의 식은 다음과 같아진다:

상 관 관 계 정 규 화 척 도 는 ITK의 itk::Norm- alizedCorrelationImageToImageMetric 클래스에 정의되어 있다. 이는 두 영상 간의 관계를 정규화를 통해 방향성만 남긴 것으로, 구현된 상관 관계 정규화 척도의 식은 다음과 같다:

상 호 정 보 기 반 척 도 는 ITK의 itk::Mutu- alInformationImageToImageMetric 클래스에 정의되어 있 다. 이는 Viola(1997)의 방식에 따라 구현되어 있다 [14]. I가 두 영상 사이의 상호 정보일 때, 상호 정보 기반 척도의 식은 다음과 같아진다:

1.3.1.2. 최적화

최적화는 이동 영상을 고정 영상 간의 영상 계량 결과를 최 소화 하는 변환 행렬을 계산해내는 단계로, 최적화 결과를 평 가하기 위한 비용 함수(cost function)이 필요하다. 영상 정합 에 있어 비용 함수는 1.3.1.1 절에서 정의한 영상 계량 척도가 사용된다.

ITK에서의 최적화는 itk::Optimizer 클래스를 상속받는 객 체 들 을 사 용 한 다 . 이 클 래 스 는 또 다 시 itk::

SingleValuedNonLinearOptimizer 클래스와 itk::

MultiValuedNonLinearOptimizer 클래스로 나뉘게 된다.

전자의 클래스는 비용 함수가 1가 함수(single-valued func- tions)인 경우에 사용 가능하며, 후자의 클래스는 비용 함수가 다치 함수(Multi-valued functions)인 경우에 사용 가능하 다.

1.3.1.3. 영상 변환

영상 변환은 이동 영상의 좌표계를 고정 영상의 좌표계로 변 환해주는 변환 행렬 T를 구하는 과정이다. 이를 이용하여 이동 영상의 좌표 x’을 고정 영상의 좌표 T(x′, p)=x로 변환할 수 있다.

다만 앞서 1.3.1.1 절에서 언급됐던 변환 행렬 T는 T(x, p)=x′의 변환을 해 주는데, 이는 실제 ITK의 동작을 반영한 다. ITK는 정합을 위한 영상 변환 행렬을 만들 때 이동 영상의 좌표계를 고정 영상의 좌표계로 바꿔주지 않고, 그 반대의 변 환을 하는 역변환 행렬을 구하게 된다. 이는 실제로 정합 작업 이 고정 영상의 좌표계 상에 해당되는 이동 영상을 표현하는 작업이라는 점을 반영한 것이다.

따라서 양의 방향으로 움직이는 변환 행렬 T를 만든다고 가 정하면, 실제 이동 영상에 이를 적용시킬 경우 음의 방향으로 움직이게 되며, 시계 방향 회전은 실제 반 시계 방향 회전으로 작동함에 유의하여야 한다.

또한 ITK에서의 영상 정합은 영상의 그리드(grid), 즉 이산 적 좌표계(discrete coordinate system) 대신 물리적 좌표계 (physical coord-inate system)에서 이루어진다. 이는 [그림 8]에 추상화되어 표현되어 있다. ITK가 이러한 방식의 영상 정합 방식을 채택한 이유는, 그리드가 갖는 이산적인 성질 때

그림 8. ITK에서의 영상 변환 행렬의 적용 방식[20]

(9)

문이다.

영상 정합에 그리드를 사용할 경우, 해상도나 픽셀 크기가 다른 경우의(대부분이 그러하다) 영상 정합에 있어 변환 후 그 리드의 모양이 정확히 일치하지 않고, 이 경우 해당 그리드의 픽셀 값을 알기 위해선 리샘플링이 필요해 정확한 정합을 할 수 없기 때문이다.

1.3.1.4. 영상 보간

1.3.1.3 절에서 언급한 바와 같이, 영상 변환은 물리적 좌표 계에서 이루어지기 때문에, 최적화 결과에 따라 변환한 이동 영상은 현재 고정 영상 좌표계의 그리드에 맞춰져 있지 않다.

따라서 그리드의 보간을 위해 반복자(iterator)가 고정 영상 상의 그리드를 훑으며 정해진 규칙에 따라 이동 영상 상의 픽 셀 값을 읽어 들여 고정 영상 그리드 상의 픽셀 값을 정하게 된 다. 이를 영상 보간이라 하는데, 영상 보간을 하기 위해서는 반 복자가 이동 영상 상의 주변 픽셀 값을 읽어오는 규칙을 설정 해야 한다. ITK는 다음과 같은 규칙을 지닌 반복자를 제공한 다.

1.3.2. 데몬 알고리즘

Thirion(1995)에 의해 제안된 데몬 정합 알고리즘은 비강성 3차원 의료 영상 정합을 위한 알고리즘이다 [15]. 기본적으로 데몬 알고리즘은 고정 영상과 이동 영상의 경도(gradient)에 기반한 광학 흐름(optical flow)를 이용하여 데몬(Maxwell’s demon)힘을 계산해 정합에 사용한다. 여기서 언급한 데몬은 Maxwell이 기브스 모순(Gibbs paradox)를 풀 때 사용했던 데몬의 개념과 동일한 것으로, 이 경우에는 한 복셀의 값이 예 상보다 작으면 영상 경도 방향으로 미는 힘이 작용하게 되며, 반대의 경우에는 당기는 힘이 작용하게 된다. Pennec과 Cachier(1999)의 해석에 따르면 이는 경사 하강법 기반 알고 리즘으로 볼 수 있다 [16]. 이 방식에 따르면 고정 영상을 F, 이동 영상을 M이라 할 때, 어떤 복셀의 데몬 힘은 다음과 같 다:

ITK에서는 itk::DemonsRegistrationFilter를 이용하면 데 몬 알고리즘을 이용해 정합을 할 수 있다. 알고리즘은 반복자의 반복 횟수만을 입력받고, 매 반복마다 실제 계산은 itk::DemonsRegistrationFunction 클래스에서 이루어진다.

1.3.3. 정합 알고리즘의 확인

정합 알고리즘의 정확도를 판단하기 위해서는 변환 행렬 적 용 이후 기존 영상과 결과의 비교가 필요하다. ITK에서는 이 를 위해 다음과 같은 정합 결과 확인용 클래스를 제공한다.

표 1.ITK에서의 영상 변환 행렬 연산 클래스

// 이동 행렬: x′= x+t, 물리적 좌표계 기반(이하 동일) itk::TranslationTransform

// 오일러2차원 변환 행렬: x′= Rx+t itk::Euler2DTransform

// 오일러3차원 변환 행렬: x′= RzRyRxx+t itk::Euler3DTransform

// 사원수(Quaternion) 기반 변환 행렬 // 짐벌락이 발생하지 않음

itk::QuaternionRigidTransform // 아핀(Affine) 변환

itk::AffineTransformation // B 스플라인 기반 변환

itk::BsplineDeformableTransform

표 2.ITK에서의 영상 보간 반복자 클래스

// 이동 영상 상에서 반복자와 가장 가까운 그리드 위치의 픽셀 값을 사용한다.

itk::NearestNeighborInterpolateImageFunction

// 이웃한 그리드들의 픽셀 값들을 거리에 비례해 선형적으로 조 합한 값을 사용한다.

itk::LinearInterpolateImageFunction

// B 스플라인(0~5차)커널을 사용하여 보간한다.

itk::BSplineInterpolateImageFunction

// 윈도우 싱크 함수(sinc(x)=sin(πx)/πx)를 사용해 보간한다.

itk::WindowedSincInterpolateImageFunction

그림 9. 이동 영상(가운데)을 고정 영상(좌)에 데몬 알고리즘을 이용 하여 정합한 결과(우)

표 3. 정합 알고리즘 결과 확인용 클래스 목록 // 변환 행렬 적용 후 리샘플링

itk::ResampleImageFilter // 두 영상 간 차이를 연산 itk::SubtractImageFilter

// 두 영상을 체크 무늬 형태로 결합 itk::CheckBoardImageFilter

(10)

1.3.4. 영상 출처

본 연구의 예제에서 사용된 뇌 영상은 Insight Journal에서 공개한 자료들이며, 질병에 의한 뇌의 통계적 형태 분석을 위 한 사전 연구로 건강한 사람들의 뇌 MR 영상을 University of North Carolina의 응용사회문제 연구소에서 획득하여 데 이터베이스화 한 것이다 [17]. 데몬 정합 알고리즘에 사용된 영상은 쥐의 폐 활동을 촬영한 영상이며 ITK에서 공개 배포한 영상이다.

2. ITK 고급 활용법

ITK는 서론 1절에서 언급한 바와 같이 오픈 소스 프레임워 크이므로, 기존의 알고리즘을 재활용하는 것뿐만 아니라 새로 운 알고리즘의 작성 및 추가가 가능하다. 또한 다중 스레딩 및 그래픽 처리 장치 기반 가속 기법을 통해 성능의 향상 역시 가 능하다. 본 절에서는 이러한 ITK의 응용법을 살펴본다.

2.1. 상속을 활용한 새로운 필터 작성

ITK에는 새로운 필터를 쉽게 작성하게 해 주는 부모 클래스 (superclass)들이 존재하여, 이를 상속받으면 새로운 필터를 쉽게 작성할 수 있다. 따라서 ITK에서 필터를 제작하기 위해 서는 원하는 기능에 맞는 부모 클래스를 선택해야 하는데, 필 터 작성용 부모 클래스의 목록은 다음과 같다:

부모 클래스를 설정한 이후에는, New(), PrintSelf(), 생성 자 등의 기본 함수를 작성해야 한다. 이는 각각 용도에 맞게 구 현하면 되며, 경우에 따라서는 추상 함수의 형태로 남겨둘 수 도 있다. 실제 필터의 구현은 GenerateData() 함수에서 구현

되며, 이는 실제 파이프라인에서 데이터를 넘겨줄 때 사용된 다.

ITK의 일반적인 관례로 새로운 필터의 클래스는 확장자 h 파일에 작성한다. 다만, GenerateData() 함수는 헤더 파일에 추상화된 형태(virtual 키워드)로 존재하며, 실제 구현은 확장 자 txx파일(템플릿 구현 코드)에 존재하게 되어 헤더에서 이를 헤더 파일에서 포함(include)하는 형태로 구현한다.

ITK 파이프라인에 자신의 알고리즘을 실제로 추가하기 위해 서는 이 외에도 지켜야 하는 몇 가지 규칙들이 존재한다. 첫째 로 필터는 ITK_EXPORT를 포함하여야 한다. 둘째로 몇가지 타입의 선언(typedef)을 해 줘야 하는데, 그 목록은 다음과 같 다:

생성자 New()함수의 구현은 매크로를 통하여 제작하게 된 다. itkNewMacro(self)와 itkTypeMacro(self, superclass) 를 이용하면, 스마트포인터를 이용하여 New() 함수의 호출이 가능하다. 이 외에 함수를 작성함에 있어 도움이 되는 매크로 들은 ITK Software Guide 13.5.2 절에 정리되어 있다 [18].

2.2. ITK의 다중 스레딩(Multithreading)기법

ITK에서의 다중 스레딩은 itk::MultiThreader 클래스를 사 용 하 여 구 현 된 다 . 다 중 스 레 딩 은 일 반 적 으 로 GenerateData() 함수와 같이 필터나 연산의 실제 가동부에 삽입되는데, ITK의 itk::ImageSource 클래스에는 이러한 내 용이 구현되어 있다.

필터 작성용 부모 클래스를 상속받는 경우의 다중 스레딩은 itk::ImageSource로부터의 상속을 통해 이루어진다. 대부분 의 필터 작성용 부모 클래스는 이 클래스를 상속받아 GenerateData() 함수를 가지고 있고, 이 함수의 다중 스레딩 용 추상 함수인 ThreadedGenerateData()에 필터를 구현하 면 ITK의 파이프라인에서 다중 스레딩으로 작동하게 된다.

이는 GenerateData()의 구현 특징에 기반한다. 함수의 구 현을 살펴보면, itk::ImageSource에 구현되어 있는

표 5. 필수 타입 선언 목록

typedef IMAGE_FILTER_NAME Self;

// 자기 자신을 의미하는 타입 선언

typedef ImageToImageFilter<TImage,TImage> Superclass;

// 부모 클래스(이 경우는ImageToImageFilter)의 타입 선언 typedef SmartPointer<Self> Pointer;

// 스마트포인터의 타입 선언

typedef SmartPointer<const Self> ConstPointer;

// 스마트포인터의 상수형 타입 선언

표 4. 새로운 필터 작성용 부모 클래스

// 영상 분할 등 새로운 영상을 결과물로 만드는 경우 주로 사용 하는 부모 클래스

itk::ImageToImageFilter

// 영상에 특정 단항 함수(연산자)를 적용시키는 경우 사용하는 부모 클래스

itk::UnaryFunctorImageFilter

// 두 개의 영상에 특정 함수(연산자)를 적용시키는 경우 사용하 는 부모 클래스

itk::BinaryFunctorImageFilter

// 영상에 적용시킬 픽셀 단위 함수를 작성하는 부모 클래스 itk::ImageFunction

// 메시의 형태를 변형시키는 함수를 작성하는 부모 클래스 itk::MeshToMeshFilter

// 별다른 특징이 없는 경우, 데이터 처리 파이프라인속에 들어 갈 수 있는 연산을 작성하는 부모 클래스

itk::LightObject

(11)

GenerateData()는 다중 스레딩을 위한 전처리를 한 뒤, 사용 할 스레드 개수에 따라 함수를 실행하고 후처리를 해 주는 방 식으로 구현되어있다. 따라서 단일 스레딩의 경우는 스레드가 1개인 다중 스레딩의 형태로 작동하게 된다.

2.3. 그래픽 처리 장치(GPU)기반 가속 기법

필터 연산의 그래픽 처리 장치 기반 가속은 역시 부모 클래 스의 상속을 통해 이루어진다. 이 경우 상속받게 되는 부모 클 래스는 itk::GPUImageToImageFilter 클래스로, GPU 뿐만 아니라 중앙 처리 장치(CPU)에도 접근할 수 있는 형태로 구 현되어있다. 따라서 GPU 기반 가속 기법을 사용하여 구현한 경우더라도, GPU가 사용 불가능하다면 CPU를 사용하여 작 동한다.

ITK의 itk::GPUDiscreteGaussianFilter 클래스는 이를 이용하여 작성된 이산적 가우시안 필터이다. 따라서 이 클래스 는 필 터 구 현 을 위 해 GenerateData() 함 수 대 신 GPUGenerateData() 함수를 사용하게 된다. 이 때, 데이터 의 타입 역시 itk::GPUTraits 클래스를 이용해 GPU에 맞게 변환하여 사용한다.

결 론

본 논문에서는 의료 영상 연구용 오픈 소스 라이브러리중 하 나인 ITK의 구성 및 추가 구현 방법을 살펴보았다. 이를 통해 알 수 있는 ITK의 장점으로는 기본적인 알고리즘들이 구현되 어 있어 개발자가 아닌 일반 사용자도 쉽게 원하는 영상처리 파이프라인을 빠르게 구현할 수 있다는 점과 개발자의 알고리 즘을 필터로 손쉽고 자유롭게 구현이 가능하며, 또한 하드웨어 적인 가속도 지원한다는 점을 들 수 있다. 그리고 Insight Journal을 통해 다른 연구자들과의 교류가 가능함은 물론 VTK, MITK, MeVisLab 등과의 연동을 통해 시각화 및 구현 이 용이하기때문에 ITK는 의료 영상 연구 종사자들에게 있어 훌륭한 프레임워크가 될 것이다.

- 감사의 글 -

본 연구는 한국연구재단 주관 이공분야 기본연구지원사업 (NRF-2013R1A1A2063656)의 도움을 받아 수행되었습니다.

참 고 문 헌

1. Wolf, Ivo. Toolkits and software for developing biomedical im- age processing and analysis applications. Biomedical Image Processing 2011;521-544.

2. Franz, Alfred M., et al. The Medical Imaging Interaction Toolkit: challenges and advances. International Journal of Computer Assisted Radiology and Surgery 2013;8(10):607-620.

3. Lindeberg, Tony. Discrete scale-space theory and scale-space primal sketch. Dissertation. Royal Institute of Technology 1991.

4. Tomasi, Carlo, and Roberto Manduchi. Bilateral filtering for gray and color images. Sixth International Conference on IEEE Computer Vision 1998;839-846.

5. Sobel, Michael E. Asymptotic confidence intervals for indirect effects in structural equation models. Sociological methodolo- gy 1982;13:290-312.

6. Canny, John. A computational approach to edge detection.

IEEE Transactions on Pattern Analysis and Machine Intelligence 1986;PAMI-8(6):679-698.

7. Lindeberg, Tony. Feature detection with automatic scale selec- tion. International journal of computer vision 1998;30(2):79- 116.

8. Narayanaswamy A. Confidence connected segmentation, Insight Journal 2007.

9. Beucher S., Lantuejoul C. Use of watersheds in contour detec- tion. International Workshop on Image Processing 1979.

10. Beare R., Lehmann G. The watershed transform in ITK - dis- cussion and new developments. Insight Journal 2006.

11. Besag, Julian. On the statistical analysis of dirty pictures.

Journal of the Royal Statistical Society 1986;Series B (Methodological):259-302.

12. Francisco P.M. Oliveira, et al. Medical image registration: a re- view. Computer Methods in Biomechanics and Biomedical Engineering 2012;iFirst article:1-21.

13. P. Markelj, et al. A review of 3D/2D registration methods for image-guided interventions. Medical Image Analysis 2012;16(3):642-661.

14. Paul Viola. Alignment by maximization of mutual information.

International Journal of Computer Vision 1997;24(2):137-154.

15. Jean-Philippe Thirion. Fast non-rigid matching of 3D Medical Images. INRIA 1995.

16. Xavier Pennec, Pascal Cachier, and Nicholas Ayache.

Understanding the “Demon’s Algorithm”: 3D non-rigid regis- tration by gradient descent. MICCAI 1999;597-605.

17. E. Bullitt, J. K. Smith, and W. Lin, Designed database of MR brain images of healthy volunteers. (http://hdl.handle.net/

1926/594)

18. Luis Ibanez, et al. The ITK software guide (Second edition).

http://itk.org

(12)

대한의학영상정보학회지 2013;19:1-12

=초 록=

ITK(Insight Segmentation and Registration Toolkit)는 다양한 영상 처리 알고리즘을 제공하는 오픈 소 스 소프트웨어 개발 프레임워크 중 하나로써 다중 차원의 영상 향상, 분할 및 정합 등 다양한 영상 처리 및 분석 알고리즘을 C++ 기반의 객체 지향 라이브러리 형태로 제공한다. 크로스 플랫폼(cross platform)을 지원하는 ITK는 오픈 소스 Apache 2.0 라이선스(4.1 버전부터)를 사용함으로써 수정 및 배포가 자유롭기 때문에 의료 영 상 처리 및 분석을 위한 상용 소프트웨어 개발에도 활발히 사용되고 있다. 특히 최근에는 GPU를 활용한 영상 처 리를 지원하는 등 많은 발전이 이루어지고 있다.

수치

그림 8. ITK에서의 영상 변환 행렬의 적용 방식 [20]

참조

관련 문서

 이러한 영상효과를 실현하는 장치를 영상 특수효과 장치라고 하며, 영상 의 확대/축소, 위치의 이동과 변형 등 기하적인 처리를 요하기

빅데이터 관련 시장이 성장기에 있고, 이를 활용한 다양한 분석 기술, 장비 및 신규 비즈니스 모델이 개발되는 과정에 있으므로 사업유형을 명확히 구분하기 어렵고, 기존

 첫째, 의료기관이 제공하는 의료서비스 수준의 평가를 통해 의료서비스 질 향상을 도모하고, 의료기관 이용 상 환자의 불편을 최소화하여 양질의 의료 서비스를 국민들이

[r]

매크로 정의에서 매개 변수 앞에 #가 위치하면 매크로 호출에 의하여 전달되는 실제 인수는 큰따옴표로 감싸지고 문자열로

MPLS SD-WAN 장비 Cloud Security as a Service.. (UTM, AV, DLP,

‘OSINT(공개출처정보) 1) ’ 라고도 불리는 ‘오픈 소스 인텔리전트(open source intelligent)’ 기법이나 사이버범죄 수사기법 등 총동원 가능 한 기법의 활용이

제작 기획자의 입장으로 “**애니메이션 공작소”와 같은 우리 모둠의 이름을 짓고, 애니메이션 제작과정에서 각 모둠원이 어떤