Я надеялся, что смогу получить некоторые рекомендации от сообщества stackoverflow относительно дилеммы, с которой я столкнулся для своего старшего проекта. Прежде всего, я хочу заявить, что я начинающий программист, и я уверен, что некоторые из вас быстро скажут мне, что этот проект был над моей головой. Я быстро осознал, что это, вероятно, правда.
Теперь это не так, позвольте мне дать несколько определений:
Цель проекта:
Целью проекта, как и многие другие, стремились достичь в различных вопросах SO (многие из которых были очень полезны для меня в ходе этих усилий), является выявление
будет ли место для парковки заполнено или доступно, в конечном итоге сообщая об этом обратно пользователю (в идеале через iPhone или Droid или другое мобильное приложение для простоты использования - этот аспект быстро оказался вне сферы моих усилий из-за нехватки времени).
Используемые инструменты:
Я интенсивно использовал ресурсы библиотеки AForge.Net, которая предоставила мне все строительные блоки для объединения проекта с точки зрения захвата видео с IP-камеры, применения фильтров к изображениям и в конечном итоге достижения цели. обнаружения. В результате вы будете знать, что я выбрал программирование на C #, в основном из-за простоты использования для начинающих. Другие варианты включали MATLAB / C ++, C ++ с OpenCV и другие альтернативы.
Проблема
Здесь я столкнулся с проблемами. Ниже представлено изображение, предварительно обработанное в лаборатории обработки изображений AForge. Последовательность использованных фильтров и процессов была следующей: «Оттенки серого», «Выравнивание гистограммы», «Обнаружение краев Собела» и, наконец, «Орешу Трэшхолдинг» (хотя я не уверен, что нужен последний шаг).
http://i.stack.imgur.com/u6eqk.jpg
Как видно из изображения невооруженным глазом, конечно, есть последовательности обнаруженных краев, которые явно являются припаркованными автомобилями в местах, которые я наблюдаю с помощью камеры. Эти вагоны четко определены по шаблону осветленных колес, по типу «двойной железнодорожной колеи», которая, по существу, представляет внешнюю окантовку боковых окон, и даже по контуру номерного знака в данном случае. В частности, в продолжение проекта выбранная камера будет PTZ, чтобы покрыть как можно большую часть блока, и поэтому я просто хотел бы сосредоточиться на боковых особенностях автомобиля (исключая такие факторы, как номерной знак) , Также могут быть рассмотрены такие элементы, как прямоугольник люка в крыше, но, очевидно, это не универсальная особенность автомобилей, в то время как общий контур окна таков.
Мы все можем видеть, что в этих моделях есть различия, которые, конечно, зависят от марки и модели автомобиля. Но, как правило, эта последовательность не только приводит к успешному извлечению нужных объектов, но и исключает дорогу из поля зрения (важно, поскольку я намерен использовать цвет дороги в качестве «первого лакмусового теста», если вы захотите обнаружить пустое пространство ... если я определяю уровень серого в соответствии с данными для дороги, особенно если в регионе не обнаружено краев, я чувствую, что могу смело предположить, что это пустое пространство). У меня такой вопрос, и, надеюсь, он достаточно общий, чтобы быть практически полезным для других на сайте:
Целенаправленный вопрос:
Есть ли способ взять сегмент изображения (с помощью обрезки), а затем сравнить обнаруженную последовательность краев с будущими новыми кадрами с камеры? Точнее говоря, есть ли способ сделать это, допуская или фактически создавая порог допуска для незначительных различий в краях?
Личные мысли / Мозговая атака на вопрос :
- Я уверен, что есть способ буквально сравнивать пиксель за пикселем - обрезать до прямоугольника вокруг ваших краев, а затем скользить обрезанное изображение через новый обработанный кадр для сравнения попиксельно, но это неособенно, если у вас нет точного соответствия вашим обнаруженным краям.
Мы ценим любую помощь, и я с радостью уточняю, когда это необходимо.