Developments

Developments/VTK

[VTK] Interactor observer 알아보기

VTK 의 RenderWindow에서 interaction 을 수행하기 위한 이벤트 처리에 대한 흐름 내용과 Interaction Style을 구현하는 방법을 공부한 것을 간단하게 정리하려고 한다. 개념적인 부분에 대한 설명에서는 개인적인 이해에 따라 작성한 것이므로 잘못된 내용이 있거나 설명이 부족할 수도 있다. 1. 개요 RenderWindow의 interactor는 사용자와의 상호작용을 수행하기 위한 관리자와 같다. Observer 패턴으로 구현되어 있어 사용자는 처리하고 싶은 이벤트를 등록하고 observer에서 해당 이벤트가 발생하면 사용자가 등록한 callback 함수를 수행하도록 한다. 2. Interactor Observer vtkRenderWindowInteractor는 RenderWin..

Developments/VTK

[VTK] Multi Renderer 알아보기

VTK 의 Renderer를 여러개 사용하는 방법을 공부한 것을 간단하게 정리하려고 한다. 개념적인 부분에 대한 설명에서는 개인적인 이해에 따라 작성한 것이므로 잘못된 내용도 있을 수 있다. 1.개요 VTK 의 RenderWindow는 Rendering 수행을 관리하는 Renderer 를 등록하여 관리한다. 그리고 Renderer는 독립적인 버퍼를 갖고 활성화된 Camera 정보를 이용하여 Actor와 같은 Prop을 그린다. RenderWindow는 컨트롤마다 한개만을 갖고 있으나 Renderer 는 여러개를 갖고 독립적으로 관리할 수 있다. 여러개의 Renderer 를 만들고 원하는 목적에 따라서 관리한다면 어떻게 활용해야 할 것인가.. 2. Multi Renderer Viewport 여러개의 Ren..

Developments/VTK

[VTK] vtkTransform 사용하기

vtkTransform 에서는 모든 Transform 을 concatenate 방식으로 적재하여 최종 transform 을 구한다. Concatenate 된 Transform 을 무시하고 원하는 위치나 회전 값으로 변경하기 위해서는 새로운 객체에 값을 입력하고 Matrix로 업데이트 하는 방식을 해야한다. var originXfm = vtkTransform.New(); originXfm.Translate(10, 20, 30); originXfm.RotateX(50); originXfm.Translate(100, 200, 100); originXfm.GetMatrix().SetElement(0,3, -50);// Warning 발생 직접 Transform의 Matrix에 접근하여 Element 업데이트를 ..

Developments/Medical Imaging

의료영상 좌표시스템 in CT, DICOM, Vtk, Itk

1. 좌표 시스템의 기본 구성 의료영상을 다루는 시스템 별로 주요 적으로 활용하는 이미지 평면의 기준 좌표를 정리한다. 좌표계는 CT, MRI 의 장비 기준의 좌표계, 해부학적인 좌표계, 그리고 이미지 좌표계로 구분할 수 있다. 우선 의료 영상 분석을 위해서는 CT, MRI 장비를 촬영할 것이고 DICOM 의료영상 데이터로 저장하게 된다. 촬영된 영상데이터는 아래와 같이 환자의 입장에서 바라보는 것이 아니라 거울에 비춰진 것 처럼 좌우가 반대되어 바라보는 위치에서 영상을 마주하게 된다. 참고로 의료영상에서 보편적인것이 DICOM 이기는 하지만 최근 NIfTI format 의 영상도 많이 사용되는 것 같다. 두개의 데이터는 크게 다르지 않으나 생겨난 목적과 작은 차이가 있다. DICOM ( Digital ..

Developments/VTK

[Activiz] vtkBoxWidget VolumeClip

Volume 이미지 데이터를 vtkBoxWidget의 Plane을 이용하여 vtkImageSliceMapper의 Clipfunction으로 적용하여 Volume clip 제어하는 구성

Developments/VTK

[VTK] Camera 제어하기

Camera 속성알기 Position : camera 가 3차원공간에 있는 위치이다. FocalPoint : camera 3차원 공간을 바라보고 있는 초점의 위치이다. View Angle : Pinhole 카메라 모델을 적용하였을 때에 camera가 보는 시점의 화각이다. View Up : Camera 의 상단방향의 vector 이며, projection vector와는 수직이다. Clipping : Rendering 할 영역역의 경계선이다. 이 경계선 밖의 모델은 그려지지 않는다. Camera Rotation Camera는 Focal point를 pivot 하여 rotation 제어를 할 수 있다. Elevation (Pitch) : -Projection_vector 와 ViewUp_vector 의 c..

Developments/VTK

[VTK] Picker Interaction

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..

Developments/VTK

[VTK] vtkPolyData 분석하기

VTK 의 기본 Geometry 를 구현하기 위해서는 몇 가지의 클래스를 알아야 한다. vtkPoints 3차원 위치 정보를 갖는 최소단위의 데이터를 Array타입으로 갖는 클래스. 1~N 개의 Point 데이터를 갖는다. vtkCell 여러 Geometry 타입의 클래스들의 추상화 클래스이다. Cell은 구현 클래스에 따라 Cell을 구성하는 포인트의 갯수가 달라진다. Cell의 vertex index에 연결할 vtkPoints 의 index 값을 지정하여 Cell 을 만든다. ex) vtkVertex : 1개 vtkLine : 2개 vtkTriangle : 3개 vtkPolygon : N개 vtkCellArray Cell의 형상을 구성하는 vertex의 id 와 vtkPoints 데이터의 id를 연결..

Developments/VTK

[VTK] Transformation 분석하기

3차원 공간에서의 좌표계 변환을 하기 위해서는 4x4 Matrix를 사용하게 된다. 이를 Transformation 에서는 Homogeneous Transformation 이라고 명칭한다. VTK 에서 vtkHomogeneousTransform과 vtkLinearTransform 을 abstract 클래스로 아래와 같이 정의하고 있다. vtkHomogeneousTransform을 상속한 하위 클래스들은 각 클래스의 명칭에 맞게 그 기능들이 최적화 되어 있다. vtkMatrixToHomogeneousTransform / TestMatrixToLinearTransform - vtkMatrix4x4를 SetInput으로 입력받아 Transform 객체를 생성한다. - 두개의 클래스는 각각의 하위 클래스에 입력..

Developments/VTK

[VTK] VTK, DICOM, CT 좌표계 분석

이전에 설명한 VTK의 이미지 좌표계와 Dicom 이미지 좌표계는 다르다. 여기에서 한가지 더 참고해야 할 것은 Dicom 이미지는 CT나 MRI 와 같은 장비에서 촬영한 영상이다. 이때 Dicom의 Meta data에는 Image Position Patient (0020, 0032) Tag 정보가 있다. 이는 촬영 장비의 원점에서 Dicom 영상의 좌측상단까지의 위치 값을 나타낸다. 각각의 좌표계에서 보는 이미지를 구성하기 위해서는 각 좌표계별 Transformation 을 구해야한다. 명칭 좌표계 원점 CT좌표계 장비의 원점 LPS Dicom 좌표계 이미지의 좌측상단 LPS Vtk 좌표계 이미지의 좌측하단 i : x axis j : -y axis k : z axis 각각의 좌표계로의 변환식을 구한다...

RichardBang
'Developments' 카테고리의 글 목록 (3 Page)