Projects:ARRA:miAnnotation

From NAMIC Wiki
Revision as of 02:15, 24 February 2010 by Pohl (talk | contribs) (→‎Progress)
Jump to: navigation, search
Home < Projects:ARRA:miAnnotation

Back to Slicer ARRA home page

Aim

Medical images often contain a wealth of information, such as anatomy and pathology, not explicitly accessible. One way to address this issue is via image annotation and markup. We propose to create a comprehensive framework for annotation and markup within 3D Slicer, enabling users to capture structured information easily. Furthermore, we will develop schemas for saving and recovering this information into and from XNAT, allowing queries of larger data sets of medical scans. This tool will provide clinicians with a relatively simple way to capture information latent in medical scans, and also to select micro-cohorts of medical scans for studying diseases.

Research Plan

3D Slicer currently provides very basic technology for annotating images. This limits users in their ability to properly capture semantic information contained in images and data sets. We propose to address this issue by expanding Slicer's mark up and annotation capabilities. New features will include:

  • a rich set of geometric objects for improved visual differentiation between annotations
  • markers for measuring anatomical characteristics, such as the volume of an annotated region, to provide patient specific information difficult to extract from visual inspection
  • entry fields beyond free-text, such as graphics and external data, to capture comprehensive information and support for emerging domain specific ontologiesand
  • a full integration of these capabilities with the mrml tree to support Scenesnapshots, load, save both to disk and XNAT.

We will implement these features by developing two different modules. The first module, called Marker Module, creates different types of markers based on current ITK technology. The user defines the appearance of the marker by specifying its color, size, and shape, such as points and 3D boxes. The user also labels each marker with tags and specifies its function, such as measuring the volume of a region.

The Annotation Module, the second module, provides the interface for annotating images with these markers. Users place the markers on the image and further specify the semantic information through free text, plots, and references to ontology and internet. The annotations are shown both in 3D and 2D viewers. The module also allows annotating entire scenes by linking annotations across images, as well as within an image. All annotations are stored in a database targeted towards medical imaging, called XNAT. The structure of the database is automatically defined by the tags of the markers. Thus, users can query across large image data sets by looking for specific tag values.

Both modules are accompanied by training materials and documentation to ensure usability.

Design of Module

Key Personnel

60% Kilian Pohl
95% Yong Zhang

Events

Progress

  • 02/26/10
    • Created pop up window showing screen shot
    • Manual editing of coordinates via "Property Window"
    • Resolved column width problem in table (original problem, second screen shot problem)
    • Fixed bug where hide icon changed size in table
    • Include icons when saving html report in a directory with the same name as the html file
    • Reorganized GUI based on feedback from Wendy Plesniak, BWH
  • 02/19/10
    • Implement a general structure for vtkMRMLAnnotation*Node
    • Work together with Kitware to resolve QT Table layout problem
    • Allow defining long text annotations for each widget
    • Improve user interaction through pop up windows when trying to modify an existing annotation
    • Creating and removing ruler now works correctly
    • Use correct label format to display measurement values in Annotation Property window
    • Created a "Save annotation" Window
    • Fixed changing icon size in table (see original screen shot )
    • Fixed slicer crashing closing the property window
    • Renamed and resized columns in Table
  • 02/12/10 removed bugs related to table buttons, linked button to angle widget and ruler widget
  • 02/05/10 implemented "Save Annotation Report" button and "Move up/down" buttons; added extra column in the report table for visibility; modified annotation property dialog; implemented button-click in the table.
  • 01/29/10 implemented functionality for "Annotation Property Modification" button, "Create Report" button, and integrated new icons for buttons.
  • 01/22/10 Set up the source control for the reporting module; implemented functionality for "Select All" button, "Visible" button, and "Delete" button in the GUI; created new icons for buttons
  • 01/15/10 Organized biweekly Tcon
  • 01/08/10 Participated in all week All Hands Meeting in Utah; Expanded QT interface with functionality to set seeds in images; Defined a final MRML Structure for storing annotation.
  • 01/01/10 Generated a GUI interface via QT for the annotation module. Reviewed all VTK Widgets related to annotation.
  • 12/25/09 Created project and organized break out session at AHM meeting. Coordinated efforts with BWH team in preparation of the meeting.
  • 12/18/09 Held workshop to integrate AMI into 3D Slicer. Hired new person to implement AMI in Slicer.
  • 12/11/09 Summary of tools demoed at RSNA
  • 12/04/09 Visited RSNA to review annotation tools by GE, Siemens & Phillips. Connected to caBIG AIM project to see how we can make use of their data scheme
  • 11/29/09 Created GUI for MarkUp module
  • 11/20/09 Design MRML Structure of Annotation and MarkUp Module
  • 11/13/09 Organize Annotation Brain Storming Session
  • 11/06/09 Designed User Interface , Meet with Julien Finet and Jean-Christophe Fillion-Robin from Kitware to discuss integration of Qt in 3D Slicer
  • 10/30/09 Participated in Qt-Tcon, Interviewed candidate at Almaden, coordinated efforts with Nicole Aucoin
  • 10/23/09 Organized onsite interview , got in contact with Steve Pieper to discuss next steps, installed Slicer3
  • 10/17/09 Started interviewing postdoc as well as solving several HR issues for hiring personal

Feature Request

KW Widgets

QT Related

  • Submit bugs and feature request via Mantis
  • Feature requests that may open discussions can be added here

Unassigned

  • Change color of annotation when selected - need to wait until Kilian implemented new mrml structure
  • Change display property for each annotation individually - needs to wait until new mrml structure is implemented

Yong

  • Major
    • Use the Kitware slider under Display Property
    • use selected color for widgets in viewer when selected in the table
    • Bug: Ruler still visible in 2D window after pressing hide button
    • include lock annotation into option button (use same logic as for new (De)select All button)
    • When defining text in annotation property then it is not shown in table
    • Define in the create frame below the annotation create buttons a line of icons/buttons: mouse mode status icon, radio button with play and pause, cancel, done
    • BUG: When pressing save button reporting module is replaced with last module visited before
    • two new annotation buttons under create: sticky note (pop up window), info extractor which will be a option button that displays all volume nodes -> you select the node to extract the info from the header => annotation is displayed in pop up window
    • Have text field in table to fill out space also when changing size of window (see current screen shot )
    • BUG: After resizing the 3D Window taking a screen shot only displays the window with the original size (see screen shot)
  • Important
    • Turn Screen Capture button into option button with options: Active viewer, All viewer, slicer window - by default last action
    • put options for screen capture into new screen capture pop window
    • (De) Select All button: change as discussed with Wendy to option button with proper logic
    • Combine move up and down button into one option button which shows the last action (up or down) by default
    • Create a Slicer widget for a multi column list with convenience button that we currently have - have options for making them visible or not
    • Define Tooltips for fiducial, angle, ruler,report, save mrml button
    • Fiducial button: put label under button (after click on) what to do next such as setting seeds in 3D window
    • BUG: Annotation Property: funny behavior with selecting set of digits in a numerical value and typing in a numeric value - only the first digit gets change.
    • In table: Add proper tool tip for visualization and edit button
  • Minor
    • Grid out your buttons (Create Frame)
    • Properties Window: set the display Properties frame in the collapse state by default
    • Create window showing volume tab when pressing Adjust Volume Properties
    • Show current mouse behavior on mouse behavior button - also show menu to change mouse behavior - use QPushButton::setMenu()
    • Show options in Change Viewer Layout use QPushButton::setMenu()
    • Generate testscript to interactively test various widgets and GUI elements
    • Lots of warning messages when compiling code
    • BUG when saving report with out ending html to the file name - icons will not be saved
    • Bug in Report: empty text fields are displayed without boundaries
    • When pressing the property button the following warning messages pop up in my command shell:

"QColor::setRed": invalid value 26214
"QColor::setGreen": invalid value 65535
"QColor::setBlue": invalid value 65535
"QColor::setRed": invalid value 65535
"QColor::setBlue": invalid value 65535

    • Remove the following warning messages:

/home/pohl/Slicer3/Slicer3/QTModules/Reporting/qSlicerReportingModuleWidget.cxx: In member function ‘void qSlicerReportingModuleWidget::onGenerateReportButtonClicked()’: /home/pohl/Slicer3/Slicer3/QTModules/Reporting/qSlicerReportingModuleWidget.cxx:1128: warning: comparison between signed and unsigned integer expressions /home/pohl/Slicer3/Slicer3/QTModules/Reporting/qSlicerReportingModuleWidget.cxx: In member function ‘void qSlicerReportingModuleWidget::deleteSelectedButtonClicked()’: /home/pohl/Slicer3/Slicer3/QTModules/Reporting/qSlicerReportingModuleWidget.cxx:1707: warning: comparison between signed and unsigned integer expressions

Wendy

  • Icons for edit conditioning for all annotation types, mouse mode images, pause, play, cancel, ok/done, poly line and spline with control points
  • Icons for two new annotation types: volume information extractor (pop up window), sticky note (pop up window)
  • Modify fiducial icon just to show one star, change save annotation icon
  • Extend the Save Data Widget API to display one data type and hide save options

Kilian

  • Change design of html report
  • Create vtkAnnotationWidget
  • Create vtkMRMLAnnotationFiducialNode
  • investigate vtkMRMLHierarchicalModelNode for annotations

Resolved

  • Include screen shots if any in the report (see an example)