Comments (8)
I can concur here.
Using CLIJ2_watershed gave rather strange results in the case of thresholded images of Hoechst stained nuclei (I've attached a representative image, a merged tile scan, as .TIF in the zip.)
It often cuts symmetric, but oval shapes at an angle. see:
But misses seemingly obvious objects to cut:
Process>Binary>Watershed cuts the left object in half as expected.
And then there are a few objects like this, where I have no idea what is going on:
(Nota bene, the Process>Binary>Watershed also cuts this object in half for some reason, but just once.)
CLIJ2_parametricWatershed is better behaved, although it's not entirely clear to me how to choose sigma. My objects are on avg. around 40 px in diameter, so radii largely in the 15-30 px range.
Naively, I first tried 30 px and then 15 px and got no cuts.
Smaller sigma got me close to the Process>Binary>Watershed
1 px brings back the odd cuts of intact objects, while still missing cuts as above.
3 px eliminates the clearly spurious cuts, but still misses a couple that seem rather obvious to me, that are cut byt Process>Binary>Watershed.
5 px produces the same results as 3 px
at 10 px start to see cuts missed.
2021040_H33342_L929_24w_A3_tilescan.lif - A3 Region1_Merged.tif.zip
from clij2.
Hey @psobolewskiPhD ,
I'd recommend using the approaches by MorpholibJ, SimpleITK and ImageJ1. All are available as CLIJ extensions and can thus be called as other CLIJ functions from Macro:
https://clij.github.io/clij2-docs/reference_morphoLibJClassicWatershed
https://clij.github.io/clij2-docs/reference_morphoLibJMarkerControlledWatershed
https://clij.github.io/clij2-docs/reference_simpleITKMorphologicalWatershed
https://clij.github.io/clij2-docs/reference_imageJWatershed
See the installation instructions for the extensions:
https://clij.github.io/assistant/installation#extensions
from clij2.
I already switched to
Ext.CLIJx_imageJWatershed(opened, WS);
Based on the code example from @mycroscopy via Twitter.
The results are—for me—better.
Briefly checking out the other options (copy pasta coding), they don't "work"—I guess they need greyscale as input and I'm already thresholding, etc.?
Also, perhaps the CLIJ docs could link to the morphoLib docs where appropriate?
from clij2.
I don't understand the proper usage
I see. I just added a mini tutorial. It will be automatically linked from the documentation after it's rebuilt.
https://clij.github.io/clij2-docs/md/morpholibj_classic_watershed/
I will also add links to the MorphoLibJ documentation. Thanks for the suggestion!
Let me know if there remains something unclear.
from clij2.
The tutorial is amazing—going well above the call of duty! You really didn't have to do that!
The MorphoLib documentation is quite good, so I would have (probably) figured out something myself; I just haven't had time.
from clij2.
Briefly checking out the other options (copy pasta coding), they don't "work"—I guess they need greyscale as input and I'm already thresholding, etc.?
Can you please precisely write what you tried and what didn't work? It's otherwise very hard to answer that. If it's related to other operations and not watershed, please open a new github issue or image.sc thread, post example code and data. I will then give my best to assist you
from clij2.
Oh, sorry for expressing myself poorly.
I wasn't able to get my code to work with those as "drop ins" for the
Ext.CLIJx_imageJWatershed(opened, WS);
(which works perfectly, so for me the issue—bizarre watershed results from CLIJ—is solved.
Regarding the other options, it's not that the commands/extensions don't work, but that I don't understand the proper usage, just from the CLIJ docs. E.g.
Ext.CLIJx_morphoLibJClassicWatershed(Image gradient_input, Image binary_restriction_input, Image destination, Number h_min, Number h_max);
My input is a binary obtained by thresholding & binary open, so I think it's just not the proper input to that morphoLib process. I need to spend some time with the morphoLib docs at some point to figure out if changing anything/everything is worth it. (and frankly, your Otsu-Voronoi extension may just be the best options anyways.)
from clij2.
No big deal, it was made with imagejmacromarkdown ;-)
from clij2.
Related Issues (20)
- connectedComponentsLabeling - Diamond yields Box results HOT 3
- Reusable object classification HOT 13
- DistanceMap is slow
- SphereTransform: center coords are not relative HOT 1
- CLIJ issue in applying non local means filter on GPU HOT 1
- Only able to install via updating fiji HOT 1
- Error message after installation HOT 3
- Error in documentation of x projection HOT 1
- Projections do not maintain voxel size metadata HOT 3
- statisticsOfLabelledPixels suggestion HOT 1
- Present in our Open Source Neuro Seminar Series?
- generate parametric image output image issue
- MeanOfMaskedPixels only works when binary image is 0 and 1 HOT 6
- GetBoundingBox returns incorrect values if binary image not 0 1 HOT 6
- Bug: pushArray2D missing in clij2 API
- rotate3D uses radians instead of degrees in Jython (Docs error) HOT 1
- Error when computing of Standard Deviation in Clij2 HOT 7
- Feature Request: Rotate 3D on hyperstacks
- MaximumOctagon does not work on Intel GPUs
- altitude map of extended depth of focus projection
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from clij2.