17 #ifndef __itkMetaImageConverter_txx
18 #define __itkMetaImageConverter_txx
28 template <
unsigned int NDimensions,
class PixelType>
36 template <
unsigned int NDimensions,
class PixelType>
44 typedef typename ImageType::Pointer ImagePointer;
45 typedef typename ImageType::SizeType SizeType;
46 typedef typename ImageType::RegionType RegionType;
48 ImagePointer myImage = ImageType::New();
52 double spacing[NDimensions];
54 for(
unsigned int i=0;i<NDimensions;i++)
56 size[i] = image->DimSize()[i];
57 spacing[i] = image->ElementSpacing()[i];
58 if(spacing[i] == 0) {spacing[i] = 1;}
65 region.SetIndex( zeroIndex );
66 myImage->SetLargestPossibleRegion(region);
67 myImage->SetBufferedRegion(region);
68 myImage->SetRequestedRegion(region);
69 myImage->SetSpacing(spacing);
73 for(
unsigned int i = 0; !it.
IsAtEnd(); i++, ++it)
76 static_cast< typename ImageType::PixelType >( image->ElementData(i) ));
79 spatialObject->SetImage(myImage);
80 spatialObject->SetId(image->ID());
81 spatialObject->SetParentId(image->ParentID());
82 spatialObject->GetProperty()->SetName(image->Name());
88 template <
unsigned int NDimensions,
class PixelType>
96 typedef typename ImageType::Pointer ImagePointer;
97 typedef typename ImageType::SizeType SizeType;
98 typedef typename ImageType::RegionType RegionType;
100 ImagePointer myImage = ImageType::New();
104 double spacing[NDimensions];
106 for(
unsigned int i=0;i<NDimensions;i++)
108 size[i] = image->DimSize()[i];
109 spacing[i] = image->ElementSpacing()[i];
110 if(spacing[i] == 0) {spacing[i] = 1;}
114 region.SetSize(size);
117 region.SetIndex( zeroIndex );
118 myImage->SetLargestPossibleRegion(region);
119 myImage->SetBufferedRegion(region);
120 myImage->SetRequestedRegion(region);
121 myImage->SetSpacing(spacing);
125 for(
unsigned int i = 0; !it.
IsAtEnd(); i++, ++it)
128 static_cast< typename ImageType::PixelType >( image->ElementData(i) ));
131 spatialObject->SetImage(myImage);
132 spatialObject->SetId(image->ID());
133 spatialObject->SetParentId(image->ParentID());
134 spatialObject->GetProperty()->SetName(image->Name());
136 return spatialObject;
140 template <
unsigned int NDimensions,
class PixelType>
146 typedef typename ImageType::ConstPointer ImageConstPointer;
147 typedef typename ImageType::SizeType SizeType;
148 typedef typename ImageType::RegionType RegionType;
150 ImageConstPointer SOImage = spatialObject->
GetImage();
152 float spacing[NDimensions];
153 int size[NDimensions];
155 for(
unsigned int i=0;i<NDimensions;i++)
158 spacing[i] = SOImage->GetSpacing()[i];
161 MetaImage*
Image =
new MetaImage(NDimensions,size,
162 spacing,MET_GetPixelType(
typeid(PixelType)));
165 SOImage->GetLargestPossibleRegion());
166 for(
unsigned int i = 0; !it.IsAtEnd(); i++, ++it)
168 Image->ElementData(i,it.Get());
171 Image->ID(spatialObject->
GetId());
174 Image->ParentID(spatialObject->
GetParent()->GetId());
181 template <
unsigned int NDimensions,
class PixelType>
187 MetaImage*
Image =
new MetaImage();
191 spatialObject = MetaImageToImageSpatialObject(Image);
193 return spatialObject;
198 template <
unsigned int NDimensions,
class PixelType>
203 MetaImage*
Image = ImageSpatialObjectToMetaImage(spatialObject);