Features2D + Homography to find a known objectと同様の方法で画像を比較しようとしましたが、findHomography()
の代わりにfindAffine()
機能を使用してください。ceres solver resultから異常値を取り出す方法は?
私は、外れ値を考慮して最適なアフィン行列を得るためにCeres Solverを使用します。
double translation[] = {0, 0};
double angle = 0;
double scaleFactor = 1;
ceres::Problem problem;
for (size_t i = 0; i < points1.size(); ++i) {
problem.AddResidualBlock(
new ceres::AutoDiffCostFunction<AffineResidual, 1, 2, 1, 1>(
new AffineResidual(Eigen::Vector2d(points1[i].x, points1[i].y),
Eigen::Vector2d(points2[i].x, points2[i].y))),
new ceres::HuberLoss(1.0),
translation,
&angle,
&scaleFactor);
}
ceres::Solver::Options options;
options.linear_solver_type = ceres::DENSE_QR;
options.minimizer_progress_to_stdout = true;
ceres::Solver::Summary summary;
Solve(options, &problem, &summary);
セレスソルバLossFunctionを提供する:
損失関数は、通常のものは、外れ値に対応し、高い残差と残差ブロックの影響を低減します。
もちろん、キーポイント座標を取得した行列で最初の画像から変換し、秒と比較して偏差を得ることができます。しかし、作業中にすでに解決策を完了しています。
どのように取得できますか?ドキュメントでそれを見つけられませんでした。
なぜ誰かが私に説明を下す理由はありますか? – victor1234