class ResampleImageFilter !!!188162.cpp!!! ProcessSwitch() : void bbtk::TypeInfo t = bbGetInputIn().type(); BBTK_TEMPLATE_ITK_IMAGE_SWITCH(t, this->Process); !!!188290.cpp!!! Process() : void bbtkDebugMessageInc("Core",9, "bbitk::ResampleImageFilter::Process<" <()<<">()"< FilterType; typename FilterType::Pointer filter = FilterType::New(); const unsigned int Dimension = ImageType::ImageDimension; // Input T* in = this->bbGetInputIn().get(); filter->SetInput( in ); // Size, Spacing, Origin and DefaultPixelVal typename ImageType::SizeType size; typename ImageType::SpacingType spacing; typename ImageType::PointType origin; typename ImageType::RegionType LPR; LPR = in->GetLargestPossibleRegion(); size = LPR.GetSize(); // origin = LPR.GetIndex(); //in->GetOrigin(); for (unsigned int i=0;iGetSpacing()[i]; spacing[i] = bbGetInputSpacing()[i]; double tmp = (LPR.GetSize()[i]*in->GetSpacing()[i]/spacing[i] ) + 0.5; size[i] = (long)floor(tmp); // size[i] = (long)lrint(LPR.GetSize()[i]*in->GetSpacing()[i]/spacing[i]); } filter->SetOutputOrigin (origin); filter->SetSize (size); filter->SetOutputSpacing( spacing ); filter->SetDefaultPixelValue (0); filter->SetOutputDirection( in->GetDirection() ); // Transform typedef itk::AffineTransform < double, Dimension> TransformType; // Instance of the transform object to be passed to the resample filter // By default, identity transform is applied typename TransformType::Pointer transform = TransformType::New(); filter->SetTransform ( transform ); if ( bbGetInputInterpolation() == "NearestNeighbor" ) { typedef itk::NearestNeighborInterpolateImageFunction < ImageType, double > InterpolatorType; // We create an interpolator of the found type typename InterpolatorType::Pointer interpolator = InterpolatorType::New(); filter->SetInterpolator( interpolator ); } else if ( bbGetInputInterpolation() == "BSpline") { typedef itk::BSplineInterpolateImageFunction < ImageType, double > InterpolatorType; // We create an interpolator of the found type typename InterpolatorType::Pointer interpolator = InterpolatorType::New(); filter->SetInterpolator(interpolator); // When handling unsigned data, it is possible that the interpolated value is negative // if ( (m_InputImage->GetComponentTypeAsString() == "uchar") || // (m_InputImage->GetComponentTypeAsString() == "ushort") || // (m_InputImage->GetComponentTypeAsString() == "uint") ) { // std::cout << "Warning! you're using unsigned data ! The interpolated value may result negative! "<< std::endl; // } } //end else if // Interpolation else { // if ( bbGetInputInterpolation() == "Linear" ) { typedef itk::LinearInterpolateImageFunction < ImageType, double > InterpolatorType; // We create an interpolator of the found type typename InterpolatorType::Pointer interpolator = InterpolatorType::New(); filter->SetInterpolator( interpolator ); } filter->Update(); filter->GetOutput()->Register(); if (mOutput) mOutput->UnRegister(); this->bbSetOutputOut( filter->GetOutput() ); mOutput = filter->GetOutput(); bbtkDebugDecTab("Core",9);