148
Entwicklung interaktiver Bildverarbeitungssysteme mit MITK und CTK Andreas Fetzer, Michael Müller Marco Nolden, Sascha Zelzer Deutsches Krebsforschungszentrum, Heidelberg Bildverarbeitung für die Medizin 2013

Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Embed Size (px)

Citation preview

Page 1: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Entwicklung interaktiverBildverarbeitungssystememit MITK und CTKAndreas Fetzer, Michael MüllerMarco Nolden, Sascha Zelzer

Deutsches Krebsforschungszentrum, Heidelberg

Bildverarbeitung für die Medizin 2013

Page 2: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

AblaufToolkits für die medizinische Bildverarbeitung Marco Nolden

Die MITK Workbench Andreas Fetzer

ITK/VTK/MITK Konzepte Sascha Zelzer

Setup der MITK Umgebung Michael Müller

Modularisierung in MITK Sascha Zelzer

Erstellen eines Beispiel-Plugins Michael MüllerMITK Projekte Marco Nolden

Prozesse, Dokumentation, Getting started Marco Nolden

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 2 / 17

Page 3: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Toolkits: VTK, ITK, . . .

Page 4: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

VTK

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 4 / 17

The Visualization Toolkit: AnObject-Oriented Approach to 3DGraphics. Will Schroeder, KenMartin, and Bill Lorensen (1993)Supported by GE Research1998: Foundation of Kitware Inc.Implemented in C++, Bindings forTCL, Python, Java . . .A lot of visualization classes , simpleimage processing and GUIcomponents

Page 5: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

ITK

Insight Segmentation and Registration ToolkitCall by NLM and NIH in 1999Six prime contractors from industry and science: GE, Kitware,University of North Carolina . . .Data structures and algorithms for image segmentation andregistration in medical applicationsNo GUI oder application componentsGeneric programming, “advanced” C++ featuresOpen Source process, Insight Journal

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 5 / 17

Page 6: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

DICOM:Digital Imaging and Communication in MedicineStandard for medical imaging:file formats and network protocolsIntegration of image modalities (X-Ray, CT, MR . . . ), storagesystems (PACS) and other devices (printers, CD recorders . . . )Current version 3 dates back to 1993Challenges for the developer

I Overall complexity of the standard ( >5k pages and growing)I Conformance is variableI Non-standardized extensions (i.e. private tags) are quitecommonI Most 3D and 3D+ t data are still encoded as 2D images

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 6 / 17

Page 7: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

DICOM toolkits: DCMTK and GDCM

DCMTK: the DICOM toolkitStarted as referenceimplementation 1993Covers large parts of thestandardNetwork functionality,low-level data handling

GDCM: Grassroots DICOMFocus on parts 3, 5, 6 and 10:interpretation of image dataHeuristics for “exotic” dataGDCM is used by ITK forimage reading

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 7 / 17

Page 8: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Qt

Cross-platform application framework forC++GUI and non-GUI partsVery powerful, very mature, first version1992Development tools: Qt Creator, QtDesignerUsed in MITK for the workbench UI andthe plugin framework

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 8 / 17

Page 9: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MotivationWe had powerful toolkits forvisualization andsegmentation/registrationBut:insufficient support forinteractive multi-viewsoftware

uses as much as possible from ITK & VTKadds features outside the scope of bothsis not at all a competitor to ITK or VTKMarco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 9 / 17

Page 10: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MotivationWe had powerful toolkits forvisualization andsegmentation/registrationBut:insufficient support forinteractive multi-viewsoftware

uses as much as possible from ITK & VTKadds features outside the scope of bothsis not at all a competitor to ITK or VTKMarco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 9 / 17

Page 11: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MotivationWe had powerful toolkits forvisualization andsegmentation/registrationBut:insufficient support forinteractive multi-viewsoftware

uses as much as possible from ITK & VTKadds features outside the scope of bothsis not at all a competitor to ITK or VTKMarco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 9 / 17

Page 12: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MotivationWe had powerful toolkits forvisualization andsegmentation/registrationBut:insufficient support forinteractive multi-viewsoftware

uses as much as possible from ITK & VTKadds features outside the scope of bothsis not at all a competitor to ITK or VTKMarco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 9 / 17

Page 13: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MotivationWe had powerful toolkits forvisualization andsegmentation/registrationBut:insufficient support forinteractive multi-viewsoftware

uses as much as possible from ITK & VTKadds features outside the scope of bothsis not at all a competitor to ITK or VTKMarco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 9 / 17

Page 14: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MotivationWe had powerful toolkits forvisualization andsegmentation/registrationBut:insufficient support forinteractive multi-viewsoftware

uses as much as possible from ITK & VTKadds features outside the scope of bothsis not at all a competitor to ITK or VTKMarco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 9 / 17

Page 15: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MotivationWe had powerful toolkits forvisualization andsegmentation/registrationBut:insufficient support forinteractive multi-viewsoftware

uses as much as possible from ITK & VTKadds features outside the scope of bothsis not at all a competitor to ITK or VTKMarco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 9 / 17

Page 16: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITK

Software library, developedsince 2002Base for all applications ofthe departmentCa. 500.000 lines of code(open source)Established in research andeducation (about 200 usersin research)

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 10 / 17

Page 17: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITKMITK can be used in different ways:

Develop new applications fromscratch→MITK is used as a Software toolkitExtend the open source MITKapplication with new modules andplugins→MITK is used as a applicationframeworkUse the existing MITK Workbench(segmentation, registration,measurement, visualization . . . )

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 11 / 17

Page 18: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

CTK: The Common Toolkit

Kitware

DKFZ

OpenMAF

Joint effort of multipleintitutionsPlanning Kick-off 2009 inHeidelbergCoding started 2010,six Hackfests so far

MedINRIA

GIMIAS

NiftyView

OpenXIPMarco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 12 / 17

Page 19: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

CTK topics

DICOM I/OQuery/Retrieve based onDCMTKLocal data managementUI components

IntraoperabilityPlug-in frameworkCommand line modulesEvent bus

User Interfaces"Medical Imaging"WidgetsTesting framework

Application HostingDICOM Part 19Support for hosts andapplicationsGoal: referenceimplementation

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 13 / 17

Page 20: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

CTK topics

DICOM I/OQuery/Retrieve based onDCMTKLocal data managementUI components

IntraoperabilityPlug-in frameworkCommand line modulesEvent bus

User Interfaces"Medical Imaging"WidgetsTesting framework

Application HostingDICOM Part 19Support for hosts andapplicationsGoal: referenceimplementation

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 13 / 17

Page 21: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

CTK topics

DICOM I/OQuery/Retrieve based onDCMTKLocal data managementUI components

IntraoperabilityPlug-in frameworkCommand line modulesEvent bus

User Interfaces"Medical Imaging"WidgetsTesting framework

Application HostingDICOM Part 19Support for hosts andapplicationsGoal: referenceimplementation

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 13 / 17

Page 22: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

CTK topics

DICOM I/OQuery/Retrieve based onDCMTKLocal data managementUI components

IntraoperabilityPlug-in frameworkCommand line modulesEvent bus

User Interfaces"Medical Imaging"WidgetsTesting framework

Application HostingDICOM Part 19Support for hosts andapplicationsGoal: referenceimplementation

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 13 / 17

Page 23: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITK

C++ framework / toolkitOpen source BSD-style license, almost identical to VTK / ITKSupports Linux, Windows, Mac OS XVisual Studio, XCode, QtCreator, EclipseMSVC, MinGW, GCC, Clang

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 14 / 17

Page 24: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITK

C++ framework / toolkitOpen source BSD-style license, almost identical to VTK / ITKSupports Linux, Windows, Mac OS XVisual Studio, XCode, QtCreator, EclipseMSVC, MinGW, GCC, Clang

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 14 / 17

Page 25: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITK

C++ framework / toolkitOpen source BSD-style license, almost identical to VTK / ITKSupports Linux, Windows, Mac OS XVisual Studio, XCode, QtCreator, EclipseMSVC, MinGW, GCC, Clang

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 14 / 17

Page 26: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITK

C++ framework / toolkitOpen source BSD-style license, almost identical to VTK / ITKSupports Linux, Windows, Mac OS XVisual Studio, XCode, QtCreator, EclipseMSVC, MinGW, GCC, Clang

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 14 / 17

Page 27: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITK Workbench

MITK Plugins

Custom Applications

BlueBerry

CTK Plugin Framework

Qt ITK

MITK Modules

MITK Core

µServices

VTK

ToF IGT Qmitk

SOFA Python

OpenCV Boost

Module System

MITK Core does not depend on a GUI toolkitCore provides data structures, rendering pipeline, interactionsystem, adaptorsMITK-application-level provides Qt4 widgets and applicationsMITK Workbench serves as an application platform

Page 28: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITK Workbench

MITK Plugins

Custom Applications

BlueBerry

CTK Plugin Framework

Qt ITK

MITK Modules

MITK Core

µServices

VTK

ToF IGT Qmitk

SOFA Python

OpenCV Boost

Module System

MITK Core does not depend on a GUI toolkitCore provides data structures, rendering pipeline, interactionsystem, adaptorsMITK-application-level provides Qt4 widgets and applicationsMITK Workbench serves as an application platform

Page 29: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITK Workbench

MITK Plugins

Custom Applications

BlueBerry

CTK Plugin Framework

Qt ITK

MITK Modules

MITK Core

µServices

VTK

ToF IGT Qmitk

SOFA Python

OpenCV Boost

Module System

MITK Core does not depend on a GUI toolkitCore provides data structures, rendering pipeline, interactionsystem, adaptorsMITK-application-level provides Qt4 widgets and applicationsMITK Workbench serves as an application platform

Page 30: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITK Workbench

MITK Plugins

Custom Applications

BlueBerry

CTK Plugin Framework

Qt ITK

MITK Modules

MITK Core

µServices

VTK

ToF IGT Qmitk

SOFA Python

OpenCV Boost

Module System

MITK Core does not depend on a GUI toolkitCore provides data structures, rendering pipeline, interactionsystem, adaptorsMITK-application-level provides Qt4 widgets and applicationsMITK Workbench serves as an application platform

Page 31: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Thank you!

Marco Nolden (DKFZ) MITK Tutorial: Toolkits BVM 2013 16 / 17

Page 32: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITK: Concepts ITK/VTK/MITK – a quick overview

Sascha Zelzer

Page 33: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 2 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

ellipse

sliced original data

sliced segmentation position of the

other two slices position of the other two slices

position of the other two slices

ellipse sliced original data in 3D

ellipse

ellipsoid

original data

sliced original data

sliced segmentation

segmentation

volume rendering of segmentation

synchronization of …

20 objects in 4 scene-graphs

… required !

Page 34: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 3 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

ellipseellipse

slicedoriginal data

slicedsegmentation

slicedsegmentation position of the

other two slicesposition of the

other two slicesposition of theother two slicesposition of the

other two slices

position of theother two slicesposition of the

other two slices

ellipseellipse sliced original data in 3D

sliced original data in 3D

ellipseellipse

ellipsoidellipsoid

original data

slicedoriginal data

slicedsegmentation

slicedsegmentation

segmentationsegmentation

volume rendering of segmentation

volume rendering of segmentation

Getting out of the maze …

Instead of creating many scene-graphs with even more elements …

… create a single data repository

with a few data-objects! segmentation

display planes

ellipsoid

original data

segmentation

display planes

ellipsoid

original data

Page 35: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 4 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

ellipseellipse

slicedoriginal data

slicedsegmentation

slicedsegmentation position of the

other two slicesposition of the

other two slicesposition of theother two slicesposition of the

other two slices

position of theother two slicesposition of the

other two slices

ellipseellipse sliced original data in 3D

sliced original data in 3D

ellipseellipse

ellipsoidellipsoid

original data

slicedoriginal data

slicedsegmentation

slicedsegmentation

segmentationsegmentation

volume rendering of segmentation

volume rendering of segmentation

MITK: Data repository instead of scene-graphs

MITK takes the data repository …

and builds …

VTK scene graphs segmentation

display planes

ellipsoid

original data

segmentation

display planes

ellipsoid

original data

Page 36: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 5 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Data repository

• Repositories for sharing data objects between modules • Any number of data objects

• Any kind of data objects

• Data objects with geometry frame

(bounding-box, transform, etc.)

Abdominal CT (Image)

Liver (Surface)

Tumor (Surface)

Vessels (Graph)

MRI (Image)

Helper Objects

Landmarks (Points)

Page 37: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 7 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Rendering VTK vs. MITK

7

VTK

:Renderer

:Renderer

A:Data

:Actor :Mapper

:Actor :Mapper

:Actor :Mapper

B:Data

:Actor :Mapper

:DataNode A:Data

… :Mapper :Mapper

:Mapper :Mapper …

:DataNode :Data

MITK

:Data Storage

:Renderer

:Renderer

Page 38: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 9 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Rendering the data repository

RenderWindows: • single RenderWindow class

• different types of views 2D/3D

special views definable (e.g., for AR)

renderer->SetMapperID(mitk::BaseRenderer::Standard3D); • point to the data repository any number of views on the data:

renderer1->SetData(repository); renderer2->SetData(repository); …

Page 39: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 10 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Defining how we want to see the data …

segmentation

display planes

ellipsoid

original data

segmentation

display planes

ellipsoid

original data

Page 40: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 12 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

The nodes in the data repository

BaseData: the actual data: images, surfaces, etc. GeometryFrame: position and orientation in space Mappers: render the data into a renderwindow Properties: define how to draw the data Interactor: defines user interaction with the data

DataNode

BaseData

Mapper

Property

GeometryFrame 1 1

1 n

1 n

1 1

Interactor 1 1

Page 41: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 13 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

How to add a new data type

Extension for new data types: derive data class derive mapper create file I/O Register mapper /

I/O handler at factory Example: • attributed vessel graphs

[DKFZ and University of Tübingen]

Page 42: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITK Architecture

Page 43: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 16 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

MITK Architecture

MITK application framework level: Bundles / Plugins

Core

Optional libraries

Open CV

Tracker SDK …

ITK VTK

MITK Modules (GUI-toolkit dependent)

MITK Modules (GUI-toolkit independent)

Qt

Blue Berry

CoreUI

CTK

Page 44: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 17 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

MITK Core

• Access to ITK and VTK data structures and algorithms

• Data Management (data object container, properties, scene

management)

• Time steps for data objects

• Spatial object location (geometries)

• Loading / saving of different file formats

• Rendering (mappers, update management, render properties)

• Interaction (statemachine based )

• Undo/Redo

Page 45: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 18 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

MITK Modules

• Diffusion Imaging

• IGT

• Ultrasound

• ToF

• GPGPU

• Registration

• Segmentation

• Qt Widgets

• Many more…

Page 46: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 19 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Application framework

The MITK application framework is based on BlueBerry: • Framework for creating modular and extensible end-user

apps • Customizable application frame • Application state can be saved and restored on next startup

• Independent „plug-Ins“ for specific problems

• The MITK Workbench is the main MITK application

• Bundles a set of useful general purpose plug-ins • Shared repository for data objects

Page 47: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 20 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

MITK Workbench

Page 48: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 21 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik MITK Workbench – Views and Editors

Page 49: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 22 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik MITK Workbench – Views and Editors

Views Editors

Page 50: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 23 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik Communication and sharing data

• Views/Editors are usually independent from each other • They share data via the data repository • Make use of the BlueBerry selection service

Page 51: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

ITK, VTK, MITK: Gemeinsamkeiten

Page 52: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 28 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Gemeinsamkeiten

• Toolkits • Objekt-orientierte Klassenbibliotheken • C++ • Unterstützung vieler Compiler • Plattform unabhängig • GUI-Toolkit unabhängig • Open source / BSD-style Lizenz

Page 53: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 29 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Gemeinsamkeiten: Überblick

• Download und Build-Prozess • Instantiierung und Pointer • Daten-Pipeline • Kommunikation

Page 54: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Download und Build

Page 55: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 31 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Voraussetzungen

C++ Compiler:

GCC 4.x VC9 VC10

(Clang 3.x)

Plattform- unabhängiges

Make-Tool:

CMake

Erzeugt Projekt bzw. Makefiles für die eingesetzte Plattform/den verwendeten Compiler/die verwendete Entwicklungsumgebung.

Page 56: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 33 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

CMake

• Skriptsprache zur Beschreibung der Bestandteile eines (C++)-Projekts

• Getrennte Dateibäume für Quelltexte und Binärdateien • Plattformen:

Windows (Visual Studio, Borland, MinGW …), Linux, Mac OS X, Eclipse …

• Erzeugt spezifische Projekt/Makefiles (nicht nur) für die Übersetzung der Programme und Bibliotheken

• Auch: Testgenerierung und -steuerung, Aufruf von Doxygen, LaTeX , Erstellung von Installern …

Page 57: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 34 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

CMake Befehle

Variablen: • set(VAR [VALUE]) • list(APPEND VAR “NochEinWert”)

Output:

• message(“Wert von VAR: ${VAR}”)

Ausführbares Programm erstellen: • add_executable(MeinProg Quelle1.cpp Quelle2.cpp)

Bibliothek erstellen: • add_library(MeineLib LibQuelle1.cpp …) • target_link_libraries(MeinProgramm MeineLib) • include_directories(<Pfad für c++ header>)

Page 58: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 35 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

CMake Makros

Makros definieren

macro(NAME parameter1 parameter2 …) … endmacro()

In MITK z.B.:

MITK_CREATE_MODULE() MITK_CREATE_CTK_PLUGIN()

Definiert in mitk/CMake/*.cmake

Page 59: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 36 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

CMake Modularisierung

• Hauptdatei heisst immer „CMakeLists.txt“ • include(anderesCMakeFile.cmake):

direktes Einbinden der anderen Datei an dieser Stelle • add_subdirectory(directory):

„directory“ muss wieder CMakeLists.txt enthalten. Wird meistens für Unterprojekte verwendet.

• In MITK für „Anwender“: files.cmake in (fast) jedem Verzeichnis mit Quelltexten

Page 60: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 37 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik CMake in MITK: files.cmake

• CPP_FILES: C++ Quelltexte • MOC_H_FILES: Q_OBJECT Header, die vom Meta-Object-

Compiler moc vorübersetzt werden müssen • UI_FILES: vom Qt-Designer generierte Forms

set( CPP_FILES TutorialFunctionality.cpp ) set( MOC_H_FILES TutorialFunctionality.h ) set(UI_FILES TutorialFunctionalityControls.ui )

Page 61: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Instantiierung von Klassen und Pointer

Page 62: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 40 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Instantiierung

Instantiierung von ITK/VTK/MITK-Klassen:

Statt new className;

className::New();

Page 63: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 42 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Instantiierung

//VTK: vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();

//ITK/MITK: itk::Command::Pointer command = itk::Command::New();

ACHTUNG: “*” statt “::Pointer” bei Instantiierung führt sehr bald zum Absturz!!

Page 64: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 43 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

::Pointer ist ein Smart Pointer

Object Smart Pointer

Smart Pointer

Smart Pointer

counter=0 counter=1 counter=2 counter=3

Self - Delete

Page 65: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Daten-Pipeline

Page 66: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 46 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Daten-Pipeline

Objekt-orientierter Ansatz: • Daten-Klassen und • Algorithmen-Klassen Algorithmen nicht als Funktionen, sondern als Klassen

realisiert !

Page 67: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 47 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Daten-Pipeline

Algorithmen-Klassen: • Oberbegriff: ProcessObject • Daten-Erzeuger: Source • Daten-Verarbeiter: Filter

(sind somit ebenfalls Sourcen)

Page 68: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 48 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Daten-Pipeline

Sourcen besitzen ihre Ausgabe-Daten-Objekte! Umgekehrt kennt das Ausgabe-Daten-Objekte seinen

Erzeuger (Source)!

:DataSource

:DataObject

Datenfluss

Page 69: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 49 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Daten-Pipeline

Filter kennen zudem ihre Eingabe-Daten-Objekte:

Daten-Pipeline!!

:Filter1

:DataObject

:DataObject

:Filter2

:DataObject Datenfluss

Page 70: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 50 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Daten-Pipeline

Filter können auch mehrere Eingabe-/ Ausgabe-Daten-Objekte haben:

:DataObject

:Filter1

:DataObject

:Filter2

:DataObject Datenfluss

:DataObject

:Filter3

:DataObject

Page 71: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 51 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Verbinden von Filtern

SourceType::Pointer source = SourceType::New(); FilterType::Pointer filter = FilterType::New(); filter->SetInput(source->GetOutput());

Daten-Objekte meist “unsichtbar”!

:source

:DataObject

:filter

Page 72: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 52 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Update/Leere Daten-Objekte

SourceType::Pointer source = SourceType::New(); // Achtung: Daten-Objekt ist zunächst leer!! // Garantie für aktuelles Daten-Objekt: Update()! source->Update();

:source

:DataObject :DataObject

Page 73: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 53 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Modify

Pipeline update …

A B

C

D E

F

data

update

D

Update E

E

F

D

Keine unnötigen Neuberechnungen !!

Update F

Page 74: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Adaptor Classes: Connecting ITK, VTK data classes to MITK

Page 75: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 59 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Access MITK images as ITK images

• ITK images are templated • mitk::Image is not templated

Example code in mitk/Examples/Tutorial/Step6.cpp

// access method template < … > MyAccessMethod( itk::Image<…>* itkImage, … ) { … }

// calling the access method AccessByItk(mitkImage, MyAccessMethod, …)

Page 76: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 60 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Converting images ITKMITK

mitk::Image to itk::Image cast: mitk::CastToItkImage(mitk::Image, itk::Image<…>&)

• converts data type if neccessary • otherwise references memory of data array • dimension of itk::Image must equal dimension of mitkImage

itk::Image<> to mitk::Image cast:

mitk::Image::Pointer mitk::ImportItkImage(const itk::Image<…>&)

•references memory of itk::Image

Page 77: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 61 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Connecting MITK images to VTK

… not a conversion, just accessing:

vtkImageData*

mitk::Image::GetVtkImageData(int time=0)

Page 78: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 62 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Surfaces MITK VTK

Again: not a conversion, just accessing:

vtkPolyData* mitk::Surface::GetVtkPolyData(int time=0)

mitk::Surface::SetVtkPolyData (vtkPolyData*, int time=0)

Page 79: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Interaction and Undo

Page 80: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 64 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Interactors

DataNode

BaseData

Mapper

DataInteractor

Property

GeometryFrame 1 1

1 n

1 1

1 n

1 1

Interactors: behavior defined in state-machines undo-/redo concept dimension/geometry-independent definition: (often) identical interaction code for 2D and 3D

Page 81: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 65 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Interaction Scheme

keyboard / mouse etc.

QmitkRenderWindow

UndoController

Data

E,a XML

SpecialInteractor Operation

Dispatcher

Page 82: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Seite 68 3/4/2013 |

Sascha Zelzer

Medizinische und Biologische Informatik

Thank you!

Questions?

Page 83: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Sascha Zelzer

Division of Medical and Biological Informatics, DKFZ Heidelberg

MITK Modular Development

Page 84: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Levels of Modularity and Interoperability

Modularity refers to the logical decomposition of a large system into smaller collaborating pieces.

General modularity concepts: Reusable executables (legacy code) Shared libraries Reusable software components as “Services” Library / Component / Service repositories

Page 85: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Levels of Modularity and Interoperability

MITK supports different “modularity approaches”

MITK Modules (shared libraries) MITK Micro Services (Modules + Service Registry) CTK Plug-ins (OSGi concepts) BlueBerry Application Framework (think of Eclipse RCP) Command Line Interface (CTK)

Page 86: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm.

MITK Modules

Page 87: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. MITK Modules

Shared libraries MITK CMake macros for easy

creation and orchestration Automatic dependency

checking and error reporting

SET(CPP_FILES mitkImageStatisticsCalculator.cpp … ) MITK_CREATE_MODULE(ImageStatistics DEPENDS Mitk ImageExtraction PlanarFigure)

Page 88: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. MITK Micro Services

MITK modules can publish services and bind services from other modules:

Service description

Service requester

Service provider

Service registry

Interact

Find Publish

API is very close to the OSGi Service Layer specs.

Page 89: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. MITK Micro Services

Think of a service as: “work done for another” Services imply a contract between the provider of the

service and its consumers. A service-oriented approach promotes: Less coupling between providers and conusmers leading

to higher reuse of components More emphasis in interfaces Clear description of dependencies Support for multiple competing implementations Powerful service look-up mechanisms based on service

properties and a LDAP query language

Page 90: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. MITK Micro Services

mitk::ModuleContext* mc = mitk::GetModuleContext(); MyService* myService = new MyServiceImpl(); mc->RegisterService<MyService>(myService);

struct MyService { virtual ~MyService(); virtual void DoSomething()=0; }; US_DECLARE_SERVICE_INTERFACE (MyService,“org.ms.mysrv/1.0”)

Service Interface class MyServiceImpl : public MyService { void DoSomething(){…}; };

mitk::ServiceReference ref = mc->GetServiceReference<MyService>(); if (ref) { mc->GetService<MyService>(ref)->DoSomething(); }

Service provider

Page 91: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm.

CTK Plugin Framework

Page 92: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Plugin Framework

Dynamic Plugin Framework

(based on OSGi)

Enables service oriented architectures

CTK provides basic plugins for distributed/large-scale applications

Page 93: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Plugin Framework

Highlighted Features:

• Reduced complexity plug-ins hide their internals and communicate through well-defined services

• Adaptive supports optional and dynamic service dependencies

• Versioning plug-ins and their dependencies are versioned

• Simple the API is surprisingly simple

• Non intrusive no special interface required for services

Page 94: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. OSGi Specifications

OSGi Core Specifications are small OSGi Service

Compendium defines many optional services:

Page 95: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Plugin Framework

Implemented OSGi specifications in CTK Log Service Specification

Provides a general purpose message logger. Metatype Service Specification

Provides a unified way to describe metadata about services. Configuration Admin Service Specification

Allows to set the configuration information of deployed plugins.

Event Admin Service Specification Inter-plugin communication mechanism based on a event publish and subscribe model.

Page 96: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Event Admin

Features Synchronous or asynchronous event delivery Event from different threads are sent in parallel Event handler blacklisting

Event publisher: sends events related to a specific topic Event handler: expresses interest in one or more topics

Page 97: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Plug-in structure

Meta information Third-party dependencies

Unique name

Page 98: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. OSGi meta information

manifest_headers.cmake set(Plugin-Name "A human readable name for your plug-in") set(Plugin-Version "x.x.x") set(Plugin-Vendor "A human readable name for the vendor of the plug-in") set(Plugin-ContactAddress "Could be a web page, a email adress, etc.") set(Require-Plugin <list-of-plugin-symbolic-names>)

Page 99: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm.

BlueBerry Application Framework

Page 100: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. BlueBerry

BlueBerry Application framework based on CTK plug-ins Design and extensibility inspired by the Eclipse RCP Shipped with MITK, but it is indepenent of MITK

Page 101: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. What is BlueBerry?

BlueBerry Features Provides an application framework similar to the Eclipse

RCP in C++ Based on the CTK plug-in model Solutions for lazy loading of plug-ins (scalability) Flexible extension mechansims Provides general purpose plug-ins for extensible applications

Page 102: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Plug-in structure

Meta information

Exported code

Internal code

Extension points

Unique name

Page 103: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Define extensions

plugin.xml

Page 104: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Registering executable extensions

MyPluginActivator.cpp

Page 105: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Conclusion

Advantages An application made out of plug-ins Stronger encapsulation & loose coupling Exchangeable software modules CTK services BlueBerry extension points

A bunch of concepts for creating Rich Client applications Flexible application layout Reusable „views“ and programmable „perspectives“

A lot of MITK imaging plug-ins

Page 106: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Conclusion

Costs Writing XML files for extension points Code for tracking services (they can come and go as they want) Little overhead for the plug-in management Components are tied to the BlueBerry application framework

Page 107: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm.

Command Line Interface

Page 108: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Command Line Interface

• Integration of (legacy) stand-alone command line programs

• Executables must provide an XML file describing the command line parameters

• Allows (limited) communication via standard input/output channels

Examples • ITK based registration programs • Compiled Matlab code • Slicer CLI modules

Page 109: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Command Line Interface

• Automatic GUI generation based on the XML description

• Command line module explorer in CTK

• MITK integration via org.mitk.gui.qt.cmdlinemodules

Page 110: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

3/4/2013

Sascha Zelzer

Modular Developm. Questions

Thank you!

Questions?

Page 111: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITK projects

Marco Nolden Medical and Biological Informatics German Cancer Research Center, Heidelberg (D)

Page 112: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

MITK GPGPU programming with OpenCL

Page 113: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics MITK OpenCL Module

• Provides basic classes for comfortable OpenCL usage

• Primary aim: image processing filter – ITK-like filter interface – Filter pipeline implementation

● special methods for two GPU filter ● on-demand data copy

• Follows the structure of OpenCL:

Page 114: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

Module Setup

• Requirements: – OpenCL capable device

● NVIDIA GeForce 8600 and newer ● ATI Radeon 4600 and newer

– OpenCL library, OpenCL header ( available through an OpenCL SDK )

• Configuration:

– CMake Flag: MITK_USE_OPENCL – Extra Flags: MITK_OPENCL_INC, MITK_OPENCL_LIB

• Module Usage:

– module name mitkOcl

Page 115: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

MITK OpenCL Module : Structure

Data Objects • OclImage

– Encapsulates mitk::Image

• OclMemoryObject – generic memory object – holds an void* buffer and corresponding cl_mem

pointer pointing to (global) graphics memory

Page 116: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

MITK OpenCL Module : Structure

Specialized objects • OclContextManager

– singleton class – creates/destroys context – OclContextManager::GetInstance()->GetContext();

• OclRessourceManager

– each filter – unique ID – manager holds compiled binaries (avoiding multiple

code compile)

• mitkOclUtils.h – OCL_CHECK_ERR( int ) macro – methods for compiling, platform information

Page 117: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

MITK OpenCL

• UML Class Diagram

Page 118: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

Image guided therapy with MITK

Page 119: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Motivation

Planning Intervention

The Problem:

Page 120: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Motivation The Solution: Image Guided Therapy

Page 121: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Tracking Technology

MITK-IGT: Software to use tracking systems

Track tools using an IGT Pipeline

Use surfaces to visualize your tools

Log your tracking data (csv or xml)

Supported devices: - NDI Polaris - NDI Aurora - Claron Technology MicronTracker

Installer and source code availiable

visit www.mitk.org IGT

Page 122: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Outline

Motivation Requirements Structure Outlook

Page 123: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Requirements

Hardware control of tracking systems

Page 124: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Requirements

Hardware control of tracking systems

Tracking systems Tracking tools

Page 125: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Requirements

• Hardware control of tracking systems

• Real-time localization of multiple objects

Page 126: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Requirements

Real-time localization of multiple objects

Multiple tools for each tracking device

Tool 1 Tool 2

Tool 3

Tool 4 Tool 5 Tool 6

Tool 7

Page 127: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Requirements

• Hardware control of tracking systems

• Real-time localization of multiple objects

• Registration

Page 128: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Requirements

Registration

Image to patient registration and object registration

Page 129: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Requirements

• Hardware control of tracking systems

• Real-time localization of multiple objects

• Registration

• Visualization

Page 130: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Requirements

Visualization

Efficiently show pose information of tracked tool -> Visualization filter

Page 131: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Outline

Motivation Requirements Structure

– Hardware layer – Processing layer

Outlook

Page 132: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

Processing layer

Processing Filters

Navigation Data Source

Recording Filters Visualization Filters

Navigation Data

Navigation Data

Overview

„Control of tracking devices“

„Recording, Processing and Visualization of tracking data “

Hardware layer Tracking Device

Tracking Tools

Tracker API Navi-gation Data File

Page 133: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

Liver Ablation

Page 134: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

Assisted liver tumor ablation – Pig experiments

Page 135: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics MITK-US: US Image Processing

MITK module for support of ultrasound devices (MITK-US) Software demo @ BVM2013

Page 136: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

Augmented Reality

Page 137: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

Laparoscopic Prostatectomy

Page 138: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

MITK Time-of-Flight

Page 139: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics ToF Surface-Generation

Depth-Field

Original surface

Surface reconstruction

Page 140: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Time of Flight (ToF) - Imaging

Abstracts hardware communication from data processing / interaction Re-usable GUI components Flexible, fast data processing

MITK-ToF – open-source toolkit for range image processing

Int J CARS (2011): “MITK-ToF – Range data within MITK”

Page 141: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

MITK Special Interactions

Page 142: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Headtracking

IR Dioden

Page 143: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics

MITK: extending data types

Page 144: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Diffusion Imaging (Q-Balls)

Page 145: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics Visualisation of Nerve Bundles

Page 146: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

MITK – Getting started

Marco Nolden Medical and Biological Informatics German Cancer Research Center, Heidelberg (D)

Page 147: Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTKMITK-Tutorial-BVM-2013.pdf · Entwicklunginteraktiver Bildverarbeitungssysteme mitMITKundCTK AndreasFetzer,MichaelMüller

Heidelberg (D)

Marco Nolden Medical and Biological Informatics MITK links

Homepage: http://www.mitk.org Tutorial:

http://docs.mitk.org/2012.12/TutorialPage.html Bug tracking: http://bugs.mitk.org Quality control: http://cdash.mitk.org Mailing list: http://mitk.org/Mailinglist Source code managed by git:

http://mitk.org/git/?p=MITK.git;a=summary https://github.com/MITK