Hava fotoğrafındaki su yollarını tanıma - kenar algılama görüntülerinden çokgenler


9

Hava fotoğraflarından su yollarını tanımaya çalışıyorum (örneğin Google Haritalar'dan). Yerel yönetimler genellikle su yollarının (ve yollar, binalar vb.) Nerede olduğunu söyleyen CBS verilerine sahiptir, ancak bunların içindeki su verileri genellikle biraz yanlıştır ve hava görüntülerini kullanarak bunları iyileştirebiliriz. Bu nedenle, her zaman güvenilmeyecek bazı verilerimiz var.

Veriler üzerinde bazı temel görüntü işleme nasıl yapacağımı biliyorum (ne yazık ki henüz burada göstermek için örnek görüntüler yok, nasıl bunu, henüz hiçbir çalışma kodu nasıl hayal etmeye çalışıyorum):

  • Resimlerdeki suyolu parçalarını kullanarak bazı renk değerleri kümesini toplayabilirim ve hangi renklerin bu renklere en yakın olduğunu, muhtemelen diğer özellik türleri için (çim, yollar, binalar vb.) Piksellerin "yeterince yakın" olduğu bir eşik ayarlarsam, muhtemelen su yolları olan bir piksel kümesi alırım (ancak çok fazla gürültü olacaktır).

  • Görüntüyü gri tonlamaya dönüştürebilir ve kenarların nerede olduğunu bulmak için standart bir kenar algılama algoritması kullanabilirim. Yine, bu bana benzer sınırların bir dizi pikselini veriyor, ancak gürültü olacak ve kenarlar çok düşünülecek ve / veya boşluklar olacak.

Çıktı olarak sahip olmak istediğim , olası su yollarını özetleyen bir çokgen kümesi .

Sezgisel olarak, çokgenler oluşturmak için algılanan kenarları ve bunlardan hangisinin su olduğuna karar vermek için renk bilgilerini kullanmak, muhtemelen zaten sahip olduğumuz hükümet verilerini kullanmak istiyorum.

Bir kenar algılama algoritmasının sonucundan güzel bir kapalı çokgen setine ulaşmanın bilinen bir yolu var mı? Ya da daha iyi bir yol varsa, bu soruna nasıl saldıracağınıza dair başka ipuçları var mı?


1
Sidenote: Google lisansının bunu yapmasına izin verilmediğini unutmayın! Openstreetmap'de de aynı sorun var . OSM'nin Bing görüntülerini kullanmak için bir sözleşmesi var .
PiTheNumber

Yanıtlar:


6

Bunun sadece renk bilgisi ile yapılması zordur. Anten ve uydu görüntüleri arasındaki (hatta içinde) renk farklılıkları büyük olabilir. İdeal olarak hiperspektral veya en azından kızılötesi görüntüler isteyeceksiniz ( bu makaleye bakın ).

Kenar algılamanızın piksel sınırlarına yapışabileceğini varsayarsak, her pikselin sınırlarını kapalı bir çokgen olarak alabilir ve çokgen oluşturmak için birleştirebilirsiniz (birleşim uygulamanıza bağlı olarak iç halka veya deliklere sahip bir çokgen ile sonuçlanabilir) veya bir koleksiyon çokgenler. Java Topoloji Suite ve diğer hesaplamalı geometri uygulamaları sizin için bu çok daha kolay yapabilirsiniz. Alt piksel sınırlarını kullanmak istiyorsanız, iyi bir epsilon değer ayarına sahip olduğunuzdan çok dikkatli olmanız gerekir, böylece çok yakın ancak tam olarak dokunmayan kenarları yakalayabilirsiniz.

Kenarları alıp bunları kendiniz birleştirmek istiyorsanız, kesişen kenarların bir grafiğini oluşturmak ve çokgen oluşturmak için kendi kendine kapandığı yeri bulmak için grafiği geçen (örneğin saat yönünün tersine) bir kod uygulamak isteyeceksiniz. Çokgenlerin sendika uygulamalarından bazıları böyle çalışır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.