Support for Time in ITK Patrick Reynolds Patrick Cheng John Galeotti Arnaud Gelas.

Slides:



Advertisements
Similar presentations
National Alliance for Medical Image Computing Slicer3 Architecture.
Advertisements

EFRONT V4 EXTENSIONS ARCHITECTURE. The goal  To offer more flexibility to 3 rd party users to modify eFront functionality  To further extend eFront.
TEMPLATES Lecture Presented By SHERY KHAN Object Orienting Programming.
Data Modeling and Database Design Chapter 1: Database Systems: Architecture and Components.
C++ How to Program, 7/e © by Pearson Education, Inc. All Rights Reserved.
This work by John Galeotti and Damion Shelton, © , was made possible in part by NIH NLM contract# HHSN P, and is licensed under a Creative.
NA-MIC National Alliance for Medical Image Computing 3D Slicer Interactive Modules Steve Pieper, PhD.
Information Retrieval in Practice
Introduction What is this ? What is this ? This project is a part of a scientific research in machine learning, whose objective is to develop a system,
Department of Electrical & Computer Engineering Team Hollot By: Cory Brett Jonathan Katon Thomas Pavlu Haiyan Xu NavFocus Midway Design Review.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Models and Architectures Ed Angel Professor of Computer Science, Electrical and Computer.
Overview of Search Engines
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Digital Object: A Virtual Online Storage Solution 598C Course Project Huajing Li.
Object Oriented Databases by Adam Stevenson. Object Databases Became commercially popular in mid 1990’s Became commercially popular in mid 1990’s You.
3dtv.at DV/HDV Tape Drive Synchronization Stereoscopic Displays and Applications Conference 29 th – 31 th January 2007 San Jose, United States.
GPU Acceleration in ITK v4
T EACHING ITK: T HOUGHTS FOR V ERSION 4 John Galeotti February 3, 2011.
EARTH SCIENCE MARKUP LANGUAGE “Define Once Use Anywhere” INFORMATION TECHNOLOGY AND SYSTEMS CENTER UNIVERSITY OF ALABAMA IN HUNTSVILLE.
Beyond the Visualization Pipeline Werner Benger 1, Marcel Ritter, Georg Ritter, Wolfram Schoor 1 Scientific Visualization Group Center for Computation.
C++ How to Program, 8/e © by Pearson Education, Inc. All Rights Reserved. Note: C How to Program, Chapter 22 is a copy of C++ How to Program Chapter.
NOVA: CONTINUOUS PIG/HADOOP WORKFLOWS. storage & processing scalable file system e.g. HDFS distributed sorting & hashing e.g. Map-Reduce dataflow programming.
Image Collection Backend for Cameraphones. Introduction Project Goals Design an integrated system to upload image from a mobile phone to a remote server.
April 6, 2010GMQS Meeting1 Optional Feature Support in HDF5 Tools Albert Cheng The HDF Group.
VoxGISDiagrams This document contains the main diagrams on VoxGISDocumentation. They are avaliable for use and ease of modification to the general documentation.
The future of MINC Robert D. Vincent
CSC 461: Lecture 3 1 CSC461 Lecture 3: Models and Architectures  Objectives –Learn the basic design of a graphics system –Introduce pipeline architecture.
1 ENERGY 211 / CME 211 Lecture 26 November 19, 2008.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
1Computer Graphics Lecture 4 - Models and Architectures John Shearer Culture Lab – space 2
VideoForge An image processing system. Contents Current state of the art IntroductionTiers Base Base Core Core Modules Modules User interface Interactive.
CERN-PH-SFT-SPI August Ernesto Rivera Contents Context Automation Results To Do…
Datcracker Open data-mining platform connecting Rseslib and WEKA Marcin Wojnarski Warsaw University, Poland.
Efficient RDF Storage and Retrieval in Jena2 Written by: Kevin Wilkinson, Craig Sayers, Harumi Kuno, Dave Reynolds Presented by: Umer Fareed 파리드.
Review on Graphics Basics. Outline Polygon rendering pipeline Affine transformations Projective transformations Lighting and shading From vertices to.
Module 5: Implementing Merge Replication. Overview Understanding Merge Replication Architecture Implementing Conflict Resolution Planning and Deploying.
“Architecture” The outcome of top-level design, reflecting principal design decisions Can (and should) be modified and updated Analogous to architecture.
TIMERS AND INTERRUPTS AVI SINGH KEVIN JOSE PIYUSH AWASTHI.
Bill Hoffman, Jesus Caban, Brad Lowkamp, Dan Muller, Fabrice de Chaumont, Julien Michel, Harvey Cline, Gabe Hart, Ghassam Hamarech, John Galeotti, Raghu.
Project Planning Defining the project Software specification Development stages Software testing.
THE EYESWEB PLATFORM - GDE The EyesWeb XMI multimodal platform GDE 5 March 2015.
Metadata Driven Aspect Specification Ricardo Ferreira, Ricardo Raminhos Uninova, Portugal Ana Moreira Universidade Nova de Lisboa, Portugal 7th International.
Chapter 1 Graphics Systems and Models Models and Architectures.
PLUS overview (PerkLab ultrasound library and applications)
Statistical process model Workshop in Ukraine October 2015 Karin Blix Quality coordinator
The Structuring of Systems Using Upcalls David D. Clark (Presented by John McCall)
ITKv4 Image Interpretation Layer. ITK - IO ImageIOBase VectorImage NumberOfComponents IOComponentType IOPixelType ConvertPixelBuffer Nested Switchs Based.
Information Retrieval in Practice
ITK Video ITK Extensions for Video Processing
Game and animation control flow
CS 325: Software Engineering
SOFTWARE DESIGN AND ARCHITECTURE
Comprehensive Design Review
Models and Architectures
Chapter 16 – Software Reuse
Models and Architectures
Models and Architectures
Introduction to Computer Graphics with WebGL
GEOMATIKA UNIVERSITY COLLEGE CHAPTER 2 OPERATING SYSTEM PRINCIPLES
Physical Database Design
Fundamentals of Databases
Models and Architectures
Models and Architectures
Kabra and DeWitt presented by Zack Ives CSE 590DB, May 11, 1998
Chapter 16 – Software Reuse
Data Structures and ADTs
Use Of GAUDI framework in Online Environment
PHP-II.
Prof. Onur Mutlu Carnegie Mellon University
Presentation transcript:

Support for Time in ITK Patrick Reynolds Patrick Cheng John Galeotti Arnaud Gelas

Use Cases Conventional Video (2D+t) Ultrasound (3D+t) Microscopy (ND?)

Potential Solutions Ranked by impact to current ITK infrastructure - ITK library developers perspective 1. Treat time as another dimension. ( Eg. 4D = 3D+t ) Pros: No impact on existing architecture, no specialized algorithms for processing time series data Cons: Users need to develop their own specialized algorithms based on their assumptions on data structure. Does not support live video. Does not support different time steps. 2. Create a new itkVideo class Pros: Clear definition/separation of time series data. Relative small impact on ITK. Enable development of specialized video algorithms in ITK, especially GPU accelerated version. Cons: Need to adapt many existing algorithm to process itkVideo objects, or requires use of an intermediate interpolating filter. Does not support different time steps without also incorporating timestamps. 3. Separate time dimension, treat it separately ( Timestamp all ITK data, make it explicit) Pros: Less confusion in data structures, as time is explicitly defined. Enable development of generic filters on time series data. Cons: Involving changing itkData and itkImage classes. Need to either modify many filter classes to handle time dimension, or requires use of an intermediate interpolating filter.

Needs for ITKv4 Core Timestamp on the Data Object (High Precision) itk::ImageSet (ImageSequence, ImageBag) Leads to itk::ImageRingBuffer itk::Video itk::ImageSetToImageSetFilter itk::ImageSetToImageFilter itk::MultiIndexImageSet Etc...

Proposed Solution: Timestamps Timestamp all ITK data – Standardized metadata item Required to handle different time steps Example 1: External-event triggered video Example 2: Dynamically adjusting frame-rate vs. crop-size Example 3: Looping microscopy z-axis – Slice z=1,t=1, slice z=2,t=2, …, slice z=n,t=n, slice z=1,t=n+1

Proposed Solution: Itk::ImageSet Core Base Class Base-class is an ordered list – Appropriate for video storage, etc. Sub-classes (not part of core): – Database-like representation, needed for 9-dimensional microscopy data – Ring-buffer representation, needed for live video data Also provide a generic core ImageSetIterator

Core Filter Base Classes ImageSetToImageSetFilter ImageSetToImageFilter – Default implementation interpolates a set of N-dimensional images into an (N+M)-dimensional image. – M is determined by presence of timestamps and global physical coordinates/orientation M=1 if only using timestamps M=2 if moving a camera or ultrasound probe through a 3D volume. – This can be slow in the general case, but a GPU implementation could really help – This would be the normal way to interface time-stamped images with the rest of ITK

Proposed Division Microscopy itk::MultiIndexImageSet Video itk::ImageRingBuffer itk::Video … Common itk::ImageSet Itk::ImageSetToImageSetFilter Itk::ImageSetToImageFilter

Video Module RingBuffer subclass of ImageSet Video File Reading – Create native readers, or use OpenCV? – Templated to output either 2D+t ImageSet, RingBuffer, or 3D Image Volume. Live Video Acquisition to RingBuffer – Patrick Chengs Simple Native Methods – OpenCV interface OpenCV supports camera calibration and undistortion OpenCV-interface submodule downloaded by default, but only built if OpenCV is detected? – VXL interface VXL submodule off by default?

RingBuffer Pipeline Support Pipeline Updates can be triggered by interrupts, events, and/or polling for new frames. – Do we support all of these? When an input RingBuffer is modified, it is usually appropriate to output a new frame, NOT recompute the entire output. What if 5 new input frames arrive at once? – Then output at most 5 new frames, up to the size of our output RingBuffer.

Microscopy Module itk::MultiIndexImageSet boost::multi_index::multi_index_container< FileName, boost::multi_index::indexed_by< ordered_non_unique< tag, BOOST_MULTI_INDEX_MEMBER( FileName, unsigned int, PCoord)>, ordered_non_unique< tag, etc…

Microscopy Module What about SimpleITK? – Provide optional SQL database support to use in lieu of Boost? – SQL might also simplify/standardize reading/writting – Matlab and Python can both interface w/ SQL.

Discussion Should we have a generic way to gather data asynchronously? ImageSetToSpatialObjectFilter for things like SURF and SIFT