Task01 Илья Власов ИТМО#12
Open
Malchicisinternetov wants to merge 2 commits intoPhotogrammetryCourse:task01from
Open
Task01 Илья Власов ИТМО#12Malchicisinternetov wants to merge 2 commits intoPhotogrammetryCourse:task01from
Malchicisinternetov wants to merge 2 commits intoPhotogrammetryCourse:task01from
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.
Перечислите идеи и коротко обозначьте мысли которые у вас возникали по мере выполнения задания, в частности попробуйте ответить на вопросы:
В методе computeOrientations SIFT раскладывает вещественные углы в два ближайших бина с интерполяцией. На этом этапе теряется часть информации, также в том же методе мы дополнительно сглаживаем гистограмму с помощью 6 проходов box-blur, чтобы, скорее всего, сделать алгоритм более устойчивым к шуму. Из-за этого тоже теряется точность угла. Если поменять параметр orient_peak_ratio на 0.999, то станет хуже, так как мы почти полностью теряем возможность дополнительных ориентаций.
Intel Core i5-10200H, 4 ядра, 8 потоков.
После отключения распараллеливания в тестах(в методе evaluateDetection), результаты замеров времени, незначительно ухудшились(в среднем на 26 процентов), подозреваю что накладные расходы на создание и управление потоками при относительно малом количестве точек, не дают сильно улучшить результаты.
Да, это будет давать тот же результат. Но для вычислительной эффективности я решил сделать как в оригинале.
Каждая следующая картинка в октаве всё более заблюрена, так как при i == s(n_octaves) блюр становится двойным, то визуально картинка i текущей октавы совпадает с картинкой i + s предыдущей октавы. Можно сделать downscale первой картинки.
Потому что нам нужно вычитать соседние слои для построения DoG, чтобы ничего не ломалось на краю, нужно вводить ещё один слой. и ещё +2 для вычисления экстремумов.
Первые слои DoG состоят из мелких деталей изображения(утраченного на очередном блюре), приближаясь к последнему, пропадают всё более крупные и заметные.
Чем больше слоёв в октаве тем меньше разница между ними, поэтому логично делить порог контрастности на количество слоёв, чтобы это компенсировать.
Строка 398.
Из-за строки 599
Github Actions CI