VTK - 1

yoon·2025년 2월 26일

VTK

목록 보기
1/11

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 라이센스 조항을 확인해야한다고 한다.
  1. cross platform
  • 다양한 운영체제에서 개발과 사용이 가능하다. Cmake를 사용하여 기본 소스코드를 변형해 빌드함으로써 각 플랫폼에 대응하는 소스 코드 생성이 가능하다. 또한 VTK 6.1 이상에서는 vtkWeb 모듈을 사용해 웹브라우저와도 호환이 가능하도록 지원되기 시작했다고 한다.
  1. Programming Language
  • C++을 사용하여 효율성을 극대화하였고, Java, Python 등 다양한 언어로 개발이 가능하다.
  1. Data Model
  • 이 세상에 존재하는 거의 모든 데이터를 표현할 수 있다고 한다. 주요 데이터 세트 클래스로는,
  1. vtkImageData

  2. vtkRetilinearGrid

  3. vtkStructuredGrid

  4. vtkPolyData

  5. vtkUnstructuredGrid(유한 요소 메시)
    등이 있다. 또한 다양한 포멧의 데이터를 지원하는데, 의료 영상 포멧인 DICOM을 지원하여 의학 분야에서도 활발하게 사용되고 있다.

  6. Visualization

  • VTK 응용 소프트웨어는 주로 vtkAlgorithm들을 연결하여 개발된다. 필터를 연결해 데이터셋을 입력받아 새로운 데이터를 만들어 내고, 이렇게 연결된 필터들은 Data Flow Network를 만들어낸다. 이 과정에서 불필요한 메모리 사용 및 연산을 방지하기 위해 reference counting을 사용하며 모든 알고리즘은 연결성을 보장하기 위해 타입을 체크한다.
  1. Modeling
  • 형상 모델을 다루는 알고리즘으로서, 이러한 형상을 변경시키는 기능들은 정보를 시각적으로 이해하기 쉬운 형태로 만들어준다.
  1. Image Processing
  • 2차원 혹은 3차원 영상의 정보를 여러 처리과정을 통해 결과를 개선, 해석하기 위한 목적으로 이루어지는데, VTK는 영상 처리 필터를 통해 멀티 스레드화 및 관심 영역 별로 스트리밍화 처리를 할 수 있다.
  1. 3D graphics
  • 과학적 surface를 생성하거나 volume rendering하는 기능 등 가시화 기능을 지원한다.
  1. 2D graphics
  • 데이터에 대한 정보를 시각화 한다. 통계 분석 알고리즘을 자체 보유하고 있어 쉽게 정보를 전달하기 위한 차트 기능 등을 지원한다.
  1. User Interaction
  • 데이터를 화면에 표시하는 것과 더불어, 형태와 의미를 잘 파악할 수 있기 위한 기능들 또한 지원한다.
  1. Multi Thread
  • 클러스터 또는 고성능 컴퓨팅 머신의 많은 노드들의 통합 메모리를 활용하여 초고해상도 데이터 세트의 처리 및 가시화를 지원한다. 또한 GPU 기반의 병렬 처리를 지원하여 동시 계산을 고속으로 수행할 수 있게 한다.

위와 같은 기능들을 활용하여, 3차원 악안면 수술 계획 및 3차원 프린팅 모델 설계 소프트웨어, 안와골절 수술 진단 및 분석 소프트웨어 등 의료 영상 분야에서 또한 활용되고 있다.

  • 마지막으로, 앞으로 VTK에 대한 내용은 "VTK 프로그래밍"이라는 책의 내용을 공부, 정리한 내용입니다.
profile
공부하자

0개의 댓글