<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1400" name=GENERATOR></HEAD>
<BODY>
<DIV>Hi Jens,</DIV>
<DIV>&nbsp;</DIV>
<DIV>As far as I know, there is not a conveniet way to do so, correct me if I am 
wrong.</DIV>
<DIV>However, 'coz ITK support many formats 3D images, I use ITK to read the 
images at first, then convert them to vtkImageData. The code is enclosed.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Please note, what u need to do is adding headers for the *.img (the raw 
data). the&nbsp;headers supported by ITK are *.mha and *.hdr.</DIV>
<DIV>The former u can find details from ITK's documents. but it is fairly 
simple, something like that:</DIV>
<DIV>NDims = 3 <BR>DimSize = 256 256 63 <BR>ElementType = MET_UCHAR 
<BR>ElementSpacing = 1.0 1.0 1.0<BR>ElementByteOrderMSB = 
False<BR>ElementDataFile = 1.img</DIV>
<DIV>&nbsp;</DIV>
<DIV>u can&nbsp;make the *.hdr using MRIcro, u may download it from <A 
href="http://www.mricro.com">www.mricro.com</A>.</DIV>
<DIV>&nbsp;</DIV>
<DIV>The former is simpler, but I recommand the later header, it is 
more&nbsp;convenient to use.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Good luck!</DIV>
<DIV>&nbsp;</DIV>
<DIV>Kurt Zhao</DIV>
<DIV>&nbsp;</DIV>
<DIV>bool MyImage::ImgReader(vtkImageData * vtkImage, const char * 
ImgFileName)<BR>{<BR>&nbsp;typedef unsigned short SegPixelType;<BR>&nbsp;typedef 
itk::Image&lt; SegPixelType, Dimension &gt;&nbsp;&nbsp; ImageType;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;typedef itk::ImageFileReader&lt; ImageType &gt;&nbsp; 
ImageReaderType;<BR>&nbsp;<BR>&nbsp;ImageReaderType::Pointer&nbsp;&nbsp;&nbsp; 
ImageReader&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp; 
ImageReaderType::New();<BR>&nbsp;ImageReader-&gt;SetFileName(&nbsp; ImgFileName 
);<BR>&nbsp;std::cout&lt;&lt; "Reading the image "&lt;&lt; 
ImageReader-&gt;GetFileName()&lt;&lt;"......"&lt;&lt;std::endl; 
<BR>&nbsp;<BR>&nbsp;try <BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
ImageReader-&gt;Update();<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;catch( 
itk::ExceptionObject &amp; excep )<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; 
std::cerr &lt;&lt; "Exception Caught !" &lt;&lt; 
std::endl;<BR>&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; excep &lt;&lt; 
std::endl;<BR>&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;ImageReader-&gt;GetOutput()-&gt;ReleaseDataFlagOn();<BR>&nbsp;ImageType 
*itkImg=ImageReader-&gt;GetOutput();<BR>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;typedef itk::VTKImageExport&lt;ImageType&gt; 
ImageExportType;<BR>&nbsp;ImageExportType::Pointer itkExporter = 
ImageExportType::New();<BR>&nbsp;itkExporter-&gt;SetInput(itkImg);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;<BR>&nbsp;vtkImageImport* vtkImporter = vtkImageImport::New();&nbsp; 
<BR>&nbsp;&nbsp;&nbsp; ConnectPipelines(itkExporter, 
vtkImporter);<BR>&nbsp;vtkImporter-&gt;Update();<BR>&nbsp;vtkImageData 
*tImage=vtkImporter-&gt;GetOutput();<BR>&nbsp;vtkImage-&gt;DeepCopy(tImage);<BR>&nbsp;vtkImage-&gt;SetSpacing(1,1,1);<BR>//&nbsp;vtkImage-&gt;Print(std::cout);<BR>&nbsp;vtkImporter-&gt;Delete();<BR>&nbsp;return 
false;<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>template &lt;typename ITK_Exporter, typename VTK_Importer&gt; <BR>void 
ConnectPipelines(ITK_Exporter exporter, VTK_Importer* importer)<BR>{<BR>&nbsp;// 
importer-&gt;SetUpdateInformationCallback(exporter-&gt;GetUpdateInformationCallback());<BR>&nbsp;// 
importer-&gt;SetPipelineModifiedCallback(exporter-&gt;GetPipelineModifiedCallback());<BR>&nbsp;importer-&gt;SetWholeExtentCallback(exporter-&gt;GetWholeExtentCallback());<BR>&nbsp; 
importer-&gt;SetSpacingCallback(exporter-&gt;GetSpacingCallback());<BR>&nbsp; 
importer-&gt;SetOriginCallback(exporter-&gt;GetOriginCallback());<BR>&nbsp; 
importer-&gt;SetScalarTypeCallback(exporter-&gt;GetScalarTypeCallback());<BR>&nbsp; 
importer-&gt;SetNumberOfComponentsCallback(exporter-&gt;GetNumberOfComponentsCallback());<BR>&nbsp; 
importer-&gt;SetPropagateUpdateExtentCallback(exporter-&gt;GetPropagateUpdateExtentCallback());<BR>&nbsp; 
importer-&gt;SetUpdateDataCallback(exporter-&gt;GetUpdateDataCallback());<BR>&nbsp; 
importer-&gt;SetDataExtentCallback(exporter-&gt;GetDataExtentCallback());<BR>&nbsp; 
importer-&gt;SetBufferPointerCallback(exporter-&gt;GetBufferPointerCallback());<BR>&nbsp; 
importer-&gt;SetCallbackUserData(exporter-&gt;GetCallbackUserData());<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>
<HR>
</DIV>
<DIV>Send&nbsp;vtkusers&nbsp;mailing&nbsp;list&nbsp;submissions&nbsp;to</DIV>
<DIV>vtkusers@vtk.org</DIV>
<DIV>&nbsp;</DIV>
<DIV>To&nbsp;subscribe&nbsp;or&nbsp;unsubscribe&nbsp;via&nbsp;the&nbsp;World&nbsp;Wide&nbsp;Web,&nbsp;visit</DIV>
<DIV>http://www.vtk.org/mailman/listinfo/vtkusers</DIV>
<DIV>or,&nbsp;via&nbsp;email,&nbsp;send&nbsp;a&nbsp;message&nbsp;with&nbsp;subject&nbsp;or&nbsp;body&nbsp;'help'&nbsp;to</DIV>
<DIV>vtkusers-request@vtk.org</DIV>
<DIV>&nbsp;</DIV>
<DIV>You&nbsp;can&nbsp;reach&nbsp;the&nbsp;person&nbsp;managing&nbsp;the&nbsp;list&nbsp;at</DIV>
<DIV>vtkusers-owner@vtk.org</DIV>
<DIV>&nbsp;</DIV>
<DIV>When&nbsp;replying,&nbsp;please&nbsp;edit&nbsp;your&nbsp;Subject&nbsp;line&nbsp;so&nbsp;it&nbsp;is&nbsp;more&nbsp;specific</DIV>
<DIV>than&nbsp;"Re:&nbsp;Contents&nbsp;of&nbsp;vtkusers&nbsp;digest..."</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>Today's&nbsp;Topics:</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;1.&nbsp;reading&nbsp;row&nbsp;3D&nbsp;voxel&nbsp;data&nbsp;(Jens&nbsp;Frederich)</DIV>
<DIV>&nbsp;&nbsp;&nbsp;2.&nbsp;reading&nbsp;row&nbsp;3D&nbsp;voxel&nbsp;data&nbsp;(Jens&nbsp;Frederich)</DIV>
<DIV>&nbsp;&nbsp;&nbsp;3.&nbsp;reading&nbsp;row&nbsp;3D&nbsp;voxel&nbsp;data&nbsp;(Jens&nbsp;Frederich)</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>----------------------------------------------------------------------</DIV>
<DIV>&nbsp;</DIV>
<DIV>Message:&nbsp;1</DIV>
<DIV>Date:&nbsp;Wed,&nbsp;7&nbsp;Jan&nbsp;2004&nbsp;20:27:09&nbsp;+0100</DIV>
<DIV>From:&nbsp;Jens&nbsp;Frederich&nbsp;&lt; jfrederich@mac.com&gt; </DIV>
<DIV>Subject:&nbsp;[vtkusers]&nbsp;reading&nbsp;row&nbsp;3D&nbsp;voxel&nbsp;data</DIV>
<DIV>To:&nbsp;vtk&nbsp;&lt; vtkusers@vtk.org&gt; </DIV>
<DIV>Message-ID:&nbsp;&lt; 7C576394-4147-11D8-A56E-000A95A0B65C@mac.com&gt; 
</DIV>
<DIV>Content-Type:&nbsp;text/plain;&nbsp;charset=US-ASCII;&nbsp;format=flowed</DIV>
<DIV>&nbsp;</DIV>
<DIV>Hi&nbsp;all,</DIV>
<DIV>&nbsp;</DIV>
<DIV>what&nbsp;is&nbsp;the&nbsp;best&nbsp;class&nbsp;(way)&nbsp;for&nbsp;reading&nbsp;3D&nbsp;binary&nbsp;row&nbsp;voxel&nbsp;data.&nbsp;The&nbsp;</DIV>
<DIV>data&nbsp;is&nbsp;saved&nbsp;in&nbsp;one&nbsp;file,&nbsp;not&nbsp;many&nbsp;2D&nbsp;images.&nbsp;I&nbsp;would&nbsp;do&nbsp;volume&nbsp;</DIV>
<DIV>rendering,&nbsp;isosurface,&nbsp;contour&nbsp;etc&nbsp;with&nbsp;this&nbsp;data.</DIV>
<DIV>With&nbsp;the&nbsp;volume&nbsp;rendering&nbsp;library&nbsp;vgl&nbsp;</DIV>
<DIV>(http://www.volumegraphics.com/products/vgl/index.html)&nbsp;is&nbsp;this&nbsp;very&nbsp;</DIV>
<DIV>simple.&nbsp;Here&nbsp;a&nbsp;code&nbsp;sample:</DIV>
<DIV>&nbsp;</DIV>
<DIV>VGLSampleGridData*&nbsp;volumeData&nbsp;=&nbsp;new&nbsp;VGLSampleGridData&nbsp;(VGL_TYPE_UINT16);</DIV>
<DIV>&nbsp;&nbsp;//&nbsp;load&nbsp;voxel&nbsp;data:</DIV>
<DIV>&nbsp;&nbsp;&nbsp;VGLSampleGridIO*&nbsp;importPlugIn&nbsp;=&nbsp;VGLSampleGridIO::create&nbsp;("raw");</DIV>
<DIV>&nbsp;&nbsp;&nbsp;importPlugIn-&gt; setHeaderSkip&nbsp;(40);</DIV>
<DIV>&nbsp;&nbsp;&nbsp;imortPlugIn-&gt; 
setSampleGridSize&nbsp;(VGLSampleGridSize&nbsp;(42,42,42));</DIV>
<DIV>&nbsp;&nbsp;&nbsp;importPlugIn-&gt; 
setSampleGridSize&nbsp;(VGLSampleGridSize&nbsp;(250,250,1));</DIV>
<DIV>&nbsp;&nbsp;&nbsp;importPlugIn-&gt; 
setSampleDataType&nbsp;(VGL_TYPE_UINT16);</DIV>
<DIV>&nbsp;&nbsp;&nbsp;importPlugIn-&gt; 
open&nbsp;("../data/simdata4.vol");</DIV>
<DIV>&nbsp;&nbsp;&nbsp;importPlugIn-&gt; read&nbsp;(volumeData);</DIV>
<DIV>&nbsp;&nbsp;&nbsp;importPlugIn-&gt; close&nbsp;();</DIV>
<DIV>&nbsp;&nbsp;&nbsp;delete&nbsp;importPlugIn;</DIV>
<DIV>&nbsp;</DIV>
<DIV>It's&nbsp;very&nbsp;easy.&nbsp;But&nbsp;I&nbsp;search&nbsp;the&nbsp;same&nbsp;on&nbsp;vtk&nbsp;please.</DIV>
<DIV>Thanks&nbsp;for&nbsp;help.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Best&nbsp;regards,</DIV>
<DIV>Jens</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></BODY></HTML>