<font class="Apple-style-span" face="verdana, sans-serif">I hope this function can save someone a lot of time and headaches. It takes an itk::Image and converts it into a vtkVolume, keeping it in DICOM&#39;s patient physical world space. Its main usage is combining it with segmented structures (vtkPolyData) whose vertices are in DICOM patient space, that is, vertex coordinates were obtained using visualizing-&gt;TransformIndexToPhysicalPoint().</font><div>

<font class="Apple-style-span" face="verdana, sans-serif"><br></font></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><div>typedef itk::Image&lt;unsigned char, 3&gt; VisualizingImageType</div>

<div><br></div><div>void showITKimageInVTKqwidget(VisualizingImageType::Pointer visualizing)</div><div>{</div><div>    typedef itk::ImageToVTKImageFilter&lt;VisualizingImageType&gt; itkVtkConverter;</div><div>    itkVtkConverter::Pointer conv=itkVtkConverter::New();</div>

<div>    conv-&gt;SetInput(visualizing);</div><div>    </div><div>    vtkGPUVolumeRayCastMapper *mapper = vtkGPUVolumeRayCastMapper::New();</div><div>    mapper-&gt;SetInput(conv-&gt;GetOutput());</div><div><br></div><div>

    vtkVolume *volume=vtkVolume::New();</div><div>    volume-&gt;SetProperty( myTransferFunction );</div><div>    volume-&gt;SetMapper( mapper );</div><div><br></div><div>    // vtkVolume only manages spacing by itself.</div>

<div>    // Here we take care of position and orientation so it is in DICOM physical space</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>VisualizingImageType::DirectionType d=visualizing-&gt;GetDirection();</div>

<div><span class="Apple-tab-span" style="white-space:pre">        </span>vtkMatrix4x4 *mat=vtkMatrix4x4::New(); //identity matrix</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>for (int i=0; i&lt;3; i++)</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span>for (int k=0; k&lt;3; k++)</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>mat-&gt;SetElement(i,k, d(i,k));</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>VisualizingImageType::PointType origin=visualizing-&gt;GetOrigin();</div>

<div><span class="Apple-tab-span" style="white-space:pre">        </span>volume-&gt;SetOrigin(-origin[0], -origin[1], -origin[2]);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>volume-&gt;SetPosition(-origin[0], -origin[1], -origin[2]);</div>

<div><span class="Apple-tab-span" style="white-space:pre">        </span>for (int i=0; i&lt;3; i++)</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>mat-&gt;SetElement(i,3, origin[i]);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>volume-&gt;SetUserMatrix(mat);</div>

<div><br></div><div>    vtkRenderer *renderer = myQWidget-&gt;GetRenderWindow()-&gt;GetRenderers()-&gt;GetFirstRenderer();</div><div>    renderer-&gt;AddVolume( volume );    </div><div>    myQWidget-&gt;GetRenderWindow()-&gt;Render();</div>

<div>    renderer-&gt;ResetCamera();</div><div>}</div></font></div></div><div><div><div><p style="margin-bottom: 0cm; "><font class="Apple-style-span" face="verdana, sans-serif">Dženan</font></p></div></div></div>