Часто задаваемые вопросы#

В чём различия между CMUcam1 и CMUcam2?#

Введение#

CMUcam2 включает всю функциональность CMUcam1 в улучшенном виде и многое другое. Ниже мы кратко описываем новую функциональность и различия. Возможно, вы также захотите взглянуть на ответ на вопрос о том, как решить, покупать ли CMUcam1 или CMUcam2.

Обзор аппаратного обеспечения#

Есть два основных важных аппаратных различия: CMUcam2 использует другой процессор, чем CMUcam1, и CMUcam2 включает чип кадрового буфера, а CMUcam1 — нет.

CMUcam2 использует процессор SX52, а CMUcam1 использует процессор SX28, оба из серии процессоров SX от Ubicom. В обоих случаях процессор работает на частоте 75 МГц, поэтому нет разницы в скорости процессора или вычислительной мощности. Преимущества процессора SX52 в том, что у него больше ОЗУ (262 против 136 байт), больше ПЗУ (4096 против 2048 слов) и больше контактов ввода-вывода. Больше ОЗУ и ПЗУ означало, что мы могли написать более сложный код, что позволило нам включить больше функциональности в CMUcam2. Большее количество контактов ввода-вывода означало, что у нас оставалось больше контактов для других функций — таких как больше сервоприводов, больше конфигурационных перемычек и т. д.

Большое различие между двумя системами в том, что CMUcam2 включает чип кадрового буфера AL422B от AverLogic, а CMUcam1 — нет. Это позволяет аппаратуре CMUcam2 быстро захватывать один полный кадр и сохранять его в памяти кадрового буфера. Это имеет ряд преимуществ:

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

  • Более быстрая обработка. Обратная сторона отсутствия необходимости оставаться синхронизированным с потоком пикселей модуля камеры заключается в том, что процессору не приходится ждать модуль камеры, когда ему нужны данные о пикселях. Устранение этого времени ожидания означает, что процессор CMUcam2 фактически может обрабатывать кадр быстрее, чем CMUcam1, хотя процессор ничуть не мощнее.

  • Несколько операций за кадр. Поскольку изображение, хранящееся в кадровом буфере, не меняется, CMUcam2 может выполнять несколько операций над одним кадром. Так, например, за один кадр можно обнаружить движение, вычислить статистику областей и отследить несколько цветов.

  • Улучшенные снимки кадров. Поскольку CMUcam1 приходилось синхронизировать передаваемые данные снимка кадра с потоком данных модуля камеры, она могла отправлять только один столбец данных за кадр камеры. Это означало, что разные части изображения захватывались в разное время, поэтому быстро движущиеся объекты размазывались по снимкам кадров CMUcam1. Так как CMUcam2 передаёт изображение из фиксированных данных в кадровом буфере, это больше не является проблемой.

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

  • Улучшенная работа модуля камеры. Чтобы процессор в CMUcam1 мог оставаться синхронизированным с потоком данных от модуля камеры, частоту кадров модуля камеры пришлось снизить до 17 кадров/с. Кадровый буфер, используемый CMUcam2, позволяет нам работать с модулем камеры на полной кадровой частоте. Одно из преимуществ этого состоит в том, что автоматическая настройка экспозиции и баланса белого камеры может работать быстрее, поскольку она может выполнять лишь одну корректировку за кадр, а теперь кадров в секунду больше. Второе преимущество в том, что черно-белый аналоговый видеовыход (который работает только когда модуль работает на полной кадровой частоте) может использоваться, пока CMUcam2 обрабатывает данные изображения, чего не было в случае CMUcam1.

Обзор функциональности#

CMUcam2 реализует всю функциональность CMUcam1, а также добавляет много новой функциональности. Ниже приведена сводка.

  • Отслеживание цвета. CMUcam2 реализует отслеживание цвета так же, как это делала CMUcam1. Как и в CMUcam1, реализован необязательный битовый построчный режим, который передаёт битовую карту отслеживаемых пикселей. Есть также некоторые улучшения. Появился новый необязательный построчный режим, который предоставляет статистику отслеживаемых пикселей для каждой строки, включая средние, минимальные и максимальные позиции отслеживаемых пикселей. Это очень полезно для следования по линии. Есть также новый необязательный режим, в котором интерпретацию границ отслеживания можно инвертировать. В этом режиме пиксели вне границ отслеживания считаются «хорошими». Это полезно для отслеживания объекта на однородном фоне — вспомните спецэффекты с синим экраном. Это также полезно для обнаружения краёв, когда включено попиксельное вычитание (описано ниже). Опция фильтрации шума также была улучшена, чтобы позволить регулировать степень фильтрации для зашумлённых ситуаций.

  • Статистика изображения. CMUcam2 реализует вычисление статистики среднего и вариации областей изображения так же, как это делала CMUcam1. Как и в CMUcam1, реализован необязательный построчный режим, который передаёт среднее значение каждой строки изображения. Есть также новый улучшенный построчный режим, который при необходимости включает информацию о вариации построчно.

  • Обнаружение движения. Совершенно новыми в CMUcam2 являются команды обнаружения движения (разности кадров). Эти команды можно использовать, чтобы дать CMUcam2 указание захватить версию текущего изображения в низком разрешении и непрерывно сравнивать её с новыми поступающими изображениями. Пакеты от CMUcam2 сообщают, изменяется ли какая-либо часть изображения больше указанной величины, что потенциально указывало бы на движение. Эти пакеты могут описывать центроид и протяжённость изменившихся блоков изображения или предоставлять битовую карту того, какие блоки изображения изменились. Этот режим также можно комбинировать с попиксельным вычитанием (описано ниже), чтобы сделать обнаружение движения более устойчивым к изменениям освещённости.

  • Построение гистограмм. Совершенно новыми в CMUcam2 являются команды вычисления гистограмм. Эти команды можно использовать для захвата одномерной гистограммы одного цветового канала с разрешением до 28 столбцов. Гистограммы предоставляют полезную информацию, которая обобщает внешний вид изображения. При дополнительном программировании на хост-процессоре эту информацию можно использовать для помощи в обнаружении препятствий, конкретных объектов или мест.

  • Оконный режим изображения. CMUcam2 реализует возможность ограничить обработку небольшой областью (подокном) полного изображения так же, как это делала CMUcam1. В CMUcam2 эта функция ещё полезнее, поскольку её можно использовать для детального изучения подокон одного изображения, хранящегося в кадровом буфере. Кроме того, уменьшение вертикального размера окна можно использовать для значительного увеличения количества обрабатываемых в секунду кадров за счёт значительного сокращения числа пикселей, которые CMUcam2 нужно обработать.

  • Настройка выходных пакетов. CMUcam2 реализует гораздо более гибкую настройку пакетов, чем CMUcam1. Есть команды, позволяющие пользователю настроить каждый пакет, генерируемый каждой командой, чтобы возвращать только значения, необходимые для конкретного применения. Во многих ситуациях это может значительно уменьшить объём данных, передаваемых хост-процессору и обрабатываемых им.

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

  • Понижение дискретизации. Совершенно новым в CMUcam2 является необязательный режим понижения дискретизации. В режиме понижения дискретизации программное обеспечение CMUcam2 уменьшает разрешение изображения с камеры перед его обработкой. Преимущество этого в том, что нужно обрабатывать и передавать гораздо меньше пикселей. Поскольку это делается программно, понижение дискретизации приводит лишь к очень небольшому увеличению скорости обработки. Большая выгода — в уменьшении объёма передаваемых данных. В случае снимка кадра понижение дискретизации может легко уменьшить размер данных и, следовательно, сократить время их передачи в 2, 4 или более раз. Аналогично, при использовании битовых построчных режимов размер битового изображения может быть значительно уменьшен, снижая объём данных, которые хост-процессор должен получить и обработать.

  • Управление сервоприводами. Оригинальная CMUcam1 поддерживала только один сервопривод, и этот сервопривод корректно работал только на определённых скоростях передачи и когда CMUcam1 находилась в потоковом режиме. CMUcam2 поддерживает до пяти сервоприводов. Код контроллера сервоприводов в CMUcam2 реализован как фоновый процесс, поэтому выходы сервоприводов всегда остаются стабильными, и его можно использовать так же, как любой другой контроллер сервоприводов. Кроме того, CMUcam2 можно настроить на автоматическое управление сервоприводами панорамирования и наклона. В этом режиме CMUcam2 будет обновлять положения сервоприводов каждый раз, когда ей дают команду вычислить данные отслеживания цвета.

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

В чём разница между использованием модуля OV6620 и OV7620 с CMUcam2?#

Введение#

С точки зрения возможностей, датчик OV7620 является датчиком с более высоким разрешением (664x492 необработанных позиций датчика), чем датчик OV6620 (356x292 необработанных позиций датчика). Но этот факт имеет очень мало отношения к вопросам, которые возникают при рассмотрении того, какой из этих датчиков лучше всего подходит для вашего применения CMUcam2. Ниже приведён список соображений.

Разрешение#

Хотя это правда, что датчик OV7620 имеет более высокое разрешение, чем OV6620, из-за фиксированного размера памяти кадрового буфера CMUcam2 поддерживает для датчика OV7620 только одно разрешение 160x239. CMUcam2 поддерживает режим низкого разрешения 88x143 и режим высокого разрешения 176x255 для датчика OV6620. Таким образом, используя OV6620 в режиме высокого разрешения, можно фактически достичь работы с более высоким разрешением, чем режим единственного разрешения, доступный для датчика OV7620.

Частота кадров#

Ещё один вопрос, связанный с разрешением, — максимальная кадровая частота при непрерывной обработке потока изображений. Чем ниже разрешение, тем меньше пикселей нужно обрабатывать и тем выше достижимая кадровая частота. Хотя увеличения кадровой частоты можно добиться, изменив коэффициент понижения дискретизации и размер виртуального окна, фактическое количество пикселей, выводимых датчиком, оказывает гораздо большее влияние. Из-за этого CMUcam2 может достигать гораздо более высокой кадровой частоты, когда OV6620 работает в режиме низкого разрешения, чем в единственном режиме разрешения, доступном для OV7620.

Аналоговый видеовыход#

Ещё одно различие между двумя датчиками — формат аналогового видеовыхода этих двух датчиков. Датчик OV6620 выводит в аналоговом формате PAL, а датчик OV7620 выводит в аналоговом формате NTSC. В обоих случаях вывод чёрно-белый.

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

Сводка#

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

Есть ли какие-либо известные проблемы с текущими выпусками прошивки CMUcam2?#

Да. В релизе 1.00 команда «RM» (Raw Mode) работала некорректно. Релиз 1.01 исправляет эту проблему.

Прошивка в CMUcam2 обновляема, но для этого нужен программатор SX-Key (или совместимый). «hex»-файлы образов ПЗУ доступны на странице загрузок.