Как выбрать камеры для системы стереозрения?

18

Я нахожусь в процессе создания системы стереозрения для использования на UGV. Система предназначена для робота, который будет использоваться на соревнованиях, где робот телеуправляется, чтобы находить относительно маленькие цветные камни в большом открытом поле. Я понимаю, как откалибровать такую ​​систему и обработать данные для системы стереозрения. Я, однако, не знаю, как выбрать камеры для такой системы. Каковы лучшие практики для выбора камер для системы стереозрения?

DaemonMaker
источник

Ответы:

11

С головы до головы я бы пошел по следующим критериям отбора

  • цвет / ч / б - обычно ч / б лучше, так как алгоритмы стерео все равно используют только один канал
  • базовый уровень - это действительно зависит от сцены. С помощью базовой линии вы контролируете, сколько точности вы получаете с расстоянием. Более широкая базовая линия приводит к более высоким значениям диспаратности и, следовательно, меньшему шуму при оценке расстояния. Более высокий базовый уровень также означает, что вы получите меньшее совпадение между вашим полем зрения. Самое главное, что чем шире базовая линия, тем сложнее совпадение между двумя видами. Таким образом, качество результата снижается.
  • Затвор - всегда используйте глобальный затвор для всего, что связано с компьютерным зрением на мобильных роботах.
  • разрешение - большинство стереоалгоритмов являются вычислительно дорогими. И вам, вероятно, не понадобится так много 3d очков. В ближнем поле плотности выборки обычно достаточно, и в дальнем поле ваша ошибка из-за низкой диспаратности является большей проблемой, чем плотность выборки. 640x480 хорошо в большинстве случаев. Некоторые чипы имеют более широкий формат изображения, что благоприятно для перекрытия, но вы можете получить то же самое, используя подокно своей микросхемы.
  • цели / поле зрения - для мобильных наружных роботов я предпочитаю широкое поле зрения, а не узкие цели. Более или менее по тем же причинам, что и резолюция. Убедитесь, что ваши цели жесткие и имеют средства для фиксации любых движущихся частей, например, регулируемого фокусного расстояния. В большинстве случаев с фиксированным фокусным расстоянием все равно хорошо, так как вы ограничены выбором базовой линии.
  • триггер - когда вы создаете свою собственную стереосистему, ваши камеры должны поддерживать аппаратный триггер, и в идеале одна должна запускать другую.
  • частота кадров - на мой взгляд, наименее важный фактор. Если у вас нет большой вычислительной мощности, вы все равно не получите намного больше, чем 5 Гц. Таким образом, ваш алгоритм, скорее всего, будет узким местом, а не чипом или соединением.
  • интерфейс - большинство камер поставляются с Firewire / USB2 / USB3 / Ethernet. USB2 бесполезен, так как потребляет много ресурсов процессора. Firewire хорош, если у вас есть порт, но я думаю, что в настоящее время он склоняется в пользу USB3. Не было большого опыта с USB3 еще. Ethernet довольно хорош, потому что в настоящее время вы с большей вероятностью найдете встроенные системы с GigEthernet, чем USB3.
  • корпус - максимально жесткий. Перекалибровка является раздражающей процедурой.
Jakob
источник
6

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

Помимо этого, есть множество функций, которые делают выбор более сложным / интересным. Различные камеры (особенно сетевые камеры, такие как Axis) позволяют изменять качество изображения или указывать максимальный битрейт для потока изображения. Некоторые камеры также предоставляют выбор скорости затвора, что позволяет выбирать постоянное время экспозиции или постоянную среднюю освещенность изображения. Некоторые камеры более чувствительны, чем другие (последний раз, когда я работал с этим, был в 2009 году, и мы заметили, что PS3 Eye действительно хорошо работал в условиях низкой освещенности).

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

Ян
источник
6

Несколько вещей, которые вы должны быть в поисках:

  • Глобальный затвор в основном означает, что все пиксели захватываются одновременно, в отличие от скользящего затвора, где они захватываются последовательно в режиме линейного сканирования. Поскольку ваш UGV будет перемещаться и выполнять стереоалгоритмы над снятыми изображениями, может быть важно избежать аберраций, возникающих при перемещении камеры, таких как те, что показаны на рисунках ниже (взяты из Википедии ):

Движущийся автомобиль снят с камеры телефона CMOS демонстрирует перекос Фотография с частичной экспозицией.  Условия освещения менялись между выдержкой верхней и нижней частей фотографии. Выстрел из турбовинтового винта

  • Синхронизация камеры в аппаратном обеспечении достижима некоторыми камерами, в частности, пожарными камерами AFAIK. Это может значительно улучшить результаты для стерео, когда все вокруг.

  • Монтаж должен выполняться таким образом, чтобы изменения внешних параметров (относительной позы между камерами) для стереопары вряд ли изменились после калибровки. В вашей установке это может быть важнее, так как UGV может столкнуться с неровной поверхностью на открытом воздухе, и все будет вибрировать.

  • Выделенное стереофоническое оборудование позволяет получать несоответствующие изображения непосредственно на выходе вашей системы стереозрения, что облегчает нагрузку на встроенные компьютеры. Это также имеет тенденцию быть намного быстрее, чем запускать те же алгоритмы в программном обеспечении.

Как обычно, чем больше вы готовы платить, тем лучше результаты. Если честно, если вы сможете купить полноценную стереокамеру, такую ​​как Bumblebee2 , это то, что я бы сделал. В противном случае, если вы стоите дешевле, я бы просто выбрал Kinect : вряд ли вы сможете получить систему, которая превосходит его по той же цене.

georgebrindeiro
источник
Вопрос был для наружной системы. Это эффективно исключает Kinect. Кроме того, алгоритмы, которые идут с Шмелем, далеки от оптимальных, мы нашли.
Якоб
Я с вами о комментарии Kinect, но разве стерео алгоритмы, которые идут с Шмелем, не могут быть заменены вашим собственным кодом? Самое большое преимущество, на которое я указал, было в фактическом оборудовании, а не программном обеспечении, которое связано с ним.
Георгбриндейро
да это правда. Вы можете использовать его как две обычные камеры, и он имеет преимущество жесткого корпуса.
Якоб
не только это, но глобальный затвор, хорошие линзы и другие вкусности
georgebrindeiro
4

Это интересная тема, и ее не так просто понять с первой попытки. Из опыта с этим, вот самые важные вещи.

  • Синхронизация . Камера должна быть на 100% синхронизирована. Например, скажем, UGV движется со скромными 36 км / ч (10 м / с) и записывает кадры со скоростью 30 кадров в секунду. То есть на каждом кадре UGV будет покрывать 3 метра. Теперь, скажем, ваша синхронизация отключена на 1 мс, одна из камер будет выключена на ~ 0,3 м, что плохо [просто с моей головы]. Проблемы с синхронизацией очень трудно обнаружить.

  • δZзнак равноZ2Веδd, Это говорит о том, что глубина разрешающей способностиδZ обратно пропорционален базовой линии В раз фокусное расстояние е, Чем длиннее базовая линия, тем меньшеδZ, лучшее. Смысл, вы можете разрешить больше глубины. Минимальное изменение несоответствияδdчастично контролируется разрешением изображения и используемым алгоритмом. Для своих расчетов вы можете смело предположить, чтоδd по крайней мере 1/2, Лучше быть консервативным с выборомδd,

  • Перекрытие . Вы хотите иметь перекрытие между камерами, чтобы получить стерео. Следовательно, вам нужно выбрать комбинацию фокусного расстояния объектива (поля зрения) и базовой линии, чтобы у вас было достаточное перекрытие для приложения. По сути, на доске работают тригонометрия или быстрый скрипт на языке matlab / python.

Для UGV есть два варианта использования стерео.

  1. Навигация и оценка позы В этом случае вам, скорее всего, понадобится большая базовая линия + длинное фокусное расстояние. Это позволяет стерео лучше видеть и разрешать глубину и большую дальность действия.

  2. Обнаружение и устранение препятствий Возможно, вам понадобится более короткая базовая линия и более широкий объектив (меньшее фокусное расстояние), чтобы вы могли сосредоточиться на вещах, которые очень близки вам.

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

Будьте очень осторожны с тем, что вы покупаете. Некоторые компании предлагают уже встроенные стереосистемы. Они великолепны с точки зрения надежности, они не легко теряют калибровку и всегда синхронизированы. Проблема в том, что коммерчески доступные имеют небольшую базовую линию. Если вы хотите построить свой собственный. Я предполагаю, что вы в конечном итоге сделаете это, убедитесь, что камера синхронизируется . Firewire отлично подходит для этого, две камеры на одной шине будут синхронизированы с точностью 125 мкс из коробки! USB и Gige камеры больно синхронизировать. Когда вы складываете все вместе, вы хотите убедиться, что линзы вообще не будут двигаться, а базовая линия жесткая, очень жесткая для применения.

Также будьте осторожны при выборе объектива. Не все объективы работают со всеми камерами. У объективов тоже есть разрешение. Это еще одна тема, вот небольшая статья об этом http://www.qualitymag.com/articles/90642-qa--selecting-lenses-for-machine-vision-systems

bendervader
источник
4
Ваше вычисление синхронизации неверно. 30 кадров в секунду при 10 м / с дает расстояние 33 см (не 3 м) на кадр. Также 1 мс при этой скорости означает расстояние 1 см (независимо от FPS). Так что синхронизация на уровне мс - супер результат для таких скоростей!
Козуч