Форум программистов, компьютерный форум CyberForum.ru

OpenCV, две камеры (стереозрение) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.95
Granin
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 19
18.04.2014, 11:12     OpenCV, две камеры (стереозрение) #1
Доброго суток времени. Надеюсь раздел выбрал верный.

Перелопатил много страниц, большинство тем очень старые и ответов полных нету. Посему прощу вашей помощи.

Задача такая. Есть две обычные веб-камеры расположенных на прямой линии (как глаза), нужно сделать:
1) Найти объект на видео исходя из-заданного шаблона. (в идеале объект может двигаться после обнаружения, нужно продолжать следить) (что по идее с стереозрением должно быть точнее чем с одной камерой нет? проще выделить объект)
2) Рассчитать расстояние до него.

Для одной камеры поиск объекта расписан более менее.
Но вот с двумя хотелось бы найти готовое решение дабы разбирать уже их.
Т.е. даже банальное подключение камер. К двум разным usb? Как обрабатывать?

Потом хотелось бы обнаружение объекта уже по 3D шаблону, ведь наверняка точнее будет.

Вообщем буду благодарен за ссылки и информацию, заранее большое спасибо.

Добавлено через 6 минут
да не написал, средствами OpenCV.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dhampire
Сообщений: n/a
21.04.2014, 17:49     OpenCV, две камеры (стереозрение) #2
банальное подключение камер:
да к разным USB..
захват? просто захватываешь одну камеру потом вторую:

C
1
2
3
4
5
CvCapture* capture1 = cvCaptureFromCAM( 0 );
assert(capture1);
Sleep(1000); // потому-что иногда хватает одну камеру 2 раза
CvCapture* capture2 = cvCaptureFromCAM( 1 );
assert(capture2);

и обрабатывай себе изобр. с каждой камеры отдельно, желательно в разных потоках ;-)
в поиске по шаблону увы не помогу, а вот расстояние триангуляцией считай, по каким-либо особым точкам...

А если у тебя камеры уже установлены правильно, и в идеале они у тебя одинаковые, то в каталоге где лежит OpenCV, есть примеры работы с двумя камерами
HighPredator
 Аватар для HighPredator
5352 / 1735 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 3
21.04.2014, 19:46     OpenCV, две камеры (стереозрение) #3
Сейчас будет много пояснительной нудятины.
Итак. Задача первая. Детекция и слежение за объектом. На эту тему полно всего под любой набор исходных условий. Стоит только отметить, что для этого вторая камера не нужна. Даже самый хитрый алгоритм сработает на одной камере. На момент когда я занимался этим вопросом, лучшим был алгоритм Predator кажется из одного из британских университетов (на ютубе видео есть). Теперь ко второму вопросу.
Определение расстояния. Сразу скажу, что если делать "точную машину", а не что-то с погрешностью +/- километр, то это математический гроб. Но сначала физика. Да, две камеры. Но есть большое НО. Во-первых, нужно обеспечить бинокулярность зрения. То есть. Размещение камер относительно друг друга должно быть жестко задано и откалибровано с тем чтобы удовлетворять двум главным требованиям:
1) оптические центры линз обеих камер должны лежать на одной прямой. Ориентация этой прямой как правило диктуется условиями монтажа.
2) оптические оси должны быть расположены под углом друг к другу (или же к опорной прямой) на фиксированный угол так, чтобы с учетом угла обзора на каждой камере была охвачена одна и та же область пространства. Последнее является ключевым требованием для определения расстояний. Почему? Не вдаваясь в детали скажу просто: иначе тригонометрия рухнет.
Поэтому, как вы понимаете размещение по типу "как глаза" не очень удачная идея (да и глаза у всех разные). Во-вторых, взаимное размещение камер. Есть два способа: "одна под другой" и "две рядом". Каждый из них накладывает свои требования на вычислительную часть.
Про подключение вам ничего не могу сказать так как не в курсе с чем вам придется работать. Скажу только, что да, скорее всего к разным портам, если только у вас нет ограничений/спец требований по этой части.
Как обрабатывать. В нашей системе было четыре главных потока: 2 потока работы с камерами, поток сопряжения/контроля/хранения и первичной обработки изображений/и еще чего-то, и вычислительный поток.
Собственно алгоритмы. Все они как правило основаны на двух вещах: бинокулярности и какой-то аппроксимации. Есть правда исключение: с гордостью могу сказать, что в нашей стране был разработан алгоритм, способный определять расстояния по одной камере. Очень крутая штука. Работала с не худшей точностью, что и стерео-алгоритм того же автора. Из тех что у меня на памяти могу предложить вам поковырять алгоритм Census для начала.
Такие дела.
ЕленаСол
1 / 1 / 0
Регистрация: 23.07.2012
Сообщений: 13
04.10.2014, 16:26     OpenCV, две камеры (стереозрение) #4
Цитата Сообщение от HighPredator Посмотреть сообщение
Есть правда исключение: с гордостью могу сказать, что в нашей стране был разработан алгоритм, способный определять расстояния по одной камере. Очень крутая штука. Работала с не худшей точностью, что и стерео-алгоритм того же автора.
А можно по-подробнее. Что-ли камера перемещается? Или фокусное расстояние разное?
HighPredator
 Аватар для HighPredator
5352 / 1735 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 3
06.10.2014, 08:33     OpenCV, две камеры (стереозрение) #5
Цитата Сообщение от ЕленаСол Посмотреть сообщение
А можно по-подробнее.
Честно говоря, даже не знаю как я вам смогу помочь. Я ведь не являюсь его автором, и не был в команде имплементации -- это другие ребята делали.
Yandex
Объявления
06.10.2014, 08:33     OpenCV, две камеры (стереозрение)
Ответ Создать тему
Опции темы

Текущее время: 06:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru