ITK/Release 4/SpatialObjects/2010.11.18-Meeting: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
 
(18 intermediate revisions by one other user not shown)
Line 1: Line 1:
= Spatial Objects =
= Attendees =
 
== Attendees ==


* Arnaud Gelas
* Arnaud Gelas
Line 7: Line 5:
* Luis Ibanez
* Luis Ibanez


== Potential Use for FEM ==
= Potential Use for FEM =


* A potential FEMMeshSpatialObject could be created
* A potential '''FEMMeshSpatialObject''' could be created
** Still a "FEMMesh" must be created
** Still a "FEMMesh" must be created
* How much refactoring is needed in Numeric/FEM
* How much refactoring is needed in Numeric/FEM
* IO is a critical need for FEM.
* IO is a critical need for FEM.
** One option is to implement a FEMMeshSpatialObject and
** One option is to implement a '''FEMMeshSpatialObject''' and
*** a Reader Writer for it.
*** a Reader Writer for it.
**** We can take the IO code from the Solver in the registration framework (Code/Numerics/FEM/itkFEMSolver.cxx)
= Other Modifications =
== Add TimeStamp ==
* The actual TimeStamp will probably go in the itk::DataObject
* and will be available to the SpatialObject (given that it derives from itk::DataObject)
== Compute Statistics ==
* A new filter that takes two inputs
** an Image
** an SpatialObject (as a mask)
* This filter compute intensity and shape statistics from image pixels that are "inside" of the spatial object.
* '''Use case:''' Having thousands of cells (biological ones) represented as itk::SpatialObjects and over each one compute statistics from the image pixels that are inside.
** Multi-thread over groups of spatial objects.
** Maybe reusing the LabelMap statistics classes ?
** Converting the spatial objects to a label map.
== Time and Tracking ==
* Given a group of SpatialObjects at time 1
* Given a group of SpatialObjects at time 2
=== Need to ===
* Filter(s) to Establish correspondences between the homologous spatial object of T1 to T1 (find self...)
* What should the output be ?
* Create itkTrajectoriesSpatialObject (3D + time)
** It derives from the itkGroupSpatialObject
** It provide links (edges) between objects that are the "same".
*** The links are across 4D.
== Conceptual Grouping ==
* Have ShapedGroupSpatialObjects with Shape information
** '''Use Case''': Track an organ (composed of spatial objects, each one being cells)
* The shape would be the outline of the group of cell.
== Arbitrary Properties ==
* Add arbitrary (key, value) pairs to label the objects.
** For example tissue-type (connective, epithelial...).
* This could be done by using the MetaDataDictionary
** SpatialObjects have MetaDataDictionaries (they inherit it from the itk::Object).
* itk::QuerySpatialObjectFilter that take a Spatial object and select the ones for which the MetaData dictionary has labels with a given value.
* Is the MetaData Dictionary managed by the SpatialObject Reader/Writer ?
= Action Items =
* Kitware: to create skeletons classes
** FEMSpatialObject
** Make sure that it works nicely with the itkSpatialObjectWriter.txx (in ITK/Code/IO)
* Create a filter that takes a collection of spatial objects (in a itkGroupSpatialObject) and generates a label map.
** Maybe introduce a policy for overlap resolution (?)
** Arnaud to send this code to Luis
** Luis to create the filter.

Latest revision as of 16:01, 9 December 2011

Attendees

  • Arnaud Gelas
  • Vincent Magnotta
  • Luis Ibanez

Potential Use for FEM

  • A potential FEMMeshSpatialObject could be created
    • Still a "FEMMesh" must be created
  • How much refactoring is needed in Numeric/FEM
  • IO is a critical need for FEM.
    • One option is to implement a FEMMeshSpatialObject and
      • a Reader Writer for it.
        • We can take the IO code from the Solver in the registration framework (Code/Numerics/FEM/itkFEMSolver.cxx)

Other Modifications

Add TimeStamp

  • The actual TimeStamp will probably go in the itk::DataObject
  • and will be available to the SpatialObject (given that it derives from itk::DataObject)

Compute Statistics

  • A new filter that takes two inputs
    • an Image
    • an SpatialObject (as a mask)
  • This filter compute intensity and shape statistics from image pixels that are "inside" of the spatial object.
  • Use case: Having thousands of cells (biological ones) represented as itk::SpatialObjects and over each one compute statistics from the image pixels that are inside.
    • Multi-thread over groups of spatial objects.
    • Maybe reusing the LabelMap statistics classes ?
    • Converting the spatial objects to a label map.

Time and Tracking

  • Given a group of SpatialObjects at time 1
  • Given a group of SpatialObjects at time 2

Need to

  • Filter(s) to Establish correspondences between the homologous spatial object of T1 to T1 (find self...)
  • What should the output be ?
  • Create itkTrajectoriesSpatialObject (3D + time)
    • It derives from the itkGroupSpatialObject
    • It provide links (edges) between objects that are the "same".
      • The links are across 4D.

Conceptual Grouping

  • Have ShapedGroupSpatialObjects with Shape information
    • Use Case: Track an organ (composed of spatial objects, each one being cells)
  • The shape would be the outline of the group of cell.


Arbitrary Properties

  • Add arbitrary (key, value) pairs to label the objects.
    • For example tissue-type (connective, epithelial...).
  • This could be done by using the MetaDataDictionary
    • SpatialObjects have MetaDataDictionaries (they inherit it from the itk::Object).
  • itk::QuerySpatialObjectFilter that take a Spatial object and select the ones for which the MetaData dictionary has labels with a given value.
  • Is the MetaData Dictionary managed by the SpatialObject Reader/Writer ?

Action Items

  • Kitware: to create skeletons classes
    • FEMSpatialObject
    • Make sure that it works nicely with the itkSpatialObjectWriter.txx (in ITK/Code/IO)
  • Create a filter that takes a collection of spatial objects (in a itkGroupSpatialObject) and generates a label map.
    • Maybe introduce a policy for overlap resolution (?)
    • Arnaud to send this code to Luis
    • Luis to create the filter.