Розпізнавання водних шляхів на повітряній фотографії - полігони із зображень виявлення країв


9

Я намагаюся розпізнати водні шляхи по аерофотознімкам (скажімо з Google Maps). Органи місцевого самоврядування часто мають дані ГІС, які говорять про те, де знаходяться водні шляхи (і дороги, будівлі тощо), але дані про води в них часто є дещо неточними, і ми могли б вдосконалити їх за допомогою аерофотознімання. Отже, у нас вже є деякі дані, яким не завжди можна довіряти.

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

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

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

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

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

Чи відомий спосіб дістати з результату алгоритму виявлення ребер до приємного набору закритих багатокутників? Або будь-які інші поради, як напасти на цю проблему, якщо є кращий спосіб?


1
Sidenote: Майте на увазі, що ліцензія google не дозволяє цього робити! Та сама проблема має Openstreetmap . OSM має угоду використовувати зображення Bing.
PiTheNumber

Відповіді:


6

Це важко зробити лише з інформацією про колір. Варіації кольорів між (або навіть усередині) повітряними та супутниковими зображеннями можуть бути величезними. В ідеалі вам потрібні гіперспектральні або принаймні інфрачервоні зображення ( див. Цей документ ).

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

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

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