Kenar dedektörü tarafından algılanan bağlantı kenarları


14

Canny edge dedektöründen elde edilen bir ikili görüntü var. Kenarlar merkezde iyi algılanmıyor ve onlara katılmam gerekiyor. Kenarların bağlantısı yönlendirmeye ve mahalleye bağlıdır. Bir eşiğin altındaysa (5 piksel mesafeden az) köşeleri bağlamanız gerekir. Neredeyse doğrusal özelliklerim iyi yönlendirilmişse, bu eşik gevşetilmelidir. (Bu en iyi durumdur.) görüntü

Hough dönüşümünü denedim, ama benim için işe yaramadı çünkü düz çizgilerim yok. Dilatasyon ve erozyon da iyi değildir; görüntüleri daha karışık yaparlar.

Çalıştığım yaklaşım önce köşeleri ve düğümleri (MATLAB ile bwmorph) algılayıp ayrı bir özellik olarak yaprakları yapmaktır. Bu aşağıdaki gibi yapılır:

  1. 3x3'lük bir pencerede tarama yaparak komşuları arayın.
  2. Bağlı nesnenin tamamını çaprazlama.
  3. Bir çizgiyi (veya belki de ikinci dereceden bir polinomu) takmaya çalışın.
  4. Bağlantıya değip değmeyeceğini bir özellik olarak kontrol edin.

Köşelerin birleştirilmesi gereken karar verme kısmı zor olduğu için uygulama kolay değildir.


Dalları bulmak için ilginç bir çözüm buldum. MATLAB konuma düğümleri kolayca verebilir. MATLAB, bağlı özellikleri de etiketleyebilir. Böylece bağlı bir özellik seçebilirsiniz. Düğümleri bulun. Bu düğümleri 0 olarak ayarlayın. Temelde özelliği ayırın ve tekrar etiketleyin. Ağaçlarda dallar olacak. Bu daha az manuel programlama gerektiriyordu ve sonuçlar gayet iyi görünüyor. Biraz girdi?
Naresh

Bağlantı kısmı için, şimdi büyük özellikler bulmayı ve daha güvenilir bulmayı düşünüyorum. Sonra düz çizgiler, (uygunluk kalitesini kontrol edin), kutupsal koordinatlara dönüştürün ve hough dönüşümü gibi mahalleyi arayın. Büyük özellikler için arama yarıçapı büyüktür (boyutla orantılı). Bu kodu uyguluyorum. Sonuçlar yolda. Yorumlar pls.
Naresh

Yanıtlar:


4

Bu tam bir çözüm olmayabilir, ancak size iyi bir yön verecektir.

Temel olarak, kenarların eşleştiğini söylemenin temel kriterleri nelerdir? Kenarın gradyanı "yerel olarak" eşleşir ve mesafenin, kenarın ne kadar süre boyunca sürdüğüne karşı mantıklıdır.

Uzun düz çizgiler gibi geometrik kenarlarınız varsa, Hough hemen sorunsuz bir iş çıkarır. Ancak kenarlar keyfi eğri olduğunda bu çalışmaz. Bu durumda, eğriyi kabaca parça bilge sabit segmentler olarak düşünebilirsiniz (durumunuzda yeterince iyi), bu nedenle Hough'u yerel olarak almalısınız. yani görüntünün küçük bir kısmını (bir blok söyleyin) Hough'u hesaplayabilir ve bazı zirveleri tanımlayabilirsiniz. Buna dayanarak, susuz kalmanın anlamlı bir boşluk yarattığını tespit edebilirsiniz, eğer öyleyse, devam edin veya devam edin.

Daha küçük boşluklar doldurulduktan sonra, daha büyük bir boyut elde etmek için bunu genişletebilirsiniz. tepeler daha fazla olacaktır, ancak daha azını seçebilirsiniz.


teşekkürler Dipan, ben de düşündüm. Pahalı bir işlem olacak ama bazı bilgileri çıkarabilirim. Ama bazen Hoguh transfomasyonu da bana bağlı hatlar vermiyor. Hough sadece mükemmel düz çizgilerle ilgilenir. Ve piksellerin bağlantılarını umursamıyor. Bir çizgiyi düz bir çizgide 3 veya daha fazla rastgele piksele sığdırır. Hipotezimi kodluyorum. Daha fazla tartışma için sonuçları buraya göndereceğim. Naresh
Naresh

θ

4

Bu gerçekten basit olmayacak ... Tamamen bir Grafik yapısı ile çalışmayı deneyebilirsiniz. İlk olarak tüm bağlı pikselleri görüntüden çıkarın ve bunları komşu düğümlerin bir kenara bağlandığı bir Grafiğe ekleyin. Bazı M sayıda düğümden daha küçük olan Grafikleri atabilirsiniz (görüntüyle ilgili olmayan küçük noktaları hariç tutmak için).

Bu işlemin sonunda bir dizi bağlantısı kesilmiş Grafikler olacaktır. (Resminize bakılırsa, bunlar tam olarak Ağaçlar değildir, çünkü orada döngüler vardır)

Bazı rastgele düğümlerden başlayıp bir DFS yaparak her Grafiğin uç noktalarını (her Grafiğin çevresindeki uç pikseller) bulabilirsiniz .

Bu işlemin sonunda, bağlantıların oluşma olasılığının aşırı olduğu noktalara karşılık gelen her Grafik için bir dizi piksel koordinatı olacaktır.

Artık en yakın uç nokta komşularını (<= 5 mesafeli) basit bir çizgiyle bağlamayı deneyebilirsiniz.

Ancak, bu aşırı piksele giden çizgi parçasının eğimini hesaba katmak istiyorsanız, bu aşırı piksele ulaşmak için ÖNCE N piksele "çizgi sığdırmayı" deneyebilirsiniz. Dolayısıyla, N = 5 ise, bir dalın son 5 pikseli bir satırın tahmininde kullanılır.

Bu nedenle, en yakın komşu çiftler için artık iki bölümün bağlanıp bağlanmadığını değerlendirmek için bir kriter olarak kullanacağınız başka bir şey daha var (yani, Ekstrem Nokta Mesafesi <= 5 piksel VE yaklaşık eşit çizgi eğimi).

Çizgilerinizin dalın ipuçlarının yakınında pürüzlü görünmesine neden olabilecek gürültünün etkisini en aza indirmek (ve bu nedenle eğim tahmininizi deforme etmek) için Grafiğinize (yukarıdaki DFS dışında) ödediği bir basitleştirme adımı uygulamayı deneyebilirsiniz. Grafik yapısı ile çalışma). Örneğin, bazı kesiklerden daha büyük açılarda çizgiyi "bükmek" için Grafiğin sonraki düğümlerini kaldırabilirsiniz (daha karmaşık bir şey için lütfen buraya bakın ). Bu şekilde, kabaca görüntü piksellerinin oluşturduğu parçanın daha büyük bir kısmının yönüne "daha basit" çizgiler sığacaksınız.

Bu muhtemelen vakaların çoğunluğu için iyi bağlantılara yol açacaktır (yayınladığınız görüntüye bakarak), ancak yine de sizi bazı zorlu olanlarla bırakacaktır. Örneğin, kollardan birinin bağlantı noktasının yakınında kesildiği bir "Y" şekilli kesintili kalıp nasıl bağlanır? (yani, onunla "karışan" bir çizgi parçasına bağlanması gereken "sürekli" bir bükümünüz var). Belki de bu tür durumların ne kadar yaygın olduğunu inceleyebilir ve daha sonra bağlantı kriterlerinizi gözden geçirebilirsiniz.

Ayrıca, görüntü elde etmenizi nasıl geliştirebileceğinizi incelemeye değer olabilir (örneğin çözünürlüğü artırın).


İyi bir yanıt için teşekkürler. Evet, gözleminiz doğru. Bir ağaç değil, bir grafik yapmak daha iyi. Bu da döngüleri bulmamda bana yardımcı olacak. Şey, MATLAB biyoinfo araç kutusunda, çoğu insanın sahip olacağını varsayamayacağım grafik uyguladı. Gidebileceğim en fazla görüntü işleme aracı kutusu. Douglas-peucker da düşündüğüm bir şey. Ancak bir CBS uzmanına danıştıktan sonra, işleri daha karmaşık hale getirebileceğini ve kesişen çizgiler elde edebileceğimi fark ettim. Ayrıca, bir çizgi yapmak için 10 piksele ihtiyacım olduğu için bir grafikte farklı çizgi segmentlerine de bakmam gerekiyor ve zaten bir çatallanma olabilir.
Naresh
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.