First attempt resampler

This commit is contained in:
Proton local user
2023-06-12 15:00:09 +02:00
parent ad7f0986f7
commit bbb1c5c428

View File

@ -508,11 +508,64 @@ int itkImageProcessor::load3DSerieFromFiles( std::vector<std::string> v_fnames){
return -1;
}
////////////////////////*****************//////////////////////////
// here is where voume should be resampled IMO
typedef itk::LinearInterpolateImageFunction<ImageType3D, double>
LinearInterpolatorType;
typedef itk::ResampleImageFilter<ImageType3D, ImageType3D>
ResampleFilterType;
// 2) Resample the series
typename LinearInterpolatorType::Pointer linearInterpolator = LinearInterpolatorType::New();
// Set identity transform
typename TransformType::Pointer transform = TransformType::New();
transform->SetIdentity();
const typename ImageType3D::SpacingType& inputSpacing =
imageSeriesReader3D->GetOutput()->GetSpacing();
const typename ImageType3D::RegionType& inputRegion =
imageSeriesReader3D->GetOutput()->GetLargestPossibleRegion();
const typename ImageType3D::SizeType& inputSize =
inputRegion.GetSize();
typename ImageType3D::SpacingType outputSpacing;
outputSpacing[0] = inputSpacing[0];
outputSpacing[1] = inputSpacing[1];
outputSpacing[2] = inputSpacing[2]/2;
typename ImageType3D::SizeType outputSize;
typedef typename ImageType3D::SizeType::SizeValueType SizeValueType;
outputSize[0] = static_cast<SizeValueType>(inputSize[0] * inputSpacing[0] / outputSpacing[0] + .5);
outputSize[1] = static_cast<SizeValueType>(inputSize[1] * inputSpacing[1] / outputSpacing[1] + .5);
outputSize[2] = static_cast<SizeValueType>(inputSize[2] * inputSpacing[2] / outputSpacing[2] + .5);
typename ResampleFilterType::Pointer resampler = ResampleFilterType::New();
resampler->SetInput( imageSeriesReader3D->GetOutput() );
resampler->SetTransform( transform );
resampler->SetInterpolator( linearInterpolator );
resampler->SetOutputOrigin( imageSeriesReader3D->GetOutput()->GetOrigin() );
resampler->SetOutputSpacing( outputSpacing );
resampler->SetOutputDirection( imageSeriesReader3D->GetOutput()->GetDirection() );
resampler->SetSize( outputSize );
resampler->Update();
////////////////////////*****************//////////////////////////
CastFilterType3D::Pointer caster3D =
CastFilterType3D::New();
caster3D->SetInput(imageSeriesReader3D->GetOutput());
caster3D->SetInput(resampler->GetOutput());
caster3D->Update();
if (m_VolumeSourceDupli == NULL)