NA-MIC National Alliance for Medical Image Computing Slicer4 Guided Tour Steve Pieper, Ph.D.

Slides:



Advertisements
Similar presentations
National Alliance for Medical Image Computing User Desktop Slicer 3.0 Architecure AlgorithmsITKVTK Slicer Modules VTK Apps Using ITK.
Advertisements

National Alliance for Medical Image Computing Slicer3 Architecture.
Jean-Christophe Fillion-Robin & Julien Finet Kitware Inc. June 20 th 2011.
NA-MIC National Alliance for Medical Image Computing 3D Slicer Qt Port & qCTKWidgets Steve Pieper, Ph.D.
National Alliance for Medical Image Computing Slicer MRML MRML Library provides API for managing medical image data types (Volumes, Models,
Tutorial 12: Enhancing Excel with Visual Basic for Applications
NA-MIC National Alliance for Medical Image Computing 3D Slicer Version 4 Architecture and Status Steve Pieper, Ph.D.
National Alliance for Medical Image Computing Anatomy of a plugin Common architecture for interactive and batch processing.
Simple Git Steve Pieper. Topics Git considerations and Slicer Git as if it were svn Git the way it is meant to be.
NA-MIC National Alliance for Medical Image Computing Slicer3 and Slicer4 Steve Pieper, PhD Chief Architect for 3D Slicer Engineering.
MITK Diffusion (under the hood)
NA-MIC National Alliance for Medical Image Computing 3D Slicer Interactive Modules Steve Pieper, PhD.
NA-MIC National Alliance for Medical Image Computing Slicer Custom Modules Steve Pieper, PhD.
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering End-user Platform Steve Pieper Isomics, Inc.
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering End-user Platform Steve Pieper Isomics, Inc.
NA-MIC National Alliance for Medical Image Computing IGT Software Design and Process Bill Lorensen GE Research.
3D Slicer Architecture and Implementation
AMI GUI Design V1.1 by Kilian Pohl - Reflects changes in AMI MRML Structure - Includes feedback from AMI Workshop in Dec 09.
Core 1b – Engineering Dynamic Coding a.k.a. Python in Slicer
NA-MIC National Alliance for Medical Image Computing NAMIC-Kit Update Will Schroeder Jim Miller Bill Lorensen.
NA-MIC National Alliance for Medical Image Computing Why NITRC Matters to NA-MIC Steve Pieper, PhD.
NA-MIC National Alliance for Medical Image Computing Slicer4 CLI Slicer Execution Model.
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering Highlights, Aims and Architecture Will Schroeder Kitware.
Workflow based Slicer IGT Module : Tutorial Andinet Enquobahrie, PhD Kitware Inc December, 2008.
Segmentation support in Slicer Csaba Pinter Laboratory for Percutaneous Surgery, Queen’s University, Canada.
3461A Readings from the Swing Tutorial. 3461A Overview  The follow is the Table of Contents from the trail “Creating a GUI with JFC/Swing” in the “The.
National Alliance for Medical Image Computing Slicer3 Status Update.
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering Software Process Stephen R. Aylward Kitware, Inc.
NA-MIC National Alliance for Medical Image Computing Slicer Building and Deployment Steve Pieper, PhD.
SimITK and SimVTK: ITK and VTK in Simulink DG Gobbi, P Mousavi, KM Li, J Xiang, A Campigotto, A LaPointe, G Fichtinger, P Abolmaesumi Medical Image Analysis.
The european ITM Task Force data structure F. Imbeaux.
William Schroeder, Ph.D. §, Andy Cedilnik §, Sebastien Barré, Ph.D. §, William Lorensen ‡, James Miller, Ph.D. ‡, Daniel Blezek, Ph.D. ‡ § Kitware Inc.,
Sonia Pujol, PhD National Alliance for Medical Image Computing © 2010, ARR.
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering Software Process Stephen R. Aylward Kitware, Inc.
NA-MIC National Alliance for Medical Image Computing Slicer3 Tutorial: Registration Library Case 14 Intra-subject Brain PET-MRI fusion.
NA-MIC National Alliance for Medical Image Computing ParaView Server Manager Berk Geveci Andy Cedilnik.
NA-MIC National Alliance for Medical Image Computing Registering Image Volumes in Slicer Steve Pieper.
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering Components Jim Miller GE Research.
Requirements Document Slicer3 Workflow Based Interface for NAV-RFA.
NA-MIC National Alliance for Medical Image Computing Slicer / ITK / VTK Development Tools Steve Pieper, PhD.
3 Copyright © 2004, Oracle. All rights reserved. Working in the Forms Developer Environment.
NA-MIC National Alliance for Medical Image Computing Using Annotations in Slicer 4.0 Yong Zhang, Kilian Pohl June 2010.
NA-MIC National Alliance for Medical Image Computing 3D Slicer and the NA-MIC Kit for IGT Research Steve Pieper, PhD NAC, SPL, NA-MIC,
SWGData and Software Access - 1 UCB, Nov 15/16, 2006 THEMIS SCIENCE WORKING TEAM MEETING Data and Software Access Ken Bromund GST Inc., at NASA/GSFC.
Surgical Planning Laboratory -1- Brigham and Women’s Hospital Converting DTI data into Nrrd file format Sonia Pujol, Ph.D. Gordon.
NA-MIC National Alliance for Medical Image Computing Slicer 2010: Past, Present, and Future Steve Pieper, Ph.D.
NA-MIC National Alliance for Medical Image Computing Slicer / ITK / VTK Development Tools Steve Pieper, PhD.
Neuroimage Analysis Center An NCRR National Resource Center NAC Engineering Core Steve Pieper, Core PI SPL; Isomics, Inc.
Slicer 3 Ron Kikinis, Steve Pieper. CTK Workshop Heidelberg, June 29/30, 2009 Slicer Goals  Stable, Usable, Cross Platform, End-User Software for Medical.
NA-MIC National Alliance for Medical Image Computing 3D Slicer Modules and Extensions Steve Pieper, Ph.D.
NA-MIC National Alliance for Medical Image Computing Non-Interactive Tools Stephen Aylward, Kitware
NA-MIC National Alliance for Medical Image Computing Slicer 2010: Past, Present, and Future Steve Pieper, Ph.D.
NA-MIC National Alliance for Medical Image Computing Slicer3 Tutorial Nonrigid Atlas Registration Dominik Meier, Ron Kikinis February.
NA-MIC National Alliance for Medical Image Computing Slicer3 Update
Overview 3D Slicer currently provides very basic technology for annotating images. This limits users in their ability to properly capture semantic information.
National Alliance for Medical Image Computing User Desktop Slicer 3.0 Architecure AlgorithmsITKVTK Slicer Modules VTK Apps Using ITK.
NA-MIC National Alliance for Medical Image Computing Slicer Progress in 2009 Steve Pieper, Ph.D.
Standard Response Evaluation Criteria in Solid Tumors (RECIST) using 3D Slicer Slicer3 Training Compendium Image here. Jeffrey Yap, PhD Wendy Plesniak,
National Alliance for Medical Image Computing Integrating with Slicer3.
PLUS overview (PerkLab ultrasound library and applications)
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering Data Management Daniel Marcus Washington University.
3D Slicer module programming
Working in the Forms Developer Environment
3D Slicer Architecture and Implementation
In-situ Visualization using VisIt
on 3D Slicer module programming
Core 1b – Engineering Data and Clinical Interface
Slicer3 Architecture.
3D Slicer Architecture and Implementation
Ron Kikinis, MD Professor of Radiology, Harvard Medical School
Presentation transcript:

NA-MIC National Alliance for Medical Image Computing Slicer4 Guided Tour Steve Pieper, Ph.D.

National Alliance for Medical Image Computing Goals Understanding the Lay of the Land Developing our Common Language Highlighting the Points of Interest

National Alliance for Medical Image Computing The Big Picture Model / View / Controller Style –MRML / GUI / Logic Rules: –MRML: Things that get loaded with a scene file. –GUI: Things that depend on a display. –Logic: Things that operate on MRML.

National Alliance for Medical Image Computing Overview

National Alliance for Medical Image Computing MRML Concepts: Nodes Data Containers and Data Helpers –XML (De)Serializable –Issue Events when Changed –Have Pointers to Bulk Data E.g. vtkImageData, vtkPolyData… Have Unique IDs Exist in only one MRML Scene –One MRML Scene for the Application

National Alliance for Medical Image Computing Coordinate Systems Interface Works in Millimeters, Patient Space Volume Nodes have IJKToRAS –IJK is Index Space of Image –RAS is Right/Anterior/Superior vtkImageData is pixel container with origin 0,0,0 and spacing 1,1,1 Annotations, PolyData are RAS mm

National Alliance for Medical Image Computing MRML: Storable Storable Nodes Reference Storage Nodes Storage Nodes: Bulk Data I/O Storage Nodes allow RemoteIO (URL access to Bulk Data) –HTTP download supported now –Upload handlers still experimental –Scene files can contain URLs

National Alliance for Medical Image Computing MRML: Displayable Has List of Display Nodes –Tagged by ViewNode IDs: each display node on/off in each view –E.g. FiberBundles with Lines + Glyphs DisplayNode has Parameters and Pipelines to Implement Visualization of Displayable

National Alliance for Medical Image Computing MRML Transformable Has Reference to TransformNode defining Transform To Parent Transforms are RAS to RAS Linear Transforms are Handled On- the-fly Non-Linear Transforms must be applied using modules

National Alliance for Medical Image Computing MRML: Hierarchies Grouping Concept Independent of Transform Hierarchy –E.g. Vascular Tree Levels of Detail In Slicer3, Parent Model Display Parameters Override when Collapsed In Slicer4, Plans to Use Hierarchies for Time Series, DICOM, etc.

National Alliance for Medical Image Computing (Were SceneSnapShots in Slicer3) Retains State of MRML Nodes –Included in MRML Scene File –Optional Image and Text Description Bulk Data Not Copied –Load all Bulk Data Before Making SceneViews –Use Visibility to Control what is Shown MRML: SceneViews

National Alliance for Medical Image Computing Module GUIs qSlicerAbstractModuleWidget subclasses (are QWidgets) setup() enter() exit() Are MRMLNode Editors –Synchronize MRML Events to/from Widgets

National Alliance for Medical Image Computing Modules Slicer Loadable Modules –Shared Libraries Discovered at Run- Time –Can use Qt, MRML, VTK, ITK, Teem, etc. –Best Choice for Full Control, Interactivity, Optimized Computation Requires Familiarity with C++ APIs

National Alliance for Medical Image Computing Command Line Interface (CLI) Modules Just Like Slicer3 Any Executable that Works with –xml can be used (even via wrapper scripts) Shared Library CLI for Better Performance No Slicer API Knowledge Required Interface is Consistent, but Limited

National Alliance for Medical Image Computing Scripted Modules Most of Qt, VTK, Slicer API Exposed –Only Python Supported –Tcl Legacy Mode to Ease Transition Very Rapid Development Iterations Requires Some Familiarity with APIs More about Slicer4 Python Later…

National Alliance for Medical Image Computing Extensions Any Module Type can be an Extension Optional User Install –Built to Match Slicer Version –Network Download from within Slicer NA-MIC DBPs, Collaborations are Expected to Deliver Extensions Extension Writing Tutorial Later…

National Alliance for Medical Image Computing Slicer4 Views LayoutNode Defines Interface Layout Manager Creates View Widget Instances to Match Layout ViewNodes Describe 3D Views SliceNodes + SliceCompositeNodes Describe 2D Slice Views

National Alliance for Medical Image Computing DisplayableManagers DisplaybleManagers Link DisplayableNodes to VTK Actors/Mappers/Props/Widgets –Must Synchronize Events from Either Source (like Module GUIs) Modules Can Register DisplayableManagers with Factory –DisplayableManagers are Instanced as Views are Created

National Alliance for Medical Image Computing Overview Revisited

National Alliance for Medical Image Computing Functional Decomposition Reusable Components with Only Needed Dependencies –CTK for Non-Slicer-Specific Qt+DICOM (+VTK) –Reusable MRML: MRMLLogic, qMRMLWidgets –Module Support: SlicerExecutionModel, QTCLI –Slicer: QTCore, QTGUI –Modules: QTCoreModules, QTModules, QTScriptedModules Extensions

National Alliance for Medical Image Computing DICOM Interface Slicer3 –File Based, Limited Write –Special Purpose Converters (e.g. DWI) Slicer4 (in Development) –Networking and Database (Q/R, Store) –Ron’s “Lollipop” Model (MRMLScene in Private Tags) Community Input Needed

National Alliance for Medical Image Computing Collaborating Groups CTK, DCMTK, ITKv4, VTK, CMake, Python, Qt… “SuperBuild Philosophy” –Slicer Organization on github.com patched versions as needed –Edits “Belonging” in Package Go in git –Avoid Workarounds/Duplicates in Slicer

National Alliance for Medical Image Computing svn and git –For Nightly builds, releases, collaboration php/Slicer:git-svn –Developers can choose to use git for topic branches Extensions can use git/svn/cvs

National Alliance for Medical Image Computing Coding Conventions php/Slicer:Style_and_Conventions –Use Style of Parent Class VTK Classes use VTK Style Qt Classes use Qt Style Python Code uses Python Style –Comments and Testing –Communicate with your Colleagues

National Alliance for Medical Image Computing Python in Slicer4 Scripted Modules as Slicelets Python Console PythonQt Slicer in External Python.slicerrc.py Python testing Scripted Access to Modules

National Alliance for Medical Image Computing Slicer4: What Works (mostly) Main GUI, Toolbars, Menus Scene/Data Load/Save Slice and 3D Visualization (pan/zoom, overlays, models…) Command Line Modules Python Wrapping, Python Scripted Modules Loadable Modules Editor Annotations (Evolution of Fiducials and Measurements) Nightly Builds Volume Rendering Many things…

National Alliance for Medical Image Computing Slicer4: What’s Missing Some Core Modules Need Work Hierarchies Need Elaboration IGT Modules Performance Optimization Your Extensions! Please help identify what is needed to support your work.

National Alliance for Medical Image Computing Developer Decision Tree Working on the Slicer Core? –Focus on Qt Transition Working on a Module? –Build it as an Extension Command Line Module? –Develop and Test with Slicer3.6 or Slicer4 GUI Project with Deadlines in early 2011? –Develop with KWWidgets for 3.6.X –Keep your Logic and MRML Distinct from the GUI –Ongoing Support will be Provided Longer-Term Project that Needs a Custom GUI? –Start working with developer builds of Slicer4 –Talk with dev team about any key missing features –Consider doing some or all coding in Python Just use Slicer4 for New Projects

National Alliance for Medical Image Computing Implementation Strategies Non-Interactive Algorithm –Write ITK Class –Use Slicer Execution Model –Add as Extension Interactive Segmentation –Add Effect to Editor Module –Add as Extension (coming soon) Custom GUI? –Loadable Module