17#ifndef __registration_transform_rigid_h__
18#define __registration_transform_rigid_h__
28 namespace Registration
36 use_convergence_check (
false) { }
38 bool operator() (Eigen::Matrix<default_type, Eigen::Dynamic, 1>& newx,
39 const Eigen::Matrix<default_type, Eigen::Dynamic, 1>& x,
40 const Eigen::Matrix<default_type, Eigen::Dynamic, 1>& g,
43 void set_control_points (
44 const Eigen::Matrix<default_type, Eigen::Dynamic, Eigen::Dynamic>& points,
45 const Eigen::Vector3d& coherence_dist,
46 const Eigen::Vector3d& stop_length,
47 const Eigen::Vector3d& voxel_spacing );
49 void set_convergence_check (
const Eigen::Matrix<default_type, Eigen::Dynamic, 1>& slope_threshold,
55 convergence_check.set_parameters (slope_threshold, alpha, beta, buffer_len, min_iter);
56 use_convergence_check =
true;
57 new_control_points_vec.resize(12);
61 bool use_convergence_check;
62 Eigen::Matrix<default_type, Eigen::Dynamic, Eigen::Dynamic> control_points;
63 Eigen::Vector3d coherence_distance;
64 Eigen::Matrix<default_type, 4, 1> stop_len, recip_spacing;
66 Eigen::Matrix<default_type, Eigen::Dynamic, 1> new_control_points_vec;
71 inline bool operator() (Eigen::Matrix<default_type, Eigen::Dynamic, 1>& newx,
72 const Eigen::Matrix<default_type, Eigen::Dynamic, 1>& x,
73 const Eigen::Matrix<default_type, Eigen::Dynamic, 1>& g,
88 using ParameterType =
typename Base::ParameterType;
91 using has_robust_estimator = int;
96 const Eigen::Vector4d weights (w1, w1, w1, w2);
100 Eigen::Matrix<default_type, 4, 1> get_jacobian_vector_wrt_params (
const Eigen::Vector3d& p)
const ;
102 Eigen::MatrixXd get_jacobian_wrt_params (
const Eigen::Vector3d& p)
const ;
104 void set_parameter_vector (
const Eigen::Matrix<ParameterType, Eigen::Dynamic, 1>& param_vector);
106 void get_parameter_vector (Eigen::Matrix<ParameterType, Eigen::Dynamic, 1>& param_vector)
const;
108 UpdateType* get_gradient_descent_updator () {
112 bool robust_estimate (
113 Eigen::Matrix<default_type, Eigen::Dynamic, 1>& gradient,
114 vector<Eigen::Matrix<default_type, Eigen::Dynamic, 1>>& grad_estimates,
115 const Eigen::Matrix<default_type, 4, 4>& control_points,
116 const Eigen::Matrix<default_type, Eigen::Dynamic, 1>& parameter_vector,
118 const size_t& weiszfeld_iterations,
static float get_float(const std::string &key, float default_value)
double default_type
the default type used throughout MRtrix