Skip to content

Task04 Syrma Timur ITMO#142

Closed
timursyrma wants to merge 1 commit into
PhotogrammetryCourse:task04from
timursyrma:task04
Closed

Task04 Syrma Timur ITMO#142
timursyrma wants to merge 1 commit into
PhotogrammetryCourse:task04from
timursyrma:task04

Conversation

@timursyrma

@timursyrma timursyrma commented May 27, 2026

Copy link
Copy Markdown

Ответы

  1. (k, b) и (-k, -b) геометрически одна прямая, но два минимума. Ceres попадает в один из них. Фикс постфактум, т.е. проверить знак и при необходимости умножить на -1. Правильнее: зафиксировать знак в самой задаче, например k >= 0.

  2. Round-trip тест: Calibration => params => Calibration, проверить что поля совпадают. Если BA идемпотентна, второй вызов подряд ничего не меняет, тогда оптимизатор уже будет в минимуме

  3. saharov32 все 32 кадра. herzjesu25 не проверял

  4. Нет. unproject делит на dist от уже искажённых координат, это приближение. Round-trip не точный даже в теории.

  5. f в пикселях зависит от физического размера пикселя. Уменьшаем картинку в 2 раза — пиксель вдвое крупнее, f делится на downscale.

  6. Да. Сдвиг всех точек и камер на константу не меняет X - translation в функторе, Loss не изменится

  7. Заморозить extrinsics первых двух камер. Все остальное строится относительно них

  8. Круто будет добавить скрипт для рендера PLY в картинку без MeshLab. И по хорошему тест должен сам создавать data/debug/test_sfm_ba/ :)

image
Github Actions CI

[==========] Running 5 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 5 tests from CeresSolver
[ RUN      ] CeresSolver.HelloWorld1
iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
   0  1.250000e+01    0.00e+00    5.00e+00   0.00e+00   0.00e+00  1.00e+04        0    5.29e-05    3.34e-04
   1  1.249750e-07    1.25e+01    5.00e-04   0.00e+00   1.00e+00  3.00e+04        1    4.29e-05    4.02e-04
   2  1.388518e-16    1.25e-07    1.67e-08   5.00e-04   1.00e+00  9.00e+04        1    1.91e-06    4.07e-04
Ceres Solver Report: Iterations: 3, Initial cost: 1.250000e+01, Final cost: 1.388518e-16, Termination: CONVERGENCE
x:     5 -> 10
f(x):  5 -> 1.66644e-08
f'(x): -1 -> -1
[       OK ] CeresSolver.HelloWorld1 (1 ms)
[ RUN      ] CeresSolver.HelloWorld2
[       OK ] CeresSolver.HelloWorld2 (0 ms)
[ RUN      ] CeresSolver.FitLineNoise
[       OK ] CeresSolver.FitLineNoise (0 ms)
[ RUN      ] CeresSolver.FitLineNoiseAndOutliers
[       OK ] CeresSolver.FitLineNoiseAndOutliers (0 ms)
[ RUN      ] CeresSolver.FitLineNoiseAndOutliersWithHuberLoss
[       OK ] CeresSolver.FitLineNoiseAndOutliersWithHuberLoss (0 ms)
[----------] 5 tests from CeresSolver (1 ms total)

[----------] Global test environment tear-down
[==========] 5 tests from 1 test suite ran. (1 ms total)
[ PASSED ] 5 tests.
[ OK ] SFM.ReconstructNViews (188476 ms)
[----------] 1 test from SFM (188476 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (188476 ms total)
[ PASSED ] 1 test.

@simiyutin

Copy link
Copy Markdown
Contributor

нет ответов на вопросы

@simiyutin

Copy link
Copy Markdown
Contributor

задача зачтена, 8/10 баллов

@simiyutin simiyutin closed this Jun 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants