Assistance with 3D Reconstruction of VHP Files

My name is Matheus, and I am a Biomedical Engineer based in Brazil. I am currently working with some files from the Visible Human Project (VHP) and would like to perform a 3D reconstruction of them.

I followed the step-by-step instructions from this GitHub repository (IDC-Tutorials/notebooks/collections_demos/nlm_visible_human_project.ipynb at master · ImagingDataCommons/IDC-Tutorials · GitHub) to download some files for both bodies using Python. However, when I loaded them into the 3D reconstruction software, it only opened a single slice and was unable to reconstruct, despite the series containing more than 1,000 images.

I also tried following this tutorial (Loading IDC converted Visible Human DICOM images into Slicer - #12 by fedorov), but I was unable to make it work in Python. While I have some programming knowledge, it is not my specialty.

I would greatly appreciate any assistance on how to successfully perform the 3D reconstruction. Additionally, I would like to know if there are pre-processed data sets available without the ice cube artifacts in the images.

Furthermore, I am interested in the reconstruction of both digitized cryosections and CT/MR volumes.

1 Like

Matheus, welcome and thank you for posting your questions in this forum! :+1:

We will try to help, but first I think I would need more information to better understand what you are trying to accomplish.

Could you clarify what you mean by “3D reconstruction”? Do you want to save the DICOM series, which is represented as multiple files into a single volume file? Or do you want to load the entire volume into software? Or do you want to do volume rendering?

Also, Visible Human includes Computed Tomography (CT), Magnetic Resonance (MR) and digitized cryosection images. Are you trying to do this for a specific imaging type, or for all of those?

If you are asking about the dark-blue colored region surrounding the body removed from the image as in the below - no, I am not aware of such a processed dataset. If you mean something else, please clarify!

Hello Andrey!

I’m trying to perform a 3D reconstruction using the entire volume. It could be in any of the three modes, as I want to test all of them to see which works best. Regarding the second question, I’d like to know if the images from this GIF (gif by NAkos on DeviantArt) exist in any file or if they need any editing to be used for this purpose.

1 Like

@matheus thank you for the clarifications. Some of what you want to achieve is definitely doable and is relatively easy. I am dealing with some immediate deadlines, but I will put together instructions/demo in a follow up post later this week.

Thank you very much! I look forward to your help.

Ok, thank you for your patience! I understand you may have already done some of the steps below, but I will cover all steps for the sake of completeness.

Prerequisites

To start, you will need to install 3D Slicer for your platform, which you can get here (I tested what I describe in the following using Slicer 5.6.2 stable release). You will also need to install SlicerIDCBrowser extension.

If you already have Slicer and the extension installed, make sure it is updated to the latest version! You can do that from the Slicer ExtensionBrowser.

Fetching the data

To get the data, open SlicerIDCBrowser module, click “Show browser” button, and select nlm_visible_human_project collection in the popup. You can confirm you are using the latest version v19 of IDC data in the title of the window.

Very important: if you see v18, it means you do not have the latest version of IDC Browser, and may not be able to load the data properly, since the initial release of Visible Human in IDC had problems we just fixed in v19!

You can next select all of the studies for this collection to get the files on your computer. In the screenshot above, I de-select cryosection studies, since they are very large, and you will need lots of RAM to open those as a volume (more about this later).

Once you selected what you need, click “Download and Index” button. This will fetch the files to your computer into the folder specified in the “Settings” section of the SlicerIDCBrowser interface, and also will index those files into Slicer DICOM database.

Working with CT and MR images as volumes

To open the loaded images as volumes, you will need to go to the Slicer DICOM browser (click the button shown below).

From the DICOM browser, you can select any of the individual Series (think about one series as one stack of slices / one image volume) and click “Load” button to load it as a volume.

2024-10-04_09-28-24

Now that you have it as a volume, you can scroll through the slices stack, and you can also play with volume rendering. There is a small trick you need to do first though, since Visible Human images have some imperfections (resolution is not uniform across the entire stack, there may be missing slices). When Slicer loads the data, it will try to compensate for those imperfections, by automatically transforming the images. But in order to see that transformed image in Volume Rendering, you first need to go to the “Data” module,

image

open the “Transform hierarchy” tab in that module, select the volume you just loaded, and if it is under a transform (as shown in the screenshot below), apply “Harden transform” from the popup menu.

After this you can switch to the “Volume Rendering” module,

where you can select the volume and toggle visibility of volume rendering. You can choose from the available presets depending on what you want to explore.

2024-10-04_09-41-01

Saving volume in other formats

You can save the volume in alternative formats that may be more suitable for your python tools. Click “Save” button in the toolbar, select the volume and format, and save. You can load images saved in NRRD/NIfTI format using itk-python or SimpleITK, as an example (you should also be able to load DICOM series directly using those packages, but they will not automatically compensate for the imperfections that I mentioned earlier, and may only load a portion of the slices).

Working with cryosection images

The digitized cryosections are very large. Some of those volumes are on the order of 100s of GBs. The steps to load those in Slicer should be the same as above, but you need a lot of memory to load them. The tutorial we have in IDC-Tutorials/notebooks/collections_demos/nlm_visible_human_project.ipynb at master · ImagingDataCommons/IDC-Tutorials · GitHub demonstrates how to load a single slice. @pieper demonstrated that if you have a machine with ~200GB RAM, you can load this volume in Slicer, but I have not tried this myself. You can see it in the video below.

It should not be too hard to write a script to download original images one slice at a time, resample them to a larger pixel size (keeping track of the updated resolution), and reconstruct volume from those. But that would be a topic for a different tutorial.

Please let me know if this is helpful, and if you have further questions!

Thank you very much! I will test it during the next week to see if I can complete all the steps, but I believe it will work! As soon as I succeed, I will let you know if everything worked or if I have any questions!

1 Like

Hi Matheus, do you only want to volumize the CT data? If you simply need human data, I can provide it for you to work with in Slicer. Then you can learn the interface without coding if you simply wish to create 3d images of various anatomies?

Thank you very much, Andrey. The reconstruction worked very well, and it was exactly what I wanted.

Regarding the DICOM images, the reconstruction in the software I use probably doesn’t work due to the imperfections you mentioned. Is there any way to import the DICOM file with the corrections already made by 3D Slicer, or is there any software that can make these necessary adjustments?

1 Like

Hello Sandi, it would be amazing if you had a file that could be fully reconstructed!

@matheus Note that if you harden the transform in Slicer you will get a set of regularly spaced slices, and you can export this back into dicom as described here in the documentation. As you can imagine there are many things that might go wrong since DICOM is a complex format, but it should work. Let us know how it goes.

Of course if you can get the data from @matheus that would be great too. Any links to other resources about working with this data would be great to add to this thread.