Поиск карты глубины вебкамерой алгоритмом “Муть”

Удалось получить доступ к видеопотоку с камеры и захотелось попробовать делать карту глубины в реальном времени. Имея всего одну вебкамеру можно тоже получать глубину. Для этого потребуется сколотить салазку и закрепить камеру, чтобы она не крутилась.


Идея проста. Двигая камеру сохраняя параллельность оси видимого изображения, дальние объекты будут смещаться на маленькие расстояния, а близкие на большие. Получается подобие стерео только в движении. Карту глубины попробуем получать из соседних кадров. Изображение придётся очень уменьшить, чтобы алгоритм успевал обрабатывать. В итоге я остановился на таких параметрах:

Ширина*высота кадра = 80*60.
Размер точки = 3 (тоесть (3+1+3)*(3+1+3)=49 точек).
Область поиска = 4 (тоесть X в диапазоне {-4 до 4}, Y в диапазоне {-4 до 4}.

Карта глубины получается из векторов X и Y одномерная с помощью теоремы Пифагора (квадратный корень из суммы квадратов вектора X и вектора Y). Глубина каждой точки будет меняться в диапазоне {0 до 4}. В итоге получилась такая программа.


.

Запускаем программу. Сверху имеется меню, где можно выбрать видеоисточник. Далее, перемещая вебкамеру по салазке, меняется картина глубины. Камера останавливается, экран становится чёрный. Помашите рукой перед камерой, она выделится. Получилось подобие детектора движения. Итог такой. Алгоритм работает слишком медленно и для работы в реальном времени не годится.  Требуются другие решения.

Сделать бесплатный сайт с uCoz