Нужно написать детектор движения, работающий с Web-камерой. Интересен сам алгоритм обнаружения движения.
А если есть исходники на Visual C, то совсем хорошо!
Заранее спасибо.
Здравствуйте vobla, Вы писали:
V>Нужно написать детектор движения, работающий с Web-камерой. Интересен сам алгоритм обнаружения движения.
Действительно
Ну первое что приходит в голову это берешь текущей и предидущий кадры и попиксельно вычетаешь если сумма модулей большая то есть движение. Можно еще какиенибудь фильтры использовать.
ЗЫ это плохая сигнализация в темноте не работает может сработать при изменении времени суток, наверняка сработает от солнечного зайчика...и вобще низкая частота обновления и плохая чувствительность к цветам...
... << RSDN@Home 1.0 alpha 12 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте vobla, Вы писали:
V>В том-то и дело, что от освещенности не должно зависеть. В идеале нужно как-то выделять движущиеся объекты.
Смена локальной освещенности (луч фонарика, тень), а также резкая смена освещенности (включили-выключили свет) — это тоже тревожный симптом.
Тогда нужно игнорировать изменение освещенности в небольших пределах.
-- выравнивать освещенность кадра (так, чтобы средняя яркость была одинаковой для всех кадров, или хотя бы для пары сравниваемых)
-- находить контуры (градиенты), делать их предельно контрастными и сравнивать уже их
Здравствуйте vobla, Вы писали:
V>В том-то и дело, что от освещенности не должно зависеть. В идеале нужно как-то выделять движущиеся объекты.
Т.е. чтоб если солнышко за тучку зашло, алгоритм не кричал: "Оно движется!!" ?
Ну если так, можете выделять одноцветные (примерно) области и смотреть, если они остались примерно одноцветными, то движения не было. Если какие-то одноцветные области перестали быть одноцветными, то именно они и сдвинулись (определить, куда именно — это уже посложнее будет).
Вообще, про всякие алгоритмы анализа изображений, распознавания и т.д. можете отсюда скачать и почитать (это наши, российские технологии, использовались в космической промышленности и т.д. ). Там же есть про то, как аппроксимировать произвольное изображение кусочно-постоянным.
Нужно как-то кроме всего прочего учесть специфику веб-камеры: постоянно меняющееся освещённость. (ну подстрока у них у большинства такая: автоматическая! ). Так что можно делать усреднение по частям кадра, например.
Жизнь, как игра —
идея паршивая,
графика обалденная...
Здравствуйте Micker, Вы писали:
M>Нужно как-то кроме всего прочего учесть специфику веб-камеры: постоянно меняющееся освещённость. (ну подстрока у них у большинства такая: автоматическая! ). Так что можно делать усреднение по частям кадра, например.
А это смотря как она подстраивается. Если среднюю яркость держит постоянной — то да. Вообще, лучше всего все эти фичи отключить Чем э... девственнее данные — тем лучше, обычно все эти выравнивания, фильтры и т.д. только приводят к потере полезной информации.
И еще, если камера не закреплена и движение картинки может быть вызвано движением самой камеры, то это тоже надо учесть и сначала совместить кадры.
Здравствуйте Atilla, Вы писали:
A>И еще, если камера не закреплена и движение картинки может быть вызвано движением самой камеры, то это тоже надо учесть и сначала совместить кадры.
Представляю ситуацию: дома со стола на собственном шнурке свисая, болтается незакрепленная камера.
открыт балкон или форточка, и сквозняком ее периодически раскачивает.
а она, как пьяная, судорожно пытается определить, толи асвальт шатается, толи это ее болтает, толи кто-то ходит рядом...
Здравствуйте DSD, Вы писали:
DSD>Представляю ситуацию: дома со стола на собственном шнурке свисая, болтается незакрепленная камера. DSD>открыт балкон или форточка, и сквозняком ее периодически раскачивает. DSD>а она, как пьяная, судорожно пытается определить, толи асвальт шатается, толи это ее болтает, толи кто-то ходит рядом...
Асфальт поднялся и стукнул по лбу. Пришлось спать стоя
Здравствуйте vobla, Вы писали:
V>Нужно написать детектор движения, работающий с Web-камерой. Интересен сам алгоритм обнаружения движения. V>А если есть исходники на Visual C, то совсем хорошо!
Думаю что стоит покопать openCV
Алгоритм нахождения оптического потока в ту же кассу (кстати, он вроде бы в openCV реализован)
Здравствуйте vobla, Вы писали:
V>Нужно написать детектор движения, работающий с Web-камерой. Интересен сам алгоритм обнаружения движения.
...
Есть такая книга — только старая очень (в букинистике или библиотеке может быть)
Клингман Э. Проектирование специализированных микропроцессорных систем.: Пер. с англ. -М.: Мир, 1985
Там, в качестве примера, идёт разработка головки наведения ракеты на основе видеокамеры.
В качестве начального ознакомления с этой областью знаний — очень неплохо.
Добавьте еще детектор звука. А основной вывод делайте на основе суммарных данных.
Тогда и асфальт вставать не будет и спать стоя не придется и солнечные зайчики пофиг.
Здравствуйте, vobla, Вы писали:
V>Нужно написать детектор движения, работающий с Web-камерой. Интересен сам алгоритм обнаружения движения. V>А если есть исходники на Visual C, то совсем хорошо! V>Заранее спасибо.
Есть такая идея, но это только мое предположение:
Как и предлагали сразу, можно искать различия в пикселах между кадрами, но естественно в примитивном исполнении эта идея не очень удачна. Но эту идею можно попробовать развить в следующих напрвалениях:
1) переводить RGB пикселы в другую цетовую модель, например YUV, таким образом может получиться выделять изменения яркости изображения и отличать изменения яркости от движения
2) группировать "подвижные" пикселы по расстоянию между точками, чтобы распознавать движение достаточно крупного объекта(группы точек)
Здравствуйте, Micker, Вы писали:
M>Вообще классно, когда человеки не изобретьают свои велосипеды, а юзают то, что было раньше сделано!
Ну я бы не стал столь категорично... DSP — эта не та вещь, где уже давно сказали последнее слово. QuickSort Вы наверное лучше не сделаете, чем в STL, да и детерминант не посчитаете лучше чем в LAPAC (если суперкрутые ассемблерные инструкции не юзать и хитрые особенности проца)... а вот детектор движения — вполне.
Здравствуйте, Atilla, Вы писали:
A>Ну я бы не стал столь категорично... DSP — эта не та вещь, где уже давно сказали последнее слово. QuickSort Вы наверное лучше не сделаете, чем в STL, да и детерминант не посчитаете лучше чем в LAPAC (если суперкрутые ассемблерные инструкции не юзать и хитрые особенности проца)... а вот детектор движения — вполне.
Как мне кажется, несмотря на близкородственность отраслей, ситуации в DSP и ImageProcessing (Video Processing) емного различны. В первой выработан четкий остов науки, есть точные методы, теоремы и т.д. В Image Processing дела похуже (назовите какой нибудь принципиальный учебник по DIP? тридцатилетней давности Прэтт?).
И одна из причин разрыва — отсутсвие поступательного движения в DIP. Разработанно уже множество алгоритмов, на каждую задачу по куче, пора их объединять, что бы получить что-то новое. Можно заниматься разработкой алгоритма своего Motion Detector. А можно взять чужой, понять чем он плох, изменить и пойти дальше, использовать оставшееся время на изобретение чего-то чего ещё нет. Не ужели не согласны?
Жизнь, как игра —
идея паршивая,
графика обалденная...
Здравствуйте Micker, Вы писали:
M>Здравствуйте, Atilla, Вы писали:
A>>Ну я бы не стал столь категорично... DSP — эта не та вещь, где уже давно сказали последнее слово. QuickSort Вы наверное лучше не сделаете, чем в STL, да и детерминант не посчитаете лучше чем в LAPAC (если суперкрутые ассемблерные инструкции не юзать и хитрые особенности проца)... а вот детектор движения — вполне.
M> M>Как мне кажется, несмотря на близкородственность отраслей, ситуации в DSP и ImageProcessing (Video Processing) емного различны. В первой выработан четкий остов науки, есть точные методы, теоремы и т.д. В Image Processing дела похуже (назовите какой нибудь принципиальный учебник по DIP? тридцатилетней давности Прэтт?).
M>И одна из причин разрыва — отсутсвие поступательного движения в DIP. Разработанно уже множество алгоритмов, на каждую задачу по куче, пора их объединять, что бы получить что-то новое. Можно заниматься разработкой алгоритма своего Motion Detector. А можно взять чужой, понять чем он плох, изменить и пойти дальше, использовать оставшееся время на изобретение чего-то чего ещё нет. Не ужели не согласны?
в ремени на изучение и модификацию чужого алгоритма уйдет гораздо больше чем на разработку своего, а в остально согласен...
... << RSDN@Home 1.0 alpha 12 >>
— сколько программистов надо чтобы заменить сгоревшую лампочку?
— сколько не бери, а лампочку не поменять — проблема аппаратная, программным путем не решается...