분류 전체보기

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

Programming/C#

[C#] Array Conversion 성능 비교

1. 개요 Array 간의 데이터 타입 변환을 수행하고 성능을 비교한다. 2. 비교할 구현 코드 For loop Linq Select Array.ConvertAll [Test] public void TestConvertPerf() { PerfBenchmark bench = new PerfBenchmark("Convert Benchmark"); var intArr = RandomUtils.GenerateInt(500000); int repSize = 1000; bench.Start(); for (int i = 0; i < repSize; i++) { ToDoubleArray(intArr); bench.SaveCheckpoint(); } bench.Stop(); Console.WriteLine($"Avg, ..

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 가 전달되지 않는 상..

Programming/Python

[ImageProcessing] Opencv, PILImage, Tensor 채널 비교

영상처리를 하면서 많이 사용되는 패키지들의 차이를 알아보고 각각의 데이터 구조를 살펴보고 서로간의 데이터 전환을 하는 방법을 정리한다. OpenCV 그동안 제일 익숙한 패키지이다. OpenCV는 기본 적으로 BGR 채널을 사용한다. 내부적으로 Numpy 를 기반으로 데이터 접근이 가능하다. import cv2 from PIL import Image # Load an image with OpenCV image_cv = cv2.imread('path_to_your_image.jpg') # replace with your image path # Convert from BGR to RGB image_cv = cv2.cvtColor(image_cv, cv2.COLOR_BGR2RGB) # Convert to a P..

Developments/VTK

[VTK] Picker Interaction 2

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

RichardBang
'분류 전체보기' 카테고리의 글 목록 (2 Page)