00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __freImageTypes_txx
00023 #define __freImageTypes_txx
00024
00025 #include "freImageTypes.h"
00026
00027 #include "itkImageRegionIterator.h"
00028
00029 namespace FREE
00030 {
00031
00032 template < class TImageType >
00033 typename DefaultImages<TImageType>::ImagePointer
00034 DefaultImages<TImageType>::
00035 CreateGridImage(const RegionType& imageRegion, const SpacingType& imageSpacing, const PixelType& gridValue, const PixelType& backValue, const unsigned int& iGridSize)
00036 {
00037 typedef itk::ImageRegionIterator< ImageType > IteratorType;
00038 ImagePointer gridImage = ImageType::New();
00039
00040
00041 gridImage->SetRegions(imageRegion);
00042 gridImage->SetSpacing(imageSpacing);
00043 gridImage->Allocate();
00044 gridImage->FillBuffer(backValue);
00045
00046 IteratorType iterator(gridImage,gridImage->GetLargestPossibleRegion());
00047 for (iterator.GoToBegin(); !(iterator.IsAtEnd()); ++iterator)
00048 {
00049 unsigned int iDimInGrid = 0;
00050 typename ImageType::IndexType index = iterator.GetIndex();
00051
00052 for (int iIndex=0; iIndex<gridImage->GetImageDimension(); iIndex++)
00053 {
00054 if (index[iIndex]%iGridSize==0) iDimInGrid++;
00055 };
00056
00057 if (iDimInGrid>=(gridImage->GetImageDimension()-1)) iterator.Set(gridValue);
00058
00059 };
00060 return gridImage;
00061 }
00062
00063 }
00064
00065 #endif