8 namespace ModelFitting {
10 template<
typename ImageType>
23 template<
typename ImageType>
41 return scale * rotation * m_inv_jacobian *
pixel_scale;
44 template<
typename ImageType>
45 template<
typename ModelEvaluator>
49 float x_model = (x - 0.5 + (ix+1) * 1.0 / (subsampling+1));
51 float y_model = (y - 0.5 + (iy+1) * 1.0 / (subsampling+1));
52 acc += model_eval.evaluateModel(x_model, y_model);
56 return acc / (subsampling*subsampling);
59 template<
typename ImageType>
60 template<
typename ModelEvaluator>
62 float value = samplePixel(model_eval, x,y, 1);
63 for (
unsigned int i=2; i<=max_subsampling; i+=2) {
64 float newValue = samplePixel(model_eval, x,y, i);
65 float ratio = newValue / value;
float samplePixel(const ModelEvaluator &model_eval, int x, int y, unsigned int subsampling) const
Mat22 getCombinedTransform(double pixel_scale) const
float adaptiveSamplePixel(const ModelEvaluator &model_eval, int x, int y, unsigned int max_subsampling, float threshold=1.1) const
CompactModelBase(std::shared_ptr< BasicParameter > x_scale, std::shared_ptr< BasicParameter > y_scale, std::shared_ptr< BasicParameter > rotation, double width, double height, std::shared_ptr< BasicParameter > x, std::shared_ptr< BasicParameter > y, std::tuple< double, double, double, double > transform)