Ответ 1
Вы можете посмотреть исходный код Google для приложения Camera здесь:
https://android.googlesource.com/platform/packages/apps/Camera/+refs
Приложение камеры на Android 4.3/4.4 в режиме "Сфера" может сшить фотографии с разных направлений в одну сферическую панораму с очень хорошим качеством.
Изображение результатов:
То, что я собираюсь сделать, - это реализовать приложение для iPad с точно такой же функциональностью.
Я попробовал два подхода:
OpenCV 2.4.8 снабжен конвейером сшивки изображения, который кажется на первый взгляд очень перспективным. Однако у него есть две проблемы:
Конвейер имеет дело с неупорядоченными входными фотографиями, насколько я знаю, он использует только совпадение изображений, чтобы найти геометрические отношения между фотографиями, а конвейер работает плохо, когда извлечение изображения не получается на пустых фотографиях (например, белый стена, голубое небо). Тем не менее, iPad может предоставлять произвольные данные пространственного направления для каждой взятой фотографии (хотя и с шумом), но я не знаю, как использовать эти данные в конвейере строчки OpenCV.
Я не мог найти способ создать панораму на 180x360 градусов, например, PhotoSphere, используя этот конвейер. Подача трубопровода с фотографиями во всех направлениях дает только большую панораму с изогнутой границей изображения.
Я также попытался использовать PanoTools/Hugin lib, хотя эта библиотека поддерживает предопределенные направления фотографий, результат довольно плох и неустойчив. Кроме того, я попытался использовать Focal (beta) app в Google Play, чей сферический режим также основан на PanoTools/Hugin, их результаты (в сферическом режиме) кажутся не лучше наших.
Мои вопросы:
Вы можете посмотреть исходный код Google для приложения Camera здесь:
https://android.googlesource.com/platform/packages/apps/Camera/+refs