<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>Hi all,</DIV>
<DIV>I&nbsp;have segmented 3D image using region growing method (using itk) and I want to display the&nbsp;original volume(float type)&nbsp;using vtk. I got an error at&nbsp;run time stating that vtk raycasting requires the volume to be of pixel type unsigned char or unsigned short. I'm converting the vtkimport that I use to unsigned char using the function SetDataScalarTypeToChar() but I still get the error.&nbsp;&nbsp;The code is bellow.</DIV>
<DIV>Any help is very appreciated.</DIV>
<DIV>Thank you for&nbsp; your time</DIV>
<DIV>Sara</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"itkConfidenceConnectedImageFilter.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"itkImage.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"itkCastImageFilter.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"itkCurvatureFlowImageFilter.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"itkImageFileReader.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"itkImageFileWriter.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"itkVTKImageExport.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"itkVTKImageImport.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"vtkImageImport.h"</FONT><FONT size=2> </DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"vtkImageExport.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"vtkImageReader.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"vtkPiecewiseFunction.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"vtkVolumeProperty.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"vtkVolumeRayCastMapper.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"vtkVolumeTextureMapper3D.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"vtkFixedPointVolumeRayCastMapper.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"vtkVolumeRayCastCompositeFunction.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"vtkVolume.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"vtkRenderer.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"vtkRenderWindow.h"</DIV></FONT><FONT color=#0000ff size=2>
<DIV>#include</FONT><FONT size=2> </FONT><FONT color=#a31515 size=2>"vtkRenderWindowInteractor.h"</DIV></FONT><FONT color=#008000 size=2>
<DIV>// This function will connect the given itk::VTKImageExport filter to the given vtkImageImport filter.</DIV></FONT><FONT color=#0000ff size=2>
<DIV>template</FONT><FONT size=2> &lt;</FONT><FONT color=#0000ff size=2>typename</FONT><FONT size=2> ITK_Exporter, </FONT><FONT color=#0000ff size=2>typename</FONT><FONT size=2> VTK_Importer&gt;</DIV></FONT><FONT color=#0000ff size=2>
<DIV>void</FONT><FONT size=2> ConnectPipelines(ITK_Exporter exporter, VTK_Importer* importer)</DIV>
<DIV>{</DIV>
<DIV>importer-&gt;SetUpdateInformationCallback(exporter-&gt;GetUpdateInformationCallback());</DIV>
<DIV>importer-&gt;SetPipelineModifiedCallback(exporter-&gt;GetPipelineModifiedCallback());</DIV>
<DIV>importer-&gt;SetWholeExtentCallback(exporter-&gt;GetWholeExtentCallback());</DIV>
<DIV>importer-&gt;SetSpacingCallback(exporter-&gt;GetSpacingCallback());</DIV>
<DIV>importer-&gt;SetOriginCallback(exporter-&gt;GetOriginCallback());</DIV>
<DIV>importer-&gt;SetScalarTypeCallback(exporter-&gt;GetScalarTypeCallback());</DIV>
<DIV>importer-&gt;SetNumberOfComponentsCallback(exporter-&gt;GetNumberOfComponentsCallback());</DIV>
<DIV>importer-&gt;SetPropagateUpdateExtentCallback(exporter-&gt;GetPropagateUpdateExtentCallback());</DIV>
<DIV>importer-&gt;SetUpdateDataCallback(exporter-&gt;GetUpdateDataCallback());</DIV>
<DIV>importer-&gt;SetDataExtentCallback(exporter-&gt;GetDataExtentCallback());</DIV>
<DIV>importer-&gt;SetBufferPointerCallback(exporter-&gt;GetBufferPointerCallback());</DIV>
<DIV>importer-&gt;SetCallbackUserData(exporter-&gt;GetCallbackUserData());</DIV>
<DIV>}</DIV></FONT><FONT color=#0000ff size=2>
<DIV>int</FONT><FONT size=2> main( )</DIV>
<DIV>{</DIV>
<DIV></FONT><FONT color=#008000 size=2>//typedef unsigned short InputPixelType;</DIV></FONT><FONT size=2>
<DIV></FONT><FONT color=#0000ff size=2>typedef</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>float</FONT><FONT size=2> InputPixelType;</DIV>
<DIV></FONT><FONT color=#0000ff size=2>typedef</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>unsigned</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>char</FONT><FONT size=2> OutputPixelType;</DIV>
<DIV></FONT><FONT color=#0000ff size=2>const</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>unsigned</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>int</FONT><FONT size=2> Dimension = 3;</DIV>
<DIV></FONT><FONT color=#0000ff size=2>typedef</FONT><FONT size=2> itk::Image&lt; InputPixelType, Dimension &gt; InputImageType;</DIV>
<DIV></FONT><FONT color=#0000ff size=2>typedef</FONT><FONT size=2> itk::Image&lt; OutputPixelType, Dimension &gt; OutputImageType;</DIV>
<DIV></FONT><FONT color=#0000ff size=2>typedef</FONT><FONT size=2> itk::CastImageFilter&lt; InputImageType, OutputImageType &gt; CastingFilterType;</DIV>
<DIV></FONT><FONT color=#0000ff size=2>typedef</FONT><FONT size=2> itk::ImageFileReader&lt; InputImageType &gt; ReaderType;</DIV>
<DIV></FONT><FONT color=#0000ff size=2>typedef</FONT><FONT size=2> itk::ImageFileWriter&lt; OutputImageType &gt; WriterType;</DIV>
<DIV></FONT><FONT color=#0000ff size=2>typedef</FONT><FONT size=2> itk::CurvatureFlowImageFilter&lt; InputImageType, InputImageType &gt; CurvatureFlowImageFilterType; </DIV>
<DIV></FONT><FONT color=#0000ff size=2>typedef</FONT><FONT size=2> itk::ConfidenceConnectedImageFilter&lt;InputImageType, InputImageType&gt; ConnectedFilterType;</DIV>
<DIV>CastingFilterType::Pointer caster = CastingFilterType::New(); </DIV>
<DIV>ReaderType::Pointer reader = ReaderType::New();</DIV>
<DIV>WriterType::Pointer writer = WriterType::New();</DIV>
<DIV>CurvatureFlowImageFilterType::Pointer smoothing = CurvatureFlowImageFilterType::New(); </DIV>
<DIV>ConnectedFilterType::Pointer confidenceConnected = ConnectedFilterType::New();</DIV>
<DIV></DIV>
<DIV>reader-&gt;SetFileName( </FONT><FONT color=#a31515 size=2>"c:/images/Patient01.mhd"</FONT><FONT size=2> );</DIV>
<DIV>writer-&gt;SetFileName( </FONT><FONT color=#a31515 size=2>"c:/images/3DConfidenceConnectedSegmImg.mhd"</FONT><FONT size=2> );</DIV>
<DIV>smoothing-&gt;SetInput( reader-&gt;GetOutput() );</DIV>
<DIV>confidenceConnected-&gt;SetInput( smoothing-&gt;GetOutput() );</DIV>
<DIV>caster-&gt;SetInput( confidenceConnected-&gt;GetOutput() );</DIV>
<DIV>writer-&gt;SetInput( caster-&gt;GetOutput() );</DIV>
<DIV></DIV>
<DIV>smoothing-&gt;SetNumberOfIterations( 5 );</DIV>
<DIV>smoothing-&gt;SetTimeStep( 0.125 );</DIV>
<DIV></DIV>
<DIV>confidenceConnected-&gt;SetMultiplier( 2.5 ); </DIV>
<DIV>confidenceConnected-&gt;SetNumberOfIterations( 2 );</DIV>
<DIV>confidenceConnected-&gt;SetReplaceValue( 255 ); </DIV>
<DIV>InputImageType::IndexType index; </DIV>
<DIV>index[0] = atoi( </FONT><FONT color=#a31515 size=2>"256"</FONT><FONT size=2> );</DIV>
<DIV>index[1] = atoi( </FONT><FONT color=#a31515 size=2>"256"</FONT><FONT size=2> );</DIV>
<DIV>index[2] = atoi( </FONT><FONT color=#a31515 size=2>"16"</FONT><FONT size=2> );</DIV>
<DIV>confidenceConnected-&gt;SetSeed( index ); </DIV>
<DIV>confidenceConnected-&gt;SetInitialNeighborhoodRadius( 2 );</DIV>
<DIV></FONT><FONT color=#0000ff size=2>try</DIV></FONT><FONT size=2>
<DIV>{</DIV>
<DIV>writer-&gt;Update();</DIV>
<DIV>}</DIV>
<DIV></FONT><FONT color=#0000ff size=2>catch</FONT><FONT size=2>( itk::ExceptionObject &amp; excep )</DIV>
<DIV>{</DIV>
<DIV>std::cerr &lt;&lt; </FONT><FONT color=#a31515 size=2>"Exception caught !"</FONT><FONT size=2> &lt;&lt; std::endl;</DIV>
<DIV>std::cerr &lt;&lt; excep &lt;&lt; std::endl;</DIV>
<DIV>}</DIV>
<DIV></FONT><FONT color=#008000 size=2>//----------------------------------------------</DIV></FONT><FONT size=2>
<DIV></FONT><FONT color=#008000 size=2>// -------------------- vtk Display----------------</DIV></FONT><FONT size=2>
<DIV></FONT><FONT color=#008000 size=2>//----------------------------------------------</DIV></FONT><FONT size=2>
<DIV></FONT><FONT color=#0000ff size=2>typedef</FONT><FONT size=2> itk::VTKImageExport&lt; InputImageType &gt; ExportFilterType;</DIV>
<DIV>ExportFilterType::Pointer itkExporter = ExportFilterType::New(); </DIV>
<DIV>itkExporter-&gt;SetInput(reader-&gt;GetOutput()); </DIV>
<DIV>vtkImageImport* vtkImporter = vtkImageImport::New(); </DIV>
<DIV>ConnectPipelines(itkExporter, vtkImporter);</DIV>
<DIV>vtkImporter-&gt;SetDataScalarTypeToUnsignedChar();</DIV>
<DIV></DIV>
<DIV></FONT><FONT color=#008000 size=2>// Define opacity transfer function</DIV></FONT><FONT size=2>
<DIV>vtkPiecewiseFunction *opacityTransferFunction = vtkPiecewiseFunction::New();</DIV>
<DIV>vtkVolume *volume = vtkVolume::New();</DIV>
<DIV>vtkVolumeProperty *volumeProperty = vtkVolumeProperty::New();</DIV>
<DIV>vtkVolumeRayCastMapper *VolumeMapper = vtkVolumeRayCastMapper::New();</DIV>
<DIV>vtkVolumeRayCastCompositeFunction *RayCastFunction =vtkVolumeRayCastCompositeFunction::New();</DIV>
<DIV></DIV>
<DIV></FONT><FONT color=#008000 size=2>// Volume property </DIV></FONT><FONT size=2>
<DIV>opacityTransferFunction-&gt;AddPoint(0,0.001);</DIV>
<DIV>opacityTransferFunction-&gt;AddPoint(255,0.2);</DIV>
<DIV>volumeProperty-&gt;SetScalarOpacity(opacityTransferFunction);</DIV>
<DIV>volumeProperty-&gt;SetInterpolationTypeToLinear();</DIV>
<DIV>volumeProperty-&gt;ShadeOff();</DIV>
<DIV></FONT><FONT color=#008000 size=2>// Volume mapper</DIV></FONT><FONT size=2>
<DIV>VolumeMapper-&gt;SetVolumeRayCastFunction(RayCastFunction);</DIV>
<DIV>VolumeMapper-&gt;SetSampleDistance(1.0);</DIV>
<DIV>VolumeMapper-&gt;SetBlendModeToMaximumIntensity();</DIV>
<DIV>VolumeMapper-&gt;SetInput(vtkImporter-&gt;GetOutput() ); </DIV>
<DIV></DIV>
<DIV></FONT><FONT color=#008000 size=2>// The volume </DIV></FONT><FONT size=2>
<DIV>volume-&gt;SetMapper(VolumeMapper);</DIV>
<DIV>volume-&gt;SetProperty(volumeProperty);</DIV>
<DIV></DIV>
<DIV></FONT><FONT color=#008000 size=2>// Create a renderer, render window, and render window interactor to display the results.</DIV></FONT><FONT size=2>
<DIV>vtkRenderer *Renderer = vtkRenderer::New();</DIV>
<DIV>vtkRenderWindow *RenWin = vtkRenderWindow::New();</DIV>
<DIV>vtkRenderWindowInteractor *RenWinInterc = vtkRenderWindowInteractor::New();</DIV>
<DIV>RenWin-&gt;AddRenderer(Renderer);</DIV>
<DIV>RenWinInterc-&gt;SetRenderWindow(RenWin);</DIV>
<DIV>Renderer-&gt;AddVolume(volume);</DIV>
<DIV>Renderer-&gt;SetBackground(1,1,1);</DIV>
<DIV>RenWin-&gt;Render();</DIV>
<DIV>RenWinInterc-&gt;Initialize();</DIV>
<DIV>RenWinInterc-&gt;Start();</DIV>
<DIV></FONT><FONT color=#008000 size=2>// Release all VTK components</DIV></FONT><FONT size=2>
<DIV>RenWinInterc-&gt;Delete();</DIV>
<DIV>RenWin-&gt;Delete(); </DIV>
<DIV>Renderer-&gt;Delete();</DIV>
<DIV>volume-&gt;Delete();</DIV>
<DIV>VolumeMapper-&gt;Delete();</DIV>
<DIV>volumeProperty-&gt;Delete();</DIV>
<DIV>opacityTransferFunction-&gt;Delete();</DIV>
<DIV>&nbsp;</DIV>
<DIV></FONT><FONT color=#0000ff size=2>return</FONT><FONT size=2> 0;</DIV>
<DIV>}</DIV></FONT></td></tr></table><br>


      <hr size="1"> 
Envoyé avec <a href="http://us.rd.yahoo.com/mailuk/taglines/isp/control/*http://us.rd.yahoo.com/evt=52423/*http://fr.docs.yahoo.com/mail/overview/index.html">Yahoo! Mail</a>.<br>Une boite mail plus intelligente. </a>