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