double GlobalAdaptation::getInitialValue()
{
	unsigned int numberOfParameters;
	if (mode_ == "rotation")
		numberOfParameters = 3;
	else if (mode_ == "rotation+scaling")
		numberOfParameters = 4;
	else if (mode_ == "rotation+translation")
		numberOfParameters = 6;
    else numberOfParameters = 3;

	ParametersType pInit;
	double* init = new double[numberOfParameters];
	for (int i=0; i<numberOfParameters; i++) init[i] = 0.0;
	if (mode_ == "rotation+scaling")
		init[3] = 1.0;
	pInit.SetData(init,numberOfParameters,false);

	SCRegion* region = new SCRegion();
	int *sizeDesired = new int[3];
	double *spacingDesired = new double[3];
	sizeDesired[0] = 61; sizeDesired[1] = 61; sizeDesired[2] = 81;
	spacingDesired[0] = 1; spacingDesired[1] = 1; spacingDesired[2] = 1;
	region->setSize(sizeDesired);
	region->setSpacing(spacingDesired);
	region->setOrigin(pointRotation_[0],pointRotation_[1],pointRotation_[2]);
	region->setNormal(normal_mesh_[0],normal_mesh_[1],normal_mesh_[2]);
	region->setFactor(image_->getTypeImageFactor());
	region->build2DGaussian(5);

	FoncteurGlobalAdaptation* f = new FoncteurGlobalAdaptation(image_,mesh_->getListTrianglesBarycentre(),numberOfParameters);
	f->setGaussianRegion(region);
	return f->GetValue(pInit);
}
mitk::NumericTwoCompartmentExchangeModelParameterizer::ParametersType
mitk::NumericTwoCompartmentExchangeModelParameterizer::GetDefaultInitialParameterization() const
{
  ParametersType initialParameters;
  initialParameters.SetSize(4);
  initialParameters[mitk::NumericTwoCompartmentExchangeModel::POSITION_PARAMETER_PS] = 5.0;
  initialParameters[mitk::NumericTwoCompartmentExchangeModel::POSITION_PARAMETER_F] = 20.0;
  initialParameters[mitk::NumericTwoCompartmentExchangeModel::POSITION_PARAMETER_ve] = 0.1;
  initialParameters[mitk::NumericTwoCompartmentExchangeModel::POSITION_PARAMETER_vp] = 0.04;

  return initialParameters;
};
mitk::NumericTwoTissueCompartmentModelParameterizer::ParametersType
mitk::NumericTwoTissueCompartmentModelParameterizer::GetDefaultInitialParameterization() const
{
  ParametersType initialParameters;
  initialParameters.SetSize(5);
  initialParameters[mitk::NumericTwoTissueCompartmentModel::POSITION_PARAMETER_K1] = 0.23;
  initialParameters[mitk::NumericTwoTissueCompartmentModel::POSITION_PARAMETER_k2] = 0.4;
  initialParameters[mitk::NumericTwoTissueCompartmentModel::POSITION_PARAMETER_k3] = 0.13;
  initialParameters[mitk::NumericTwoTissueCompartmentModel::POSITION_PARAMETER_k4] = 0.15;
  initialParameters[mitk::NumericTwoTissueCompartmentModel::POSITION_PARAMETER_VB] = 0.03;

  return initialParameters;
};
void MutualInformationRegistration::serialize(XmlSerializer& s) const {
    VolumeProcessor::serialize(s);

    ParametersType parameters = transform_->GetParameters();
    ParametersType fixedParameters = transform_->GetFixedParameters();

    std::vector<double> params;
    std::vector<double> fixedParams;

    for(size_t i=0; i<parameters.GetSize(); i++)
        params.push_back(parameters[i]);

    for(size_t i=0; i<fixedParameters.GetSize(); i++)
        fixedParams.push_back(fixedParameters[i]);

    s.serialize("parameters", params);
    s.serialize("fixedParameters", fixedParams);
}
Example #5
0
    void
    copyFromNonVirtual ( const AnyParametersModifierTemplate & copy_from )
    {
      if( copy_from.parameters.debug >= DEBUG_All ) {
        cout << "[debug] GALOSH::ParametersModifierTemplate::copyFromNonVirtual( copy_from )" << endl;
      }
      isModified_copyFromNonVirtual( copy_from );

      parameters.copyFromNonVirtual( copy_from.parameters );
    } // copyFromNonVirtual( AnyParametersModifierTemplate const & )
Example #6
0
    // set up optimization routine
    void PatchTracking::beginTracking() {
        _transform = TransformType::New();

        ParametersType initialParams;
        initialParams.SetSize(_transform->GetNumberOfParameters());
        initialParams.Fill(0);

        _costFunc = CostFunctionType::New();
        _costFunc->SetFixedImage(_patches[0]);
        _costFunc->SetFixedInterpolator(LinearImageInterpolatorType::New());
        _costFunc->SetMovingImage(_images[1]);
        _costFunc->SetMovingInterpolator(LinearImageInterpolatorType::New());
        _costFunc->SetMovingTransform(_transform);
        _costFunc->SetParameters(initialParams);
        setupMetric(_costFunc);
        _costFunc->Initialize();

        OptimizerType::ScalesType scales;
        scales.SetSize(initialParams.Size());
        scales.Fill(1);


        OptimizerProgress<OptimizerType>::Pointer progress = OptimizerProgress<OptimizerType>::New();

        _optimizer = OptimizerType::New();
        _optimizer->SetScales(scales);
        _optimizer->SetScalesEstimator(_estimator);
        _optimizer->SetMetric(_costFunc);
//        _optimizer->AddObserver(itk::IterationEvent(), progress);

        setupOptimizer(_optimizer);
        
        _optimizer->StartOptimization();

        cout << "Iterations: " << _optimizer->GetCurrentIteration() << endl;
        cout << "Stop Reason: " << _optimizer->GetStopConditionDescription() << endl;

        const ParametersType& params = _optimizer->GetCurrentPosition();
        _transform->SetParameters(params);

        resamplePatch();
        transformPatchRegion();
    }
void MutualInformationRegistration::deserialize(XmlDeserializer& s) {
    VolumeProcessor::deserialize(s);

    ParametersType parameters = transform_->GetParameters();
    ParametersType fixedParameters = transform_->GetFixedParameters();

    std::vector<double> params;
    std::vector<double> fixedParams;

    s.deserialize("parameters", params);
    s.deserialize("fixedParameters", fixedParams);

    for(size_t i=0; i<parameters.GetSize(); i++)
        parameters[i] = params[i];

    for(size_t i=0; i<fixedParameters.GetSize(); i++)
        fixedParameters[i] = fixedParams[i];

    transform_->SetParameters(parameters);
    transform_->SetFixedParameters(fixedParameters);
}
Example #8
0
 void reset ()
 {
   isModified_reset();
   parameters.resetToDefaults();
 } // reset()