Як я можу порівняти дві фотографії з камери та сказати, чи достатньо відмінностей для виявлення руху?


18

Я хочу використовувати свій телефон як систему відеоспостереження, щоб контролювати кімнату в своєму будинку і показувати попередження, коли щось рухається.

На даний момент мені вдалося зробити щохвилини, щоб знімати фотографію та завантажувати їх через скрипт PHP на мій сервер. Тепер я хотів би порівняти поточну картину та картинку 1 хвилину тому і виявити, чи хтось увійшов до кімнати. Тому в основному мені потрібно порівняти відмінності пікселів на зображенні (але також враховуючи, що хмара може просто привітатися і змінити яскравість протягом однієї хвилини)

Хтось має підказку про те, як домогтися того чи іншого документа, щоб прочитати?


4
Я робив щось подібне років тому. Моя техніка полягала в тому, щоб розбити зображення на секції, скажімо, на 20 * 20 сітці, знайти значення середнього кольору в кожній комірці (взявши середній колір у кожному пікселі в цій комірці) та зберегти його. Зробіть те ж саме для наступного зображення, і якщо буде достатньо (я допущу це допущення до вас) різниці середніх кольорів, ви можете припустити рух. Не робіть толерантність настільки тонкою, що ви помітите тонкі зміни у світлі або пропускаючі тіні тощо.

1
Ось цікавий пост на цю тему, який ви можете знайти корисним codeproject.com/KB/audio-video/Motion_Detection.aspx

CHDK також розбиває зображення на сітку. chdk.wikia.com/wiki/UBASIC/Scripts:_AdaptiveMD Для виявлення руху та не виявлення змін освітлення я б сказав, що зміна багатьох комірок сітки - це не рух, тоді як зміна лише кількох комірок сітки є.
ендоліт

Відповіді:


10

Мені здається, те, що ви шукаєте, це техніка віднімання фону. З галасливими зображеннями та зміною умов освітлення це може бути нетривіально. Сучасним сучасним методом для цього є матричне зображення низького рангу, але для цього потрібні не два, а багато (~ десяток) зображень. З цього випливає деяка математика з важкою працездатністю: кожне зображення розглядається як вектор пікселів, векторів, об'єднаних у матрицю, і ця матриця розкладається на матрицю низького рангу та залишок. Матричні стовпці низького рангу є фоном, а залишок - рухомими об'єктами. Є кілька реалізацій з відкритими джерелами, але тільки для самої факторизації, а не повного конвеєра IIRC зображення

Ось документ і код для матричної факторизації http://www.ece.rice.edu/~aew2/sparcs.html

Ось огляд з блогу CS та посилання на інший код:

https://sites.google.com/site/igorcarron2/matrixfactorizations

http://nuit-blanche.blogspot.com/search/label/MF

Огляд деяких інших методик: http://www.vis.uni-stuttgart.de/uploads/tx_vispublications/Brutzer2011-2.pdf


1
ти навмисно зробив цей КВ?
Лорем Іпсум

1
Що означає "CW"?
mirror2image

Ах, вікі-питання. Я подумав, що було б хорошою ідеєю запровадити цей абсолютно новий технічний приклад, виконуючи практичні речі. Ви можете видалити його, якщо не погоджуєтесь. Також інші ppls можуть мати більший досвід роботи з цією технологією - я лише почав займатися цим.
mirror2image

CW - це питання спільноти у Вікі. Це означає, що ви не отримаєте репутації (в даному випадку 4х10 = 40) за відгуки на свою відповідь. Деякі люди навмисно роблять відповіді подібними, але частіше за все це випадково. Я повернув це для вас, так що ви отримаєте реп. Зараз 181 з 126 :)
Лорем Іпсум

5

Пам'ятайте: Є тіні (не тільки яскравість).

Мені не дуже подобається ідея від Джеймса Вебстера, оскільки це в основному зменшення роздільної здатності в кожному вимірі та порівняння зменшених зображень (також мені не подобаються пороги - вони довільні, ви повинні їх перевірити і налаштувати поки ви не отримаєте хорошу цінність і наступного дня ці значення можуть бути застарілими через різну погоду чи інші впливи на навколишнє середовище)

Але, чесно кажучи, у мене теж немає справді хорошого рішення. Моя перша ідея полягала в тому, щоб диференціювати кожне зображення на опорне зображення порожньої кімнати та запустити детектування краю на зображенні diff. Але це також виявило б тіні. Але я думаю, ти не можеш розрізняти тіні та інші об'єкти ... принаймні, я не знаю як. Але, можливо, ви зможете порівняти результат після виявлення Edge між двома кадрами, оскільки тіні здебільшого рухаються повільно (все ж виникнуть проблеми, коли машини рухаються або коли хмара рухається повз)


Ви хочете виявити щось, що раптово змінюється. Тіні не сильно змінюватимуться з однієї хвилини на іншу. Однак загальна яскравість сонця буде.
ендоліт

2
Тіні рухатимуться швидко, якщо є, наприклад, автомобіль, який рухається повз, або викидає власну тінь через вікно, або викидає тіні деяких інших предметів своїм фарою.
Філіп Вендт

4

Техніка "матричної факторизації" НЕ допоможе вам виконати свою роботу! Доповідь, яку посилається на @ mirror2image, стосується віднімання фону, але НЕ базується на "матричній факторизації".

Використання запущеного відео для виявлення рухомих предметів (будь то людина чи транспортні засоби) - активна область дослідження.

Як основний принцип, система оцінює типовий статичний фон шляхом вибірки на декількох знімках і забирає різницю енергії між вхідним зображенням на задній план. Якщо енергія значна, піксель класифікується як передній план. Такий набір переднього плану повідомляє, чи є запис об'єкта в системі.

Найкращим посиланням на ваш дослідницький документ (а також відносно простішим, якщо ви хочете реально реалізувати) було б - Система W4 знайдіть його тут, і див. Тут документ Picardi як більш детальне опитування щодо інших методів у системі.

Існує багато проблем, які стосуються проблеми:

  1. Наявність шуму створює проблеми великої неоднозначності. Підхід тут полягає у застосуванні ефективної тимчасової фільтрації та врахуванні дисперсії шуму, щоб забезпечити її захист від порогу.

  2. Наявність тіні створює неоднозначність: ні бути переднім планом, ні. Існують документи, які моделюють розрізнення кольору та інтенсивності, щоб відрізнити тінь від реального переднього плану.

  3. Фон може бути складним, як розмахуючи деревами або морем тощо.

  4. Фон може мати повільну або раптову зміну освітлення, коли раніше «вивчений» фон потім адаптується до нового.

Один з найбільш згадуваних знакових паперів, який називається Алгоритм настінних квітів, показує найкращий спосіб поєднання різних подібних сценаріїв для отримання надійного виявлення рухомих об'єктів.


2

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

Думаю, кольорова гістограма - хороший вибір для неї.

Якщо ви розділите своє зображення на ділянки і зробите окремі гістограми для цих областей, ви можете визначити положення / шлях зловмисника.


Дякую багато, я буду чекати інших рішень, якщо не зможу знайти кращого, прийму ваші. FYI, я не хочу визначати шлях зловмисника, оскільки 1 хвилини для цього недостатньо, але просто надсилання сповіщення чудово. Спасибі.

1
Будьте уважні, деякі зловмисники могли закінчити за 1 хвилину! Зробіть як можна частіші перевірки. Якщо ваша програма занадто повільна, зменшіть роздільну здатність зображення.

1
Так, насправді я планую сфотографуватися кожні 10 с, і завантажую їх лише тоді, коли я виявляю зловмисника, або щохвилини, коли проблем не виникає.

1

Взяти різницю вдвічі, тобто різницю різниць, може допомогти .. тож якщо подвійна похідна пікселів більша за поріг у деяких регіонах, тож ви можете назвати її як хтось увійшов до приміщення. Зміна яскравості дасть приблизно постійний градієнт у всьому зображенні, але прийняття гессіанських або подвійних похідних дасть хорошу вказівку на рух або про великі зміни в приміщенні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.