kreshuklab / plant-seg

A tool for cell instance aware segmentation in densely packed 3D volumetric images
https://kreshuklab.github.io/plant-seg/
MIT License
96 stars 31 forks source link

Add foreground/background postprocessing #174

Open wolny opened 11 months ago

wolny commented 11 months ago

Some of the networks we have in plantseg output foreground probability maps together with boundary predictions. This can be used in the segmentation post-processing step in order to filter background instances (i.e. assign 0-label to pixels not belonging to foreground).

The easiest way to implement it as discussed with @lorenzocerrone and @qin-yu would be to add additional argument to segmentation functions in plantseg/segmentation/functional/segmentation.py called foreground_pmaps and apply filtering the output segmentation if the argument is present. Then support this parameter it in the config, legacy and napari GUI.

qin-yu commented 8 months ago

I doubt if this is a good idea. If we are providing this option in each segmentation method, then testing different threshold requires re-runs of the whole segmentation algorithm.

For Napari interface, I would make it a widget similar to widget_fix_over_under_segmentation_from_nuclei() and put it in the same menu, "Extra-Seg".

qin-yu commented 8 months ago

After careful thought, I decided to do versions of filtering by foreground:

  1. Threshold foreground to a mask and multiply with the segmentation pixel-wise (may loose details)
  2. Delete instances based centroids' value in foreground (not helpful if instances are not star-convex)
  3. Delete instances that has, say, 90% overlap with the background (I believe it's the best way)