Grow from seeds creates unwanted regions

Hi,

I have been using the “grow from seeds” effect to segment the ganglion from the following pictures. I paint in two segments, 1- for the ganglion(yellow)- in all three views across multiple slices and 2. for the background(green).

But ultimately the algorithm is unable to segment the ganglia. I have tried it for different levels of ganglion together and now even separately for each particular level. It generates a mass with a lot of noise from the surrounding regions from which the ganglion is nearly impossible to separate. I realize that there is a edit option after the initial segmentation result, but the generated 3D mass is not suitable for manual edits.

Is there a way out of this? Or this is a product of the image quality/type?

Hi,

Usually when you paint the seeds for “Grow from seeds”, you draw the target-seed (1 in your case) in the rough center of the target in all the 3 views. Surrounding them, in all 3 views, you also want to draw a circular using background-seed (2 in your case) in the background region around the target region, to form a “wall”.

Could you give a screenshot of the seeds you draw in 3-views and we can start from there.

HTH

Best,

yi

Hi,

Attached is the screenshot of the seeds in 3 views. I should mention that the Segment 2 is my region of interest, which I want to grow and segment 1 is the surrounding. Does the numbering matter? I am also curious to know if the seed painting needs to be exact, because if you see my seeds they are roughly centered but doesn’t cover the entire area.

This picture is from one slice, I have selected similar seeds in multiple other slices. I am also skipping some slices.

Hi,

Thanks! that was a very helpful tip! It seems like I need to this detailed segmentation for every level at every slice separately to have some kind of meaningful structures.

But an issue remains, the final 3D model is very porous and looks discontinuous. I tried smoothing operations but it is not altering much. What can be done about these surface undulations?

image

image

Grow from seeds is an iterative method, in which after the first run you can refine the seeds that you change in the regions where it erred to improve the segmentation. Just saying that you don’t need to paint the “perfect” seeds to begin with, you can adjust later.

For filling the porous segmentation you can for example use the SurfaceWrapSolidify extension that adds the effect “Wrap solidify” to Segment Editor. You can also as I said above refine the seeds at the borders where the speckles are and in the interior where the holes are, or use the Islands effect to remove the smallest islands.

Hi,

Great to know that helped.

But maybe doing a detailed segmentation for every level (slice) is not necessary. For a “nodular” shaped target object, I often locate the intersection of the three views (red, green, yellow) at roughly the center of the target. Then, when I’m drawing the seed, I just draw in the center in each view with just one click, and then use another color (label) to draw in each slice an enclosing circle inside the background region. Then I run the “Grow from seed” and it should give a descent 3D segmentation.

For more complicated shaped target, we definitely need more seeds. But not for the nodular shaped ones.

Regarding the smoothness of the surface, yes the “grow from seed” is a first order PDE based algorithm and does not take the surface smoothness into consideration. As Csaba pointed out, we can use other modules to smooth the surface as a post-processing. Maybe I should add some smoothing within the Grow from seed, that maybe helpful.

Best,

yi

Thank you @gaoyi.cn and @cpinter for the suggestions!

I added the Wrap Solidify extension, although it takes sometime but it produces a desired result.

image

However, I have another basic question about the segmenting. How to select which segments I want to activate? As you know there are 31pairs of DRG, what if I want to segment them in the same file. I have used segment 1(boundary) and 2(DRG) in the picture above. What if I want to use Segment 3 and 4 for the next level of DRG? I am unable to hide/inactivate Segments 1,2(not delete) and use only 3 and 4. Is this even possible?

Or in a better way, Can I specify all the DRGs at all levels and their boundaries in segments1,2 itself? Or I paint all the DRGs in separate segments but paint a common boundary, will that work? Since the DRGs/Boundaries are discontinuous?

I want to understand what is the best option of the three, based on your experience. It is difficult to try all of these, as this is taking multiple hours to compute at times.

I am referencing this video, which is very helpful, but the issue is everything I want to segment is not continuous and I don’t want to use too much memory which might cause the software to crash.

I’d probably try creating new segmentation nodes for the “grow from seeds” seeds, and then before saving, drag&dropping the useful segments using the Data module in the first segmentation (or a new one) and then save.