<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.3020" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial size=2>Hello All,</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>I have just started learning VTK recently. My 
purpose at this moment is to link VTK to ITK and vice versa in order to read vtk 
data (structured points) by VTK, process the data by ITK, then display the 
processed data by VTK. I am writing a simple code like attached below. It can be 
compiled and built without problem, but a vtkOutputWindow comes up when running 
to show an error message saying <BR>"vtkImageData(017D9B40): GetPointer: 
Pixel(0, 0, 0) not in current extent...".<BR>But data extent is already set 
according to whole exetent. I checked in debug mode that WholeExtent is set to 
(0, 127, 0, 127, 0, 114) and DataExtent is the same.<SPAN 
class=565013721-06022007> </SPAN>I have totally no idea to solve this 
problem.</FONT></DIV>
<DIV><FONT face=Arial size=2>My environment is: WinXP, MS VisualStudio.net 2003, 
VTK5.0.2, ITK 3.0.0</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Any help will be greatly appreciated.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Best Regards,<BR>Kaz</FONT></DIV>
<DIV>&nbsp;</DIV><FONT face=Arial size=2>
<DIV><BR>---<BR>&nbsp;vtkStructuredPointsReader *readerVTK = 
vtkStructuredPointsReader::New();<BR>&nbsp;vtkContourFilter 
*contourFilterVTK&nbsp; = vtkContourFilter::New();<BR>&nbsp;vtkPolyDataMapper 
*mapperPolyDataVTK =vtkPolyDataMapper::New();<BR>&nbsp;vtkActor *actorVTK = 
vtkActor::New();<BR>&nbsp;vtkImageImport *importerVTK = 
vtkImageImport::New();<BR>&nbsp;vtkImageExport *exporterVTK&nbsp; = 
vtkImageExport::New();<BR>&nbsp;vtkRenderer *rendererVTK = 
vtkRenderer::New();<BR>&nbsp;vtkRenderWindow *renWinVTK = 
vtkRenderWindow::New();</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;typedef itk::Image&lt;short, 3&gt; ImageType3D;<BR>&nbsp;typedef 
itk::VTKImageImport&lt;ImageType3D&gt; 
itkImageImportType3D;<BR>&nbsp;itkImageImportType3D::Pointer 
importer3DITK;<BR>&nbsp;typedef itk::VTKImageExport&lt;ImageType3D&gt; 
itkImageExportType3D;<BR>&nbsp;itkImageExportType3D::Pointer 
exporter3DITK;<BR>&nbsp;typedef itk::BinaryThresholdImageFilter&lt;ImageType3D, 
ImageType3D&gt; 
itkBinThresholdFilterType;<BR>&nbsp;itkBinThresholdFilterType::Pointer&nbsp;binThresholdFilterITK;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;importer3DITK&nbsp;&nbsp;&nbsp;= 
itkImageImportType3D::New();<BR>&nbsp;exporter3DITK&nbsp;&nbsp;&nbsp;= 
itkImageExportType3D::New();<BR>&nbsp;binThresholdFilterITK&nbsp;= 
itkBinThresholdFilterType::New();<BR>&nbsp; <BR>&nbsp;// read the 
data<BR>&nbsp;readerVTK-&gt;SetFileName("CT.vtk");<BR>&nbsp;readerVTK-&gt;Update();<BR>&nbsp;<BR>&nbsp;// 
set to exporter of VTK<BR>&nbsp;exporterVTK-&gt;SetInputConnection( 
readerVTK-&gt;GetOutputPort() );<BR>&nbsp;// send to 
ITK<BR>&nbsp;connectVTK2ITK( exporterVTK, importer3DITK );</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;// image processing by 
ITK<BR>&nbsp;binThresholdFilterITK-&gt;SetInput( importer3DITK-&gt;GetOutput() 
);<BR>&nbsp;binThresholdFilterITK-&gt;SetOutsideValue( 0 
);<BR>&nbsp;binThresholdFilterITK-&gt;SetInsideValue( 255 
);<BR>&nbsp;binThresholdFilterITK-&gt;SetLowerThreshold( 100 
);<BR>&nbsp;binThresholdFilterITK-&gt;SetUpperThreshold( 200 );</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;// set to exporter of ITK<BR>&nbsp;exporter3DITK-&gt;SetInput( 
binThresholdFilterITK-&gt;GetOutput() );<BR>&nbsp;// send back to 
VTK<BR>&nbsp;connectITK2VTK( exporter3DITK, importerVTK );<BR>&nbsp;<BR>&nbsp;// 
processes on imported 
data<BR>&nbsp;importerVTK-&gt;Update();<BR>&nbsp;importerVTK-&gt;SetDataExtentToWholeExtent();<BR>&nbsp;importerVTK-&gt;SetDataOrigin(0, 
0, 0);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;// make surface<BR>&nbsp;contourFilterVTK-&gt;SetInput( 
importerVTK-&gt;GetOutput() );<BR>&nbsp;contourFilterVTK-&gt;SetValue(0, 
400);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;// display<BR>&nbsp;mapperPolyDataVTK-&gt;SetInput( 
contourFilterVTK-&gt;GetOutput() 
);<BR>&nbsp;mapperPolyDataVTK-&gt;ScalarVisibilityOff();<BR>&nbsp;actorVTK-&gt;SetMapper( 
mapperPolyDataVTK 
);<BR>&nbsp;actorVTK-&gt;GetProperty()-&gt;SetOpacity(1.0);<BR>&nbsp;actorVTK-&gt;GetProperty()-&gt;SetDiffuseColor( 
1, 1, 1 );<BR>&nbsp;rendererVTK-&gt;AddActor( actorVTK 
);<BR>&nbsp;renWinVTK-&gt;AddRenderer( rendererVTK 
);<BR>&nbsp;renWinVTK-&gt;Render();<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>void sampleApp2::connectVTK2ITK(vtkImageExport *exporter, 
itkImageImportType3D 
*importer)<BR>{<BR>&nbsp;importer-&gt;SetUpdateInformationCallback&nbsp;&nbsp;(exporter-&gt;GetUpdateInformationCallback());<BR>&nbsp;importer-&gt;SetPipelineModifiedCallback&nbsp;&nbsp;(exporter-&gt;GetPipelineModifiedCallback());<BR>&nbsp;importer-&gt;SetWholeExtentCallback&nbsp;&nbsp;&nbsp;(exporter-&gt;GetWholeExtentCallback());<BR>&nbsp;importer-&gt;SetSpacingCallback&nbsp;&nbsp;&nbsp;&nbsp;(exporter-&gt;GetSpacingCallback());<BR>&nbsp;importer-&gt;SetOriginCallback&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(exporter-&gt;GetOriginCallback());<BR>&nbsp;importer-&gt;SetScalarTypeCallback&nbsp;&nbsp;&nbsp;&nbsp;(exporter-&gt;GetScalarTypeCallback());<BR>&nbsp;importer-&gt;SetNumberOfComponentsCallback&nbsp;&nbsp;(exporter-&gt;GetNumberOfComponentsCallback());<BR>&nbsp;importer-&gt;SetPropagateUpdateExtentCallback&nbsp;(exporter-&gt;GetPropagateUpdateExtentCallback());<BR>&nbsp;importer-&gt;SetUpdateDataCallback&nbsp;&nbsp;&nbsp;&nbsp;(exporter-&gt;GetUpdateDataCallback());<BR>&nbsp;importer-&gt;SetDataExtentCallback&nbsp;&nbsp;&nbsp;&nbsp;(exporter-&gt;GetDataExtentCallback());<BR>&nbsp;importer-&gt;SetBufferPointerCallback&nbsp;&nbsp;&nbsp;(exporter-&gt;GetBufferPointerCallback());<BR>&nbsp;importer-&gt;SetCallbackUserData&nbsp;&nbsp;&nbsp;&nbsp;(exporter-&gt;GetCallbackUserData());<BR>&nbsp;return;<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>void sampleApp2::connectITK2VTK(itkImageExportType3D *exporter, 
vtkImageImport 
*importer)<BR>{<BR>&nbsp;importer-&gt;SetUpdateInformationCallback&nbsp;&nbsp;(exporter-&gt;GetUpdateInformationCallback());<BR>&nbsp;importer-&gt;SetPipelineModifiedCallback&nbsp;&nbsp;(exporter-&gt;GetPipelineModifiedCallback());<BR>&nbsp;importer-&gt;SetWholeExtentCallback&nbsp;&nbsp;&nbsp;(exporter-&gt;GetWholeExtentCallback());<BR>&nbsp;importer-&gt;SetSpacingCallback&nbsp;&nbsp;&nbsp;&nbsp;(exporter-&gt;GetSpacingCallback());<BR>&nbsp;importer-&gt;SetOriginCallback&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(exporter-&gt;GetOriginCallback());<BR>&nbsp;importer-&gt;SetScalarTypeCallback&nbsp;&nbsp;&nbsp;&nbsp;(exporter-&gt;GetScalarTypeCallback());<BR>&nbsp;importer-&gt;SetNumberOfComponentsCallback&nbsp;&nbsp;(exporter-&gt;GetNumberOfComponentsCallback());<BR>&nbsp;importer-&gt;SetPropagateUpdateExtentCallback&nbsp;(exporter-&gt;GetPropagateUpdateExtentCallback());<BR>&nbsp;importer-&gt;SetUpdateDataCallback&nbsp;&nbsp;&nbsp;&nbsp;(exporter-&gt;GetUpdateDataCallback());<BR>&nbsp;importer-&gt;SetDataExtentCallback&nbsp;&nbsp;&nbsp;&nbsp;(exporter-&gt;GetDataExtentCallback());<BR>&nbsp;importer-&gt;SetBufferPointerCallback&nbsp;&nbsp;&nbsp;(exporter-&gt;GetBufferPointerCallback());<BR>&nbsp;importer-&gt;SetCallbackUserData&nbsp;&nbsp;&nbsp;&nbsp;(exporter-&gt;GetCallbackUserData());<BR>&nbsp;return;<BR>}</FONT></DIV></BODY></HTML>