<!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>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2>I am doing some image processing things.The process is read 
image,select interested region of image,resample the interested region image 
data,then write the data as&nbsp;</FONT><FONT size=3> MetaImage. But I don't 
know how to write the MetaImage header .The program I writed as follows,I can 
view the slice along z axis,but when I use the InsightSNAP to load the writed 
image,the dimensions and spacing are wrong.Help me!</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=2>//</FONT></DIV>
<DIV><FONT size=2>&nbsp;//read&nbsp; 
"E:/cochlea/DICOM/PA1/ST1/SE1"<BR>&nbsp;DicomReader-&gt;SetDirectoryName(filepath);<BR>&nbsp;DicomReader-&gt;SetDataSpacing(0.412109,0.412109,1.250000);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=2>&nbsp;int i,j,k;<BR>&nbsp;&nbsp; //vtkImageExport *exporter = 
vtkImageExport::New();<BR>&nbsp;exporter-&gt;SetInput(DicomReader-&gt;GetOutput());<BR>&nbsp;exporter-&gt;ImageLowerLeftOn();//Lower 
left<BR>&nbsp;&nbsp;// get info from exporter and create array to hold 
data<BR>&nbsp;int memsize = exporter-&gt;GetDataMemorySize();<BR>&nbsp;int 
*dimensions = exporter-&gt;GetDataDimensions();<BR>&nbsp;// export the data into 
the array<BR>&nbsp;short *data = new 
short[memsize/sizeof(short)];<BR>&nbsp;exporter-&gt;Export(data);&nbsp;</FONT></DIV><FONT 
size=2>
<DIV><BR>&nbsp;&nbsp;</FONT><FONT size=2>&nbsp;&nbsp;&nbsp;//&nbsp;interested 
region :&nbsp;310-370,190-250,16-45<BR></FONT><FONT size=2>&nbsp; vtkImageData 
*interestRegion=vtkImageData::New();<BR>&nbsp; 
interestRegion-&gt;SetDimensions(61,61,30);//310-370,190-250,16-45<BR>&nbsp; 
interestRegion-&gt;SetScalarTypeToShort();//<BR>&nbsp; 
interestRegion-&gt;SetNumberOfScalarComponents(1);<BR>&nbsp; 
interestRegion-&gt;AllocateScalars();<BR>&nbsp; 
interestRegion-&gt;SetSpacing(0.412109,0.412109,1.25);<BR>&nbsp; 
interestRegion-&gt;SetOrigin(0.0,0.0,0.0);<BR>&nbsp; 
//310-370,190-250,16-45;61*61*30<BR>&nbsp;short *ptr 
=(short*)interestRegion-&gt;GetScalarPointer();<BR>&nbsp; 
for(i=0;i&lt;30;i++)//z<BR>&nbsp; {<BR>&nbsp;&nbsp; 
for(j=0;j&lt;61;j++)//y<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; 
for(k=0;k&lt;61;k++)//x<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
ptr[k + 61*(j + 61*i)]=data[k+310+dimensions[0]*(j+190 + 
dimensions[1]*(i+16))];<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }<BR>&nbsp; 
}<BR>//sample<BR>&nbsp; imageResample-&gt;SetDimensionality(3);<BR>&nbsp; 
imageResample-&gt;SetInput(interestRegion);<BR>&nbsp; 
imageResample-&gt;SetAxisOutputSpacing(0,0.2);//spacing[3]<BR>&nbsp; 
imageResample-&gt;SetAxisOutputSpacing(1,0.2);<BR>&nbsp; 
imageResample-&gt;SetAxisOutputSpacing(2,0.2);<BR>&nbsp; 
imageResample-&gt;SetInterpolationModeToLinear();<BR>&nbsp; 
imageResample-&gt;SetOutputExtentToDefault();<BR>&nbsp; 
imageResample-&gt;ReleaseDataFlagOff();<BR>&nbsp; <BR>&nbsp; vtkImageExport 
*export = vtkImageExport::New();<BR>&nbsp; 
export-&gt;SetInput(imageResample-&gt;GetOutput());<BR>&nbsp; 
export-&gt;ImageLowerLeftOn();//Lower left<BR>&nbsp;&nbsp;// get info from 
exporter and create array to hold data<BR>&nbsp; int memorysize = 
export-&gt;GetDataMemorySize();<BR>&nbsp; int *Samdimensions = 
export-&gt;GetDataDimensions();<BR>&nbsp; // export the data into the 
array<BR>&nbsp; short *id = new short[memorysize/sizeof(short)];<BR>&nbsp; 
export-&gt;Export(id);&nbsp;<BR>&nbsp; vtkImageImport *import = 
vtkImageImport::New();<BR>&nbsp; 
import-&gt;SetWholeExtent(1,Samdimensions[0],1,Samdimensions[1],1,Samdimensions[2]);<BR>&nbsp; 
import-&gt;SetDataExtentToWholeExtent();<BR>&nbsp; 
import-&gt;SetDataScalarTypeToShort();<BR>&nbsp; 
import-&gt;SetImportVoidPointer(id);<BR>&nbsp;//write to MetaImage <BR>&nbsp; 
metaImageWriter-&gt;SetFileDimensionality(3);<BR>&nbsp;&nbsp;&nbsp;&nbsp;metaImageWriter-&gt;SetInput(import-&gt;GetOutput());<BR>&nbsp; 
&nbsp;metaImageWriter-&gt;SetFileName("Sampledimage.mhd");<BR>&nbsp;&nbsp;metaImageWriter-&gt;Write();&nbsp; 
</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=2>&nbsp; // view Z slice<BR>&nbsp; 
viewer-&gt;SetInput(imageResample-&gt;GetOutput());//interestRegion<BR>&nbsp; 
viewer-&gt;SetZSlice(120);</FONT></DIV>
<DIV><FONT size=2>&nbsp; viewer-&gt;SetColorWindow(2000);</FONT></DIV>
<DIV><FONT size=2>&nbsp; viewer-&gt;SetColorLevel(750);<BR>&nbsp; 
viewer-&gt;Render();&nbsp; </FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>&nbsp; delete [] data;<BR>&nbsp; delete [] id;<BR>&nbsp; 
export-&gt;Delete();<BR>&nbsp; import-&gt;Delete();<BR>&nbsp; </FONT></DIV>
<DIV>&nbsp;</DIV></BODY></HTML>