contrib/rpl/rgrl/rgrl_weighter_indiv_scale.h
Go to the documentation of this file.
00001 #ifndef rgrl_weighter_indiv_scale_h_
00002 #define rgrl_weighter_indiv_scale_h_
00003 //:
00004 // \file
00005 // \brief  Compute weights in the manner described in PAMI GDB-ICP paper
00006 // \author Gehua Yang
00007 // \date   8 March 2006
00008 //
00009 // \verbatim
00010 //  Modifications:
00011 //   8 March 2006  GY:
00012 //   The error residual is modeled as Gaussian Distribution N(0, (f_s*\sigma)^2)
00013 //   Each feature correspondence has its own feature scale f_s
00014 //   When computing the geometric weights or rho function values,
00015 //   this feature scale has to be counted in.
00016 //
00017 //   13 March 2006 - Peter Vanroose - commented out 3 non-implemented virtuals
00018 // \endverbatim
00019 
00020 #include <rgrl/rgrl_weighter_m_est.h>
00021 
00022 class rgrl_weighter_indiv_scale
00023   : public rgrl_weighter_m_est
00024 {
00025  public:
00026   //:  constructor takes a pointer to M estimator objective function
00027   rgrl_weighter_indiv_scale( vcl_auto_ptr<rrel_m_est_obj>  m_est,
00028                              bool                          use_signature_error,
00029                              bool                          use_precomputed_signature_wgt = false );
00030 
00031   ~rgrl_weighter_indiv_scale();
00032 
00033   virtual
00034   void
00035   compute_weights( rgrl_scale const&  scale,
00036                    rgrl_match_set&    match_set ) const;
00037 
00038   // Defines type-related functions
00039   rgrl_type_macro( rgrl_weighter_indiv_scale, rgrl_weighter_m_est );
00040 
00041   // Auxiliary functions related to the m_est
00042 
00043   virtual
00044   double
00045   aux_sum_rho_values( rgrl_scale const&  scale,
00046                       rgrl_match_set&    match_set,
00047                       rgrl_transformation const&  xform);
00048 
00049 #if 0 // Do not declare these 3 non-implemented virtual functions - they are already implemented in the parent class
00050   virtual
00051   double
00052   aux_sum_weighted_residuals( rgrl_scale const&  scale,
00053                               rgrl_match_set&    match_set,
00054                               rgrl_transformation const&  xform );
00055 
00056   virtual
00057   double
00058   aux_neg_log_likelihood( rgrl_scale const&  scale,
00059                           rgrl_match_set&    match_set,
00060                           rgrl_transformation const&  xform );
00061 
00062   virtual
00063   double
00064   aux_avg_neg_log_likelihood( rgrl_scale const&  scale,
00065                               rgrl_match_set&    match_set,
00066                               rgrl_transformation const&  xform );
00067 #endif // 0
00068 };
00069 
00070 #endif