*/
#include "creaVtkFromVtk4DToItk4D.h"
-#include "itkImage.h"
-#include "itkImageLinearConstIteratorWithIndex.h"
-#include "itkImageRegionConstIterator.h"
+//#include "itkImage.h"
+
+//#include <itkImageRegionConstIteratorWithIndex.h>
+
+
+//#include "itkImageRegionConstIterator.h"
#include "itkImageRegionIterator.h"
-#include "itkImageFileReader.h"
+// #include "itkImageFileReader.h"
#include <vector>
-template <class TImage>
-creaVtkFromVtk4DToItk4D<TImage>::creaVtkFromVtk4DToItk4D()
+//template <class TImage>
+//creaVtkFromVtk4DToItk4D<TImage>::creaVtkFromVtk4DToItk4D()
+creaVtkFromVtk4DToItk4D::creaVtkFromVtk4DToItk4D()
{
}
-template <class TImage>
-creaVtkFromVtk4DToItk4D<TImage>::~creaVtkFromVtk4DToItk4D()
+//EED template <class TImage>
+//EED creaVtkFromVtk4DToItk4D<TImage>::~creaVtkFromVtk4DToItk4D()
+creaVtkFromVtk4DToItk4D::~creaVtkFromVtk4DToItk4D()
{
}
-template <class TImage>
-void creaVtkFromVtk4DToItk4D<TImage>::SetImage4D(TImage *image)
+//EED template <class TImage>
+//EED void creaVtkFromVtk4DToItk4D<TImage>::SetImage4D(TImage *image)
+//EED {
+//EED _image4D = image;
+//EED }
+
+
+Image4DType::Pointer creaVtkFromVtk4DToItk4D::GetResult()
{
- _image4D = image;
+ return _image4D;
}
-template <class TImage>
-void creaVtkFromVtk4DToItk4D<TImage>::SetImage4Dvtk(std::vector<vtkImageData*> image)
+
+//EED template <class TImage>
+//EED void creaVtkFromVtk4DToItk4D<TImage>::SetImage4Dvtk( std::vector<vtkImageData*> image)
+void creaVtkFromVtk4DToItk4D::SetImage4Dvtk( std::vector<vtkImageData*> image)
{
- image4Dvtk = image;
+ _image4Dvtk = image;
}
-template <class TImage>
-std::vector<itk::Image< unsigned char > > creaVtkFromVtk4DToItk4D<TImage>::Process()
+//EED template <class TImage>
+//EED std::vector<itk::Image< unsigned char > > creaVtkFromVtk4DToItk4D<TImage>::Process()
+void creaVtkFromVtk4DToItk4D::Process()
{
/*
int dir;
}
}
*/
- const unsigned int Dimension = 4;
+
+
+/* EED2
+ const unsigned int Dimension = 4;
typedef unsigned char PixelType;
typedef itk::Image< PixelType, Dimension > ImageType;
typedef itk::ImageRegionConstIterator< ImageType > ConstIteratorType;
outputStart[3] = 0;
outputRegion.SetSize( size );
outputRegion.SetIndex( outputStart );
+*/
/*
ReaderType::Pointer reader = ReaderType::New();
<< reader->GetOutput()->GetRequestedRegion() << std::endl;
return -1;
}*/
+
+
+
+/* EED
std::vector<ImageType::Pointer> outputImage4D;
- for(int k = 0 ; k < image4Dvtk.size() ; k++){
+ for(int k = 0 ; k < _image4Dvtk.size() ; k++)
+ {
ImageType::Pointer outputImage = ImageType::New();
outputImage->SetRegions( outputRegion );
- const ImageType::SpacingType& spacing = image4Dvtk[k]->GetSpacing();
- const ImageType::PointType& inputOrigin = image4Dvtk[k]->GetOrigin();
+ const ImageType::SpacingType& spacing = _image4Dvtk[k]->GetSpacing();
+ const ImageType::PointType& inputOrigin = _image4Dvtk[k]->GetOrigin();
double outputOrigin[ Dimension ];
for(unsigned int i=0; i< Dimension; i++)
- {
+ {
outputOrigin[i] = inputOrigin[i] + spacing[i] * inputStart[i];
- }
+ } // for
outputImage->SetSpacing( spacing );
outputImage->SetOrigin( outputOrigin );
outputImage->Allocate();
- ConstIteratorType inputIt( image4Dvtk[k], inputRegion );
+ ConstIteratorType inputIt( _image4Dvtk[k], inputRegion );
IteratorType outputIt( outputImage, outputRegion );
inputIt.GoToBegin();
outputIt.GoToBegin();
while( !outputIt.IsAtEnd() )
- {
+ {
outputIt.Set( inputIt.Get() );
++inputIt;
++outputIt;
- }
- outputImage4D[k]=outputImage;
+ } // while
+//EED outputImage4D[k]=outputImage;
+ } // for k
+//EED return outputImage4D;
+
+*/
+
+
+
+// http://www.itk.org/pipermail/insight-users/2003-December/005796.html
+// http://www.itk.org/Wiki/ITK/Examples/ImageProcessing/InvertIntensityImageFilter
+
+
+ int ext[6];
+ int dimX, dimY, dimZ;
+ long int sizeimage;
+ unsigned int k, i;
+
+ _image4Dvtk[0]->GetWholeExtent(ext);
+ dimX = ext[1]-ext[0]+1;
+ dimY = ext[3]-ext[2]+1;
+ dimZ = ext[5]-ext[4]+1;
+ sizeimage = dimX*dimY*dimZ;
+
+
+
+ typedef itk::ImageRegionIterator< Image4DType > Iterator4D;
+// typedef itk::ImageRegionConstIterator< Image4DType > Iterator4D;
+// typedef itk::ImageRegionConstIteratorWithIndex< Image4DType > Iterator4D;
+
+
+ _image4D = Image4DType::New();
+
+ Image4DType::RegionType region;
+ Image4DType::IndexType start;
+ start[0] = 0;
+ start[1] = 0;
+ start[2] = 0;
+ start[3] = 0;
+
+ Image4DType::SizeType size;
+ unsigned int NumRows = dimX;
+ unsigned int NumCols = dimY;
+ unsigned int NumSlices = dimZ;
+ unsigned int NumVolumes = _image4Dvtk.size();
+ size[0] = NumRows;
+ size[1] = NumCols;
+ size[2] = NumSlices;
+ size[3] = NumVolumes;
+
+ region.SetSize(size);
+ region.SetIndex(start);
+
+ _image4D->SetRegions(region);
+ _image4D->Allocate();
+
+
+// Iterator4D it4( image4D, image4D->GetBufferedRegion() );
+ Iterator4D it4( _image4D, _image4D->GetLargestPossibleRegion() );
+ it4.GoToBegin();
+ for(k = 0 ; k < _image4Dvtk.size() ; k++)
+ {
+ unsigned short * ptrVtkImage;
+ ptrVtkImage = (unsigned short *)_image4Dvtk[k]->GetScalarPointer();
+ for (i=0; i< sizeimage;i++)
+ {
+ it4.Set( *ptrVtkImage );
+// *it4 = *ptrVtkImage;
+// unsigned short q= it4.Get();
+ ++it4;
+ ptrVtkImage++;
+ }
}
- return outputImage4D;
}
//---------------------------------------------
//Method template