NA-MIC National Alliance for Medical Image Computing VTK Widgets William J. Schroeder Kitware, Inc. June 2006
National Alliance for Medical Image Computing Thanks National Library of Medicine / NIH –Dr. Terry Yoo: A2D2 awards (Algorithms, Adaptors, and Data Distribution) National Science Foundation –Visual Journal project NIH National Center for Biomedical Computing –NAMIC Contributors –Will Schroeder –Lisa Avila –Karthik Krishnan –Brad King –Sebastien Barre –Dave Cole
National Alliance for Medical Image Computing Overview Goals Architecture Widgets Implementation
National Alliance for Medical Image Computing Goals Improve human-data interaction Provide palette of widgets supporting –Segmentation –Registration –Data interaction –Text and annotation –Light, camera, etc. manipulation Support client-server (distributed) computing Rework initial design
National Alliance for Medical Image Computing Design Goals Separate representation from event processing –Support distributed processing (client-server) Introduce translation mechanism between events and widget behavior Support hierarchical use of widgets Create general “handle” framework for positioning points
National Alliance for Medical Image Computing Architecture Decoupling representation from event processing RenderWindow vtkAbstractWidgetvtkWidgetRepresentation (type of vtkProp) Events Renderer Render()
National Alliance for Medical Image Computing 7 vtkHandleWidget vtkPointHandleRepresentation2D vtkPointHandleRepresentation3D vtkSphereHandleRepresentation vtkPolygonalHandleRepresentation Behavior Geometry One widget, multiple geometries 2D Cross hair 3D Cross hair Spherical handle User defined polygonal shape
National Alliance for Medical Image Computing Event Translation
National Alliance for Medical Image Computing 9 Widget Assemblies Create composite widgets from several individual widgets Children listen to events from Parent. Hence parent can alter behavior of child Parent Child RenderWindow Events
National Alliance for Medical Image Computing Widget Hierarchies Example: vtkDistanceWidget –Uses two instances of vtkHandleWidget –Responds to events from its handles –Notion of “parent” Reduce number of events Reduce number of Render() invocations –Can change behavior of widget by using different types of handles HandleWidget
National Alliance for Medical Image Computing Handle Framework Types of handles –2D (display space) –3D (world space) –Constrained To plane To surface Etc?
National Alliance for Medical Image Computing 12 Constraints – Point Placers To map 2D display positions to 3D world coordinates. Does a 2D display position map to: –Focal Plane ? –Point on a surface ? –Point on a plane / image ? –Out of bounds ? Allows a variety of constraints to be placed the placement of widgets.
National Alliance for Medical Image Computing 13 vtkPointPlacer
National Alliance for Medical Image Computing 14 VTK currently has widgets to perform –Measurements –Annotation and Labeling –Segmentation –Registration –Data interaction –Scene parameter manipulation: Light, camera, etc. –Probing underlying data Timer support Multiple geometrical representations for the same widget Reconfigurable key/mouse bindings Grouping widgets Widgets
National Alliance for Medical Image Computing Widgets Handles
National Alliance for Medical Image Computing Widgets (cont.) vtkSliderWidget –2D –3D vtkBorderWidget –Widgets with rectangular borders vtkTextWidget –Position & size text
National Alliance for Medical Image Computing Widgets (cont.) BalloonWidget –Text and/or image in rectangular popup
National Alliance for Medical Image Computing Widgets (cont.) vtkCameraWidget –Keyframe & playback camera vtkCaptionWidget –Text with leader
National Alliance for Medical Image Computing Widgets (cont.) vtkCheckerboardWidget –Interleave two images vtkRectilinearWipeWidget –Window pane (2x2 checkerboard) with movable focus
National Alliance for Medical Image Computing Widgets (cont.) vtkContourWidget –2D (on plane) : vtkBoundedPlanePointPlacer –3D move through slices in volume : vtkImageActorPointPlacer
National Alliance for Medical Image Computing Widgets (cont.) –Livewire (shortest path, set arbitrary cost functions, for instance gradient of image) –Dijkstra trace paths on polygonal data
National Alliance for Medical Image Computing Widgets (cont.) vtkContourWidget : Users can plug in their own interpolators Bezier contours Polygon tracing Live wire Trace on meshes Trace on Digital elevation map data
National Alliance for Medical Image Computing Widgets (cont.) vtkDistanceWidget –Measure distance between points vtkAngleWidget –Measure angles
National Alliance for Medical Image Computing Widgets (cont.) vtkSeedWidget –Add one or more seeds / markers vtkAffineWidget –Translate –Scale –Rotate –Shear images
National Alliance for Medical Image Computing Widgets (cont.) vtkBiDimensionalWidget –Tumor response (RECIST vs WHO)
National Alliance for Medical Image Computing Widgets (cont.) BoxImplicit Plane
National Alliance for Medical Image Computing Widgets (cont.) Finite PlaneLine
National Alliance for Medical Image Computing Widgets (cont.) vtkScalarBarWidgetvtkSphereWidget
National Alliance for Medical Image Computing Widgets (cont.) vtkImagePlaneWidget
National Alliance for Medical Image Computing Widgets (cont.) vtkParallelopipedWidget (3D Affine) vtkTensorProbeWidget Probe tensors along a tract
National Alliance for Medical Image Computing Widgets (cont.) vtkSplineWidget
National Alliance for Medical Image Computing 32 Widget Sets Grouping widgets on multiple render windows, relieving the application of the responsibility of doing so. RenderWindow Event Widget RenderWindow Event Widget RenderWindow Event Widget WidgetSet Event