Pillow ve Numpy kütüphanesi kullanarak görsel işlemede yardım

Merhabalar. Harita mühendisliğinde okumaktayım ve bir proje geliştirmekteyim. Geliştirdiğim proje haritacılıkta yol yapımında kullanılan 0 poligonu adı verilen bir yolun bilgisayar tarafından çizilmesini sağlamak. Bir miktar yol aldım ancak sıkıntılarım var ve bir türlü aşamıyorum.
https://i.hizliresim.com/ZXEWdA.png ->başlangıç görseli
Yukarıda gördüğünüz görselde kırmızı noktadan başlayarak mavi noktaya ulaşması gerekiyor.
Her bir siyah çizgi bir eşyükselti eğrisini temsil ediyor.
Burada önemli nokta aslında sıra sıra ilerlemesi. Yani her seferinde bir önündeki eş yükselti eğrisini seçmesi lazım.


Ancak gel gelelim gördüğünüz gibi yükselti eğrilerinde atlama yapıyor. Bu konuda yardımcı olabiliecek var mı acaba?
https://paste.ubuntu.com/p/tk66cCmpZx/
Kaynak kodu yukarıda paylaştım. Teşekkür ederim.

Fikir olarak her bir yükselti eğrisini bir grup olarak atamaya çalışmayı düşünüyorum ancak aklıma gelen çözümleri nasıl yapacağımı bilmiyorum.

Bu bir kod sorusu mu, algoritma sorusu mu?

Kod sorusuysa, nerede hata var, nasil degistirmek istiyorsun ve ne denedin de olmadi yazman lazim.

Algoritma sorusuysa (ki oyle tahmin ediyorum), algoritmayi aciklamamissin. Tartisabilmemiz icin koddan cikarmamiz gerekiyor, kod da buna pek musait degil. (“Proof of concept” olarak hizlica yazilmis bir scripte benziyor.) Elimizde deneyecek kod ve datanin olmasi cok faydali bir sey ve cogu insanin gosterebildigi bir ongoru degil, tesekkur ediyorum, fakat algoritma konusunda yardimci olabilmemiz icin algoritmayi bilmemiz gerekiyor.

Bu arada literatur nasil? “0 polygon” aratinca pek bir sey cikmadi. Arastirilmis veya standartlasmis bir algoritma var mi kullanabilecegimiz?

Siyah cizgiler kontur cizgileri olmadigina gore bordo cizgiler nasil secilecek? Sadece iki ucta siyaha dokun, ortada dokunma?

Cozumun oldugu garanti mi? Backtracking olmadan cozulebiliyor mu?

Eksik bilgilendirme için öncelikle özür dilerim.

Sorum algoritma ve algoritmaya dayalı kodun nasıl yazılacağı.

Sorun şu: Kısaca siyah çizgi atlama sorunu. Her bir siyah çizgi o noktanın kotunu yani deniz seviyesinden yüksekliğini ifade eder. Kırmızı başlangıç noktası, mavi bitiş noktalarını ifade eder. Başlangıç noktasından belirli bir yarıçap ile bir çember oluşturulur ve bu çemberin temas ettiği noktaların RGB renk değerleri okunuyor. Siyah renk geldiğinde bir yükselti eğrisinde olduğunu ve bitiş noktasına en yakın eğriyi seçmesini söylüyorum. Fakat siyah çizgilerin üzerinden atlayıp başka bir çizgiye geçmemesi gerekiyor.

0 poligonu denilen şey harita mühendisliğinde yol yapımında kullanılan bir hesaplamadır. Bulamamış olmanız yada bulduysanızda fark etmemiş olmanız gayet olağan. Kodların bu şekilde olması sürekli değiştiriyorum ve son haline gelememiş bir kod dizisi olması.

Cevabınız için teşekkür ederim, cevabınız için sabırsızlıkla beklemekteyim.
Utku Can CANATAN

Kodda buyuk bir sikinti yok gibi gozukuyor, fakat tavsiyem fonksiyon ve degisken isimlerini daha ozenle vermeniz. Ozellikle surekli degiken kodlarda isinizi kolaylastiracaktir.

Mesela baslangic/bitis noktasini bulan kodlar ayri ayri veya ortak bir fonksiyona ayrilabilir. Degisken isimleri baslangic_x, baslangic_y gibi adlandirilabilir.

Hizlica cevap veriniz: ll degiskeni ne yapiyor? sys degiskeni ne icin kullaniliyor? yyy ile yss’nin farki ne?

Resimde kirmiziyla mavi nokta arasinda tek bir siyah cizgi var, bu bir hata o zaman, oyle degil mi?

Algoritmaya donersek: Cember, zaten sinirli sayida siyah noktayla kesisiyor. Kisitlama, bu siyah noktalara giden yolun baska siyah noktayla kesismemesi. O zaman direk boyle yapalim? Bulunan her siyah noktaya bir cizgi cekip cizginin bir siyah noktadan gecip gecmedigine bakalim?

Cozum olmasi verdiginiz kisitlar dahilinde garanti degil galiba.