Segmented image exploration

Hi all,

@haesleinhuepf @bogovicj @wolny @oburri @NicoKiaru @romainGuiet @dlegland @iarganda

I want to make some of the MoBIE functionalities also available in “normal” ImageJ.

Here is a movie of how to explore a label mask and intensity image: Segmented Image Exploration in Fiji - YouTube

A next step could be to also accept a MorpholibJ object feature table as an input (right now it is computing some simple features on the fly).

I will soon have the corresponding update site SegmentationAnnotator up and running.
As the name suggests one can also annotate the image segments. I will post another movie later.

I thought I post this here now, because I think there are several efforts going on into the same direction right now and I am worried of reinventing the wheel. I would thus love to get some feedback whether (a) you think this is useful and (b) about other comparable solutions.

10 Likes

Wow, this is great!

For sure, this is something useful (we have some requests from MorphoLibJ users). We were recently discussing about creating a transparent overlay of label images over grayscale one. This seems to be fully implemented in MoBIE!

Some parts of the question are already implemented in MLJ:

  • the morphological segmentation or label edition plugins provide label overlay with transparency (making it more independant is on the TODO-list)
  • there is a (very) basic tool for colorizing labels according to values from a table column.

I do not know what is the best way to make functionnalities available in ImageJ. Maybe a first step would be to identify the required elementary features, and check what can be build ontop other plugins?

2 Likes

That’s really cool.

I tried on a an image but for some reasons it was really really slow (I only had like 30 objects on a 1024x1024 image). Any clue how to make it faster?

But I also got his error message when starting the plugin

Exception in thread “AWT-EventQueue-0” java.lang.IllegalArgumentException: Stack argument out of range: 1
at ij.ImageStack.getProcessor(ImageStack.java:275)
at vib.segment.CustomStackWindow.mouseMoved(CustomStackWindow.java:450)
at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:330)
at java.awt.Component.processMouseMotionEvent(Component.java:6584)
at java.awt.Component.processEvent(Component.java:6308)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

1 Like

Thank you for trying the tool! Could you please share the images with me? Then I can try to reproduce and fix the issues.