Developments

Developments/VTK

[VTK] Mesh Smoothing Filters

GPT 답변vtkSmoothPolyDataFilter와 vtkWindowedSincPolyDataFilter 두 필터는 모두 VTK (Visualization Toolkit)에서 제공하는 메쉬 스무딩(정점 위치 조정을 통한 표면 평활화) 기능을 수행하지만, 각기 다른 알고리즘과 특성을 가지고 있습니다. 이들의 주요 차이점을 이해하는 것은 특정 응용 프로그램에 적합한 필터를 선택하는 데 중요할 수 있습니다.vtkSmoothPolyDataFilter알고리즘: vtkSmoothPolyDataFilter는 간단한 래플라시안 스무딩 기법을 사용합니다. 이 방법은 각 정점을 그 이웃 정점의 평균 위치로 이동시킴으로써 메쉬를 평활화합니다. 이 과정은 여러 번 반복될 수 있으며, 각 반복은 스무딩의 정도를 증가시킵니다..

Developments/VTK

[VTK] VTK File Extension

1. 개요 VTK 에서 지원하는 파일 타입을 알아본다. 2. 지원 파일 File Extension Description Data Types .vtk Legacy VTK format. Stores a wide range of data types in either ASCII or binary format. Structured and unstructured grids, polygons, images .vti VTK XML Image Data format. Stores structured points or image datasets. Structured points, images .vtp VTK XML PolyData format. Stores polygonal data. Polygons .vtu VTK XML..

Developments/VTK

[VTK] Painting Mask Image 생성하기

1. 개요 입력된 원본 이미지의 Painting 작업을 위해서는 Mask 용 이미지데이터가 필요하다. 이를 위해 원본 이미지에 맞는 Painting Mask 용 이미지 데이터를 생성하고 임의의 영역에 대한 초기값을 입력하는 것을 알아본다. 2. Painting Source 만들기 Masking 용으로 사용되는 이미지는 Compoenent가 1이며 unsigned char 타입의 scalar type을 갖는다. 원본이미지의 Spacing, Dimension, Origin만 참고하여 새로운 이미지 데이터를 만들면 된다. public void CreatePaintingSourceImageData() { paintData = vtkImageData.New(); paintData.SetOrigin(0, 0, 0)..

Developments/VTK

[VTK] Modified 심화

1. 개요 Pipeline에서 Modified 가 발생할 경우 이루어지는 내부 workflow를 분석한다. 2. 연결된 Pipeline 구성도 3. Pipeline 동작 분석 Interactor 이벤트를 통해 Mask의 픽셀을 변경하고 Modified()를 호출하면 내부적으로 RenderWindow의 Render를 실행하는데 이때 Modified 가 있는 Filter가 있으므로 다음과 같은 순서로 Pipeline이 동작한다. Mask:vtkImageCanvasSource2D에서 Modified를 호출하고 Rendering을 하면 Modified 된 Pipeline 에 영향을 받는 하위 Pipeline filter들은 Progress Start -> Progress[n] -> Progress End 순으로..

Developments/VTK

[VTK] Image Mask Filter

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의 연결도이다. ..

Developments/VTK

[VTK] Tracking ImageActor2D

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

Developments/VTK

[VTK] vtkDataSet 분석하기 (feat. vtkLookupTable)

1. 개요 VTK를 이용한 데이터 처리를 할 때 가장 많이 사용하는 vtkImageData와 vtkPolyData의 구조를 분석하고, 특히 Scalar 값의 의미와 이를 활용하여 수행할 수 있는 vtkLookupTable을 활용한 색상 표시등의 활용도를 정리한다. 2. vtkDataSet 관계도 vtkDataSet은 추상화 클래스이며 이를 파생한 클래스 중에 vtkImageData와 vtkPolyData가 존재한다. vtkDataSet에서 중요한 데이터는 Cell, CellData, Point, PointData이다. Point : DataSet에서 기본이 되는 데이터이다. Point는 0-Dimension을 갖는 기본 구성 데이터이다. 하지만 VTK 에서는 3차원 데이터를 기본으로 하고 있어서 doub..

Developments/VTK

[VTK] Pipeline Update, Modified

1. 개요 이전글에서 VTK Pipeline의 동작에 대해서 알아봤었다. VTK Pipeline 동작방식을 간단히 정리해보면 Chain 방식과 Demand-driven 방식이다. 각 Filter 들은 SetInpuConnection 을 통해서 서로 연결을 하며, Update 요청에 따라 Upstream request 가 발생하여 각 filter마다 변경사항이 있는지를 확인하고 변경사항이 있을 경우에만 Updated 된 데이터를 반영하여 결과 값을 다음 filter에게 전달하도록 한다. 하지만, 우리는 VTK에는 Pipeline 방식 뿐만 아니라 Data 입력방식 또한 알아야 한다. 간단히 말해서 Chain 으로 연결되지 않고 일회성으로 데이터가 연결되어 Upstream request 가 전달되지 않는 상..

Developments/VTK

[VTK] Picker Interaction 2

1. 개요 이전 글에서 Picker의 종류들과 각각의 사용방법에 대해 알아봤었다. 이번에는 vtkPicker 를 사용하는데 알아두면 좋을 vtkPickingManager와 PickList를 알아보려고 한다. 2. vtkPickingManager Picking 은 Renderer 의 Scene 에서 기하학적 계산을 많이 하므로 매우 computation 소모가 큰 작업이다. 그렇기에 VTK 에서는 vtkRenderWindowInteractor 에서 관리하는 vtkPickingManager를 객체를 만들었고, 이를 통해서 중복적으로 picker 객체를 사용하는 것을 방지하기 위한 관리용 객체를 정의하고 있다. PickingManager는 하나의 interactor 에서 여러개의 picker가 중복적으로 사용..

Developments/VTK

vtkTransform Multiply 비교

1. 개요 vtkTransform 의 PreMultiply와 PostMultiply 방식을 비교한다. 2. PreMultiply Matrix 곱을 수행할 때 기존의 matrix를 pre 즉 앞단에 놓고 계산을 한다. 함수의 명칭때문에 헷갈리지만 명칭의 기준이 기존 matrix 값을 의미한다. Matrix = PrevMatrix * NewMatrix 로 표현할 수 있다. 이럴 경우 matrix의 좌표계는 상대 좌표계로 계산된다. 3. PostMultiply PreMultipy 와 반대로 기존 matrix 값을 post 뒷단에 놓고 계산 한다. Matrix = NewMatrix * PrevMatrix 로 표현할 수 있다. 이럴 경우 matrix의 좌표계는 월드 좌표계로 계산된다. 3. 구현 vtkAnnota..

RichardBang
'Developments' 카테고리의 글 목록