<font size="2"><font face="verdana,sans-serif">I added the example <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/VolumeRendering/itkVtkImageConvert">itkVtkImageConvert</a>. It would be nice if someone could test this, preferably on Linux (because I created this on Windows).<br>
</font></font><br><div class="gmail_quote">2011/7/5 Dženan Zukić <span dir="ltr"><<a href="mailto:dzenanz@gmail.com">dzenanz@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<font size="2"><font face="verdana,sans-serif">OK, I will create an example employing this and put it in VTK wiki.<br></font></font><font color="#888888"><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">Dženan<br>
</font></div></font><div><div></div><div class="h5"><div><div class="gmail_quote"><br></div><div class="gmail_quote">2011/7/5 David Doria <span dir="ltr"><<a href="mailto:daviddoria@gmail.com" target="_blank">daviddoria@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2011/7/5 Dženan Zukić <<a href="mailto:dzenanz@gmail.com" target="_blank">dzenanz@gmail.com</a>>:<br>
<div><div></div><div>> I hope this function can save someone a lot of time and headaches. It takes<br>
> an itk::Image and converts it into a vtkVolume, keeping it in DICOM's<br>
> patient physical world space. Its main usage is combining it with segmented<br>
> structures (vtkPolyData) whose vertices are in DICOM patient space, that is,<br>
> vertex coordinates were obtained using<br>
> visualizing->TransformIndexToPhysicalPoint().<br>
> typedef itk::Image<unsigned char, 3> VisualizingImageType<br>
> void showITKimageInVTKqwidget(VisualizingImageType::Pointer visualizing)<br>
> {<br>
> typedef itk::ImageToVTKImageFilter<VisualizingImageType><br>
> itkVtkConverter;<br>
> itkVtkConverter::Pointer conv=itkVtkConverter::New();<br>
> conv->SetInput(visualizing);<br>
><br>
> vtkGPUVolumeRayCastMapper *mapper = vtkGPUVolumeRayCastMapper::New();<br>
> mapper->SetInput(conv->GetOutput());<br>
> vtkVolume *volume=vtkVolume::New();<br>
> volume->SetProperty( myTransferFunction );<br>
> volume->SetMapper( mapper );<br>
> // vtkVolume only manages spacing by itself.<br>
> // Here we take care of position and orientation so it is in DICOM<br>
> physical space<br>
> VisualizingImageType::DirectionType d=visualizing->GetDirection();<br>
> vtkMatrix4x4 *mat=vtkMatrix4x4::New(); //identity matrix<br>
> for (int i=0; i<3; i++)<br>
> for (int k=0; k<3; k++)<br>
> mat->SetElement(i,k, d(i,k));<br>
> VisualizingImageType::PointType origin=visualizing->GetOrigin();<br>
> volume->SetOrigin(-origin[0], -origin[1], -origin[2]);<br>
> volume->SetPosition(-origin[0], -origin[1], -origin[2]);<br>
> for (int i=0; i<3; i++)<br>
> mat->SetElement(i,3, origin[i]);<br>
> volume->SetUserMatrix(mat);<br>
> vtkRenderer *renderer =<br>
> myQWidget->GetRenderWindow()->GetRenderers()->GetFirstRenderer();<br>
> renderer->AddVolume( volume );<br>
> myQWidget->GetRenderWindow()->Render();<br>
> renderer->ResetCamera();<br>
> }<br>
><br>
> Dženan<br>
<br>
</div></div>Dženan,<br>
<br>
Thanks for sharing. I would put something like this on the examples<br>
wiki in a section called "Bridge" or "Glue" or something like that<br>
(these are names that have been previously used to describe<br>
interactions between ITK and VTK). This will make it much easier to<br>
find in the future instead of having to dig through old mailing list<br>
archives.<br>
<br>
David D.<br>
</blockquote></div><br></div>
</div></div></blockquote></div><br>