<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.3020" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY 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; 
"vtkImage-&gt;GetPointData() returns NULL!" 
);<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; 
"vtkImage-&gt;GetPointData()-&gt;GetNumberOfArrays() is 0!" 
);<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( "vectors" 
);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV><FONT face=Arial size=2>
<DIV><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();</DIV>
<DIV>&nbsp;</DIV>
<DIV>&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));</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp; double* range = 
m_maskPoints-&gt;GetOutput()-&gt;GetPointData()-&gt;GetArray(0)-&gt;GetRange();<BR>&nbsp;&nbsp; 
range[0] = 0;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&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);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp; m_scalarBar-&gt;SetLookupTable( m_lut );<BR>&nbsp;&nbsp; 
m_scalarBar-&gt;SetTitle("Vector magnitude value");<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);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&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);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&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);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp; m_3DRenderWindow-&gt;Start();<BR>&nbsp;&nbsp; 
m_3DRenderer-&gt;Render();<BR>&nbsp;<BR>&nbsp;&nbsp; 
m_3DRenderWindowInteractor-&gt;redraw();<BR></DIV>
<DIV>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>Kind Regards,</DIV>
<DIV>Markus</DIV></FONT></BODY></HTML>