vtkContourFilter - SetValue 또는 GenerateValues 를 통해서 이미지에서 contour 영역을 그릴 곳을 선택해서 contour line을 만들어 낸다. vtkOutlineFilter - 입력된 source 의 extent를 정보를 이용하여 외부 경계선을 찾아낸다. vtkWindowToImageFilter - renderwindow의 render 영상을 vtkImageData로 출력한다 vtkTransformPolyDataFilter - PolyData에 transform 을 수행한다. MergePoints - PolyDataSet 에서 Sphere와 겹쳐지는 영역의 points 의 위치 정보를 빠르게 찾는 알고리즘 ImageConstantPad - Image의 Extent..
Format Specifiers Here is a quick reference to all the conversion specifiers supported. Number Formats CHARACTERDESCRIPTIONUSAGEEXAMPLE c Currency {0:c} $ 55,674.74 e Scientific {0:e} 5.567474e+004 f Fixed point {0:f} 55674.74 g General {0:g} 55674.73789621 n Thousand Separator {0:n} 55,674.74 Custom Formats CHARACTERDESCRIPTIONUSAGEEXAMPLE 0 Zero Placeholder {0:00.00} 55674.74 # Digit Placehold..
참고 URL : https://stackoverflow.com/a/50672299 Difference between Synchronization Context and Dispatcher I am using Dispatcher to switch to UI thread from external like this Application.Current.Dispatcher.Invoke(myAction); But I saw on some forums people have advised to use SynchronizationContext in... stackoverflow.com
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..
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..
Activiz 의 경우 C++ dll을 wrapping 한 라이브러이다. 그런 이유로 vtk의 object에 대한 property 값을 확인하기 위해서는 일일이 코드로 작성을 하거나 string 값으로 나오는 전체 변수에 대한 문자열을 통해서 확인을 해야 한다. vtkActor를 예로 watch를 하게 되면 객체 정보를 쉽게 확인할 수가 없다. 모두 저 CppThis 의 HandleRef 메모리 접근을 통해서 값을 얻도록 오픈된 함수를 사용해야만한다. 그런 이유로 vtkObject 를 Dugging visualizer 로 볼 수 있도록 구성하였다. 문자열을 Node 로 Parsing 하여 object을 TreeView로 볼 수 있도록 하였다. .NetFramework 의 기준 Visualizer DLL ..
View 의 Property 를 ViewModel 에 binding 할 때 Code 에서 직접 binding 하는 방법 public static readonly DependencyProperty SliceOffsetDependency = DependencyProperty.Register("SliceOffset", typeof(int), typeof(DicomView), new PropertyMetadata(10, OnSliceChanged)); private static void OnSliceChanged(DependencyObject source, DependencyPropertyChangedEventArgs e) { DicomView view = (DicomView)source; int newData..
View Control의 Property를 외부에서 Binding 하기 위해서는 DependencyObject 를 등록해야한다. DependencyObject는 Control에 종속되어 있는 데이터 값이 아니라 Control 외부에 있는 데이터 저장소에 있는 값을 말한다. 이유는 View의 객체에 종속되어 있는 객체를 참조하기 보다는 binding 할 때는 여러 객체와의 데이터를 연결하기 위해서 외부 저장소에 있는 메모리를 참조하여 각자 상태를 업데이트하는 것이 효율적이기 때문인 것 같다. 그러므로 Control의 Property 를 Binding 하기 위해서 아래와 같이 DependencyObject에 등록을 한다. 이렇게 등록된 Property 의 Get,Set 은 실제로 코드 단계에서는 동작하지 않..
Activiz에서 vtk 의 객체를 사용하면서 GC의 동작을 예상하지 않고 구현을 하게 되면 발생할 수 있는 에러이다. 이전에도 정리한 글이 있었으나, 의도를 제대로 파악하기 쉽지 않은 것 같아서 다시 정리한다. VTK는 command, event 를 기반으로 renderingwindow 를 제어한다. 그런데 renderwindow 의 renderwindowinteractor를 사용하여 이벤트가 발생 할 때에 참조할 vtk 객체가 Garbage collector에 의해서 메모리가 해제가 되버리는 경우에는 아래와 같이 에러가 발생한다. 구현하면서 발생했던 실제 코드를 통해서 분석해보자. 아래는 WPF에서 windowformhost를 이용하여 renderwindow를 생성하고 button 클릭할때 실행되는 ..