vtkTransform에 대해서 작성한 내용이 이전에 있었으니, VTK 내부의 작동 방식을 보며 공부한 내용을 다시 정리하려 합니다.1. vtkTransform 개요vtkTransform 은 Homogeneous Transform 을 기반으로 이동, 회전, 크기 조절등과 같은 3차원 공간에서의 조작을 위한 기능을 제공위한 클래스이다. Homogeneous Transform 은 여러 행렬을 순차적으로 곱을 하여 최종 변형 값을 계산하게 되는데, 이를 위해서 vtkTransformConcatenation 클래스 객체로 내부에 리스트로 저장되어 있는 Transform 데이터를 설정에 따라서 행렬 곱을 수행하고 결과 값을 전달한다. 2. VTK Transform List 저장방식모든 VTK에서의 Transfor..
1. 개요 vtkImageMask Filter의 기본적인 사용 방법을 알아본다. 2. vtkImageMaskFilter Mask filter는 source image 와 mask 이미지간의 중첩되는 픽셀만을 최종 결과 값으로 출력하는 filter이다. 주의할 점은 source image의 채널은 상관없지만 mask image는 component 가 1인 1채널 이미지여야 한다. Masking 은 단순히 0이면 원본 이미지가 통과하지 못하고 0이 아닌 값이면 통과하여 원본이미지 픽셀 값이 그대로 표현된다. Mask filter에는 NotMaskOn을 설정함으로써 Mask를 invser로 적용할 수도 있다. 3. 코드 및 Pipeline 구성 구현한 테스트 코드의 중요 부분과 pipeline의 연결도이다. ..
1. 개요 Target이 되는 Actor 을 지정하고 이를 Interaction 에 따라 변경되는 위치를 추적하여 따라다니는 Tracking 2D Actor를 구현한다. 2. Tracking Image Actor2D vtkImageMapper 에 할당된 이미지를 vtkActor2D 에 입력하고 Tracking을 위한 Interaction event 를 입력한다. public void TestTrackingImageActor2D() { EnableDrawAxes = true; AxesLength = 15; var filePath = Path.Combine(DirPath, "reconnect.png"); var imgData = VtkImageUtils.ReadImageData(filePath); vtkRe..
Camera 제어에서 Clipping 영역을 넘어가는 Actor가 있으면 짤려서 보이지를 않는다. 이를 해결하기 위한 방법 renderer.StartEvt += (sender, arg) =>{ renderer.ResetCameraClippingRange(); } ResetCameraClippingRange : Reset camera에서 clipping 요소만 reset을 한다.
1. 개요 VTK 스크린 화면에 정보를 출력할 때 쉽게 사용할 수 있는 vktCornerAnnotation 을 알아보려고 한다. 구현은 매우 쉬우므로 TextPosition의 정의와 정의되어 있는 Tag를 활용하는 방법을 설명한다. 2. TextPosition Renderer 의 화면을 총 8개의 위치로 정의하며 각 위치별 index와 명칭은 아래와 같다. public void TestTextPosition() { annotation.SetText((int) VtkTextPosition.LowerLeft, $"{(int) VtkTextPosition.LowerLeft}-{VtkTextPosition.LowerLeft}"); annotation.SetText((int) VtkTextPosition.Lowe..
1. 개요 카메라를 정의하는데 필요한 속성 정보는 이전에 설명한 내용과 같고 이를 설명하는데 있어 개념적으로 헷갈릴 수 있는 부분을 보충하기 위한 내용을 작성한다. [VTK] Camera 제어하기 — 로봇을 품은 개발자 이야기 (tistory.com) [VTK] Camera 제어하기 Camera 속성알기 Position : camera 가 3차원공간에 있는 위치이다. FocalPoint : camera 3차원 공간을 바라보고 있는 초점의 위치이다. View Angle : Pinhole 카메라 모델을 적용하였을 때에 camera가 보는 시점의 화 richardworld.tistory.com 카메라의 속성에서 가장 중요한 것은 Position 과 Focal point이다. 이는 Camera가 바라보는 방향 ..
1. 개요 PolyData를 단면으로 절단하면 새로운 절단된 면이 생긴다. 절단된 면은 Points 로 구성되며 같은 데이터를 이용하여 단면을 이루는 외곽선을 그릴 수 있다. 2. 구현 vtkCutter : 입력된 PolyData 를 입력된 vtkImplicitFunction을 이용하여 절단 기능을 수행한다. 절단된 된 면의 포인트와 라인을 갖는 Polydata를 생성한다. vtkDelaunay2D : 입력된 points 데이터를 이용하여 삼각형 polygons을 생성한다. vtkStripper : 삼각형 polydata 를 stripper 데이터로 생성한다. Stripper는 중복되는 데이터를 정리하여 메모리 소모를 줄일 수 있다. vtkCutter의 출력데이터를 입력하면 한개의 line 으로 만들고,..
VTK 의 Renderer를 여러개 사용하는 방법을 공부한 것을 간단하게 정리하려고 한다. 개념적인 부분에 대한 설명에서는 개인적인 이해에 따라 작성한 것이므로 잘못된 내용도 있을 수 있다. 1.개요 VTK 의 RenderWindow는 Rendering 수행을 관리하는 Renderer 를 등록하여 관리한다. 그리고 Renderer는 독립적인 버퍼를 갖고 활성화된 Camera 정보를 이용하여 Actor와 같은 Prop을 그린다. RenderWindow는 컨트롤마다 한개만을 갖고 있으나 Renderer 는 여러개를 갖고 독립적으로 관리할 수 있다. 여러개의 Renderer 를 만들고 원하는 목적에 따라서 관리한다면 어떻게 활용해야 할 것인가.. 2. Multi Renderer Viewport 여러개의 Ren..
1. 좌표 시스템의 기본 구성 의료영상을 다루는 시스템 별로 주요 적으로 활용하는 이미지 평면의 기준 좌표를 정리한다. 좌표계는 CT, MRI 의 장비 기준의 좌표계, 해부학적인 좌표계, 그리고 이미지 좌표계로 구분할 수 있다. 우선 의료 영상 분석을 위해서는 CT, MRI 장비를 촬영할 것이고 DICOM 의료영상 데이터로 저장하게 된다. 촬영된 영상데이터는 아래와 같이 환자의 입장에서 바라보는 것이 아니라 거울에 비춰진 것 처럼 좌우가 반대되어 바라보는 위치에서 영상을 마주하게 된다. 참고로 의료영상에서 보편적인것이 DICOM 이기는 하지만 최근 NIfTI format 의 영상도 많이 사용되는 것 같다. 두개의 데이터는 크게 다르지 않으나 생겨난 목적과 작은 차이가 있다. DICOM ( Digital ..
VTK에서 Picker는 렌더링 공간에서 사용자 반응에 필요한 정보를 제공하는 역할을 한다. 이를테면 3차원 공간에서의 마우스의 위치 정보 또는 Actor를 pick 할 때 사용할 수 있다. Picker 는 Geometry 방법의 Picker 와 Hardware 방법의 Picker 로 나뉜다. Geometry pickers : vtkPicker, vtkCellPicker, vtkPointPicker Hardware Pickers : vtkWorldPointPicker, vtkPropPicker vtkAbstractPicker Picker의 최상단 추상화클래스 vtkWorldPointPicker Screen에서 투영되는 3차원 공간의 위치 값을 찾는다. actor, mapper는 pick 하지 못한다. v..