How to reconstruct 3d heart model from series of short view axis .png files.

Operating system: windows
Slicer version:4.10
Expected behavior: 3d - model using consecutive slices.
Actual behavior: 1d plane - no volume.

I’ve been trying to segment consecutive slices of a porcine heart in short axis view in order to reconstruct a 3d image. I segmented slices in different heights (print screens of several are attached ), yet the outcome was a 1d model.
I also tried to use volume rendering - but I could not managed to use the segmented parts, only the original slices.


When you go to Volumes module, and expand the volume information tab for your PNG sequence, what is the volume type reported? If it is vector, Slicer will not render that image and you will need to use the vector2scalar module to change the data type to scalar.

Or you can import your png sequence using the @pieper’s imagestacks tool:

which does the conversion automatically.

Thanks for the quick reply.
The volume type is a scalar.
I also tried to increase the image spacing, the result was the same.

If scalar, you should be able to see 3D rendering of your whole volume with Volume Rendering module. Click the little eye icon on the left-hand side volume name:

Where does this data set come from? Can you send a scree shot of the Volume’s module GUI with the information section open and “4-up” view layout showing orthogonal slices?

I can see a 3d image. However the slices are on top of one another without any spacing.
Is there a method in 3dslicer by which I can inflate the model, i.e. forcing space inbetween the slices and performing interpolation.
The data itself was taken from an CINE-MRI imaging. The relevant images were selected according to cardiac cycle phase and orientation, and eventually converted to .PNG files.

I can share with you a directory containing the raw data IMA files as well as the PNG files.

thx

If the files is a sequence of 2D files in time then it should not be “inflated to 3D” but should be stored as a sequence of single-slice volumes. You can create such a sequence manually as described here: https://www.slicer.org/wiki/Documentation/Nightly/Extensions/Sequences#Creating_sequences_from_a_set_of_nodes. If you have many data sets to process then you can write a short Python script that does this automatically.

We can already import 3D+t (time sequence of 3D volumes) cine-MRI, CT, and ultrasound images from DICOM. However, if we detect that it is a 2D+t (time sequence of 2D image slices) then we don’t offer to load it as a sequence. Not because it would be hard to implement, but simply because it has not been requested by any funded project or contributed by volunteers so far. Implementation would probably take a few days for an experienced Slicer developer and a few weeks for someone who is completely new to Slicer.

Thanks for the quick reply.
I stored the 2d files as a sequence of single-slice volumes as you suggested.
The result was rather the same. screenshots are attached. (The process was performe

3d_sequence_2 d before cropping.)

This does not look like a single-slice volume but as if it has some thickness. After the import into sequence is completed, delete the original slices to make sure they don’t obscure the view.

After you create a segmentation sequence for the volume sequence, what do you plan to use it for?

The input files are serial short axis cross section of the whole heart.
The model which was created, may have some thickness. However, the geometry does not resemble a 3d Heart shape (or even a portion of it). Perhaps the distance inbetween slices is too small.

3d- reconstruction is the ultimate goal.

It is hard to guess what’s happening. Can you share the data set so that we can have a closer look?

of course.
https://drive.google.com/drive/folders/1b1TPDlqwDu6pZEeGzx4UADFofAIhv_7T?usp=sharing

I had a look and found that this data set consists of 14 independent 2D cine-MRI series, each contains only 1 time point, and each one is acquired at a different position. This of course does not make sense at all, because if you only acquire a single time point then you don’t need to use a cine-MRI protocol, and if you want to acquire a 3D volume then you would acquire all the slices in one series.

You can hack the metadata in the files to make them appear as a single series (I did that, the result is available here), but it would be much better to acquire images properly in the first place.

The png files should not be used at all, because their bit depth is just 8 instead of the original 11, so subtle contrast changes in the image are discarded. (The image spacing information is lost during png conversion, too, but you can recover that by typing the correct spacing values in the volumes module, so this information loss is not critical.)

Thanks for the detailed answer.
I have the entire cine-MRI data. It serves for deferent purposes.
My goal is to reconstruct a 3D heart model at a single time point (end diastolic phase for example).

When I tried to reconstruct the model by using the IMA files the picture orientation was oblique and I failed to segment the components, hence I chose a specific time point and tried to convert the files to png format.The volume data was lost during the conversion, as you said and the correction of the spacing values was also unsuccessful.

I will gladly share the entire MRI files. it might be an overkill though…

Thanks again for your help

Yes, the complete study is needed to be able to load it correctly (as a volume sequence). After loading the 4D data set, you can then still decide to segment only one or all time points. If you do not succeed in loading the complete study then please send the complete study and I can investigate.

Oblique orientation is no problem - you can either snap to closest acquisition plane by a single click or segment on oblique slices. See details here: https://lassoan.github.io/SlicerSegmentationRecipes/ObliqueSliceSegmentation/