[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