HelloActiviz.cs
/*=========================================================================
Program: GDCM (Grassroots DICOM). A DICOM library
Copyright (c) 2006-2011 Mathieu Malaterre
All rights reserved.
See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
using vtkgdcm;
using Kitware.VTK;
using System;
using System.Runtime.InteropServices;
/*
* This example shows how vtkgdcm can be connected to Kitware.VTK Activiz product.
* Three (3) arguments are required:
* 1. Input DICOM file (SWIG)
* 2. Temporary PNG (intermediate) file (Activiz)
* 3. Final DICOM file (SWIG)
*
* $ export MONO_PATH=/usr/lib/cli/ActiViz.NET/:/usr/lib/cli/Kitware.mummy.Runtime-1.0
* $ mono ./bin/HelloActiviz.exe ~/Creatis/gdcmData/test.acr out.png toto.dcm
*
* Footnote:
* this test originally used vtkBMPWriter / vtkBMPReader combination to store intermediate
* image file, but BMP file are 24bits by default. Instead use PNG format which supports seems
* to be closer to what was expected in this simple test.
*/
public class HelloActiviz
{
// Does not work with ActiViz.NET-5.4.0.455-Linux-x86_64-Personal
/*
static void ConnectSWIGToActiviz(Kitware.VTK.vtkImageExport imgin, Kitware.VTK.vtkImageImport imgout)
{
imgout.SetUpdateInformationCallback(imgin.GetUpdateInformationCallback());
imgout.SetPipelineModifiedCallback(imgin.GetPipelineModifiedCallback());
imgout.SetWholeExtentCallback(imgin.GetWholeExtentCallback());
imgout.SetSpacingCallback(imgin.GetSpacingCallback());
imgout.SetOriginCallback(imgin.GetOriginCallback());
imgout.SetScalarTypeCallback(imgin.GetScalarTypeCallback());
imgout.SetNumberOfComponentsCallback(imgin.GetNumberOfComponentsCallback());
imgout.SetPropagateUpdateExtentCallback(imgin.GetPropagateUpdateExtentCallback());
imgout.SetUpdateDataCallback(imgin.GetUpdateDataCallback());
imgout.SetDataExtentCallback(imgin.GetDataExtentCallback());
imgout.SetBufferPointerCallback(imgin.GetBufferPointerCallback());
imgout.SetCallbackUserData(imgin.GetCallbackUserData());
}
*/
static Kitware.VTK.vtkImageData ConnectSWIGToActiviz(vtkgdcm.vtkImageData imgin)
{
HandleRef rawCppThis = imgin.GetCppThis();
Kitware.VTK.vtkImageData imgout = new Kitware.VTK.vtkImageData( rawCppThis.Handle, false, false);
return imgout;
}
static vtkgdcm.vtkImageData ConnectActivizToSWIG(Kitware.VTK.vtkImageData imgin)
{
HandleRef rawCppThis = imgin.GetCppThis();
vtkgdcm.vtkImageData imgout = new vtkgdcm.vtkImageData( rawCppThis );
return imgout;
}
public static int Main(string[] args)
{
string filename = args[0];
string outfilename = args[1];
// Step 1. Test SWIG -> Activiz
vtkGDCMImageReader reader = vtkGDCMImageReader.New();
reader.SetFileName( filename );
//reader.Update(); // DO NOT call Update to check pipeline execution
Kitware.VTK.vtkImageData imgout = ConnectSWIGToActiviz(reader.GetOutput());
System.Console.WriteLine( imgout.ToString() ); // not initialized as expected
vtkPNGWriter writer = new vtkPNGWriter();
writer.SetInput( imgout );
writer.SetFileName( outfilename );
writer.Write();
// Step 2. Test Activiz -> SWIG
vtkPNGReader bmpreader = new vtkPNGReader();
bmpreader.SetFileName( outfilename );
//bmpreader.Update(); // DO NOT update to check pipeline execution
System.Console.WriteLine( bmpreader.GetOutput().ToString() ); // not initialized as expected
vtkgdcm.vtkImageData imgout2 = ConnectActivizToSWIG(bmpreader.GetOutput());
System.Console.WriteLine( imgout2.ToString() ); // not initialized as expected
Kitware.VTK.vtkMedicalImageProperties prop = new Kitware.VTK.vtkMedicalImageProperties();
prop.SetModality( "MR" );
string outfilename2 = args[2];
vtkGDCMImageWriter writer2 = vtkGDCMImageWriter.New();
writer2.SetMedicalImageProperties( prop.CastToActiviz() );
writer2.SetFileName( outfilename2 );
writer2.SetInput( imgout2 );
writer2.Write();
return 0;
}
}
vtkGDCMImageReader
Definition vtkGDCMImageReader.h:105
vtkGDCMImageReader::New
static vtkGDCMImageReader * New()
vtkGDCMImageWriter
Definition vtkGDCMImageWriter.h:50
vtkGDCMImageWriter::Write
virtual void Write()
vtkGDCMImageWriter::New
static vtkGDCMImageWriter * New()
vtkGDCMImageWriter::SetMedicalImageProperties
virtual void SetMedicalImageProperties(vtkMedicalImageProperties *)