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.

Screenshot 2020-01-12 at 14.03.50 Screenshot 2020-01-12 at 14.04.04 Screenshot 2020-01-12 at 14.04.26
Screenshot 2020-01-12 at 14.03.50 Screenshot 2020-01-12 at 14.04.04 Screenshot 2020-01-12 at 14.04.26 Screenshot 2020-01-12 at 14.05.47

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:

image

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/

Thanks again for the guidance. I tried uploading the entire study via the DICOM uploader and also via the simple file uploader. I am still trying to fix the orientation and to crop the slices for a better visualisation.
so far I was able to progress.

A link of the complete study:
https://drive.google.com/file/d/1VQsZj6LelMqkHiqBvaCvpL4g4BNiS1kY/view?usp=sharing

1 Like

Thank you, I’ve checked and the study has lots of time sequence series and they seem to load fine.

To segment a single timepoint only, you can load an image time series as MultiVolume node and in “MultiVolume explorer” module check “Enable copying while sliding” to make the volume appear as a regular scalar volume.

To create a segmentation sequence, you can use Sequences extension instead (install Sequences extension, in menu: Edit/Application settings/DICOM/Preferred multi-volume import format select “volume sequence”, then load the selected series). To create a segmentation time series, you can create a segmentation node and create a sequence from it using Sequence Browser module. The GUI is not very intuitive, so if you have any questions then let us know.

I encounter several issues:

  1. The image is not aligned. I rotated it (Rotate to volume plane) for one axis. when I tried the other two axes I got the same image.

2.I have been trying to use the Sequence extension, by creaing a sequence of all short axis slides (see pic). I went to “Sequence browser” module to replay the sequence. Yet nothing was played. Finally, the sequence I created was not on the list of volumes under the section of “Volume Rendring”.

Single-slice volumes are always rotated to the image plane. Maybe you have loaded a single-slice volume (sequence).

Anyway, if you align slice views to volume axes by clicking on the “warning” icon in Segment Editor module then you should see 3 orthogonal slices.

Make sure you replay the sequence that you see in the slice view.

If you use Volume Sequences module then this does not happen. If you use MultiVolume then in “MultiVolume explorer” module check “Enable copying while sliding” to make the volume appear in the scene as a regular scalar volume.

Sorry for the late reply.
I tried recording a sequence by using the horizontal scroll bars (red yellow and green). However , the image is constant/frozen once the alignment of the axis is performed. (cannot skip between the snapshots), which makes it impossible to record; yet when I uploaded the png images instead of the DICOM files (all have already been sorted to a specific timeframe), I was able to use the side scroll bars to record and segment the axial view slices.

perhaps my loading process itself is wrong? should I use the DICOM uploader or to upload by “Add Data” (tried both). Should I check the “Single File” option?