[vtkusers] How do i port an image from ITK to VTK
Prename Surname
bsd.diverse at gmail.com
Wed Oct 11 11:05:55 EDT 2006
Ahhh yes, okay. This seems to show something now...But hmmm
This is only a cube full of noise. I know the image is correct, because i
have viewed it in other programs, and it looks correct. So something must
have gone wrong in the conversion.
It should be a brain, but it looks like this:
http://www.coachkontakt.dk/rendered.jpg
Any suggestions?
Best of regards, and thank you
2006/10/11, Erbacher, Markus <Markus.Erbacher at med.uni-heidelberg.de>:
>
> You are missing the vtkRenderWindowInteractor.
>
> The way you are creating the window just opens the window, renders the
> scence once and then the function returns and the programm ends.
>
> Use is like this:
>
>
> vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
>
> iren->SetRenderWindow(renWin);
>
> renWin->Render();
>
> iren->Start(); // this starts the interactor, and only returns if ypu
> close the window
>
>
>
> -----Ursprüngliche Nachricht-----
> *Von:* Prename Surname [mailto:bsd.diverse at gmail.com]
> *Gesendet:* Mittwoch, 11. Oktober 2006 16:40
> *An:* Erbacher, Markus; vtkusers at vtk.org
> *Betreff:* Re: [vtkusers] How do i port an image from ITK to VTK
>
> 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/4a8cd63b/attachment.htm>
More information about the vtkusers
mailing list