]> Creatis software - clitk.git/commitdiff
- add convenient method
authordsarrut <dsarrut>
Mon, 19 Apr 2010 07:13:57 +0000 (07:13 +0000)
committerdsarrut <dsarrut>
Mon, 19 Apr 2010 07:13:57 +0000 (07:13 +0000)
common/clitkImageCommon.h
common/clitkImageCommon.txx

index e320e16cf5128461b7c3526ec248b4aaad6323ba..11bdb8f2efc46a9c807a3942637d84316a4f5b07 100644 (file)
@@ -52,6 +52,11 @@ namespace clitk {
   template<class PixelType>
   typename itk::Image<PixelType,4>::Pointer NewImage4D(int sx, int sy, int sz, int st, double dx=1.0, double dy=1.0, double dz=1.0, double dt=1.0);
 
+  template<class ImageType>
+  typename ImageType::Pointer NewImageLike(const typename ImageType::Pointer input, bool allocate=true);
+
+  template<class ImageType>
+  void CopyValues(const typename ImageType::Pointer input, typename ImageType::Pointer output);
   //--------------------------------------------------------------------
   // New Image creation (with allocation)
 
index b1d11226f71997576ebf8d619a02305787f4dc0b..547c2c7b94d4f67ba5e3b1587a2547768fbf8f4d 100644 (file)
@@ -96,6 +96,39 @@ typename itk::Image<PixelType,4>::Pointer NewImage4D(int sx, int sy, int sz, int
 }
 //--------------------------------------------------------------------
 
+
+//--------------------------------------------------------------------
+template<class ImageType>
+typename ImageType::Pointer NewImageLike(const typename ImageType::Pointer input, bool allocate) {
+  typename ImageType::Pointer output = ImageType::New();
+  output->SetRegions(input->GetLargestPossibleRegion());
+  output->SetOrigin(input->GetOrigin());
+  output->SetSpacing(input->GetSpacing());
+  if (allocate) output->Allocate();
+  return output;
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template<class ImageType>
+void CopyValues(const typename ImageType::Pointer input, 
+                typename ImageType::Pointer output) {  
+  typedef itk::ImageRegionConstIterator<ImageType> ConstIteratorType; 
+  ConstIteratorType pi(input,input->GetLargestPossibleRegion());
+  pi.GoToBegin();  
+  typedef itk::ImageRegionIterator<ImageType> IteratorType; 
+  IteratorType po(output,input->GetLargestPossibleRegion());
+  po.GoToBegin(); 
+  while (!pi.IsAtEnd()) {
+    po.Set(pi.Get());
+    ++pi;
+    ++po;
+  }
+}
+//--------------------------------------------------------------------
+
+
 //--------------------------------------------------------------------
 template<class ImageType>
 typename ImageType::Pointer readImage(const std::string & filename, const bool verbose) {