double spacing[3];
spacing[0] = reader->GetOutput()->GetSpacing()[0];
spacing[1] = reader->GetOutput()->GetSpacing()[1];
spacing[2] = reader->GetOutput()->GetSpacing()[2];
int dims[3];
dims[0] = reader->GetOutput()->GetBufferedRegion().GetSize()[0];
dims[1] = reader->GetOutput()->GetBufferedRegion().GetSize()[1];
dims[2] = reader->GetOutput()->GetBufferedRegion().GetSize()[2];
typedef itk::JoinSeriesImageFilter<Image2DType, InputImageType> JoinSeriesFilterType;
JoinSeriesFilterType::Pointer joinFilter = JoinSeriesFilterType::New();
for (int i = 0; i < dims[2]; i++)
{
// 提取
Image2DType::Pointer slice = GetSlice(i, output);
joinFilter->SetInput(i, slice);
}
joinFilter->Update();
以上代码会导致reader->GetOutput()和joinFilter->GetOutput()数据的spacing信息不一致。
JoinSeriesImageFilter会将z轴方向的spacing固定为1。