3D Analysis of interconnected plates

BinaryImageStack.zip (206.1 KB) feat56.tiff (3.4 MB)

Hello,

I’m working on analyzing a 3D image sequence with features that consist of interconnected parallel plates or platelets. I’ve included a 3D rendering of one of the features as an example, as well as a binary image stack of the same feature. Basically each feature consists of several main plates arranged roughly parallel to each other with some bridges between them.

I want to do some analysis on the number, size, orientation, etc. of the individual plates that make up each feature. Since they are interconnected, they all segment as a single feature and I need to find a way to break them up. I thought a watershed method would probably be the way to go but I haven’t been able to get anything to work quite right.

I’ve tried the 3D watershed function in the 3D Imagej suite without much success. I think the seed method does not work well in this case, because it seems to be expecting spherical seeds which don’t translate to the planar sort of features I want to end up with.

I’ve also tried some of the options in the MorpholibJ library including the classical watershed and distance transform watershed but without much luck. It ended up oversegmenting by quite a bit, and I think is also not the ideal method for enongated/planar features. I also thought of trying the extended local maxima/minima function to generate seeds for a seeded method that better represent the geometry but wasn’t quite able to get that to work either.

One other idea I had was to use skeleton or skeleton 3D to possibly generate seeds or at least get some info the interconnectivity of the platelets within each feature. Running 2D skeletonize on each slice should collapse each plate into a plane which might make make good seeds for a watershed, but the problem I ran into there was how to break the skeleton up so that it’s not all one contiguous object.

I’m a bit new to image processing and analysis so I feel a bit in over my head here. Any guidance would be appreciated. Do I need to to do more pre-processing to get cleaner results? What’s the best way to smooth a binary image? Just a few iterations of dilate/erode? I’ve been reading the documentation for the various plugins I’ve tried, but I still don’t have too good of a grasp of how I would optimize the settings in any of them for what I want to do.