diff --git a/svo/include/svo/sparse_img_align.h b/svo/include/svo/sparse_img_align.h index 17cb3a1..c9da479 100644 --- a/svo/include/svo/sparse_img_align.h +++ b/svo/include/svo/sparse_img_align.h @@ -51,6 +51,10 @@ public: FramePtr ref_frame, FramePtr cur_frame); + /// Return fisher information matrix, i.e. the Hessian of the log-likelihood + /// at the converged state. + Matrix getFisherInformation(); + protected: FramePtr ref_frame_; //!< reference frame, has depth for gradient pixels. FramePtr cur_frame_; //!< only the image is known! diff --git a/svo/src/sparse_img_align.cpp b/svo/src/sparse_img_align.cpp index 6dc97c8..fc765cb 100644 --- a/svo/src/sparse_img_align.cpp +++ b/svo/src/sparse_img_align.cpp @@ -69,9 +69,19 @@ size_t SparseImgAlign::run(FramePtr ref_frame, FramePtr cur_frame) optimize(T_cur_from_ref); } cur_frame_->T_f_w_ = T_cur_from_ref * ref_frame_->T_f_w_; + + + return n_meas_/patch_area_; } +Matrix SparseImgAlign::getFisherInformation() +{ + double sigma_i_sq = 5e-4*255*255; // image noise + Matrix I = H_/sigma_i_sq; + return I; +} + // TODO take jacobian from Frame Class! void frameJac(const Vector3d & xyz, Matrix & J) {