BundelAdjsuter CalcError 不一致

我正在处理全景拼接并遇到以下问题。在我看来 BundleAdjuster 中的 H 矩阵组合是不一致的。 https://github.com/opencv/opencv/blob/master/modules/stitching/src/motion_estimators.cpp

#1 in void BundleAdjusterReproj::calcError(Mat &err)

line 423 Mat_<double> H = K2 * R2_.inv() * R1_ * K1.inv();

相当于 H = H2_inv * H1,例如参见 void BundleAdjusterRay::calcError(Mat &err)

line 592 Mat_<double> H1 = R1_ * K1.inv();

#2 现在在 void BundleAdjusterAffine::calcError(Mat &err)

line 711 Mat_<double> H = H1_inv * H2;

这也应该是 H = H2_inv * H1,而不是相反,因为 p1 用于查询/从,而 p2 用于火车/到

#3 In void BundleAdjusterAffinePartial::calcError(Mat &err)

line 841 Mat_<double> H = H1 * H2;

H1 ​​也是倒置的。

对我来说,H 似乎应该计算为 H = H2_inv * H1,因为 features1 对应于查询/来自图像。如果我更改第 592 行,则 BundleAdjuster 工作正常。如果我不想修改源代码,我也看不到快速解决方法。

Affine 版本的 H 矩阵组合是否应该是这种方式,或者这仅仅是我应该报告修复的问题?

wzy8352663 回答:BundelAdjsuter CalcError 不一致

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1147466.html

大家都在问