std::vector<int> nbImagesPerRow;
std::vector<int> nbImagesInMosaic;
double imagesInMosaic;
-
for(int i = 0; i < NbImagesInMosaicVector.size(); i++)
{
imagesInMosaic = NbImagesInMosaicVector[i];
nbImagesPerRow.push_back( ceil(sqrt(imagesInMosaic)) );
nbImagesInMosaic.push_back(NbImagesInMosaicVector[i]);
- }
-
+ } // for i
if(imageInput.size() != NbImagesInMosaicVector.size())
{
for(int j = NbImagesInMosaicVector.size(); j < imageInput.size(); j++)
imagesInMosaic = NbImagesInMosaicVector[NbImagesInMosaicVector.size()-1];
nbImagesPerRow.push_back( ceil(sqrt(imagesInMosaic)) );
nbImagesInMosaic.push_back( NbImagesInMosaicVector[NbImagesInMosaicVector.size()-1] );
- }
- }
-
+ } // for j
+ } // for imageInput size
if (nbImagesPerRow.size() == 0 || nbImagesInMosaic.size() == 0)
- {
+ {
std::cout << "VtkUnMosaicVectorVtkImageData ERROR: The number of Images by mosaic is not set " << std::endl;
- }
-
+ } // if nbImagesPerRow size
std::vector<vtkImageData*> imageIn = imageInput;
-
std::vector<vtkImageData*> mImageOut;
- for (int i = 0 ; i < (unsigned int)imageIn.size() ; i++) {
- mImageOut.push_back( unMosaic(imageIn[i], nbImagesPerRow[i], nbImagesInMosaic[i]) );
- }
-
+ for (int i = 0 ; i < (unsigned int)imageIn.size() ; i++)
+ {
+ mImageOut.push_back( unMosaic(imageIn[i], nbImagesPerRow[i], nbImagesInMosaic[i]) );
+ } // for i
return mImageOut;
}
+//------------------------------------------------------------------------------
vtkImageData * creaVtkUnMosaicVectorVtkImageData::unMosaic(vtkImageData *imageIn, int nbImagesPerRow, int numberOfImagesInMosaic)
{
- int inputdims[3];
- int outputdims[3];
- imageIn->GetDimensions (inputdims);
- unsigned short *input = (unsigned short *)(imageIn->GetScalarPointer());
-
+ int inputdims[3];
+ int outputdims[3];
+ imageIn->GetDimensions (inputdims);
+ unsigned short *input = (unsigned short *)(imageIn->GetScalarPointer());
//EED 2017-01-01 Migration VTK7
#if VTK_MAJOR_VERSION <= 5
- imageIn->Update();
+ imageIn->Update();
#else
- imageIn->Modified();
-#endif
-
- unsigned int div = (unsigned int)ceil(sqrt( (double)numberOfImagesInMosaic ) );
- outputdims[0] = inputdims[0] / div;
- outputdims[1] = inputdims[1] / div;
- outputdims[2] = numberOfImagesInMosaic;
+ // ..
+#endif
+ unsigned int div = (unsigned int)ceil(sqrt( (double)numberOfImagesInMosaic ) );
+ outputdims[0] = inputdims[0] / div;
+ outputdims[1] = inputdims[1] / div;
+ outputdims[2] = numberOfImagesInMosaic;
vtkImageData *vtkImageOut;
vtkImageOut = vtkImageData::New();
#else
vtkImageOut->AllocateScalars(VTK_UNSIGNED_SHORT,1);
#endif
-
-
unsigned short *output =(unsigned short *)(vtkImageOut->GetScalarPointer());
-
unsigned short *dest = output;
int dimXImageElem = outputdims[0];
int dimYImageElem = outputdims[1];
memcpy(dest, input+debImage, dimXImageElem*sizeof(unsigned short));
debImage += dimXImageElem*nbImagesPerRow;
dest += dimXImageElem;
- }
- }
+ } // for j
+ } // for i
return vtkImageOut;
}
-//---------------------------------------------
-//Method template
-//---------------------------------------------
-/*
-void creaVtkUnMosaicVectorVtkImageData::FunctionName(int& parameterA)
-{
- parameterA = 2 * parameterA;
- return;
-}
-*/