return fisher information

This commit is contained in:
Christian Forster
2014-04-16 10:26:10 +02:00
parent 38b7d0b9bc
commit cf2b188894
2 changed files with 14 additions and 0 deletions
+4
View File
@@ -51,6 +51,10 @@ public:
FramePtr ref_frame, FramePtr ref_frame,
FramePtr cur_frame); FramePtr cur_frame);
/// Return fisher information matrix, i.e. the Hessian of the log-likelihood
/// at the converged state.
Matrix<double, 6, 6> getFisherInformation();
protected: protected:
FramePtr ref_frame_; //!< reference frame, has depth for gradient pixels. FramePtr ref_frame_; //!< reference frame, has depth for gradient pixels.
FramePtr cur_frame_; //!< only the image is known! FramePtr cur_frame_; //!< only the image is known!
+10
View File
@@ -69,9 +69,19 @@ size_t SparseImgAlign::run(FramePtr ref_frame, FramePtr cur_frame)
optimize(T_cur_from_ref); optimize(T_cur_from_ref);
} }
cur_frame_->T_f_w_ = T_cur_from_ref * ref_frame_->T_f_w_; cur_frame_->T_f_w_ = T_cur_from_ref * ref_frame_->T_f_w_;
return n_meas_/patch_area_; return n_meas_/patch_area_;
} }
Matrix<double, 6, 6> SparseImgAlign::getFisherInformation()
{
double sigma_i_sq = 5e-4*255*255; // image noise
Matrix<double,6,6> I = H_/sigma_i_sq;
return I;
}
// TODO take jacobian from Frame Class! // TODO take jacobian from Frame Class!
void frameJac(const Vector3d & xyz, Matrix<double,2,6> & J) void frameJac(const Vector3d & xyz, Matrix<double,2,6> & J)
{ {