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.

Slides:



Advertisements
Similar presentations
Getting Started with ITK + VTK
Advertisements

Slicer3 for developers – Sonia Pujol, Ph.D. -1- National Alliance for Medical Image Computing Programming into Slicer3 Sonia Pujol, Ph.D. Surgical Planning.
National Alliance for Medical Image Computing User Desktop Slicer 3.0 Architecure AlgorithmsITKVTK Slicer Modules VTK Apps Using ITK.
National Alliance for Medical Image Computing Slicer3 Architecture.
National Alliance for Medical Image Computing Slicer3 plugins Common architecture for interactive and batch processing.
Key-word Driven Automation Framework Shiva Kumar Soumya Dalvi May 25, 2007.
National Alliance for Medical Image Computing Anatomy of a plugin Common architecture for interactive and batch processing.
NA-MIC National Alliance for Medical Image Computing 3D Slicer Interactive Modules Steve Pieper, PhD.
A DICOM Import Module for XIP Alex Shnayder Lafayette College Easton, PA Supervisor: Dr. Dave Channin We gratefully acknowledge the support of: Pat Mongkolwat,
1 A Tool for System Simulation: SIMULINK Can be used for simulation of various systems: – Linear, nonlinear; Input signals can be arbitrarily generated:
National Alliance for Medical Image Computing User Desktop Slicer 3.0 Architecure AlgorithmsITKVTK Slicer Modules VTK Apps Using ITK.
Corpus Callosum Segmentation Tool Project Martin Styner Department of Computer Science & Psychiatry Neuro Image Analysis Laboratory.
An Initial Attempt at a Rewrite of Hydromod Final Project submitted for SIMG-726 Computing For Imaging Science Adam Goodenough
SIMULINK Dr. Samir Al-Amer. SIMULINK SIMULINK is a power simulation program that comes with MATLAB Used to simulate wide range of dynamical systems To.
Simulink ® From Simulink® 7 Getting Started Guide.
NA-MIC National Alliance for Medical Image Computing Slicer4 Guided Tour Steve Pieper, Ph.D.
TIBCO Designer TIBCO BusinessWorks is a scalable, extensible, and easy to use integration platform that allows you to develop, deploy, and run integration.
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 IGT Software Design and Process Bill Lorensen GE Research.
Getting Started with ITK in Python Language
NA-MIC National Alliance for Medical Image Computing NAMIC-Kit Update Will Schroeder Jim Miller Bill Lorensen.
UPC/SHMEM PAT High-level Design v.1.1 Hung-Hsun Su UPC Group, HCS lab 6/21/2005.
CAEBAT Open Architecture Software (OAS): Standardizing Input ORNL OAS Team.
XIP: The eXtensible Imaging Platform Development Program Fred Prior, Ph.D. Mallinckrodt Institute of Radiology Washington University in St. Louis.
Computer Aided Software Architecture Design Genevieve Queen of Table Manipulation Bartlett Abigail Princess of GUI Gray (Insram Nice Guy Shah)
XIP™ – the eXtensible Imaging Platform A rapid application development and deployment platform Lawrence Tarbox, Ph.D. September, 2010.
NA-MIC National Alliance for Medical Image Computing NA-MIC Software Engineering Bill Lorensen GE Research NA-MIC Engineering Core PI.
Business Unit or Product Name © 2007 IBM Corporation Introduction of Autotest Qing Lin.
Upgrade to Real Time Linux Target: A MATLAB-Based Graphical Control Environment Thesis Defense by Hai Xu CLEMSON U N I V E R S I T Y Department of Electrical.
DTIAtlasBuilder Adrien Kaiser Neuro Image Research and Analysis Laboratories University of North Carolina at Chapel Hill A tool to create an atlas from.
The IRE Project Interactive Robot Environment Spring 2004.
WebVizOr: A Fault Detection Visualization Tool for Web Applications Goal: Illustrate and evaluate the uses of WebVizOr, a new tool to aid web application.
Exploring an Open Source Automation Framework Implementation.
Incell Phonium Processor Design Specifications Dale Mansholt Aaron Drake Jonathan Scruggs Travis Svehla Incell Phonium Processor.
MACCE and Real-Time Schedulers Steve Roberts EEL 6897.
NA-MIC National Alliance for Medical Image Computing Slicer Building and Deployment Steve Pieper, PhD.
Computer Programs and Programming Languages What are low-level languages and high-level languages? High-level language Low-level language Machine-dependent.
LAS To WITSML Conversion Utility Presented at POSC Regional SIG meeting Stavanger, June 2006 by POSC & Satyam Computer Services Ltd.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
The european ITM Task Force data structure F. Imbeaux.
M.S. Thesis Defense Jason Anderson Electrical and Computer Engineering Dept. Clemson University.
William Schroeder, Ph.D. §, Andy Cedilnik §, Sebastien Barré, Ph.D. §, William Lorensen ‡, James Miller, Ph.D. ‡, Daniel Blezek, Ph.D. ‡ § Kitware Inc.,
MotoHawk™ Components Scalable, Secure, Model-Based Design of Embedded Systems.
Composing workflows in the environmental sciences using Web Services and Inferno Jon Blower, Adit Santokhee, Keith Haines Reading e-Science Centre Roger.
_______________________________________________________________CMAQ Libraries and Utilities ___________________________________________________Community.
Lawrence Tarbox, Ph.D. Washington University in St. Louis School of Medicine Mallinckrodt Institute of Radiology, Electronic Radiology Lab.
NA-MIC National Alliance for Medical Image Computing ParaView Server Manager Berk Geveci Andy Cedilnik.
Framework for MDO Studies Amitay Isaacs Center for Aerospace System Design and Engineering IIT Bombay.
Copyright © 2008 Siemens Corporate Research – All rights reserved1/12 eXtensible Imaging Platform (Xip) Sylvain Jaume – Sep 2008 Siemens Corporate Research.
Slicer3 for developers – S.Pujol -1- National Alliance for Medical Image Computing Slicer3 Course for developers Sonia Pujol, Ph.D. Surgical Planning Laboratory.
NA-MIC National Alliance for Medical Image Computing Process-, Work-Flow in Medical Image Processing Guido Gerig
1 MotoHawk Components Scalable, Secure, Model-Based Design of Embedded Systems MotoHawk Training.
A PPARC funded project Common Execution Architecture Paul Harrison IVOA Interoperability Meeting Cambridge MA May 2004.
Toward interactive visualization in a distributed workflow Steven G. Parker Oscar Barney Ayla Khan Thiago Ize Steven G. Parker Oscar Barney Ayla Khan Thiago.
August 2003 At A Glance The IRC is a platform independent, extensible, and adaptive framework that provides robust, interactive, and distributed control.
SimITK/SimVTK: Model Driven Engineering for Medical Imaging 1.
Graphical Design Environment for a Reconfigurable Processor IAmE Abstract The Field Programmable Processor Array (FPPA) is a new reconfigurable architecture.
May08-21 Model-Based Software Development Kevin Korslund Daniel De Graaf Cory Kleinheksel Benjamin Miller Client – Rockwell Collins Faculty Advisor – Dr.
Pipeline Execution Environment Laboratory of NeuroImaging UCLA.
Reconfigurable Communication Interface Between FASTER and RTSim Dec0907.
National Alliance for Medical Image Computing User Desktop Slicer 3.0 Architecure AlgorithmsITKVTK Slicer Modules VTK Apps Using ITK.
January 2010 – GEO-ISC KickOff meeting Christian Gräf, AEI 10 m Prototype Team State-of-the-art digital control: Introducing LIGO CDS.
National Alliance for Medical Image Computing Slicer3 Plugins Common architecture for interactive and batch processing.
3D Slicer module programming
Integration of OCP and SIMULINK
Pipeline Execution Environment
Slicer3 Architecture.
MATLAB/SIMULINK Professor Walter W. Olson
Lawrence Tarbox, Ph. D. Washington University in St
Presentation transcript:

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 Laboratory (MedIA) School of Computing Queen’s University

Motivation Visual programming for ITK and VTK Visual programming for ITK and VTK Drag & drop approach to application development Drag & drop approach to application development Increase understandability & maintainability Increase understandability & maintainability Instructional value Instructional value MATLAB is our friend MATLAB is our friend Use MATLAB’s Simulink visual environment Use MATLAB’s Simulink visual environment Hence, avoid reinventing the wheel Hence, avoid reinventing the wheel Allow mix of MATLAB code and ITK / VTK Allow mix of MATLAB code and ITK / VTK

Related Work Visual Programming of VTK and ITK Visual Programming of VTK and ITK ITKBoard (CSIRO) ITKBoard (CSIRO) SciRun (Utah) SciRun (Utah) MeVisLab (MeVis Research GmbH) MeVisLab (MeVis Research GmbH) caBIG XIP (caBIG, Siemens, Washington U. in St Louis) caBIG XIP (caBIG, Siemens, Washington U. in St Louis) ITK and VTK in MATLAB (without Simulink) ITK and VTK in MATLAB (without Simulink) MATITK (Chu and Hamarneh) MATITK (Chu and Hamarneh) VTK plus MATLAB – various VTK plus MATLAB – various Us: Visual ITK/VTK Programming in MATLAB Us: Visual ITK/VTK Programming in MATLAB

MATLAB’s Simulink Environment LibraryModel

Our Own Simulink Libraries

3D Processing with ITK

Combine ITK Processing and VTK Rendering Input: cthead1.png Output: VTK Window

Method: Wrapping Process Simulink wrappers for ITK, VTK Simulink wrappers for ITK, VTK Each Simulink block is an “S-Function” with callbacks Each Simulink block is an “S-Function” with callbacks S-Function callbacks are C++ code, calls ITK or VTK S-Function callbacks are C++ code, calls ITK or VTK CMake build process CMake build process Start with an XML description of each filter (ITK) Start with an XML description of each filter (ITK) or Start with class header files (VTK) or Start with class header files (VTK) CMake calls perl script to generate C++ code CMake calls perl script to generate C++ code CMake then calls perl to generate.mdl library file CMake then calls perl to generate.mdl library file Finally, build libraries with VC++ or gcc Finally, build libraries with VC++ or gcc

Method: Data Flow for SimITK SimITK, SimVTK use different architecture SimITK, SimVTK use different architecture ITK is primarily image based ITK is primarily image based VTK handles many data set types VTK handles many data set types SimITK Data Flow SimITK Data Flow ITK images -> MATLAB arrays (“info” and “data”) ITK images -> MATLAB arrays (“info” and “data”) Use shared memory for efficiency Use shared memory for efficiency Conversion of ITK parameter data types Conversion of ITK parameter data types ITK uses several specialized types e.g. versor ITK uses several specialized types e.g. versor

SimITK Helper Class InputPort Conversion itkImage Run ITK Image Filter itkImage Conversion OutputPort Parameter Variables Conversion Spacing & Origin Data Spacing & Origin Data Input Output Parameters

Method: Data Flow for SimVTK SimVTK Data Flow SimVTK Data Flow Use MATLAB arrays to pass vtkObject pointers Use MATLAB arrays to pass vtkObject pointers Define “VTKOBJECT” MATLAB type for safety Define “VTKOBJECT” MATLAB type for safety When run starts, Simulink builds VTK pipeline on-the-fly When run starts, Simulink builds VTK pipeline on-the-fly Then, Simulink calls Update or Render at each time step Then, Simulink calls Update or Render at each time step SimVTK filter parameters SimVTK filter parameters VTK parameter types need no conversion VTK parameter types need no conversion VTK and MATLAB both use basic C data types VTK and MATLAB both use basic C data types

Registration Examples Registration in ITK Registration in ITK Immediate, interactive feedback Immediate, interactive feedback Great way to tune parameters Great way to tune parameters Easy to swap out components Easy to swap out components

Intervention Examples Computer Assisted Intervention in VTK Computer Assisted Intervention in VTK Incorporate real-time data input Incorporate real-time data input Use “Subsystems” to manage complexity Use “Subsystems” to manage complexity

Discussion “Diagrams” that actually run as code “Diagrams” that actually run as code Easy to verify that code matches design Easy to verify that code matches design Great teaching tool Great teaching tool Understandability improves maintainability Understandability improves maintainability Utility Utility Simulink models can run as stand-alone exec Simulink models can run as stand-alone exec Nearly all VTK, ITK classes can be wrapped Nearly all VTK, ITK classes can be wrapped

Future Work WrapITK WrapITK To automate ITK build (VTK is already done!) To automate ITK build (VTK is already done!) GUI integration GUI integration Slicer module interface in Simulink Slicer module interface in Simulink KWWidgets (later Qt, maybe FLTK) KWWidgets (later Qt, maybe FLTK) Community Building Community Building Mailing list, website Mailing list, website We want to hear from you! We want to hear from you!