HelloActiviz2.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 Kitware.VTK;
using Kitware.VTK.GDCM;
/*
* Usage:
* $ export MONO_PATH=/usr/lib/cli/ActiViz.NET/:/usr/lib/cli/Kitware.mummy.Runtime-1.0
* $ mono ./bin/HelloActiviz2.exe gdcmData/test.acr bla.png bla2.dcm
*/
/*
* From the outside view, no-one can detect that object pass to/from
* vtkGDCMImageWriter/vtkGDCMImageReader are not Activiz object.
*
* TODO: Test Command/Observer
*/
public class HelloActiviz2
{
public static int Main(string[] args)
{
string filename = args[0];
string outfilename = args[1];
string outfilename2 = args[2];
vtkGDCMImageReader reader = new Kitware.VTK.GDCM.vtkGDCMImageReader();
reader.SetFileName( filename );
// When calling multiple times creation of C# object from the same C++ object it triggers a:
//error: potential refcounting error: Duplicate rawCppThis - weak reference that is still alive. Attempting to add '0x00b2dc10' again.
// Allowing new wrapped object to take over table key...
// Original object should *not* have been destroyed while we still had it in our table without notifying us...
//reader.GetOutput();
//reader.GetOutput();
System.Console.WriteLine( reader.ToString() ); // Test the ToString compat with Activiz
vtkGDCMImageWriter writer = new vtkGDCMImageWriter();
writer.SetInput( reader.GetOutput() );
writer.SetFileName( outfilename2 );
writer.Write();
System.Console.WriteLine( reader.GetOutput().ToString() ); // Test the ToString compat with Activiz
System.Console.WriteLine( writer.ToString() ); // Test the ToString compat with Activiz
vtkPNGWriter pngwriter = new vtkPNGWriter();
pngwriter.SetInput( reader.GetOutput() );
pngwriter.SetFileName( outfilename );
pngwriter.Write();
// at that point the .Write() should have triggered an Update() on the reader:
if( reader.GetImageFormat() == vtkgdcm.VTK_LUMINANCE ) // MONOCHROME2
{
System.Console.WriteLine( "Image is MONOCHROME2" ); //
}
vtkPNGReader bmpreader = new vtkPNGReader();
bmpreader.SetFileName( outfilename );
vtkMedicalImageProperties prop = new vtkMedicalImageProperties();
prop.SetModality( "MR" );
vtkMatrix4x4 dircos = reader.GetDirectionCosines();
dircos.Invert();
vtkGDCMImageWriter writer2 = new vtkGDCMImageWriter();
writer2.SetFileName( outfilename2 );
writer2.SetDirectionCosines( dircos );
writer2.SetMedicalImageProperties( prop );
writer2.SetInput( bmpreader.GetOutput() );
writer2.Write();
return 0;
}
}
vtkGDCMImageReader
Definition vtkGDCMImageReader.h:105
vtkGDCMImageReader::vtkGDCMImageReader
vtkGDCMImageReader()
vtkGDCMImageWriter
Definition vtkGDCMImageWriter.h:50
vtkGDCMImageWriter::Write
virtual void Write()
vtkGDCMImageWriter::SetMedicalImageProperties
virtual void SetMedicalImageProperties(vtkMedicalImageProperties *)
vtkGDCMImageWriter::SetDirectionCosines
virtual void SetDirectionCosines(vtkMatrix4x4 *matrix)