NA-MIC, 2008 June Workshop, IHK Akademie Westerham KWWidgets

Slides:



Advertisements
Similar presentations
Surgical Planning Laboratory -1- Brigham and Womens Hospital Slicer Tutorial 7 Saving Data Sonia Pujol, Ph.D. Randy Gollub, M.D.,
Advertisements

NA-MIC National Alliance for Medical Image Computing Slicer Tutorial Module: Segmentation May 26, 2005.
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 Slicer3 plugins: Going Further Common architecture for interactive and batch processing.
National Alliance for Medical Image Computing Slicer3 plugins Common architecture for interactive and batch processing.
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.
Programming into Slicer3. Sonia Pujol, Ph.D., Harvard Medical School National Alliance for Medical Image Computing ©2010,ARR
NA-MIC National Alliance for Medical Image Computing 3D Slicer Qt Port & qCTKWidgets Steve Pieper, Ph.D.
National Alliance for Medical Image Computing Slicer3 plugins Common architecture for interactive and batch processing.
NA-MIC National Alliance for Medical Image Computing Connected Threshold Image Filter Salma Bengali, Alan Morris, Josh Cates, Rob.
NA-MIC National Alliance for Medical Image Computing CARMA Inhomogeneity Correction Filter Alan Morris, Eugene Kholmovski, Josh Cates,
NA-MIC, 2008 June Workshop, IHK Akademie Westerham KWWidgets Sebastien BARRE - Kitware, Inc.
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.
NA-MIC National Alliance for Medical Image Computing 3D Slicer Interactive Modules Steve Pieper, PhD.
Slide 1 Visualization of scientific data under Linux - Techniques and data wrangling Mike Walterman, Manager of Graphics Programming, Scientific Computing.
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 Slicer4 Guided Tour Steve Pieper, Ph.D.
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.
Leicester, February 24, 2005 VisIVO, a VO-Enabled tool for Scientific Visualization and Data Analysis. VO-TECH Project. Stage01 Ugo Becciani INAF – Astrophysical.
3D Slicer Architecture and Implementation
NA-MIC National Alliance for Medical Image Computing NAMIC-Kit Update Will Schroeder Jim Miller Bill Lorensen.
© NIH National Center for Image-Guided Therapy, 2011 Tumor Segmentation from DCE-MRI with the SegmentCAD module Vivek Narayan, Jayender Jagadeesan Brigham.
3D Slicer: A Free & Open Source Platform For Medical Image Analysis and Visualization Brigham and Women’s Hospital.
NA-MIC National Alliance for Medical Image Computing Why NITRC Matters to NA-MIC Steve Pieper, PhD.
Edinburgh, January 25, 2005 VisIVO, a VO-Enabled tool for Scientific Visualization and Data Analysis: Overview and Demo 1. Ugo Becciani (OACt): Introduction.
NA-MIC National Alliance for Medical Image Computing Slicer4 CLI Slicer Execution Model.
Advanced BioPSE NCRR SCIRun GUI Guidelines J. Davison de St. Germain Chief Software Engineer SCI Institute December 2003 J. Davison de St.
National Alliance for Medical Image Computing Slicer3 Status Update.
NA-MIC National Alliance for Medical Image Computing NA-MIC Core 2 Update: Kitware Will Schroeder Kitware NA-MIC Core 2 PI NA-MIC Core.
Introduction to Web AppBuilder for ArcGIS: JavaScript Apps Made Easy
William Schroeder, Ph.D. §, Andy Cedilnik §, Sebastien Barré, Ph.D. §, William Lorensen ‡, James Miller, Ph.D. ‡, Daniel Blezek, Ph.D. ‡ § Kitware Inc.,
NA-MIC National Alliance for Medical Image Computing Sebastien BARRE, Ph.D. / NA-MIC Programmers’ Week 2005.
NA-MIC National Alliance for Medical Image Computing Slicer and ITK Raul San Jose.
NA-MIC, 2008 June Workshop, IHK Akademie Westerham VTK
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,
Programming into Slicer3. Sonia Pujol, Ph.D., Harvard Medical School National Alliance for Medical Image Computing ©
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 13 GUI Programming.
9-Nov-97Tri-Ada '971 TASH An Alternative to the Windows API TRI-Ada ‘97 Terry J. Westley
NA-MIC National Alliance for Medical Image Computing Slicer 2010: Past, Present, and Future Steve Pieper, Ph.D.
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.
1 ParaView Future, vision, …. 2 ParaView Architecture.
NA-MIC National Alliance for Medical Image Computing Kitware, Inc. Core 2 Engineering William J. Schroeder.
NA-MIC National Alliance for Medical Image Computing Non-Interactive Tools Stephen Aylward, Kitware
NA-MIC National Alliance for Medical Image Computing Slicer3 Update
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.
An Open Source Platform for Registration, Segmentation, Quantitative Analysis, and Visualization of Biomedical Image Data 3D Slicer About 3D Slicer Segmentation.
Image Processing with Slicer
Topics Graphical User Interfaces Using the tkinter Module
f3d Format for Storage of 3D Grids
3D Slicer Architecture and Implementation
Steve Pieper, PhD Raul San Jose, PhD Alex Yarmarkovich, PhD
Graduation Project Kick-off presentation - SET
Slicer3 Architecture.
Image filtering Images by Pawan Sinha.
3D Slicer Architecture and Implementation
CA16R405 - Mobile Application Development (Theory)
2006 Summer PrWeek Slicer3 UI: Design and implement Slicer3’s UI; provide C++ infrastructure for module UI development. Team Plan/Expected Challenges/Publication.
UCSD / BIRN Coordinating Center NAMIC Group
Week 8 Swing NetBeans GUI Builder
Topics Graphical User Interfaces Using the tkinter Module
LING 408/508: Computational Techniques for Linguists
3D Slicer Version 3.0 Update for mBIRN
Tumor Segmentation from DCE-MRI with OpenCAD
Overview Before You Start Structure of a Module Ports and Datatypes
Presentation transcript:

NA-MIC, 2008 June Workshop, IHK Akademie Westerham KWWidgets Sebastien BARRE - Kitware, Inc.

What is KWWidgets? A GUI toolkit Cross-platform Open-license Free NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 2

What is KWWidgets? (cont.) A GUI toolkit that provides low-level and high-level visualization-oriented widgets compatible with the VTK framework. vs. NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 3

What is KWWidgets? (cont.) Over 150 C++ classes, Around 190,000 lines of code, 49 person years, roughly $5M at 100k per person (source: ohloh.org) Used extensively by Kitware to develop open-source and commercial end-user applications for more than 9 years Used extensively in Slicer3 NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 4

What is KWWidgets? (cont.) Cardiac segmentation and CT Volume Rendering in Slicer3, using data and segmentations from the collaboration with Boston Children's Hospital Pediatric Cardiology. Cardiac segmentation and CT Volume Rendering in Slicer3, using data and segmentations from the collaboration with Boston Children's Hospital Pediatric Cardiology. NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 5

What is KWWidgets? (cont.) VolView 3.0 (Work in Progress) NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 6

Features Object-oriented C++ layer on top of Tcl/Tk Inherit from the VTK coding framework checkbutton .cb1 .cb1 config -text "A checkbutton" .cb1 deselect pack .cb1 vtkKWCheckButton *cb1 = vtkKWCheckButton::New(); cb1->SetParent(parent); cb1->Create(); cb1->SetText("A checkbutton"); cb1->DeSelect(); app->Script("pack %s", cb1->GetWidgetName()); NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 7

Features (cont.) Can interact and co-exist with Tcl/Tk directly from Tcl/Tk or Slicer3 Wrapped into a Tcl package just like VTK Fast-prototyping NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 8

Features (cont.) C++ vs. Tcl vtkKWCheckButton *cb1 = vtkKWCheckButton::New(); cb1->SetParent(parent); cb1->Create(); cb1->SetText("A checkbutton"); cb1->DeSelect(); app->Script("pack %s", cb1->GetWidgetName()); package require kwwidgets vtkKWCheckButton cb1 cb1 SetParent $parent cb1 Create cb1 SetText "A checkbutton" cb1 DeSelect pack [cb1 GetWidgetName] … button .b -text "My Button" pack .b NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 9

Widgets overview Core widgets Composite widgets VTK widgets Helper classes NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 10

Widgets overview (cont.) Core widgets vtkKWCanvas vtkKWCheckButton vtkKWEntry vtkKWFrame vtkKWLabel vtkKWListBox vtkKWMenu vtkKWOptionMenu vtkKWPushButton vtkKWRadioButton vtkKWScale vtkKWScrollbar vtkKWText vtkKWThumbWheel vtkKWTopLevel vtkKWTree … NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 11

Widgets overview (cont.) Composite widgets vtkKWChangeColorButton vtkKWDialog vtkKWExtent vtkKWListBoxToListBoxSelectionEditor vtkKWHSVColorSelector vtkKWNotebook vtkKWProgressGauge vtkKWRange vtkKWSelectionFrame vtkKWSelectionFrameLayoutManager vtkKWSplashScreen vtkKWSplitFrame vtkKWTclInteractor vtkKWToolbar vtkKWToolbarSet vtkKWUserInterfaceManager vtkKWUserInterfacePanel vtkKWWidgetSet vtkKWWidgetWithScrollbars vtkKWWindow … NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 12

Widgets overview (cont.) … more composite widgets: divide and conquer NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 13

Widgets overview (cont.) VTK widgets vtkKWColorPresetSelector vtkKWColorTransferFunctionEditor vtkKWCornerAnnotationEditor vtkKWHeaderAnnotationEditor vtkKWPiecewiseFunctionEditor vtkKWRenderWidget vtkKWScalarBarAnnotation vtkKWScalarComponentSelectionWidget vtkKWTextPropertyEditor vtkKWVolumeMaterialPropertyWidget vtkKWVolumePropertyWidget … NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 14

Examples A simple image viewer using KWWidgets and VTK NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 15

Examples (cont.) NA-MIC, 2008 June Workshop, IHK Akademie Westerham package require kwwidgets vtkKWApplication app vtkKWWindowBase win app AddWindow win win Create vtkKWRenderWidget rw rw SetParent [win GetViewFrame] rw Create rw CornerAnnotationVisibilityOn pack [rw GetWidgetName] -side top -expand y -fill both \ -padx 0 -pady 0 vtkXMLImageDataReader reader reader SetFileName "head100x100x47.vti" vtkImageViewer2 viewer viewer SetRenderWindow [rw GetRenderWindow] viewer SetRenderer [rw GetRenderer] viewer SetInput [reader GetOutput] vtkRenderWindowInteractor iren viewer SetupInteractor iren rw ResetCamera set ca [rw GetCornerAnnotation] $ca SetImageActor [viewer GetImageActor] $ca SetWindowLevel [viewer GetWindowLevel] $ca SetText 2 "<slice>" $ca SetText 3 "<window>\n<level>" vtkKWScale slice_scale slice_scale SetParent [win GetViewFrame] slice_scale Create slice_scale SetRange \ [viewer GetWholeZMin] [viewer GetWholeZMax] slice_scale SetValue [viewer GetZSlice] slice_scale SetCommand "" \ {viewer SetZSlice [slice_scale GetValue] ; rw Render} pack [slice_scale GetWidgetName] -side top -expand n \ -fill x -padx 2 -pady 2 app Start rw Delete reader Delete viewer Delete iren Delete slice_scale Delete win Delete app Delete NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 16

Examples (cont.) KWWidgetsTour Show all widgets Provide Tcl vs. C++ vs. Python code comparison NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 17

KWWidgets in Slicer3 in Base/GUI (Load/Save, App Settings, Color, Data, Fiducials, Models, ROI, Slices, Transforms) NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 18

KWWidgets in Slicer3 (cont.) in C++ or Tcl modules slicerWiki: How to implement an Interactive Module GUI NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 19

KWWidgets in Slicer3 (cont.) <?xml version="1.0" encoding="utf-8"?> <executable> <category> Filtering.Denoising </category> <title> Median Filter </title> <description> The MedianImageFilter is commonly used as a robust approach for noise reduction. This filter is particularly efficient against "salt-and-pepper" noise. In other words, it is robust to the presence of gray-level outliers. MedianImageFilter computes the value of each output pixel as the statistical median of the neighborhood of values around the corresponding input pixel. </description> <version>0.1.0.$Revision: 2085 $(alpha)</version> <contributor>Bill Lorensen</contributor> <parameters> <label>Median Filter Parameters</label> <description>Parameters for the median filter</description> <integer-vector> <name>neighborhood</name> <longflag>--neighborhood</longflag> <description>The size of the neighborhood in each dimension</description> <label>Neighborhood Size</label> <default>1,1,1</default> </integer-vector> </parameters> <label>IO</label> <description>Input/output parameters</description> <image> <name>inputVolume</name> <label>Input Volume</label> <channel>input</channel> <index>0</index> <description>Input volume to be filtered</description> </image> <name>outputVolume</name> <label>Output Volume</label> <channel>output</channel> <index>1</index> <description>Output filtered</description> </executable> in Command Line Plugins slicerWiki: Execution Model Documentation UI and command-line generated from self-describing XML NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 20

Resources Web & Wiki: http://kwwidgets.org API: http://public.kitware.com/KWWidgets/doc/nightly/html Tutorial and examples available in the source: cvs –d :pserver:anonymous@public.kitware.com:/cvsroot/KWWidgets co KWWidgets Dashoard: http://www.cdash.org/CDash/index.php?project=KWWidgets NA-MIC, 2008 June Workshop, IHK Akademie Westerham NA-MIC, 2008 June Workshop, IHK Akademie Westerham June 16-17, 2008 21