Skip to content

Task03 Syrma Timur ITMO#134

Closed
timursyrma wants to merge 12 commits into
PhotogrammetryCourse:task03from
timursyrma:task03
Closed

Task03 Syrma Timur ITMO#134
timursyrma wants to merge 12 commits into
PhotogrammetryCourse:task03from
timursyrma:task03

Conversation

@timursyrma
Copy link
Copy Markdown

@timursyrma timursyrma commented Apr 27, 2026

Перечислите идеи и коротко обозначьте мысли которые у вас возникали по мере выполнения задания, в частности попробуйте ответить на вопросы:

1) Почему резекция, а не E-матрица для второй пары

E дает взаимное положение пары камер с точностью до масштаба (translation единичной длины). Если посчитать E для (cam1, cam2) отдельно, масштаб у нее будет свой, не согласованный с парой (cam0, cam1) — облака точек просто не склеятся.

Резекция же берет уже готовые 3D-точки из первой пары и ищет cam2 в той же системе координат. Масштаб согласуется автоматически, ничего отдельно сводить не надо

2) А если все-таки через E-матрицу

Можно так: разложить E для (cam1, cam2), получить R₁₂ и единичный t₁₂. Дальше надо восстановить масштаб. Берешь точки, видимые во всех трех камерах. Триангулируешь их по (cam0, cam1) — это масштаб A. Те же точки триангулируешь по (cam1, cam2) с разложенным P₁₂ — масштаб B. Считаешь отношение расстояний и домножаешь t₁₂

Хуже резекции: отношение длин чувствительно к шуму, плюс нужны общие точки во всех трех кадрах (а их сильно меньше, чем просто видимых из cam2).

3) Фидбек

Постраничные ссылки на Hartley & Zisserman — топ, очень выручали

Больше всего намучился с ReconstructNViews на macOS. Тест выдавал 0.058 при пороге 0.05, и я застрял на резекции — пробовал LM, нормализованный DLT, MSAC, solvePnPRansac, все не помогало. Оказалось, дело вообще не там, достаточно было увеличить n_trials для F-матрицы с 10к до 100к, и макос успокоился. Если в условие задания добавить намек было бы круто

Github Actions CI

$ Run ./build/test_sfm
Running main() from /Users/runner/work/PhotogrammetryTasks2026/PhotogrammetryTasks2026/libs/3rdparty/libgtest/googletest/src/gtest_main.cc
...
exporting 8129 points...
[       OK ] SFM.ReconstructNViews (8671 ms)
[----------] 9 tests from SFM (37263 ms total)

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

@timursyrma timursyrma changed the title implement task03 SFM: fundamental matrix, essential matrix, triangula… Task03 Syrma Timur ITMO Apr 28, 2026
@simiyutin
Copy link
Copy Markdown
Contributor

n_trials для F-матрицы с 10к до 100к, и макос успокоился. Если в условие задания добавить намек было бы круто

спасибо за фидбек, наверное надо просто по дефолту параметр бафнуть к следующему разу

@simiyutin
Copy link
Copy Markdown
Contributor

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

@simiyutin simiyutin closed this May 12, 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