17#ifndef __registration_transform_affine_h__
18#define __registration_transform_affine_h__
29 namespace Registration
39 bool operator() (Eigen::Matrix<default_type, Eigen::Dynamic, 1>& newx,
40 const Eigen::Matrix<default_type, Eigen::Dynamic, 1>& x,
41 const Eigen::Matrix<default_type, Eigen::Dynamic, 1>& g,
44 void set_control_points (
45 const Eigen::Matrix<default_type, Eigen::Dynamic, Eigen::Dynamic>& points,
46 const Eigen::Vector3d& coherence_dist,
47 const Eigen::Vector3d& stop_length,
48 const Eigen::Vector3d& voxel_spacing );
51 INFO (
"projection type set to: " +
str(type));
52 projection_type = type;
55 void set_convergence_check (
const Eigen::Matrix<default_type, Eigen::Dynamic, 1>& slope_threshold,
60 convergence_check.set_parameters (slope_threshold, alpha, beta, buffer_len, min_iter);
61 use_convergence_check =
true;
62 new_control_points_vec.resize(12);
66 bool use_convergence_check;
68 Eigen::Matrix<default_type, Eigen::Dynamic, Eigen::Dynamic> control_points;
69 Eigen::Vector3d coherence_distance;
70 Eigen::Matrix<default_type, 4, 1> stop_len, recip_spacing;
72 Eigen::Matrix<default_type, Eigen::Dynamic, 1> new_control_points_vec;
77 inline bool operator() (Eigen::Matrix<default_type, Eigen::Dynamic, 1>& newx,
78 const Eigen::Matrix<default_type, Eigen::Dynamic, 1>& x,
79 const Eigen::Matrix<default_type, Eigen::Dynamic, 1>& g,
94 using ParameterType =
typename Base::ParameterType;
97 using has_robust_estimator = int;
109 const Eigen::Vector4d weights (w1, w1, w1, w2);
113 Eigen::Matrix<default_type, 4, 1> get_jacobian_vector_wrt_params (
const Eigen::Vector3d& p)
const ;
115 Eigen::MatrixXd get_jacobian_wrt_params (
const Eigen::Vector3d& p)
const ;
117 void set_parameter_vector (
const Eigen::Matrix<ParameterType, Eigen::Dynamic, 1>& param_vector);
119 void get_parameter_vector (Eigen::Matrix<ParameterType, Eigen::Dynamic, 1>& param_vector)
const;
121 UpdateType* get_gradient_descent_updator () {
125 bool robust_estimate (
126 Eigen::Matrix<default_type, Eigen::Dynamic, 1>& gradient,
127 vector<Eigen::Matrix<default_type, Eigen::Dynamic, 1>>& grad_estimates,
128 const Eigen::Matrix<default_type, 4, 4>& control_points,
129 const Eigen::Matrix<default_type, Eigen::Dynamic, 1>& parameter_vector,
131 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
std::string str(const T &value, int precision=0)