В этом репозитории предложены задания курса по Фотограмметрии для студентов МКН/ИТМО/ВШЭ.
- Сделать fork проекта (обратите внимание что задание не в ветке master, а в ветке task01)
- Установите OpenCV 4.5.1
- Выполнить задания ниже (при тестировании Github Actions CI использует GCC 11, поэтому если вы используете фичи свежее чем C++17 - есть риск что не скомпилируется, в таком случае поправьте пожалуйста)
- Отправить Pull-request с названием
Task01 <Имя> <Фамилия> <Аффиляция>
:
- Скопируйте в описание шаблон
- Обязательно отправляйте PR из вашей ветки task01 (вашего форка) в ветку task01 (основного репозитория)
- Перечислите свои мысли по вопросам поднятым в коде и просто появившиеся в процессе выполнения задания (выписывайте их с самого начала в отдельный текстовый файл, в шаблоне предложены некоторые вопросы)
- Создайте PR
- Затем дождавшись отработку Github Actions CI (около 15 минут) - скопируйте в описание PR вывод исполнения вашей программы на CI (через редактирование описания PR)
Мягкий дедлайн: начало лекции 19 февраля. Мягкий дедлайн - ориентировочная рекомендация "здорово если успеете".
Жесткий дедлайн: начало лекции 26 февраля. Жесткий дедлайн - предполагается что все в него укладываются. Не доделали - зашлите хотя бы что-то. После дедлайна досылать тоже можно (но будет небольшой штраф в баллах).
Ознакомьтесь со структурой проекта:
-
src/phg/sift/
- основная часть где вы будете реализовывать алгоритм -
tests/test_sift.cpp
- тесты которые будут прогонять ваш алгоритм на каких-то относительно простых манипуляциях с маленькой картинкой, если вам хочется добавить другие сценарии тестирования (возможно с другими метриками) - здорово! -
data/src
- исходные данные используемые при тестировании (к ним используются относительные пути, поэтому нужно выставить Working directory = путь к проекту) -
data/debug/test_sift/SIFT
- сюда тесты сохранят картинки с визуализацией результата -
data/debug/test_sift/debug
- сюда вам предлагается сохранять любые промежуточные картинки-визуализации, это очень полезно для отладки, оценки качества, уверенности и в целом один из немногих способов качественно "заглянуть в черную коробку"
-
Убедитесь что у вас все компилируется и тесты проходят.
-
Ознакомьтесь с тем как проводится тестирование -
tests/test_sift.cpp
: -
Обратите внимание что там сравнивается ORB и SIFT реализованные в OpenCV
-
Посмотрите и сравните результаты этих двух дескрипторов:
- по логам в т.ч. пишущим угол поворота, перепад масштаба и расстояние между дескрипторами)
- по картинкам с результатами в папке
data/debug/test_sift/SIFT
Включите тестирование вашего SIFT - см. TODO в test/test_sift.cpp
Реализуйте SIFT в src/phg/sift/sift.cpp
:
- Либо с чистого листа самостоятельно - просто удалите оттуда весь код (тогда если все хорошо - 10 баллов)
- Либо выполняя TODO один за другим (через Ctrl+F сверху вниз) (тогда если все хорошо - 8 баллов)
- Либо выполняя TODO один за другим, а если на каких-то отдельных этапах вы хотите сделать больше самостоятельно - смело удаляйте окружающий код заготовки :) (тоже если все хорошо - 8 баллов)