Implementing PET-CT fusion using DicomObjects is very straightforward. And the output is a generic DICOM 3D image so you can perform other standard operations such as Rotate and Translate.


    // load all CT and PET images from disk
    DicomImageCollection imgsCT = LoadImages(@"3D Images\CT PET\ct");
    DicomImageCollection imgsPET = LoadImages(@"3D Images\CT PET\pt");

    DicomVolume volumeCT = new DicomVolume(imgsCT);
    DicomVolume volumePET = new DicomVolume(imgsPET);

    var ctMPR = new DicomImage3D(volumeCT, RenderMode3D.MPR);
    var petMPR = new DicomImage3D(volumePET, RenderMode3D.MPR)
        ColourTable = ColourPalettes.HotMetalBlue // set the Colour Palette

    DicomImageFusion fusion = new DicomImageFusion(ctMPR);


     ' load images into imgsPET & imgsCT
    Dim imgsCT As New DicomImages
    Set imgsCT = LoadImages("3D Images\CT PET\ct")
    Dim imgsPET As New DicomImages
    Set imgsPET = LoadImages("3D Images\CT PET\pt")
    Dim volumeCT As DicomVolume
    Dim volumePET As DicomVolume
    Dim MPR_CT As DicomImage
    Dim MPR_PET As DicomImage
    Set volumeCT = imgsCT.MakeVolume(1)
    Set volumePET = imgsPET.MakeVolume(1)
    Set MPR_CT = volumeCT.Make3D(doMPR)
    Set MPR_PET = volumePET.Make3D(doMPR)
    MPR_CT.Projection.SetViewPlane doPlaneCoronal, True, 1
    MPR_PET.Projection.SetViewPlane doPlaneCoronal, True, 1
    Dim fusionCollection As New DicomImages
    fusionCollection.Add MPR_CT
    fusionCollection.Add MPR_PET
    MPR_PET.ColourTable = g.Palette("HotMetalBlue") '  set colour Palette for PET
    Dim fusion As DicomImage
    Set fusion = fusionCollection.MakeFusion
    Viewer.Images.Add fusion

Sample PET-CT Data

You can download the sample DICOM PET CT data from here.

The result should look like this: