Developments/VTK

Developments/VTK

Vtk 필터 분석

vtkContourFilter - SetValue 또는 GenerateValues 를 통해서 이미지에서 contour 영역을 그릴 곳을 선택해서 contour line을 만들어 낸다. vtkOutlineFilter - 입력된 source 의 extent를 정보를 이용하여 외부 경계선을 찾아낸다. vtkWindowToImageFilter - renderwindow의 render 영상을 vtkImageData로 출력한다 vtkTransformPolyDataFilter - PolyData에 transform 을 수행한다. MergePoints - PolyDataSet 에서 Sphere와 겹쳐지는 영역의 points 의 위치 정보를 빠르게 찾는 알고리즘 ImageConstantPad - Image의 Extent..

Developments/VTK

VTK Image 중첩 그리기

vtkStackImage - 이미지를 addImage로 중첩하여 한개의 imageslice로 render 하도록 한다. - 각 imageSlice의 Opacity를 조정하여 한번에 보이도록 할 수 있다. RenderWindow Layer - RenderWindow에서 표시할 layer의 갯수를 지정하고 각 render별로 그리는 layer를 지정하여 actor들을 그리도록 한다. - Layer 0 renderer가 background layer가 되고, 나머지 renderer는 background 색상이 transparent 로 작동한다. vtkImageStencil - stencil 을 이용하여 입력된 이미지에서 그릴 부분을 지정하여 image data를 표시하도록 한다. - port 0 (SetInp..

Developments/VTK

VTK Image Interpolation

vtkImageSlice Interpolation 지정하기 vtkImageSlice는 vtkImageActor 와 vtkImageStack으로 자식 클래스를 갖는다. 또한 ImageSlice는 ImageProperty를 갖는데 여기에서 interpolation 을 지정할 수 있다. Interpolation type은 아래와 같이 정의되어 있고 default는 Linear interpolation 이다. #define VTK_NEAREST_INTERPOLATION 0 #define VTK_LINEAR_INTERPOLATION 1 #define VTK_CUBIC_INTERPOLATION 2 Interpolation type 지정하기 imageSlice.GetProperty().SetInterpolationT..

Developments/VTK

[Activiz] VtkObject Custom Visualizer 구성하기

Activiz 의 경우 C++ dll을 wrapping 한 라이브러이다. 그런 이유로 vtk의 object에 대한 property 값을 확인하기 위해서는 일일이 코드로 작성을 하거나 string 값으로 나오는 전체 변수에 대한 문자열을 통해서 확인을 해야 한다. vtkActor를 예로 watch를 하게 되면 객체 정보를 쉽게 확인할 수가 없다. 모두 저 CppThis 의 HandleRef 메모리 접근을 통해서 값을 얻도록 오픈된 함수를 사용해야만한다. 그런 이유로 vtkObject 를 Dugging visualizer 로 볼 수 있도록 구성하였다. 문자열을 Node 로 Parsing 하여 object을 TreeView로 볼 수 있도록 하였다. .NetFramework 의 기준 Visualizer DLL ..

Developments/VTK

[Activiz] VTK 에러 mteIndex='4294967295'

Activiz에서 vtk 의 객체를 사용하면서 GC의 동작을 예상하지 않고 구현을 하게 되면 발생할 수 있는 에러이다. 이전에도 정리한 글이 있었으나, 의도를 제대로 파악하기 쉽지 않은 것 같아서 다시 정리한다. VTK는 command, event 를 기반으로 renderingwindow 를 제어한다. 그런데 renderwindow 의 renderwindowinteractor를 사용하여 이벤트가 발생 할 때에 참조할 vtk 객체가 Garbage collector에 의해서 메모리가 해제가 되버리는 경우에는 아래와 같이 에러가 발생한다. 구현하면서 발생했던 실제 코드를 통해서 분석해보자. 아래는 WPF에서 windowformhost를 이용하여 renderwindow를 생성하고 button 클릭할때 실행되는 ..

Developments/VTK

VTK Visualization Pipeline 분석

이번에는 VTK의 Pipeline Execution에 구조를 분석하고자 합니다. 시작하기에 앞서 VTK에서 visualization 에서 처리하는 데이터 모델 들에 대한 간단한 용어 정리가 필요합니다. 1. 용어 정리 Proecss Object : Process 객체는 입력데이터에 대해 출력 데이터를 생성하는 객체를 말하며, 입출력 구조에 따라 Source, Filter, Mapper object 로 나뉩니다. Source Object : 입력데이터 없이 출력 데이터를 만들도록 처리하는 객체 Filter Object: 한개 이상의 입력데이터를 기반으로 한개 이상의 출력데이터를 만들도록 처리하는 객체 Sink (Mapper) Object: 출력 데이터는 없이 한개 이상의 입력데이터만을 이용하여 처리하는 객..

Developments/VTK

[QVTK] QVTKOpenGLWindow Interactor 명령어

QVTKOpenGLWindow를 생성하면 default 로 설정되는 interactorstyle은 vtkInteractorStyleTrackballCamera 입니다. 기본적으로 RenderWindow 에서 사용할 수 있는 명령어들 입니다. Surface 모드 : S Wireframe 모드 : W Zoom In/Out : Wheel , 마우스 우측클릭+drag Reset : R Pick : P

Developments/VTK

[QVTK] Visualization Pipeline

이전 글에서 Qt에 VTK를 Widget으로 구성하는 방법을 알아봤었습니다. 일반적으로 VTK 에서 활용하는 RenderWindow와 Interactor를 제어하는 방법이 Qt 의 Widget으로 대체되어 제어되는 것인데, 이것을 구조도로 구성해봤습니다. RenderWindow를 생성하고 interactor를 연결합니다. 방법1. // RenderWindow 객체 생성 vtkNew renderWindow; // Widget에 RenderWindow 객체 입력 ui->openGLWidget->setRenderWindow(renderWindow); // InteractorStyle 입력 vtkNew interactorStyle; ui->openGLWidget->interactor()->SetInteracto..

Developments/VTK

[QVTK] QtWidget에 Vtk RenderWindow 설정하기

본 내용은 Qt6.2.1 + Vtk9.0 버전을 기준으로 작성하였다. 개발 환경 구축을 위한 내용은 다음을 참조하길 바란다. Qt6.2+Vtk9.0+Itk5.2 개발환경구축(예정) QtWidget 에 Vtk의 render window를 설정하는 방법을 설명하고자 한다. 1. OpenGLWidget Promotion Qt Designer의 Widget 상자에서 OpenGL Widget 을 메인 Widget에 추가한다 OpenGLWidget을 오른쪽 마우스 클릭하여 다음으로 승격(Promotion)을 클릭한다. Promotion 창이 나타나면 클래스 이름에 QVTKOpenGLWidget 을 입력하고 추가 후 승격 버튼을 클릭한다. 클래스이름을 입력할 때 대소문자를 맞춰서 입력해야한다. Promotion이 적..

Developments/VTK

[Vtk.Python] Vtk in Python

python example 에서 vtk renderwindow 를 qt에 embeding 하여 실행 할 수 있는 예제를 제공하고 있다. 하지만, 모듈의 업데이트로 인하여 작동하지 않음. 기존 예제파일은 다음과 같이 변경해야 한다. https://www.vtk.org/Wiki/VTK/Examples/Python/Widgets/EmbedPyQt #!/usr/bin/env python import sys import vtk from PyQt5 import QtCore, QtGui from PyQt5 import Qt from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor class MainWindow(Qt.QMainWindow): de..

RichardBang
'Developments/VTK' 카테고리의 글 목록 (4 Page)