Для моего задания я использовал версию Java ARToolkit (NyARTookit). До сих пор доказанный достаточно хороший для наших потребностей, но моего босса начинает хотеть платформу, портированную в других платформах, таких как сеть (Flash, и т.д.) и мобильные телефоны. В то время как я предполагаю, что мог использовать другие порты, я все больше раздражаюсь, не зная, как набор работает и кроме того, от некоторых ограничений. Позже я должен буду также расширить способности набора добавить материал как взаимодействие (виртуальные кнопки на картах, и т.д.), которые насколько я видел в NyARToolkit, не поддерживаются.
Так в основном я должен заменить ARToolkit пользовательским детектором метки (и в случае NyARToolkit, попытайтесь избавиться от JMF и использовать лучшее решение через JNI). Однако я не знаю, как эти детекторы работают. Я знаю о 3D графике, и я создал хорошую платформу вокруг этого, но я должен знать, как создать базовую технологию:-).
Кто-либо знает какие-либо источники о том, как реализовать основанное на маркере приложение дополненной реальности с нуля? При поиске в Google я только нахожу "применение" AR, не базовые алгоритмы:-/.
«С нуля» - термин относительный. По-настоящему делать это с нуля, без использования какого-либо ранее существовавшего кода визуализации, было бы очень болезненно, и вы не справились бы с этим лучше, чем все сообщество компьютерного зрения.
Однако, если вы хотите делать AR с существующим кодом технического зрения, это более разумно. Основные подзадачи:
Первая задача - локализация ключевых точек. Методы для этого включают обнаружение ключевой точки SIFT, угловой детектор Харриса и другие. Некоторые из них имеют реализации с открытым исходным кодом - я думаю, что в OpenCV есть детектор угла Харриса в функции GoodFeaturesToTrack.
Вторая задача - создание дескрипторов регионов. Для этого используются дескрипторы SIFT, дескрипторы HOG и многие другие. Где-то должна быть реализация одного из них с открытым исходным кодом.
Третья задача также выполняется локализаторами ключевых точек. В идеале вам нужно аффинное преобразование, поскольку оно покажет вам, как маркер находится в 3-м пространстве. Для этого должен работать аффинный детектор Харриса. Для получения дополнительной информации перейдите по ссылке: http://en.wikipedia.org/wiki/Harris_affine_region_detector