В этом репозитории предложены задания для курса по фотограмметрии в CSCenter и CSClub.
- Сделать fork проекта (обратите внимание что задание не в ветке master, а в ветке task01)
- Установите OpenCV 4.5.1
- Выполнить задания ниже (не используйте пожалуйста C++ из будущего о котором не знает GCC 5.5 - именно он будет использоваться при тестировании в Travis CI, ориентируйтесь на C++11)
- Отправить Pull-request с названием
Task01 <Имя> <Фамилия> <Аффиляция>
:
- Скопируйте в описание шаблон
- Обязательно отправляйте PR из вашей ветки task01 (вашего форка) в ветку task01 (основного репозитория)
- Перечислите свои мысли по вопросам поднятым в коде и просто появившиеся в процессе выполнения задания (выписывайте их с самого начала в отдельный текстовый файл, в шаблоне предложены некоторые вопросы)
- Создайте PR
- Затем дождавшись отработку Travis CI (около 15 минут) - скопируйте в описание PR вывод исполнения вашей программы на CI (через редактирование описания PR)
Дедлайн: начало лекции 16 февраля.
Если времени не хватит - отправьте то, что вы успели сделать (и мне очень поможет, если вы сможете детализировать, на чем застряли и на что ушло слишком много времени).
Ознакомьтесь со структурой проекта:
-
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 баллов)