Обнаружение следа в лесных изображениях

30

Кто-нибудь знает о каких-либо исследованиях / работах / программном обеспечении для идентификации следа (в виде линии или кривой точка-точка) на изображении лесной сцены (с точки зрения камеры, стоящей где-то вдоль следа)?

Я пытаюсь найти алгоритм, который мог бы взять изображение, как:

альтернативный текст

и создайте маску, идентифицирующую вероятный «след», такой как:

альтернативный текст

Как видите, исходное изображение немного размыто, что является целенаправленным. Источник изображения не может гарантировать идеальную фокусировку, поэтому я должен уметь справляться с разумным количеством шума и размытости.

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

Я думал об извлечении функций SURF, но с SURF / SIFT я добился успеха только тогда, когда изображение идеально четкое и с постоянным освещением.

Я также попытался уменьшить размеры изображений и масок до гораздо меньших размеров (например, 100x75), преобразовать их в векторы 1xN и использовать их для обучения нейронной сети на основе FANN (где изображение является входным сигналом, а маска - желаемой выход). Даже при таком небольшом размере, с 1 скрытым слоем и размером входного вектора 75%, обучение заняло 6 часов, и все равно не удалось предсказать маски в тестовом наборе.

Кто-нибудь может предложить какие-либо другие методы или документы по этому вопросу?

Cerin
источник
1
Вы ничего не упомянули об этом, но контролируете ли вы получение камеры / изображения? Люди используют индекс растительности, используя изображения в ближней инфракрасной области в аналогичной ситуации (рассмотрите возможность расчета покрытия леса со спутника). Если у вас ближний инфракрасный свет, проблема решается просто.
Carlosdc
Я немного. Я снимаю изображения с помощью дешевой монокулярной камеры (веб-камеры / камеры мобильного телефона), но я не думаю, что они хранят инфракрасный свет.
Cerin
Возможно, было бы полезно использовать несколько цветовых фильтров, которые могут различать спектры растительности и грязи
эндолит
Мне любопытно, если вы попробовали байесовский подход для обучения и обнаружения. У меня был ответ, который я написал несколько дней назад, но затем удалил его, потому что я думал, что вы отклонили его после попытки. Если вы еще не рассматривали этот вариант, я был бы счастлив восстановить его.
Lorem Ipsum
@yoda, что ты имеешь в виду под байесовским подходом? Я знаком только с байесовским в применении к дискретной классификации и логическим сетям. Я не знаком с этим применительно к резюме. Я не помню, чтобы вы видели какие-либо сообщения от вас.
Серин

Ответы:

13

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

«Об удалении теней из изображений», Г.Д. Финлейсон, С.Д. Хордли, К. Лу и М.С. Дрю, IEEE Pattern Analysis and Machine Intelligence (PAMI), том 28, № 1, январь 2006 г., с.59- 68. http://www.cs.sfu.ca/~mark/ftp/Pami06/pami06.pdf

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

Удаление Тени
(источник: datageist.com )

Фактически, чтобы сделать изображение «цветности» еще одним шагом вперед, вам нужно четко различать живые и мертвые листья. Еще раз пример из бумаги:

цветность
(источник: datageist.com )

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

специалист по обработке данных
источник
12

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

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

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

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

Throwback1986
источник
Да, тропы сливаются с другими. И да, тропы очерчены особенностями грунта / гравия в том смысле, что эти особенности должны отличаться от областей, не относящихся к тропе. Я согласен, что изображение может быть сложным в некоторых разделах, но я все еще думаю, что есть достаточно информации, чтобы сделать довольно хорошее предположение о том, где находится след. Даже если вы не знакомы с этим следом, похоже, у вас не было проблем с ним (за исключением нижней левой части, что понятно).
Действительно, я могу сделать довольно хорошее предположение, как границы следа. Но, боюсь, я полагаюсь на больше информации, чем представлено на исходном изображении. Я «знаю», что такое тропа - вероятно, потому что я построил модель или шаблон характерных особенностей, включающих тропу: через непосредственный опыт или видя четко определенные следы на фотографиях и т. Д. Подводя итог: при распознавании следа в Исходное изображение я рисую гораздо больше, чем то, что наблюдаю на исходном изображении.
Есть некоторые характеристики тропы, которые может использовать система зрения: предположительно, мы можем предположить, что тропа представляет собой свободное, судоходное пространство. Таким образом, элементы дерева, куста и породы могут быть классифицированы как «не тропа». Возможно, анализ текстуры поможет разобраться в этом? Я не уверен, однако: земля под деревьями (от середины к верху слева) очень похожа на след.
Моей первой идеей было бы обратиться к преобразованиям LU или Eigen, которые дают высокий отклик, когда текстура очень грубая. Тем не менее, здесь основной отличительной чертой след / не след, кажется, цвет. Поэтому, возможно, преобразование его в цветовое пространство HSV и создание маски из пикселей, имеющих «землистый» оттенок - коричневатого или охристого, - дает приблизительную оценку.
АруниРЦ
12

Там нет единого алгоритма, который волшебным образом обнаруживает следы в случайном изображении. Вам нужно будет внедрить программу, основанную на машинном обучении, и «обучить» ее для обнаружения следов. Не вдаваясь в подробности, вот примерный план того, что вы будете делать в рамках контролируемого подхода к обучению.

  1. Вам понадобится набор «обучающих примеров», под которыми я подразумеваю несколько изображений трасс в разных средах, в которых вы (руководитель) пометили то, что считается «следом», а что означает фон «лес». Вы разбиваете изображения на более мелкие участки (обычно 8x8) и преобразуете их в «пространство признаков», беря DCT (дискретное косинусное преобразование) блоков. В этом случае DCT каждого блока дает 64-элементный «вектор признаков».
  2. Определяя пространство пространственных объектов , набор функций (подмножество вашего 64-точечного вектора пространственных объектов) и пространство классов с классами и , вы вычисляете из ваших тренировочных наборов:XУ у 1 = т г я л у 2 = F Ø R E сек тxYy1=traily2=forest

    • класс условных распределений
      • PX|Y(x|trail) , условная плотность для объектов, когда класс является . trail
      • PX|Y(x|forest) , условная плотность для объектов, когда класс является . forest
    • класс вероятностей или предшествующий
      • PY(trail) , вероятность обнаружения в блокеtrail
      • PY(forest) , вероятность нахождения в блокеforest
  3. При этом вы проверяете свое изображение (снова разбивая его на более мелкие кусочки) и вычисляете апостериорную вероятность. Используя теорию решений Байеса, вы бы определили свои бинарные (в данном случае) критерии выбора

    y~i(x)=argmaxyiPX|Y(x|yi) PY(yi)
    где вы назначаете каждый блок тому классу, который имеет наибольшую апостериорную вероятность. Это приведет к вашей двоичной маске.

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

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

введите описание изображения здесь введите описание изображения здесь

Чтобы узнать больше о машинном обучении, вы можете посмотреть несколько учебников. Один из хорошо известных и часто рекомендуемых учебников в этой области:

Т. Хасти, Р. Тибширани и Дж. Фридман, Элементы статистического обучения: сбор данных, вывод и прогнозирование. 2-е изд., Springer-Verlag (2008)

который теперь доступен как бесплатный PDF по предоставленной ссылке. Еще одна достойная книга:

RO Duda, PE Hart and DG Stork, классификация образцов , 2-е издание, John Wiley & Sons (2001)

Лорем Ипсум
источник
1
На этой ноте я хотел бы отметить ml-class.org, который является отличным введением в машинное обучение.
bjoernz
Интересный метод. Однако, когда вы говорите, что Py (след) и Py (лес) являются «вероятностью обнаружения следа на всей картине», вы подразумеваете вероятность нахождения их в блоке 8x8 или на всем изображении? Если бы весь образ, я предположил бы, что оба они будут на 100%, так как все тренировочные образы будут где-то иметь оба.
Cerin
@Cerin: Извините, под Py (след) я имею в виду вероятность найти его в блоке. Таким образом, это будет сумма всех блоков, которые следуют по общему количеству блоков во всем изображении. Я отредактировал это, чтобы исправить это
Lorem Ipsum
Как бы вы определили пространство признаков X? Вы бы использовали что-то вроде кластеризации K-Means, чтобы уменьшить размерность 64-точечных векторов объектов до 10 объектов?
Cerin
@Cerin Да, K-means - это один из распространенных подходов к уменьшению размерности.
Лорем Ипсум
5

Это похоже на проблему для сегментации текстуры (а не цветовой сегментации). Существует много методов,

они часто используют вейвлеты Габора, например: http://note.sonots.com/SciSoftware/GaborTextureSegmentation.html

Сегментация на основе суперпикселей http://ttic.uchicago.edu/~xren/research/superpixel/

и аналогичная сегментация разреза графа http://en.wikipedia.org/wiki/Graph_cuts_in_computer_vision

вот обзор вики http://en.wikipedia.org/wiki/Segmentation_(image_processing)

mirror2image
источник
Сегментация текстур Габора, кажется, хороша!
nkint