Я работаю над дополненным реальным приложением для iPhone, которое включает в себя очень интенсивно использующий процессор алгоритм распознавания объектов (толкающий процессор на 100%, он может пройти через 5 кадров в секунду), а также для экономии заряда батареи власть и сделать все это менее "неустойчивым". Я пытаюсь придумать способ запустить этот распознаватель объектов, когда пользователь фактически перемещает камеру.
Моя первая мысль состояла в том, чтобы просто использовать акселерометры/гироскопы iPhone, но при тестировании я обнаружил, что очень часто люди двигают iPhone с достаточно стабильным отношением и скоростью, что не было бы никакого способа сказать, что он все еще остается в движении.
Таким образом, это оставило возможность анализа фактического видеоподачи и обнаружения движения в этом. Я получил OpenCV и попытался запустить свой пирамидальный алгоритм оптического потока Lucas-Kanade, который работает хорошо, но, похоже, почти так же интенсивен, как и у моего распознавателя объектов, я могу получить его до приемлемой частоты кадров, если я понижу уровни глубины /image/track меньше очков, но тогда точность страдает, и она начинает пропускать некоторые большие движения и триггер на маленьких дрожащих дроках.
Итак, мой вопрос: есть ли другой алгоритм оптического потока, который быстрее, чем Lucas-Kanade, если я просто хочу определить общую величину движения камеры? Мне не нужно отслеживать отдельные объекты, мне даже не нужно знать, в каком направлении движется камера, все, что мне действительно нужно, - это способ подачи чего-то двух кадров видео и расскажите мне, насколько они далеко друг от друга.