Skip to content

Task02 Леонид Альжанов ITMO#44

Open
lalzhanov wants to merge 3 commits intoPhotogrammetryCourse:task02from
lalzhanov:task02
Open

Task02 Леонид Альжанов ITMO#44
lalzhanov wants to merge 3 commits intoPhotogrammetryCourse:task02from
lalzhanov:task02

Conversation

@lalzhanov
Copy link

@lalzhanov lalzhanov commented Mar 18, 2026

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

  1. Зачем фильтровать матчи, если потом мы запускаем устойчивый к выбросам RANSAC и отфильтровываем шумные сопоставления?

Количество итераций RANSAC-а зависит от того, насколько часто попадается набор из 4-х хороших нешумных точек. Да, RANSAC устойчив к выбросам, но выбросы сильно замедляют процесс.

  1. Cluster filtering довольно хорошо работает и без Ratio test. Однако, если оставить только Cluster filtering, некоторые тесты начнут падать. Почему так происходит? В каких случаях наоборот, не хватает Ratio test и необходима дополнительная фильтрация?

Случай 1: повторяющийся клетчатый пол. Ratio test будет успешно отфильтровывать неправильные матчи на не те клетки, а cluster filtering вполне может заматчить клетки с неправильными.
Случай 2: случайно очень хороший, но ложный матч. Ratio test его не отфильтрует, а cluster filtering успешно его откинет.

  1. С какой проблемой можно столкнуться при приравнивании единице элемента H33 матрицы гомографии? Как ее решить?

Если H33 имеет очень маленькое или большое значение, то после нормировки, остальные числа в матрице станут очень большими или маленькими, что может привести к множеству проблем, например, к потере точности. Решается это путём использования SVD для нахождения H.

  1. Какой подвох таится в попытке склеивать большие панорамы и ортофото методом, реализованным в данной домашке? (Для интуиции можно посмотреть на результат склейки, когда за корень взята какая-нибудь другая картинка)

Матрица преобразования для картинки в дереве состоит из произведения всех матриц от неё до корня. С картинкой глубоко в дереве происходит много преобразований, каждое из которых имеет некоторую неточность. Чем глубже картинка, тем больше накапливается неточность. Если неаккуратно взять корень, то распределение картинок по глубине может оказаться неравномерным и итоговое изображение развалится.

  1. Как можно автоматически построить граф для построения панорамы, чтобы на вход метод принимал только список картинок?

Сначала сравниваем и матчим все пары картинок (можно это ускорить, например сначала сравнивая только по ограниченному числу точек или приоритезировать соседние кадры в списке). Затем для качество матчей по количеству выбросов и запишем качество как вес ребра между картинками. Потом можно построить максимальное остовное дерево по полученному графу (несколько, если он не связный). Корнем дерева стоит выбрать его центроид или середину диаметра, чтобы уменьшить подвох в пункте 4.

  1. Если с вашей реализацией SIFT пройти тесты не получилось, напишите (если пробовали дебажить), где, как вам кажется, проблема и как вы пробовали ее решать.

Пришлось поменять cv::resize на downsample на строке 120, иначе качество дескриптора не проходило минимальные пороки. Скорее всего я был не прав с выбором режима в resize.

UPD: Похоже я ловлю странный случай "it works on my machine":
На моём компе: nn_score: 0.617529, nn2_score: 0.268966, nn_score_cv: 0.62069, nn2_score_cv: 0.27931, time_my: 0.037921, time_cv: 0.038806, time_bruteforce: 1.49566, time_bruteforce_gpu: 0.075629, good_nn: 0.232471, good_ratio: 0.931395, good_clusters: 0.94572, good_ratio_and_clusters: 0.941597
На сервере: nn_score: 0.617241, nn2_score: 0.268966, nn_score_cv: 0.62069, nn2_score_cv: 0.27931, time_my: 0.068887, time_cv: 0.069113, time_bruteforce: 3.67043, time_bruteforce_gpu: 7.0287, good_nn: 0.193103, good_ratio: 0.774419, good_clusters: 0.792181, good_ratio_and_clusters: 0.78266
Я не знаю каким образом такое возможно, но это происходит.

  1. Если есть, фидбек по заданию: какая часть больше всего понравилась, где-то слишком сложно/просто (что именно), где-то слишком мало ссылок и тд.
Github Actions CI

$ 

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.

1 participant