Provide a well defined terminlogy to encode label meaning semantically
Currently MONAI Label just encodes/provides labels by their names (and potentially the pixel values). There is no well defined set of codes provided to really encode (if possible) the meaning and semantics of a label. That makes it harder to robustly integrate/deploy models that are provided by MONAI Label. Basic Idea: MONAI Label should provide as pragmatic light weighted way to use a dictionary that not just encodes a human readable name for a label, but also additional semantic encodings (e.g. based on SNOMEDCT or DICOM) that allows to encode e.g. the anatomic region, primary anatomic structures or other properties. Integrating/wrapping a model for MONAI Label would also then mean to make that mapping, if possible, to ensure that the results provided by a model are as rich encoded as possible. (Thought: May be also the fact if a model supports this rich well-defined encoding or not should directly be query-able via the REST API, as it might be an important decision for host application, if they want to offer it) There are already works out there in that direction (e.g. 3DSlicer, MITK, EUCAIM). We should check the SotA and see if we can just rely on something or a new community standard/dictionary should be established.
First Steps:
- SotA analysis
- Specify how we propose to encode
- Design concept for how to integrate it into the REST API, dev workflows etc. and implementation plan (smaller tangible issues)
This is a great idea 👍
For reference, here's the way we approach this in Slicer (based on SNOMED and DICOM): https://slicer.readthedocs.io/en/latest/user_guide/modules/terminologies.html
Two practical steps that could be implemented that would take us closer to these goals:
- Label description file
Start using a simple csv file format for describing labels, which maps label value to not just a project-specific segment name and color (as has been the common practice) but also additional columns for specifying standard terminology. The specification that we created for 3D Slicer should be generic enough to be adopted as is: https://slicer.readthedocs.io/en/latest/developer_guide/modules/colors.html#color-table-csv-file-format-csv
- Segment definitions
Provide exact definition of those standard terms for the purpose of image segmentation. The definition should be sufficient for a human to accurately segment a structure in an image. For example, it may need to be clarified what exactly is included/excluded in a segment (for the (SCT, 10200004, liver) we could specify if it must/most not/may include the vessels inside the liver).
A nice example of this is the CMA segmentation manual for brain segmentation: