Hi Markus,<br><br> Thanks for your help.<br><br> Actually, I am writing two programs. One is processing and saving the data in ITK. And The other is displaying in VTK.<br><br> 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 <<a href="mailto:m.weigert@fz-juelich.de">m.weigert@fz-juelich.de</a>>:</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> </div>
<div><font face="Arial" size="2">why do you want to save the ITK
deformation field to disk and </font></div>
<div><font face="Arial" size="2">read it with a vtk reader???</font></div>
<div><font face="Arial" size="2"></font> </div>
<div><font face="Arial" size="2">You can 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> </div>
<div><font face="Arial" size="2">You can do this by the following
code:</font></div>
<div><font face="Arial" size="2"></font> </div>
<div><font face="Arial" size="2">typedef itk::Image<float,3>
DeformationFieldType;</font></div>
<div><font face="Arial" size="2"></font> </div>
<div><font face="Arial" size="2">void
visualizeDeformationField(DeformationFieldType::Pointer
defField)<br>{</font></div>
<div><font face="Arial" size="2"></font> </div>
<div><font face="Arial" size="2">try {</font></div>
<div><font face="Arial" size="2"></font> </div>
<div><font face="Arial" size="2"> m_DefConnector =
itk::ImageToVTKImageFilter<DeformationFieldType>::New();</font></div>
<div><font face="Arial" size="2"></font> </div>
<div><font face="Arial" size="2">
m_DefConnector->SetInput(defField);<br>
m_DefConnector->SetReleaseDataFlag(true); <br>
m_DefConnector->Update();<br> vtkImageData* m_vtkImage =
m_DefConnector->GetOutput();</font></div>
<div><font face="Arial" size="2"></font> </div>
<div><font face="Arial" size="2">
m_outline->SetInput(m_vtkImage);<br>
m_outlineMapper->SetInput(m_outline->GetOutput());</font></div>
<div><font face="Arial" size="2"></font> </div>
<div><font face="Arial" size="2">
m_outlineActor->SetMapper(m_outlineMapper);<br>
m_outlineActor->GetProperty()->SetColor(0.7, 0.3,
0.1);<br> <br> <br> m_pointData =
m_vtkImage->GetPointData();</font></div>
<div><font face="Arial" size="2"></font> </div>
<div><font face="Arial" size="2"> if ( m_pointData ==
NULL )<br>
{<br> itkWarningMacro( <<
"vtkImage->GetPointData() returns NULL!"
);<br> return
;<br> }<br> if (
m_pointData->GetNumberOfArrays() == 0 )<br>
{<br> itkWarningMacro( <<
"vtkImage->GetPointData()->GetNumberOfArrays() is 0!"
);<br> return
;<br> }<br> else if
( m_pointData->GetArrayName( 0 ) == NULL )<br>
{<br>
m_vtkImage->GetPointData() ->GetArray( 0 ) ->SetName( "vectors"
);<br> }</font></div>
<div><font face="Arial" size="2"></font> </div><font face="Arial" size="2">
</font><div><font face="Arial" size="2"><br> m_arrowSource->Update();<br>
<br> m_maskPoints->SetInput(m_vtkImage);<br>
m_maskPoints->SetMaximumNumberOfPoints(1000);<br>
m_maskPoints->RandomModeOn();<br>
m_maskPoints->Update();</font></div>
<div><font face="Arial" size="2"> </font></div>
<div><font face="Arial" size="2">
m_deformationData->SetPoints(m_maskPoints->GetOutput()->GetPoints());<br>
m_deformationData->GetPointData()->SetVectors(m_maskPoints->GetOutput()->GetPointData()->GetArray(0));</font></div>
<div><font face="Arial" size="2"> </font></div>
<div><font face="Arial" size="2"> double* range =
m_maskPoints->GetOutput()->GetPointData()->GetArray(0)->GetRange();<br>
range[0] = 0;</font></div>
<div><font face="Arial" size="2"> </font></div>
<div><font face="Arial" size="2"> m_lut->RemoveAllPoints();<br>
m_lut->AddRGBPoint(range[0],
0.0, 0.0, 1.0);<br>
m_lut->AddRGBPoint(range[0]+(range[1]-range[0])/4, 0.0, 0.5,
0.5);<br> m_lut->AddRGBPoint(range[0]+(range[1]-range[0])/2, 0.0,
1.0, 0.0);<br> m_lut->AddRGBPoint(range[1]-(range[1]-range[0])/4,
0.5, 0.5, 0.0);<br> m_lut->AddRGBPoint(range[1], 1.0, 0.0,
0.0);</font></div>
<div><font face="Arial" size="2"> </font></div>
<div><font face="Arial" size="2"> m_scalarBar->SetLookupTable( m_lut );<br>
m_scalarBar->SetTitle("Vector magnitude value");<br>
m_scalarBar->SetOrientationToVertical();<br>
m_scalarBar->GetLabelTextProperty()->SetColor(0,0,1);<br>
m_scalarBar->GetTitleTextProperty()->SetColor(0,0,1);</font></div>
<div><font face="Arial" size="2"> </font></div>
<div><font face="Arial" size="2"> m_glyph->SetSource(
m_arrowSource->GetOutput() );<br>
m_glyph->SetInput(m_deformationData);<br>
m_glyph->OrientOn();<br>
m_glyph->SetVectorModeToUseVector();<br>
m_glyph->ScalingOn();<br>
m_glyph->SetScaleModeToScaleByVector();<br>
m_glyph->SetColorModeToColorByVector();<br> m_glyph->SetScaleFactor(
5.0 );<br> m_glyph->Update();
<br> <br>
m_spikeMapper->SetInput(m_glyph->GetOutput());<br>
m_spikeMapper->SetLookupTable( m_lut );<br>
m_spikeMapper->Update();<br>
<br>
m_spikeActor->SetMapper(m_spikeMapper);<br>
m_spikeActor->GetProperty()->SetColor(0.0, 0.79, 0.34);</font></div>
<div><font face="Arial" size="2"> </font></div>
<div><font face="Arial" size="2"> m_3DRenderer->AddActor( m_spikeActor
);<br> m_3DRenderer->AddActor( m_outlineActor
);<br> m_3DRenderer->AddActor( m_scalarBar
);<br> <br>
m_3DRenderer->GetActiveCamera()->SetViewUp(0, 0, -1);<br>
m_3DRenderer->GetActiveCamera()->SetPosition(-2, -2, -2);<br>
m_3DRenderer->GetActiveCamera()->SetFocalPoint(0, 0, 0);<br>
m_3DRenderer->GetActiveCamera()->ComputeViewPlaneNormal();<br>
m_3DRenderer->ResetCamera();<br>
m_3DRenderer->ResetCameraClippingRange();<br>
m_3DRenderer->SetBackground(0.0, 0.0, 0.0);</font></div>
<div><font face="Arial" size="2"> </font></div>
<div><font face="Arial" size="2"> m_3DRenderWindow->Start();<br>
m_3DRenderer->Render();<br> <br>
m_3DRenderWindowInteractor->redraw();<br></font></div>
<div><font face="Arial" size="2">}</font></div>
<div><font face="Arial" size="2"> </font></div>
<div><font face="Arial" size="2"> </font></div>
<div><font face="Arial" size="2"> </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>