Task02 Илья Власов ИТМО#40
Open
Malchicisinternetov wants to merge 5 commits intoPhotogrammetryCourse:task02from
Open
Task02 Илья Власов ИТМО#40Malchicisinternetov wants to merge 5 commits intoPhotogrammetryCourse:task02from
Malchicisinternetov wants to merge 5 commits intoPhotogrammetryCourse:task02from
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Перечислите идеи и коротко обозначьте мысли которые у вас возникали по мере выполнения задания, в частности попробуйте ответить на вопросы:
RANSAC работает хорошо, когда доля хороших матчей большая, иначе вероятность выбрать 4 нужные точки для гомографии очень маленькая и RANSAC потребуется много итераций и будет работать очень долго.
Если у нас есть какая то повторяющаяся текстура, например кирпичная стена, то у нас будет много похожих дескрипторов и будет много неправильных соответствий, Ratio test выкинет такие матчи, так как расстояния между дескрипторами почти равны. Cluster filtering нет. Может быть и обратный случай когда у нас есть случайные хорошие, по мнению Ratio test соответствия, но они разбросаны по разным частям изображения, тогда и пригодится Cluster filtering, который смотрит на геометрию.
Если H33 изначально был очень маленьким то после нормировки (1/H33)*H, остальные элементы гомографии могут быть огромными, что может привести к численным проблемам. решением является нахождение гомографии с помощью SVD.
Такой метод даёт локально согласованные преобразования, но при склейке большого числа изображений начинают проявлять себя небольшие локальные неточности. Основная проблема здесь это накопление ошибки. Когда мы перемножаем гомографии с небольшими ошибками Hs = H1 * H2 * ... * Hn, то ошибки перемножаются и появляются большие искажения. А если взять за корень какую-нибудь плохую картинку, чтобы высота дерева была большой, то ошибки ещё больше вырастут.
Ищем ключевые точки картинок, считаем дескрипторы, матчим все пары картинок по нашему алгоритму, фильтруем(ratio test, cluster filtering), применяем RANSAC, добавляем ребро в граф между двумя картинками если доля inliers/total_matches преодолела порог и при этом количество inliers достаточно большое(чтобы не добавлять ребра между картинками которые плохо матчатся), вес ребра будет количеством inliers, если связного графа не получилось значит у нас будет несколько панорам. Теперь можем чтобы избавится от циклов построить по алгоритму Прима или Краскала макс остовное дерево.
тесты прошли)
Больше всего понравилось реализовывать склеивание панорам, больше всего трудностей у меня вызвал gpu bruteforce matcher, но решил всё равно добить
Github Actions CI