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


30

Хтось знає про будь-які дослідження / документи / програмне забезпечення для виявлення сліду (як кривої або кривої точки до точки) на зображенні лісової сцени (з точки зору камери, що стоїть десь уздовж стежки)?

Я намагаюся знайти алгоритм, який би міг сфотографуватись так:

alt текст

і створити маску, ідентифікуючи ймовірний "слід", наприклад:

alt текст

Як бачите, оригінальне зображення трохи розмите, що є цілеспрямованим. Джерело зображення не може гарантувати ідеальне фокусування, тому мені потрібно вміти обробляти достатню кількість шуму та розмитості.

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

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

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

Чи може хтось запропонувати якісь інші методи чи документи з цього питання?


1
Ви нічого не згадали про це, але чи контролюєте ви фотоапарат / зображення? Люди використовують індекс вегетації, використовуючи близькі інфрачервоні зображення в подібній ситуації (розглянемо обчислення лісового покриття із супутника). Якщо у вас поруч інфрачервона, проблема вирішується прямо вперед.
carlosdc

Я так, дещо. Я знімаю знімки за допомогою дешевої монокулярної камери (веб-камери / камери мобільного телефону), але я не думаю, що вони зберігають інфрачервоні.
Серін

Використання кількох кольорових фільтрів, які можуть розрізняти спектри рослинності та бруду, можливо, буде корисним
endolith

Мені цікаво, якщо ви спробували байєсівський підхід для тренування та виявлення. У мене була відповідь, яку я написав кілька днів тому, але потім її видалили, тому що я вважав, що ви звільнили її після спроби. Якщо ви ще не розглядали цей варіант, я би радий його відновити.
Лорем Іпсум

@yoda, Що ви маєте на увазі під байєсівським підходом? Мені добре знайомий Баєсій, як це застосовується до дискретної класифікації та логічних мереж. Я не знайомий із тим, як він застосовується до резюме. Я не пам’ятаю, щоб бачив ваші публікації.
Серін

Відповіді:


13

Це може бути недостатньо саме по собі, але оскільки одна з проблем пов'язана з варіаціями освітлення, може допомогти етап попередньої обробки видалення тіней. Техніка, про яку я думаю, описана в наступній роботі:

"Про видалення тіней із зображень", Г.Д. Фінлайсон, С.Д. Гордлі, К. Лу та М.С. Дрю, Аналіз візерунків IEEE та машинний інтелект (PAMI), Vol.28, No.1, Jan, 2006, pp.59- 68. http://www.cs.sfu.ca/~mark/ftp/Pami06/pami06.pdf

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

Видалення тіней
(джерело: datageist.com )

Насправді, зробити процес на крок далі, щоб створити «хроматичність» зображення, може бути те, що вам потрібно чітко розрізнити між живим та мертвим листям. Ще раз приклад із статті:

Хроматичність
(джерело: datageist.com )

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


12

Я не вірю, що у вас є достатньо інформації у вихідному зображенні для створення зображення маски. Ви можете почати з сегментації за кольором, тобто зелений не слід, сірий / коричневий. Однак є "сірі / коричневі області" на "кордонах стежки", які не представлені у вашій масці. (Дивіться нижній лівий квадрант вихідного зображення.)

Надана вами маска передбачає структурні обмеження, які не видно у вихідному зображенні: наприклад, можливо, ваші сліди мають фіксовану ширину - тоді ви можете використовувати цю інформацію для обмеження попередньої маски, повернутої вашим розпізнавачем шаблонів.

Продовження теми структури: Чи зливаються стежки з іншими? Чи визначені стежки з певними ознаками ґрунту / гравію? Як людина (це досить добре в розпізнаванні шаблону!), Мені кидають виклик функції, показані в нижньому лівому квадранті: я бачу сірі / коричневі області, які я не можу знизити як "слід". Можливо, я міг би зробити це переконливо, якби мав більше інформації: карта та грубо відоме місце розташування, особистий досвід на цьому сліді чи, можливо, послідовність зображень, що ведуть до цього моменту, - можливо, цей погляд не настільки неоднозначний, якщо впізнавальник "знає "що призвело до цієї сцени.

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


Так, стежки зливаються з іншими. І так, стежки розмежовані за ознаками ґрунту / гравію тим, що ці риси повинні відрізнятися від ділянок, що не належать до стежок. Я погоджуюся, що зображення може бути складним у деяких розділах, але я все ж думаю, що є достатньо інформації, щоб досить гадати, де знаходиться слід. Незважаючи на те, що ви не знайомі з цією стежкою, це здається, що у вас не було проблем із цим (за винятком нижньої лівої області, що зрозуміло).

Дійсно, я можу зробити досить гарна здогадка, як межі стежки. Але, боюся, я покладаюся на більше інформації, ніж представлено у вихідному зображенні. Я "знаю", що таке слід - мабуть тому, що я створив модель або шаблон чільних особливостей, що містять стежку: за допомогою прямого досвіду, або бачення чітко визначених стежок на малюнках тощо. Підводячи підсумок: розпізнавання сліду в вихідне зображення, я малюю набагато більше, ніж те, що я спостерігаю у вихідному зображенні.

Є деякі характеристики сліду, якими може бачити система зору: імовірно, ми можемо вважати, що стежка являє собою вільний, навігаційний простір. Таким чином, особливості дерева, куща та скелі можна віднести до категорії «не слід». Можливо, аналіз текстури може допомогти розпізнати їх? Я не впевнений, хоча земля під деревами (посередині зліва вгорі) виглядає досить схоже на стежку.

Моєю першою ідеєю було б звернутися до перетворень LU або Eigen, які дають високу реакцію, коли текстура дуже шорстка. Однак тут головна відмінна риса між слідом / непрохідною стежкою здається кольором. Тож можливо перетворення його в кольоровий простір HSV та створення маски з пікселів, що мають "земляний" відтінок - коричневого або охра - дали б приблизну оцінку.
AruniRC

12

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

  1. Вам знадобиться набір "прикладів тренувань", під якими я маю на увазі кілька знімків стежок у різних середовищах, на яких ви (керівник) позначили, що вважається "стежка" та що "фоном" лісу. Ви розбиваєте зображення на більш дрібні ділянки (як правило, 8х8) і перетворюєте їх на "простір характеристик", беручи за допомогою DCT (дискретного перетворення косинусу) блоків. DCT кожного блоку в цьому випадку дає 64 "точковий вектор".
  2. ХхYу1=тrаiлу2=fоrест

    • умовні розподіли класу
      • ПХ|Y(х|тrаiл)тrаiл
      • ПХ|Y(х|fоrест)fоrест
    • ймовірності класу або попередні
      • ПY(тrаiл)тrаiл
      • ПY(fоrест)fоrест
  3. Цим ви випробовуєте своє зображення (знову ж таки, розбиваючи його на більш дрібні шматки) і обчислюєте задню ймовірність. Використовуючи теорію рішень Байєса, ви б визначили свої бінарні (у даному випадку) критерії відбору щось подібне

    у~i(х)=аргмаксуiПХ|Y(х|уi) ПY(уi)

Зауважимо, що це дуже спрощений огляд підходу. Можна взяти до уваги кілька речей, і найважливіша з них - це вибір правильного набору функцій для вашої проблеми. Ви також можете робити більш складні речі, як-от використовувати моделі сумішей та оцінки щільності на основі ядра, але все це занадто детально і вимагає багато часу, щоб написати відповідь.

Для мотивації та підтвердження того, що цей підхід варто спробувати, ось приклад із того, що я робив давно, як домашнє завдання курсу, яке дуже схоже на те, що ви намагаєтесь досягти. Метою було виявити тварину з фонової рослинності (зображення ліворуч). На малюнку праворуч зображено двійкову маску, отриману після "навчання" розрізняти передній план і фон.

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

Щоб дізнатися більше про машинне навчання, ви можете переглянути кілька текстових книг. Один з добре відомих і часто рекомендованих підручників у цій галузі:

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

який тепер доступний як безкоштовний PDF-файл за наданим посиланням. Ще одна гідна книга:

Р.Дуда, П.Е. Харт і Д.Г. Лелека, Класифікація візерунків , 2-е видання, Джон Вілей і сини (2001)


1
У цій записці я хотів би зазначити ml-class.org, який є чудовим введенням у машинне навчання.
Бьорнц

Цікавий метод. Однак, якщо ви говорите, що Py (слід) та Py (ліс) є "ймовірністю знайти слід у всій картині", ви маєте на увазі ймовірність їх знаходження в блоці 8x8 або всьому зображенні? Якби все зображення, я думаю, що обидва вони будуть на 100%, оскільки всі навчальні зображення мають десь обидва.
Серін

@Cerin: Вибачте, під Py (слід) я маю на увазі ймовірність знайти його в блоці. Таким чином, це була б загальна кількість всіх блоків, які мають сліди за загальною кількістю блоків у всій картині. Я відредагував це, щоб виправити це
Лорем Іпсум,

Як би ви визначили простір функцій X? Чи використовуєте ви щось на зразок кластеризації K-Means, щоб зменшити розмірність 64-точкових функціональних векторів до чогось типу 10 функцій?
Серін

@Cerin Так, K-засоби - це один із поширених підходів до зменшення розмірності.
Лорем Іпсум


5

Це виглядає як проблема сегментації текстури (а не кольорова сегментація) Існує маса методів,

вони часто використовують вейвлети Gabor, як-от 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)


сегментація текстур gabor здається приємною!
nkint
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.