我正在尝试使用归一化互信息的度量来对 3D MR 图像进行刚性配准。这是我的代码的一部分:
#include “itkImageRegistrationMethodv4.h”
#include “itkVersorRigid3DTransform.h”
#include “itkCenteredTransformInitializer.h”
#include “itkNormalizedMutualInformationHistogramImageToImageMetric.h”
#include “itkRegularStepGradientDescentOptimizerv4.h”
#include “itkImageFileReader.h”
#include “itkImageFileWriter.h”
#include “itkResampleImageFilter.h”
#include “itkCastImageFilter.h”
int main(int argc, const char *argv[])
{
// parsing parameters …
using TransformType = itk::VersorRigid3DTransform;
using RegistrationType =
itk::ImageRegistrationMethodv4<FixedImageType, MovingImageType, TransformType>;
RegistrationType::Pointer registration = RegistrationType::New();
using MetricType = itk::NormalizedMutualInformationHistogramImageToImageMetric<FixedImageType, MovingImageType>;
MetricType::Pointer metric = MetricType::New();
registration->SetMetric(metric);
//…
}
我收到以下错误:
error: no viable conversion from ‘MetricType::Pointer’ (aka
‘SmartPointer<itk::NormalizedMutualInformationHistogramImageToImageMetric<itk::Image<double, 3>, itk::Image<double, 3> > >’) to
‘itk::ImageRegistrationMethodv4<itk::Image<double, 3>, itk::Image<double, 3>, itk::VersorRigid3DTransform, itk::Image<double, 3>, itk::PointSet<unsigned
int, 3, itk::DefaultStaticMeshTraits<unsigned int, 3, 3, float, float, unsigned int> > >::MetricType *’ (aka ‘ObjectToObjectMetricBaseTemplate *’)
registration->SetMetric(metric);
^~~~~~
我正在使用 ITK5.0.1。有谁知道这里发生了什么?任何意见?谢谢你。