Skip to content

Task03 Максим Федоров ИТМО#150

Closed
MartinezGitHub wants to merge 1 commit into
PhotogrammetryCourse:task03from
MartinezGitHub:task03
Closed

Task03 Максим Федоров ИТМО#150
MartinezGitHub wants to merge 1 commit into
PhotogrammetryCourse:task03from
MartinezGitHub:task03

Conversation

@MartinezGitHub
Copy link
Copy Markdown

  1. Мы можем получить облако точек и взаимную ориентацию по двум камерам. Почему для выравнивания трёх камер мы использовали резекцию, а не посчитали E матрицу для второй пары камер и не разложили ее?

E для пары камер восстанавливает относительное положение только с точностью до масштаба трансляции. Если отдельно разложить E для пар 0-1 и 1-2, то третья камера окажется в своей локальной системе координат и со своим неизвестным масштабом. Нужно будет как-то дополнительно согласовывать масштаб, ориентацию и положение с уже построенным всем для первой пары. Поэтому, сильно проще заюзать резекцию. Мы используем уже существующие 3D-точки из первой пары камер и их 2D-наблюдения на новом изображении, поэтому новая камера сразу будет оцениваться уже в той же системе координат. Так просто проще

  1. Как реализовать выравнивание если мы все же хотим использовать Е матрицу?

Если использовать E для пары (c1, c2), то мы получим относительные R и направление t, но без масштаба. Чтобы получить масштаб я бы оценил его по точкам, видимым во всех трех кадрах, то есть сравнил бы расстояния между уже триангулированными 3D-точками из (c0, c1) и теми же точками, триангулированными в локальной системе пары (c1, c2). После этого я бы домножил t на найденный коэффициент и перенес новую камеру в общую систему координат. Как я понимаю, этот способ менее устойчив, потому что зависит от качества триангуляции. Ну и еще нам нужны общие точки для всех трех камер, что тоже проблема, их банально меньше, чем у пар камер

  1. Фидбек по заданию

Больше всего понравилось, что тесты идут почти как пошаговый алгоритм. В итоге я не отлаживал весь SfM целиком, а шел блоками, что сильно упростило разраобтку.

Из сложностей, пришлось чуть побажить число итерация для RANSAC, не сразу понял, почему тест не проходит.

@simiyutin
Copy link
Copy Markdown
Contributor

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

@simiyutin simiyutin closed this Jun 1, 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