Определение сходства обработанных изображений с обнаружением кромки - PullRequest
3 голосов
/ 25 апреля 2011

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

Теперь это не так, позвольте мне дать несколько определений:

Цель проекта: Целью проекта, как и многие другие, стремились достичь в различных вопросах SO (многие из которых были очень полезны для меня в ходе этих усилий), является выявление будет ли место для парковки заполнено или доступно, в конечном итоге сообщая об этом обратно пользователю (в идеале через iPhone или Droid или другое мобильное приложение для простоты использования - этот аспект быстро оказался вне сферы моих усилий из-за нехватки времени).

Используемые инструменты: Я интенсивно использовал ресурсы библиотеки AForge.Net, которая предоставила мне все строительные блоки для объединения проекта с точки зрения захвата видео с IP-камеры, применения фильтров к изображениям и в конечном итоге достижения цели. обнаружения. В результате вы будете знать, что я выбрал программирование на C #, в основном из-за простоты использования для начинающих. Другие варианты включали MATLAB / C ++, C ++ с OpenCV и другие альтернативы.

Проблема

Здесь я столкнулся с проблемами. Ниже представлено изображение, предварительно обработанное в лаборатории обработки изображений AForge. Последовательность использованных фильтров и процессов была следующей: «Оттенки серого», «Выравнивание гистограммы», «Обнаружение краев Собела» и, наконец, «Орешу Трэшхолдинг» (хотя я не уверен, что нужен последний шаг).

http://i.stack.imgur.com/u6eqk.jpg

Как видно из изображения невооруженным глазом, конечно, есть последовательности обнаруженных краев, которые явно являются припаркованными автомобилями в местах, которые я наблюдаю с помощью камеры. Эти вагоны четко определены по шаблону осветленных колес, по типу «двойной железнодорожной колеи», которая, по существу, представляет внешнюю окантовку боковых окон, и даже по контуру номерного знака в данном случае. В частности, в продолжение проекта выбранная камера будет PTZ, чтобы покрыть как можно большую часть блока, и поэтому я просто хотел бы сосредоточиться на боковых особенностях автомобиля (исключая такие факторы, как номерной знак) , Также могут быть рассмотрены такие элементы, как прямоугольник люка в крыше, но, очевидно, это не универсальная особенность автомобилей, в то время как общий контур окна таков.

Мы все можем видеть, что в этих моделях есть различия, которые, конечно, зависят от марки и модели автомобиля. Но, как правило, эта последовательность не только приводит к успешному извлечению нужных объектов, но и исключает дорогу из поля зрения (важно, поскольку я намерен использовать цвет дороги в качестве «первого лакмусового теста», если вы захотите обнаружить пустое пространство ... если я определяю уровень серого в соответствии с данными для дороги, особенно если в регионе не обнаружено краев, я чувствую, что могу смело предположить, что это пустое пространство). У меня такой вопрос, и, надеюсь, он достаточно общий, чтобы быть практически полезным для других на сайте:

Целенаправленный вопрос:
Есть ли способ взять сегмент изображения (с помощью обрезки), а затем сравнить обнаруженную последовательность краев с будущими новыми кадрами с камеры? Точнее говоря, есть ли способ сделать это, допуская или фактически создавая порог допуска для незначительных различий в краях?

Личные мысли / Мозговая атака на вопрос :
- Я уверен, что есть способ буквально сравнивать пиксель за пикселем - обрезать до прямоугольника вокруг ваших краев, а затем скользить обрезанное изображение через новый обработанный кадр для сравнения попиксельно, но это неособенно, если у вас нет точного соответствия вашим обнаруженным краям.

Мы ценим любую помощь, и я с радостью уточняю, когда это необходимо.

Ответы [ 2 ]

3 голосов
/ 25 апреля 2011

Позвольте мне сделать попытку.

У вас есть два изображения.Давайте назовем их BeforePic и AfterPic.Для каждого из этих двух изображений у вас есть ROI (интересующий прямоугольник) - AKA обрезанный сегмент.

Вы хотите увидеть, сильно ли AfterPic.ROI отличается от BeforePic.ROI.Под «очень разными» я подразумеваю, что разница больше некоторого порога.

Если это действительно ваша проблема, то ее следует разделить на три части:

  1. get BeforePic иAfterPic (и ROI для каждого).
  2. Переведите абстрактную концепцию разницы изображения / края в числовую.
  3. сравните разницу с некоторым порогом.

Первая часть не является частью вашего вопроса, поэтому я ее проигнорирую.Последняя часть основана в основном на поиске правильного порога.Опять выходит за рамки вопроса.Вторая часть - то, что я думаю, является сердцем вопроса (я надеюсь, что я здесь не совсем).Для этого я бы использовал алгоритм ShapeContext (В PDF лучше всего реализовать его до раздела 3.3, так как он становится слишком надежным для ваших нужд с 3.4 и выше).

Shape Context - это алгоритм сопоставления изображений, использующий края изображений с большой вероятностью успеха.Реализация этого была моим финальным проектом, и он кажется идеальным (без каламбура) для вас.Если у вас хорошие края, и ваш ROI точен, это вас не подведет.

Может потребоваться некоторое время для реализации, но если все сделано правильно, это будет работать идеально для вас.Имейте в виду, что плохая реализация может работать медленно, и я видел наихудший случай 5 секунд на изображение.Хорошая (но не идеальная) реализация, с другой стороны, займет менее 0,1 секунды для каждого изображения.

Надеюсь, это поможет, и удачи!

Редактировать: Я нашел реализация ShapeContext в C # @ CodeProject , если он представляет интерес

2 голосов
/ 25 апреля 2011

Я часто сталкиваюсь с проблемами машинного зрения в своей работе, и самое важное, что я могу вам сказать, это то, что чем проще, тем лучше.Чем сложнее подход, тем больше вероятность того, что непредвиденные граничные случаи приведут к сбоям.В промышленности мы обычно решаем эту проблему, максимально упрощая условия, устанавливая жесткие ограничения, ограничивающие количество вещей, которые нам необходимо учитывать.Конечно, студенческий проект отличается от отраслевого проекта, так как вам необходимо продемонстрировать понимание конкретных методов, которые могут быть важнее, чем надежное решение проблемы, которую вы решили взять.

Несколько вещей для рассмотрения:

  1. Есть ли заранее определенные парковочные места на улице?Есть ли у вас возможность вручную предварительно определить зоны парковки, которые будут наблюдаться камерой?Это может значительно упростить проблему.

  2. Разрешено ли вам давать неправильные результаты, когда автомобили припаркованы незаконно (например, занимая более одного места)?

  3. Разрешено ли вам давать неправильные результаты при непредвиденных условиях окружающей среды, таких как мусор, ямы с водой, вода в бассейне или снег в космосе?

  4. Вам нужноподдержка всех категорий транспортных средств (легковые автомобили, грузовики с плоской платформой, фургоны, грузовики для доставки, мотоциклы, мини-электромобили, штативные автомобили,?)

  5. Вам разрешено делать базовый снимокулица без автомобилей?

Что касается сравнения двух наборов ребер, вероятно, наиболее надежный подход известен как поиск геометрической модели (математически описывающие представляющие интерес ребра в виде серии 'edgels ', объединяя их в цепочки и сравнивая геометрию), но для вашего приложения это является чрезмерным убийством.Я бы больше смотрел на пороговые значения числа «краевых пикселей», присутствующих в зоне парковки или отличающихся от базового изображения (однако следует проявлять осторожность в отношении смещения изображения, поскольку расширение материала из-за изменений температуры наружного воздуха может привести к тому, что поле обзораслегка измениться из-за механического перемещения камеры.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...