The LabelEditor is a JugLab creation aiming to close the gap between segmentation algorithms and user interaction in ImageJ2 / Fiji.
The heart of this project is a mechanism to tag any label of an ImgLabeling instance with tags. A tag is of type Object so it can be anything.
A color can be assigned to a tag in ARGBType representation. The tag LabelEditorTag.DEFAULT can be used to assign a color to all labels with no associated tag.
Renderers implementing LabelEditorRenderer will be discovered via the SciJava Plugin mechanism and translate an ImgLabeling into a RandomAccessibleInterval<ARGBType> with reference to the assigned tags and tag colors.
This project uses Scijava Behaviours to bundle interaction concepts and connect them to a specific LabelEditorInterface instance (e.g. BDV or BVV).
BigDataViewer: currently the main target interface[TODO]bigdataviewer-ui-panel will be used to provide control over BDV and LabelEditor settings
BigVolumeViewer: buggy proof of concept implementation
- currently, all existing behaviours are accessible via right-click menu
SelectionBehaviourswork like any default selection model and uses the tagsLabelEditorTag.FOCUSandLabelEditorTag.SELECTEDConflictSelectionBehavioursare deselecting conflicting labels on each selectionModificationBehaviours- delete a label
- merge labels (assigns the label of the first one to the other selected ones)
[TODO]label division (watershed) (WIP)[TODO]label merge[TODO]fill holes
- export options like exporting the
ImgLabelingindex image [TODO]exportImgLabelingas image with one mask channel per label[TODO]compute label regions, show information in table
DefaultLabelEditorRenderer: paints each pixel of a label with the color of the tag(s)BorderLabelEditorRenderer: paints only the outer pixels of a label with the color of the tag(s) (the implementation here needs to be improved)[TODO]render numbers next to each label section[TODO]render bounding box
The following application can be tested by installing this update site in Fiji: https://sites.imagej.net/LabelEditor
Objects Counter (IJ2): Runs threshold and CCA and displays the result in the LabelEditor
There is no real documentation yet, also no JavaDoc. Have a look at src/test/sc/fiji/labeleditor/howto to see how to integrate this project into your own implementation. There are also script examples here: src/main/resources/script-templates/ImageJ2/LabelEditor
[TODO]Make behaviors configurable / come up with config loading / saving
- ask for community feedback, maybe move / split up repo into core / plugins / applications
- join forces with Labkit
- figure out how to move towards ROI integration