<!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.2600.0" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#c0dcc0>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Dear all: </FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I use 
vtkImageReslice to get the 3 orthogonal views of a 3D image. For axial, sagittal 
and coronal image I use 3</FONT></DIV>
<DIV><FONT face=Arial size=2>imagereslicer to get the image slice respectively. 
Then I change the image slice index&nbsp;interactively by </FONT></DIV>
<DIV><FONT face=Arial size=2>adding or substracting the slice_index_x, 
slice_index_y and slice_index_z&nbsp;by 1 then use the 
axial-&gt;SetResliceAxesOrigin(0,0,this-&gt;slice_index_z) etc functions 
to&nbsp;refresh the new slice images.&nbsp;</FONT><FONT face=Arial size=2>there 
is no problem with </FONT><FONT face=Arial size=2>the image displayed, the speed 
for the axial and </FONT><FONT face=Arial size=2>coronal slices are quite ok 
when I add or substract the image index by 1, but the speed for the sagittal 
slice is much more slower then axial and coronal slices. is there any reason for 
this?&nbsp; Here&nbsp;is the code segment for this. </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>void CDeformView::Addactors()</FONT></DIV>
<DIV><FONT face=Arial size=2>{</FONT></DIV>
<DIV><FONT face=Arial 
size=2>&nbsp;axial=vtkImageReslice::New();<BR>&nbsp;axial-&gt;SetInput(imageData);<BR>&nbsp;axial-&gt;SetResliceAxesOrigin(0,0,0);<BR>&nbsp;axial-&gt;SetOutputDimensionality(2);<BR>&nbsp;axial-&gt;SetOutputSpacing(1,1,voxel_size_z);<BR>&nbsp;axial-&gt;InterpolateOn();<BR>&nbsp;axial-&gt;SetResliceAxesDirectionCosines(1, 
0, 
0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
0, 1, 
0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
0, 0, 
1);<BR>&nbsp;axial_mapper=vtkImageMapper::New();<BR>&nbsp;axial_mapper-&gt;SetInput(axial-&gt;GetOutput());<BR>&nbsp;axial_mapper-&gt;SetColorWindow(255);<BR>&nbsp;axial_mapper-&gt;SetColorLevel(127.5);<BR>&nbsp;vtkActor2D 
*axial_actor=vtkActor2D::New();<BR>&nbsp;axial_actor-&gt;SetMapper(axial_mapper);<BR>&nbsp;axial_actor-&gt;SetPosition(interval,interval);<BR>&nbsp;this-&gt;Renderer-&gt;AddActor(axial_actor);<BR></FONT></DIV>
<DIV><FONT face=Arial 
size=2>&nbsp;sagittal=vtkImageReslice::New();<BR>&nbsp;sagittal-&gt;SetInput(imageData);<BR>&nbsp;sagittal-&gt;SetOutputDimensionality(2);<BR>&nbsp;sagittal-&gt;InterpolateOn();<BR>&nbsp;sagittal-&gt;SetResliceAxesOrigin(0,0,0);<BR>&nbsp;sagittal-&gt;SetOutputSpacing(1,1,voxel_size_x);<BR>&nbsp;sagittal-&gt;SetResliceAxesDirectionCosines(0,0,-1,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
0,1,0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
1,0,0);<BR>&nbsp;sagittal_mapper = 
vtkImageMapper::New();<BR>&nbsp;sagittal_mapper-&gt;SetInput(sagittal-&gt;GetOutput());<BR>&nbsp;sagittal_mapper-&gt;SetColorWindow(255);<BR>&nbsp;sagittal_mapper-&gt;SetColorLevel(127.5);<BR>&nbsp;vtkActor2D 
*sagittal_actor=vtkActor2D::New();<BR>&nbsp;sagittal_actor-&gt;SetMapper(sagittal_mapper);<BR>&nbsp;sagittal_actor-&gt;SetPosition(2*interval+(width-1)*voxel_size_x,interval);<BR>&nbsp;this-&gt;Renderer-&gt;AddActor(sagittal_actor);</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;</DIV>
<DIV>&nbsp;coronal=vtkImageReslice::New();<BR>&nbsp;coronal-&gt;SetInput(imageData);<BR>&nbsp;coronal-&gt;SetResliceAxesOrigin(0,0,0);<BR>&nbsp;coronal-&gt;SetOutputDimensionality(2);<BR>&nbsp;coronal-&gt;InterpolateOn();<BR>&nbsp;coronal-&gt;SetOutputSpacing(1,1,voxel_size_y);<BR>&nbsp;coronal-&gt;SetResliceAxesDirectionCosines(1,0,0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
0,0,1,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
0,-1,0);<BR>&nbsp;coronal_mapper = 
vtkImageMapper::New();<BR>&nbsp;coronal_mapper-&gt;SetInput(coronal-&gt;GetOutput());<BR>&nbsp;coronal_mapper-&gt;SetColorWindow(255);<BR>&nbsp;coronal_mapper-&gt;SetColorLevel(127.5);<BR>&nbsp;vtkActor2D 
*coronal_actor=vtkActor2D::New();<BR>&nbsp;coronal_actor-&gt;SetMapper(coronal_mapper);<BR>&nbsp;coronal_actor-&gt;SetPosition((depth-1)*voxel_size_z+(width-1)*voxel_size_x+3*interval,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
interval+((height-1)*voxel_size_y-(depth-1)*voxel_size_z)/2);<BR>&nbsp;this-&gt;Renderer-&gt;AddActor(coronal_actor);<BR>}</DIV>
<DIV><BR>void CDeformView::OnSliceAxialup() 
<BR>{<BR>&nbsp;this-&gt;slice_index_z++;<BR>&nbsp;axial-&gt;SetResliceAxesOrigin(0,0,this-&gt;slice_index_z);<BR>&nbsp;this-&gt;InvalidateRect(NULL,FALSE);<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>void CDeformView::OnSliceAxialdown() 
<BR>{<BR>&nbsp;this-&gt;slice_index_z--;<BR>&nbsp;axial-&gt;SetResliceAxesOrigin(0,0,this-&gt;slice_index_z);<BR>&nbsp;this-&gt;InvalidateRect(NULL,FALSE);</DIV>
<DIV>&nbsp;</DIV>
<DIV>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>void CDeformView::OnSliceSagittalup() 
<BR>{<BR>&nbsp;this-&gt;slice_index_x++;<BR>&nbsp;sagittal-&gt;SetResliceAxesOrigin(this-&gt;slice_index_x,0,0);<BR>&nbsp;this-&gt;InvalidateRect(NULL,FALSE);<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>void CDeformView::OnSliceSagittaldown() 
<BR>{<BR>&nbsp;this-&gt;slice_index_x--;<BR>&nbsp;sagittal-&gt;SetResliceAxesOrigin(this-&gt;slice_index_x,0,0);<BR>&nbsp;this-&gt;InvalidateRect(NULL,FALSE);<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>void CDeformView::OnSliceCoronalup() 
<BR>{<BR>&nbsp;this-&gt;slice_index_y++;<BR>&nbsp;coronal-&gt;SetResliceAxesOrigin(0,this-&gt;slice_index_y,0);<BR>&nbsp;this-&gt;InvalidateRect(NULL,FALSE);<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>void CDeformView::OnSliceCoronaldown() 
<BR>{<BR>&nbsp;this-&gt;slice_index_y--;<BR>&nbsp;coronal-&gt;SetResliceAxesOrigin(0,this-&gt;slice_index_y,0);<BR>&nbsp;this-&gt;InvalidateRect(NULL,FALSE);<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>regards,</DIV>
<DIV>zhang zhijun</DIV></FONT></BODY></HTML>