2011-04-25 3 views
3

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

Теперь это, что это из пути, позвольте мне дать некоторые определения: Цель

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

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

Проблема

Вот где я столкнулся с проблемами. Ниже приведено изображение, которое было предварительно обработано в Лаборатории обработки изображений AForge. Последовательность фильтров и используемых процессов была: Оттенки серого, Уравнивание гистограммы, Обнаружение края Sobel и, наконец, Otsu Threshholding (хотя я не уверен, что последний шаг необходим).

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

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

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

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

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

Вся помощь приветствуется, и я более чем счастлив прояснить по мере необходимости.

+0

Извините, но я не могу понять этот вопрос из-за слишком большой информации (и я не могу сказать, что актуально, а что нет). Возможно, я медленный, но я думаю, вы должны сосредоточить свой вопрос. – Neowizard

+0

Пробовал предоставить немного разъяснений. Как вы можете видеть, я склоняюсь к слову. –

ответ

3

Позвольте мне сделать снимок.

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

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

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

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

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

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

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

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

Edit: я нашел implementation of ShapeContext in C# @ CodeProject, если это какой-либо интерес

+0

@Neowizard, поскольку мы находимся на тему сходства изображений, будет ли подход на основе собственных значений быстрее, поскольку OpenCV обеспечивает простые реализации? Первой мыслью было бы получить собственные значения обоих изображений и найти корреляцию между ними. Идентичный означает коэффициент корреляции, близкий к единице. Можно определить экспериментальный порог, в соответствии с которым отклоненные изображения будут отклонены. – AruniRC

+0

[ссылка на статью по теме] (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.84.5822&rep=rep1&type=pdf) – AruniRC

+0

Это первый раз, когда я слышу об этом подходе, основанном на собственных значениях для распознавания объектов, но после перехода на связанную статью я все еще не уверен, что это даст хорошие результаты для исходной проблемы. Обнаружение дефектов представляет собой другую проблему в CV, и поэтому я не уверен в этом. С другой стороны, это реализовано (и, вероятно, оптимизировано) в OpenCV, и это дает ему много кредитов. Слишком мне кажется, что это солидный подход и заслуживает эксперимента. Если он дает хорошие результаты, и нет причин попробовать другой. – Neowizard

2

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

Несколько вещей, чтобы рассмотреть следующие вопросы:

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

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

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

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

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

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

+0

Дэн, спасибо за ваши идеи и помощь. Многие из ваших «моментов, которые следует учитывать» - это вещи, которые я уже начал рассматривать, думать или исследовать, но вы назвали ряд полезных вопросов и стратегий для рассмотрения, некоторые из которых определенно вошли в мой окончательный дизайн и код , Мне жаль, что я не смогу дать вам и Neowizard приемлемый ответ, поскольку вы оба заслуживаете этого из-за полезной информации, которую вы предоставили. –

Смежные вопросы