Skip to main content

Interactive visualization and processing of 3D medical images in python

Project description

imvis

Interactive visualization of 3D medical images in python

Installation

The package can be installed from PyPI using pip:

pip install imvis

Features

3D image visualization

imagesc3s is a function that allows to visualize 3D images in a 2D slice-by-slice fashion. It is based on the matplotlib library and allows to interactively scroll through the slices of a 3D image. It also allows to change the color map and the windowing of the image.

import imvis as iv
import pydicom

ds = pydicom.dcmread('path/to/dicom/file')
img = ds.pixel_array
iv.imagesc3s(img)

imagesc3s: scroll

In cases where scrolling is not possible (e.g. in a Jupyter notebook), the alternative version imagesc3slider can be used. It allows to scroll through the slices of a 3D image using a slider.

iv.imagesc3slider(img)

When using Jupyter notebook, the matplotlib backend can be changed to tk or qt to enable scrolling. This can be done using the following magic command:

%matplotlib tk
iv.imagesc3slider(img)

MIP with rotation angles

mipz allows the user to obtain a maximum intensity projection (MIP) of a 3D image along the z-axis. The user can also specify the rotation angles of the MIP.

import SimpleITK as sitk
import numpy as np

img = sitk.ReadImage("/path/to/nifti")
imarray = sitk.GetArrayFromImage(img)
mip_array = np.zeros((36, imarray.shape[0], imarray.shape[1]))
for i in range(0, 360, 10):
    mip_array[int(i/10),:,:] = iv.mipz(imarray, i)
iv.imagesc3s(mip_array, [0, 10])

NIFTI image resampling in reference to another image

resample_nifti_to allows to resample a NIFTI image in reference to another image. This is useful when you want to resample a NIFTI image to the same resolution as a DICOM image.

def resample_nifti_to(nifti_in, nifti_ref, fname_out, img_type='intensity'):
    """Resample a nifti image to the same space as another nifti image.
    Parameters
    ----------
    nifti_in : string
        Path to the nifti image to be resampled.
    nifti_ref : string
        Path to the nifti image to be used as reference.
    fname_out : string
        Path to the resampled nifti image.
    img_type : string, optional
        Type of the image. Default is 'intensity'.
        'intensity': general type, no conversion.
        'BQML': PET or quantitative SPECT image, total counts are preserved.
        'mask': interger mask, interpolation will not change the value.
    """

Convert PET DICOM to NIFTI with SUV

dicom2niftiSUV allows to convert a PET DICOM image to a NIFTI image with SUV values. The SUV values are computed using the corresponding DICOM tags.

  • bodyweight: "TBW" (total body weight) or "LBW" (lean body weight)
def dicom2niftiSUV(dicomdir, niftiname,bodyweight="TBW"):
    """Convert a folder of dicom files to nifti files and apply SUV conversion.
    Parameters
    ----------
    dicomdir : string
        Path to the folder containing dicom files.
    niftiname : string
        Path and filename to the output nifti file.
    """

Sort files in the DICOMDIR file into hierarchical folders

dicomdir_split allows to sort the files in a DICOMDIR file into hierarchical folders in the Patient/Study/Series fashion. This might be useful when extracting the desired DICOM series from a DICOMDIR file.

def dicomdir_split(dicomdir_path, output_folder):
    ''' Split DICOM files in the DICOMDIR into different folders based according to patient, studies, and series.
    Parameters
    ----------
    dicomdir_path : string
        Path to the DICOMDIR file.
    output_folder : string
        Path to the output folder.
    '''

Important notes

Standard orientation

The matrix indices of the 3D images can be confusing. In this project, the author always assumes the following standard orientation, as shown in the figure below.

Standard orientation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

imvis-0.0.9.4.tar.gz (518.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

imvis-0.0.9.4-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file imvis-0.0.9.4.tar.gz.

File metadata

  • Download URL: imvis-0.0.9.4.tar.gz
  • Upload date:
  • Size: 518.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for imvis-0.0.9.4.tar.gz
Algorithm Hash digest
SHA256 4230ea5d344a5421f7b3231458b38cbc7f6736d95a31a635d547531b962743fd
MD5 b8bb4d0bc48bc8428260b6c5c5716fc2
BLAKE2b-256 3d84a4740e9497966ba3921e8057df38c3bdfb64e5236d74b7b283a9ffa9459e

See more details on using hashes here.

File details

Details for the file imvis-0.0.9.4-py3-none-any.whl.

File metadata

  • Download URL: imvis-0.0.9.4-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for imvis-0.0.9.4-py3-none-any.whl
Algorithm Hash digest
SHA256 714864dadb11c455dcc7a4e286cdf4d84a78ab7951bab00205f260b2e7da12ba
MD5 65903b2e8f211116be5b0b0bb464384b
BLAKE2b-256 6e5368efde926ba72ed181b8bc486b63fe19cabf726f40b93b1536f009836167

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page