Kitware사에서 제작한 라이브러리 VTK(Visualization Toolkit)는 현재 오픈소스로 공개된 가시화 라이브러리로서 3차원 컴퓨터 그래픽스, 영상 처리, 가시화 등과 관련된 방대한 양의 기능을 제공하고 있다. C++로 구현되어 Tcl/Tk, Python, Java 등의 인터페이스를 제공한다.
VTK가 제공하는 기술들
- Scalar, Vector, Tensor, Texture, Volume 데이터를 위한 가시화 알고리즘
- implicit modeling
- polygon reduction
- mesh smoothing
- cutting
- contouring
- Delaunay triangulation
위와 같이 다양한 가시화 알고리즘 부터 고급 모델링 기술을 제공하는 데다가, 정보 가시화 프레임워크와 다양한 3D 사용자 위젯을 보유함으로써 병렬 처리를 지원하고 MFC, Qt, Tk 등의 GUI와 통합될 수 있다.
또 하나의 강점은 cross platform이라는 점인데, Linux, Windows, Max, Unix 모두에서 사용이 가능하다.
Kitware사는 VTK를 이용해 가스 터빈 연소실 내 가스 연소 과정을 가시화 하거나, 3차원 의료 영상을 가시화 하는 등, 물체의 물리적 변화를 눈으로 확인할 수 있는 영상을 만드는 것이 가능하다.
위 언급한 VTK의 특징을 정리하면,
1. open source
- 단, 라이센스가 필요할 수 있는데, 이 사항은 BSD 라이센스 조항을 확인해야한다고 한다.
- cross platform
- 다양한 운영체제에서 개발과 사용이 가능하다. Cmake를 사용하여 기본 소스코드를 변형해 빌드함으로써 각 플랫폼에 대응하는 소스 코드 생성이 가능하다. 또한 VTK 6.1 이상에서는 vtkWeb 모듈을 사용해 웹브라우저와도 호환이 가능하도록 지원되기 시작했다고 한다.
- Programming Language
- C++을 사용하여 효율성을 극대화하였고, Java, Python 등 다양한 언어로 개발이 가능하다.
- Data Model
- 이 세상에 존재하는 거의 모든 데이터를 표현할 수 있다고 한다. 주요 데이터 세트 클래스로는,
-
vtkImageData
-
vtkRetilinearGrid
-
vtkStructuredGrid
-
vtkPolyData
-
vtkUnstructuredGrid(유한 요소 메시)
등이 있다. 또한 다양한 포멧의 데이터를 지원하는데, 의료 영상 포멧인 DICOM을 지원하여 의학 분야에서도 활발하게 사용되고 있다.
-
Visualization
- VTK 응용 소프트웨어는 주로 vtkAlgorithm들을 연결하여 개발된다. 필터를 연결해 데이터셋을 입력받아 새로운 데이터를 만들어 내고, 이렇게 연결된 필터들은 Data Flow Network를 만들어낸다. 이 과정에서 불필요한 메모리 사용 및 연산을 방지하기 위해 reference counting을 사용하며 모든 알고리즘은 연결성을 보장하기 위해 타입을 체크한다.
- Modeling
- 형상 모델을 다루는 알고리즘으로서, 이러한 형상을 변경시키는 기능들은 정보를 시각적으로 이해하기 쉬운 형태로 만들어준다.
- Image Processing
- 2차원 혹은 3차원 영상의 정보를 여러 처리과정을 통해 결과를 개선, 해석하기 위한 목적으로 이루어지는데, VTK는 영상 처리 필터를 통해 멀티 스레드화 및 관심 영역 별로 스트리밍화 처리를 할 수 있다.
- 3D graphics
- 과학적 surface를 생성하거나 volume rendering하는 기능 등 가시화 기능을 지원한다.
- 2D graphics
- 데이터에 대한 정보를 시각화 한다. 통계 분석 알고리즘을 자체 보유하고 있어 쉽게 정보를 전달하기 위한 차트 기능 등을 지원한다.
- User Interaction
- 데이터를 화면에 표시하는 것과 더불어, 형태와 의미를 잘 파악할 수 있기 위한 기능들 또한 지원한다.
- Multi Thread
- 클러스터 또는 고성능 컴퓨팅 머신의 많은 노드들의 통합 메모리를 활용하여 초고해상도 데이터 세트의 처리 및 가시화를 지원한다. 또한 GPU 기반의 병렬 처리를 지원하여 동시 계산을 고속으로 수행할 수 있게 한다.
위와 같은 기능들을 활용하여, 3차원 악안면 수술 계획 및 3차원 프린팅 모델 설계 소프트웨어, 안와골절 수술 진단 및 분석 소프트웨어 등 의료 영상 분야에서 또한 활용되고 있다.
- 마지막으로, 앞으로 VTK에 대한 내용은 "VTK 프로그래밍"이라는 책의 내용을 공부, 정리한 내용입니다.