Часті запитання#
У чому полягають відмінності між CMUcam1 та CMUcam2?#
Вступ#
CMUcam2 включає всю функціональність CMUcam1 у покращеній формі та багато іншого. Нижче ми коротко описуємо нову функціональність і відмінності. Можливо, ви також захочете подивитися на відповідь на запитання про те, як вирішити, чи купувати CMUcam1 чи CMUcam2.
Огляд апаратного забезпечення#
Є дві головні апаратні відмінності, які важливі: CMUcam2 використовує інший процесор, ніж CMUcam1, і CMUcam2 містить мікросхему буфера кадрів, тоді як CMUcam1 — ні.
CMUcam2 використовує процесор SX52, а CMUcam1 використовує процесор SX28, обидва з серії процесорів SX від Ubicom. В обох випадках процесор працює на частоті 75 МГц, тож немає різниці у швидкості процесора чи обчислювальній потужності. Переваги процесора SX52 полягають у тому, що він має більше RAM (262 проти 136 байтів), більше ROM (4096 проти 2048 слів) і більше виводів введення-виведення. Більше RAM і ROM означало, що ми могли писати складніший код, що дозволило нам включити більше функціональності в 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 є команди виявлення руху (віднімання кадрів). Ці команди можна використовувати, щоб наказати CMUam2 захопити версію поточного зображення низької роздільної здатності та безперервно порівнювати її з новими вхідними зображеннями. Пакети від 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 підтримує лише єдину роздільну здатність 160x239 для сенсора OV7620. 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» для образів ROM доступні на сторінці Завантаження.