Hi Markus,<br><br>&nbsp; Thanks for your help.<br><br>&nbsp; Actually, I am writing two programs. One is processing and saving the data in ITK. And The other is displaying in VTK.<br><br>&nbsp; Where is your <font face="Arial" size="2">ImageToVTKImageFilter? I fails to find this class in the ITK.
<br><br></font>Mengda<br><br><div><span class="gmail_quote">2007/1/2, Markus Weigert &lt;<a href="mailto:m.weigert@fz-juelich.de">m.weigert@fz-juelich.de</a>&gt;:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">






<div bgcolor="#ffffff">
<div><font face="Arial" size="2">Hi Mengda,</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">why do you&nbsp;want to save&nbsp;the ITK 
deformation field to disk and </font></div>
<div><font face="Arial" size="2">read it with a&nbsp;vtk reader???</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">You can&nbsp;translate the ITK vectorimage directly 
to VTK using</font></div>
<div><font face="Arial" size="2">itk::ImageToVTKImageFilter and display 
it.</font></div>
<div><font face="Arial" size="2">This way, you can use ITK Imagereaders and writers 
to read and</font></div>
<div><font face="Arial" size="2">write your vectordata.</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">You can&nbsp;do this by the following 
code:</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">typedef itk::Image&lt;float,3&gt;&nbsp; 
DeformationFieldType;</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">void 
visualizeDeformationField(DeformationFieldType::Pointer 
defField)<br>{</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">try {</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">&nbsp;&nbsp; m_DefConnector = 
itk::ImageToVTKImageFilter&lt;DeformationFieldType&gt;::New();</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">&nbsp;&nbsp; 
m_DefConnector-&gt;SetInput(defField);<br>&nbsp;&nbsp; 
m_DefConnector-&gt;SetReleaseDataFlag(true);&nbsp;<br>&nbsp;&nbsp; 
m_DefConnector-&gt;Update();<br>&nbsp;&nbsp; vtkImageData* m_vtkImage = 
m_DefConnector-&gt;GetOutput();</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
m_outline-&gt;SetInput(m_vtkImage);<br>&nbsp;&nbsp; 
m_outlineMapper-&gt;SetInput(m_outline-&gt;GetOutput());</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
m_outlineActor-&gt;SetMapper(m_outlineMapper);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
m_outlineActor-&gt;GetProperty()-&gt;SetColor(0.7, 0.3, 
0.1);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; <br>&nbsp;&nbsp; m_pointData = 
m_vtkImage-&gt;GetPointData();</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( m_pointData == 
NULL )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; itkWarningMacro( &lt;&lt; 
&quot;vtkImage-&gt;GetPointData() returns NULL!&quot; 
);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( 
m_pointData-&gt;GetNumberOfArrays() == 0 )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; itkWarningMacro( &lt;&lt; 
&quot;vtkImage-&gt;GetPointData()-&gt;GetNumberOfArrays() is 0!&quot; 
);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if 
( m_pointData-&gt;GetArrayName( 0 ) == NULL )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
m_vtkImage-&gt;GetPointData() -&gt;GetArray( 0 ) -&gt;SetName( &quot;vectors&quot; 
);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div><font face="Arial" size="2">
</font><div><font face="Arial" size="2"><br>&nbsp;&nbsp; m_arrowSource-&gt;Update();<br>&nbsp;&nbsp; 
<br>&nbsp;&nbsp; m_maskPoints-&gt;SetInput(m_vtkImage);<br>&nbsp;&nbsp; 
m_maskPoints-&gt;SetMaximumNumberOfPoints(1000);<br>&nbsp;&nbsp; 
m_maskPoints-&gt;RandomModeOn();<br>&nbsp;&nbsp; 
m_maskPoints-&gt;Update();</font></div>
<div><font face="Arial" size="2">&nbsp;</font></div>
<div><font face="Arial" size="2">&nbsp;&nbsp; 
m_deformationData-&gt;SetPoints(m_maskPoints-&gt;GetOutput()-&gt;GetPoints());<br>&nbsp;&nbsp; 
m_deformationData-&gt;GetPointData()-&gt;SetVectors(m_maskPoints-&gt;GetOutput()-&gt;GetPointData()-&gt;GetArray(0));</font></div>
<div><font face="Arial" size="2">&nbsp;</font></div>
<div><font face="Arial" size="2">&nbsp;&nbsp; double* range = 
m_maskPoints-&gt;GetOutput()-&gt;GetPointData()-&gt;GetArray(0)-&gt;GetRange();<br>&nbsp;&nbsp; 
range[0] = 0;</font></div>
<div><font face="Arial" size="2">&nbsp;</font></div>
<div><font face="Arial" size="2">&nbsp;&nbsp; m_lut-&gt;RemoveAllPoints();<br>&nbsp;&nbsp; 
m_lut-&gt;AddRGBPoint(range[0],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
0.0, 0.0, 1.0);<br>&nbsp;&nbsp; 
m_lut-&gt;AddRGBPoint(range[0]+(range[1]-range[0])/4, 0.0, 0.5, 
0.5);<br>&nbsp;&nbsp; m_lut-&gt;AddRGBPoint(range[0]+(range[1]-range[0])/2, 0.0, 
1.0, 0.0);<br>&nbsp;&nbsp; m_lut-&gt;AddRGBPoint(range[1]-(range[1]-range[0])/4, 
0.5, 0.5, 0.0);<br>&nbsp;&nbsp; m_lut-&gt;AddRGBPoint(range[1], 1.0, 0.0, 
0.0);</font></div>
<div><font face="Arial" size="2">&nbsp;</font></div>
<div><font face="Arial" size="2">&nbsp;&nbsp; m_scalarBar-&gt;SetLookupTable( m_lut );<br>&nbsp;&nbsp; 
m_scalarBar-&gt;SetTitle(&quot;Vector magnitude value&quot;);<br>&nbsp;&nbsp; 
m_scalarBar-&gt;SetOrientationToVertical();<br>&nbsp;&nbsp; 
m_scalarBar-&gt;GetLabelTextProperty()-&gt;SetColor(0,0,1);<br>&nbsp;&nbsp; 
m_scalarBar-&gt;GetTitleTextProperty()-&gt;SetColor(0,0,1);</font></div>
<div><font face="Arial" size="2">&nbsp;</font></div>
<div><font face="Arial" size="2">&nbsp;&nbsp;&nbsp;&nbsp; m_glyph-&gt;SetSource( 
m_arrowSource-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp;&nbsp; 
m_glyph-&gt;SetInput(m_deformationData);<br>&nbsp;&nbsp;&nbsp;&nbsp; 
m_glyph-&gt;OrientOn();<br>&nbsp;&nbsp;&nbsp;&nbsp; 
m_glyph-&gt;SetVectorModeToUseVector();<br>&nbsp; 
m_glyph-&gt;ScalingOn();<br>&nbsp;&nbsp;&nbsp;&nbsp; 
m_glyph-&gt;SetScaleModeToScaleByVector();<br>&nbsp; 
m_glyph-&gt;SetColorModeToColorByVector();<br>&nbsp; m_glyph-&gt;SetScaleFactor( 
5.0 );<br>&nbsp;&nbsp;&nbsp;&nbsp; m_glyph-&gt;Update(); 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
m_spikeMapper-&gt;SetInput(m_glyph-&gt;GetOutput());<br>&nbsp;&nbsp; 
m_spikeMapper-&gt;SetLookupTable( m_lut );<br>&nbsp;&nbsp; 
m_spikeMapper-&gt;Update();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
m_spikeActor-&gt;SetMapper(m_spikeMapper);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
m_spikeActor-&gt;GetProperty()-&gt;SetColor(0.0, 0.79, 0.34);</font></div>
<div><font face="Arial" size="2">&nbsp;</font></div>
<div><font face="Arial" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_3DRenderer-&gt;AddActor( m_spikeActor 
);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_3DRenderer-&gt;AddActor( m_outlineActor 
);<br>&nbsp;&nbsp; m_3DRenderer-&gt;AddActor( m_scalarBar 
);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; 
m_3DRenderer-&gt;GetActiveCamera()-&gt;SetViewUp(0, 0, -1);<br>&nbsp;&nbsp; 
m_3DRenderer-&gt;GetActiveCamera()-&gt;SetPosition(-2, -2, -2);<br>&nbsp;&nbsp; 
m_3DRenderer-&gt;GetActiveCamera()-&gt;SetFocalPoint(0, 0, 0);<br>&nbsp;&nbsp; 
m_3DRenderer-&gt;GetActiveCamera()-&gt;ComputeViewPlaneNormal();<br>&nbsp;&nbsp; 
m_3DRenderer-&gt;ResetCamera();<br>&nbsp;&nbsp; 
m_3DRenderer-&gt;ResetCameraClippingRange();<br>&nbsp;&nbsp; 
m_3DRenderer-&gt;SetBackground(0.0, 0.0, 0.0);</font></div>
<div><font face="Arial" size="2">&nbsp;</font></div>
<div><font face="Arial" size="2">&nbsp;&nbsp; m_3DRenderWindow-&gt;Start();<br>&nbsp;&nbsp; 
m_3DRenderer-&gt;Render();<br>&nbsp;<br>&nbsp;&nbsp; 
m_3DRenderWindowInteractor-&gt;redraw();<br></font></div>
<div><font face="Arial" size="2">}</font></div>
<div><font face="Arial" size="2">&nbsp;</font></div>
<div><font face="Arial" size="2">&nbsp;</font></div>
<div><font face="Arial" size="2">&nbsp;</font></div>
<div><font face="Arial" size="2">Kind Regards,</font></div>
<div><font face="Arial" size="2">Markus</font></div></div>

</blockquote></div><br>