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); }
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 & )
// 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); }
void reset () { isModified_reset(); parameters.resetToDefaults(); } // reset()