surface rendering of many segments

Slicer version:4.9.0
I performed all heart segmentation from CT data. Now I want to render all segments in 3D assuming that all bordering segments have a common contact surface. Although during segmentation my segments are perfectly matched in slicer, during surface rendering I get separated surfaces…

Is it possible in slicer / any other software package?

If you disable smoothing then the forced contact won’t be lost when converting to surfaces. Please note that this phenomenon only happens for visualization, and the underlying labelmap data is still contiguous. You can disable smoothing in the Segment Editor by clicking the small arrow next to Show 3D, or in the Segmentations module by changing the conversion parameter if you click Update on the Closed surface representation.

@cpinter wouldn’t it be better to use joint smoothing?

We have that option in Smoothing effect but not in the automatic conversion between segment representations. The assumption is that smoothing operation in “binary labelmap to closed surface” conversion is only used for removing staircase artifacts and so it does not require adjustment of the geometry.

We would need to implement some new mechanism in segmentation infrastructure to allow joint conversion of multiple segments, because right now conversion happens segment by segment.

Joint smoothing works on labelmaps. The user’s problem is about the surfaces shown in 3D which are converted from the labelmaps. This conversion is temporary and is only for visualization.

@lassoan I don’t think we need to implement a new converter for this. It would basically mean a new representation type, some “topologically correct surface”, but it would mean the same or more interaction from the user than simply disabling smoothing. I assume that if the user needs to preserve this property on the segments then they won’t care about staircase artifacts.

The joint smoothing results are very useful in my opinion because they look more like real anatomy with smooth surfaces and no gaps between the structures. This is useful even if the conversion is only temporary.

If there is a converter in VTK that converts labelmaps to a set of surfaces preserving the joint edges, then it should not be hard to add. On a second thought, we probably wouldn’t need a new representation, but an option in the converter would be enough and we could expose it in segment editor the same way as smoothing. If there is no such converter though, then this would be a major project.

It would the same pipeline as the JointSmoothing option of the ModelMaker. The code is pretty hard to follow but I’d think it could be ported.

1 Like

I added a Mantis issue for this:

I think we have a good plan, so implementing it is now a matter of priorities.

How is 3D surface rendering different from 3D segmentation of heart and how is it used.


When you segment structures then they are displayed in 3D views using surface rendering.