I’m doing analysis of 3D image sets where I have multiple microscopic images of some brain cells. Dimensions of data are (60, 1024, 1024). I was able to visualize the 3D data in napari. I have to take out max intensity 2D projections of each individual cell.
I was hoping to somehow detect each cell & make an isolated max intensity projection of it so that cells above or below it don’t overlap in projection.
Mainly, my aim is to isolate individual cells for independent analysis.
I am facing the following problems:
Overlap of cells occurs in the max intensity projections
To resove this issue, I was also hoping to extract individual cells from the 3D image for individual processing in an unsupervised way (as I’m hoping to do this for a large batch). But I have no idea how to computationally determine the continuity of an object in 3D.
Manually sliced 3D example:
manual_sliced.tif (343.5 KB)
- What have you tried already?
- I tried running blob detection methods in skimage for each 2D layer, which couldn’t detect much cell bodies (centers). Even if I get it to work, I believe that it still won’t still account for the branching of cells.
- I tried 3D segmentation techniques using StarDist3D but the objects are too small for it.
Another issue with my analysis that I found the solution to:
- upon projection, the noise in all layers also adds up, making the 2D projection very noisy. So, I used NL-Means filter to filter noise each 2D layer-by-layer with parameters chosen by J-Invariant (Thanks to @emmanuelle), I’m satisfied with the denoising results, but the function returned by skimage.restoration.calibrate_denoiser runs very slow if I have to run it for whole 3D image frame by frame.