[vtkusers] How do i port an image from ITK to VTK

Prename Surname bsd.diverse at gmail.com
Wed Oct 11 10:39:40 EDT 2006


Hmmm yes, now i can compile.
But the output just looks very strange...
A small window with green noise just flashes, and then the program ends.
Maybe i am missing something?
Thank you very much.
This is my whole code:


//Used for the analyze reader
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"//

#include "itkImageToVTKImageFilter.h"//Makes ITK->VTK pipeline (remember to
set path in CMakeLists.txt firs)

#include "vtkImageViewer.h"//Makes 2D images in VTK

//Use for volumerendering
#include "vtkStructuredPointsReader.h"
#include "vtkPiecewiseFunction.h"
#include "vtkColorTransferFunction.h"
#include "vtkVolumeProperty.h"
#include "vtkVolumeRayCastCompositeFunction.h"
#include "vtkVolumeRayCastMapper.h"
#include "vtkVolume.h"


//Used for the vtk examples
#include "vtkSphereSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"
#include "vtkRenderWindowInteractor.h"

#include "itkVTKImageExport.h"
#include "vtkImageImport.h"

//Used for string manipulation in c++
#include <strstream>
#include <string>
#include <iostream>

void showSphere();
void readAFile();

int main( int , char * argv[])
{
 typedef unsigned char PixelType;
 const unsigned int Dimension=3;

 typedef itk::Image<PixelType,Dimension> ImageType;
 typedef itk::ImageFileReader<ImageType> ReaderType;
 typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType;

 ReaderType::Pointer reader = ReaderType::New();
 ConnectorType::Pointer connector = ConnectorType::New();

 reader->SetFileName("D:\\skole\\thesis\\Data\\KDIGWKFN\\ANALYZE\\KDIGWKFN_mpr_pip.img");
 connector->SetInput(reader->GetOutput());//In connector lies now the
imagedata. Retrieve it by calling GetOutput()

 vtkStructuredPointsReader *vtkReader=vtkStructuredPointsReader::New();


 //Create transfer mapping scalar value to color
 vtkPiecewiseFunction *opacityTransferfunction=vtkPiecewiseFunction::New();
 opacityTransferfunction->AddPoint(20.,0.0);
 opacityTransferfunction->AddPoint(255.,0.2);

 vtkColorTransferFunction
*colorTransferFunction=vtkColorTransferFunction::New();
 colorTransferFunction->AddRGBPoint(0.0,0.0,0.0,0.0);
 colorTransferFunction->AddRGBPoint(64.0,1.0,0.0,0.0);
 colorTransferFunction->AddRGBPoint(128.0,0.0,0.0,1.0);
 colorTransferFunction->AddRGBPoint(192.0,0.0,1.0,0.0);
 colorTransferFunction->AddRGBPoint(255.0,0.0,0.2,0.0);

 vtkVolumeProperty *volumeProperty=vtkVolumeProperty::New();
 volumeProperty->SetColor(colorTransferFunction);
 volumeProperty->SetScalarOpacity(opacityTransferfunction);

 vtkVolumeRayCastCompositeFunction *compositeFunction =
vtkVolumeRayCastCompositeFunction::New();
 vtkVolumeRayCastMapper *volumeMapper=vtkVolumeRayCastMapper::New();
 volumeMapper->SetVolumeRayCastFunction(compositeFunction);
 volumeMapper->SetInput(connector->GetOutput());

 vtkVolume *volume=vtkVolume::New();
 volume->SetMapper(volumeMapper);
 volume->SetProperty(volumeProperty);

 // A renderer and render window
 vtkRenderer *ren1 = vtkRenderer::New();
 vtkRenderWindow *renWin = vtkRenderWindow::New();
 ren1->AddProp(volume);
 renWin->AddRenderer(ren1);
 renWin->Render();
 return 0;
}



2006/10/11, Erbacher, Markus <Markus.Erbacher at med.uni-heidelberg.de>:
>
>  I think you can use
>
> vtkVolumeRayCastMapper->SetInput( ...)
>
> Regards
> Markus
>
>  -----Ursprüngliche Nachricht-----
> *Von:* vtkusers-bounces+markus.erbacher=med.uni-heidelberg.de at vtk.org[mailto:
> vtkusers-bounces+markus.erbacher=med.uni-heidelberg.de at vtk.org] *Im
> Auftrag von *Prename Surname
> *Gesendet:* Mittwoch, 11. Oktober 2006 16:08
> *An:* Brian Chacko; vtkusers at vtk.org
> *Betreff:* Re: [vtkusers] How do i port an image from ITK to VTK
>
> Hello Brian.
> I have tried to do what you said, and it makes good sense. I think i
> almost got i working, but i still have a doubt about how exactly i can
> connect the
> itk::ImageToVTKImageFilter to the vtkVolumeRayCastMapper.
> It seems that  ImageToVTKImageFilter->GetOutput(...) returns a
> vtkImageData, and
> vtkVolumeRayCastMapper->SetInputConnection(...) only accepts a
> vtkAlgorithmOutput object.
>
> So how do i do the final mapping? I really hope you can help me, or any
> others can.
>
> Many regards
>
> Here is the code:
>
> int main( int , char * argv[])
> {
>  typedef unsigned char PixelType;
>  const unsigned int Dimension=3;
>
>  typedef itk::Image<PixelType,Dimension> ImageType;
>  typedef itk::ImageFileReader<ImageType> ReaderType;
>  typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType;
>
>  ReaderType::Pointer reader = ReaderType::New();
>  ConnectorType::Pointer connector = ConnectorType::New();
>
>  reader->SetFileName("D:\\skole\\thesis\\Data\\KDIGWKFN\\ANALYZE\\KDIGWKFN_mpr_pip.img");
>
>  connector->SetInput(reader->GetOutput());//In connector lies now the
> imagedata. Retrieve it by calling GetOutput()
>
>  vtkStructuredPointsReader *vtkReader=vtkStructuredPointsReader::New();
>
>
>  //Create transfer mapping scalar value to color
>  vtkPiecewiseFunction
> *opacityTransferfunction=vtkPiecewiseFunction::New();
>  opacityTransferfunction->AddPoint(20.,0.0);
>  opacityTransferfunction->AddPoint(255., 0.2);
>
>  vtkColorTransferFunction
> *colorTransferFunction=vtkColorTransferFunction::New();
>  colorTransferFunction->AddRGBPoint(0.0,0.0,0.0,0.0);
>  colorTransferFunction->AddRGBPoint(64.0,1.0,0.0,0.0);
>  colorTransferFunction->AddRGBPoint( 128.0,0.0,0.0,1.0);
>  colorTransferFunction->AddRGBPoint(192.0,0.0,1.0,0.0);
>  colorTransferFunction->AddRGBPoint(255.0,0.0,0.2,0.0);
>
>  vtkVolumeProperty *volumeProperty=vtkVolumeProperty::New();
>  volumeProperty->SetColor(colorTransferFunction);
>  volumeProperty->SetScalarOpacity(opacityTransferfunction);
>
>  vtkVolumeRayCastCompositeFunction
> *compositeFunction=vtkVolumeRayCastCompositeFunction::New();
>  vtkVolumeRayCastMapper *volumeMapper=vtkVolumeRayCastMapper::New();
>  volumeMapper->SetVolumeRayCastFunction(compositeFunction);
>
>  volumeMapper->SetInputConnection(connector->GetOutput()); //This i cannot
> do. What should i do instead?
>
> 2006/10/11, Brian Chacko <brianchacko at yahoo.com>:
> >
> > Hello!
> > I suggest you go through the link given below. It gives basics of using
> > ITK and visualizing in VTK.
> > http://www.itk.org/CourseWare/Training/GettingStarted-II.pdf
> >
> > [P.N The header file itkImageToVTKImageFilter.h is not available as it
> > is, when you download the ITK software source. Download InsightApplications-2.8.1.zip<http://prdownloads.sourceforge.net/itk/InsightApplications-2.8.1.zip?download>.
> > It is available in the ITK download page. Include the header file with the
> > .cxx file in the VTK 5.0\IO\  (or any sub folder of vtk 5.0 which
> > contains headers and source files). Remember to include the appropriate
> > library file in your CMakeLists.txt)].
> >
> > To  visualize volume view, try out the volume example in VTK folder
> > Directory path is     "\VTK
> > 5.0\Examples\VolumeRendering\Tcl\SimpleRayCast.tcl".
> >
> > Regards
> > Brian
> > ** **
> > **
> > *Prename Surname <bsd.diverse at gmail.com>* wrote:
> >
> >  Hello
> > I am reading files from ANALYZE format in ITK. I do processing of the
> > image, and then i want to visualize it in VTK.
> > So  my question is how i get the data fra ITK to VTK, and is it then
> > difficult to show a volumne view of the data in VTK?
> > A codeexample would be very nice. Thank you very much
> >
> > Best of regards
> > _______________________________________________
> > This is the private VTK discussion list.
> > Please keep messages on-topic. Check the FAQ at:
> > http://www.vtk.org/Wiki/VTK_FAQ
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtkusers
> >
> >
> >  ------------------------------
> > How low will we go? Check out Yahoo! Messenger's low PC-to-Phone call
> > rates.
> > <http://us.rd.yahoo.com/mail_us/taglines/postman8/*http://us.rd.yahoo.com/evt=39663/*http://voice.yahoo.com>
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20061011/e3ed26f3/attachment.htm>


More information about the vtkusers mailing list