2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 По видео распознать все 6 координат скоростей движения
Сообщение10.04.2022, 17:09 
Добрый день,

имею видеокамеру (2мпиксела или любое другое до 320х240 разрешение), до 30 кадров в секунду, черно-белая, ИК (8 бит на пиксель). Одновременно есть возможность включать/выключать ИК подсветку, могу сделать ее хоть от 20 разных светодиодов, но, ИМХО, 2 или 4-х будет достаточно.

Одновременно также рядом с камерой по 1-4 направлениям могу поставить датчик расстояния, которые дадут точность по расстоянию около 0.5мм (хотелось бы поставить таких датчиков поменьше).

Камера закреплена на краю пластинки, которая довольно низко над поверхностью движется (от 2 до 10см примерно), иногда с рывками, но, большей частью, довольно плавно.

Хочу получать скорости движения камеры, то есть все 6 скоростей.

Понятно, что так как есть датчик расстояния, то $V_1$ скорость приближения-удаления будет только через датчики расстояния.

Понятно, что если движение линейное и поверхность равноудалена от камеры, то две скорости $V_2, V_3$, которые ортогональны направлению оси камеры можно через Фурье преобразование и последующее сравнение (как циркулянт на вектор и затем поиска максимума) посчитать.

Но вот есть еще скорости:

$V_4$ вращение вокруг оси камеры,
$V_5, V_6$ наклоны по двум ортогональным этой оси направлениям.

Еще неприятность в том, что все надо делать в реальном времени, и в доступе довольно мало памяти (4МБ) и процессор на плавающей точке показывает только 120МФлопсов, что, в общем совсем не густо, то есть у меня имеется около 4МФлоп на одну пару картинок сравнения. То есть Фурье примерно от 480х320 на 30fps и 640х480 на 10fps еще с грехом пополам сделать можно, а что-то существенно более сложное - нельзя.

Я понимаю, что можно искать максимумы градиента на картинке и сравнивать куда они уплыли, но тут вычислительной сложности вот точно не хватит.

Пусть я даже забью на вычисления $V_4, V_5, V_6$, но, если они присутствуют, скорости $V_2, V_3$ не получится через Фурье вычислить.

Гипотетически, поверхность над которой летает моя камера, довольно гладкая, поэтому я могу предположить, что если поставить 4 датчика расстояния крестом вокруг камеры, то на их основе я скорости $V_5, V_6$ буду получать довольно устойчиво, но, вот $V_4$ все равно мешать будет.

Пожалуйста, посоветуйте, в сторону какого алгоритма стоит посмотреть?

И еще вопрос, посоветуйте, пожалуйста, стоит ли брать широкоугольную или наоборот, очень узконаправленную камеру? Очевидно, что с узконаправленной будет больше линейности, но, возможно на широкоугольной что-то можно интереснее вытянуть, но что конкретно я сообразить не могу.

PS: вопрос частично связан с воблой https://dxdy.ru/topic149178.html, которую мы тут недавно обсуждали, но вычислительная сложность полученного и запрограммированного алгоритма, а также глюки, при резком движении меня сильно не устраивают, поэтому принял решение решать свою задачу по-другому.

Спасибо!

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group