Görüntüden Konum Tespiti

Merhaba,
Görüntü işleme ile tespit edilen nesnenin konumunu lat ve long olarak buldurmak (yakın bir şekilde tahmin etse de olur.) istiyorum. YOLO ile oluşturulmuş bir görüntü tanıma modeli kullanacağım. Fakat işin içinden çıkamıyorum. Aynı zamanda hedef nesnenin bana olan uzaklığı önemli değil, sadece yönünü tespit etmek istiyorum. Nasıl bir yol izlemeliyim, yardımcı olursanız çok sevinirim. Herkese iyi forumlar dilerim.

Not: Kameranın kendi konumunu bulabiliyorum.

1 Beğeni

Zor konu. Savunma sanayi tarafında da yapılması zamanında istenilip çok başarılı olduğu söylemeyeceğim bir kısım.

  1. Datasetin ne kadar büyük?
  2. Hangi cisimlerden tanımak istiyorsun alanı?
  3. Hangi açıdan bu datasetin toplandı?
  4. Dünya üzerindeki tüm alanları mı bu şekilde bulmaya çalışıyorsun yoksa sadece belirli ve tanıdık alanlar mı?
1 Beğeni

Merhabalar öncelikle
Görüntü işleme ile tespit edilen nesnenin konumunu bunu yapabilmeniz için -YOLO ile ilgili olarak konuşuyorum- bu nesnenin aslında veri setinde var oluyor olması lazım ki algılama yapılabilsin. Bu dediğiniz sistemi şu anda hayvan familyalarına uygulayabilirsiniz ki kesin bir lat ve long bulamayız. Biraz da somut örnek olsun diye bunu anlatıyorum. Örneğin aslanı ele alalım. Aslanın görülebileceği bölgelerin konumlarını veri setinde bulundurmanız lazım ki yapay zekaya aslan gösterildiğinde size tahmini bir lat ve long verebilsin. Biraz karmaşık anlatmış olabilirim ama bu sistem birazcık zor veri setinin olabildiğince büyük olması lazım.

Edit : Bir uygulama vardı sizlere bir görüntü verip buranın nereye ait olduğunu bulduruyordu. Google maps tabanlıydı belki burayı kurcalarsanız veri seti elde edebilirsiniz. GeoGuessr

İlginç bir soru.

Öncelikle geleneksel yöntemlerle içinden çıkılmıyorsa farklı yöntemler kullanmak gerekebilir.

Mesela böyle bir sorun bana gelse ne yapardım diye düşündüm.

Enlem ve boylam bulamadım ama kameranın konumunu bulabiliyorum ne demek hiç anlamadım o da ayrı konu ama her zaman her işin bir hilesi vardır.

Mesela ben olsam ne yapardım.

Yön arıyorum…

Resim time date stamp ine bakar, hangi saatte çekildiğini anlmaya çalışırdım.

Açık havada güneş ışınlarının yönü ve gölge yönlerini alabileceğim bir filreden geçirirdim.

Sonra.

Güneşi Kullanarak Dünyadaki Kordinatımızı Bulmak (burakbayramli.github.io)

EŞLEKSEL GÜNEŞ SAATİ’mizi Geliştiriyoruz (astrobilgi.org)

Gibi bilgilerden faydalanarak. Güneş yönünü tespit etmeye çalışır buradan bir yön çıkarsamasında bulunabilirdim.

Bunların hepsi varsayımsal…

Özetlersem.

Günün hangi saatinde çekildiği bilgisini, görüntü dosyasından edinip.

Işınların yönü veya gölgelerin yönünü belirginleştirecek bir görütü filtresi uygulayıp,

Günün o saatinde güne yönü bu ise bu durumda yönü şudur gibi bir varsayımda bulunulabilir.

Her şeyi, YOLO dan beklememek lazım.

2 Beğeni

Harita verilerinden de yararlanılabilir. Özellikle geniş açılı doğa fotoğraflarında. Yeşillik yaygınsa yeşillik baz alınır, haritadan uygun konum bulunur. Deniz, göl vs.

Konuyu baştan okudum sadece yön ise; gök cisimlerinden yararlanılabilir. Arkadaşın dediği gibi gölgelerden, bilmem aklıma başka birşey gelmiyor :slight_smile:

merhaba ışınların yönü ve gölge yönü belirginleştirecek filtreyi nasıl uygulayabilirim yani ne kullanabilirim bunun için

opencv işe özel bir filtre sunmaz. Filtreler zaten standart. Sadece değerleri ile oynayarak farklar tespit etmeye yada edilen tespiti bir karara çevirmeye çalışırız.

Yani bir filtre bu işi çözmeye yetmez.

Örnekler bırakayım…

Solar Tracker using OpenCV ( C++ ) - YouTube

Motion detection illumination from the sun - OpenCV Q&A Forum

Bir proje haline getirmek isterseniz üzerinde çalışılarak kendi çözümlerinizi üretmeniz gerebilir.

Burada iki linkte ışık takibi ve gölge farkından hareket tespiti üzerine linkler bıraktım.

Ama özelinde fotoğraflarda ışık şiddeleri ( hiç bir fikrim yok) gradient bir etki gösterebilir bu da yön hakkında fikir verebilir.

Yine ilginç bir yaklaşım:

automatically remove shadow and edge filling - OpenCV Q&A Forum

Gölge çıkarmak için edgedetect filtresi kullanmış.

Mesela günün hangi saati olduğu bilgisi var ise, uçak gölgesi sayesinde güneşin yönü sayesinde yön tahmininde bulunabilinir.

Yani ligth_shadow_beam_detect() şeklinde hazır bir filtre beklememek gerekir.

Burada gölge tespit eden yaklaşımlar, fikir verebilir.

EDIT:

Bu gün gezinirken güzel bir örnek buldum.

Burada gölgenin tespiti için bir örnek var.

Detection of stones (rocks) on field surface - OpenCV Q&A Forum

Nesne ve gölge tespiti yapabiliyor.

Her ikisinin orta koordinatından çekilecek bir çizgi ile yön bilgisi oluşturulabilir.

Bir denemek gerekir. Günün saatini biliyorsanız bir çok yön bilgisi tahmini yapmayı sağlayabilir.

1 Beğeni

Merhaba öncelikle ilginiz için teşekkürler, verdiğiniz bilgiler benim için çok değerli.

Görüntü işleme projesi üzerine çalışıyorum. Proje 3 haneli bir kodun canlı kameradan gelen görüntülerle okunması üzerine. Python ile opencv, tesseract, easyocr gibi kütüphanelerle birlikte çalışıyorum. En son easyocr ile plaka tanıma şeklinde bir deneme yaptım. Görüntünün okunabilmesi için karşıdan net bir fotoğrafının çekilmiş olması gerekiyor. Benim elimde olan görüntüler yukarıdan, yandan çekilmiş çok net olmayan fakat yinede okunabilir görüntüler. Bunları okumak için gerekli yazılımı bulamadım.

Belki bilirsiniz google translate uygulaması kameradan canlı görüntüleri alıp metinleri anında yüksek hassasiyetli bir şekilde okuyabiliyor ve başarı oranı da çok yüksek. Benim de böyle bir şeye ihtiyacım var fakat bununla alakalı bir kaynak bulamadım. Bu konu hakkında bir öneriniz varsa dinlemeyi çok isterim. Şimdiden teşekkürler…

Tesseract OCR size bu konuda düzeletme seçenekleri sunuyor denediniz mi hiç?

Bulabilirsem örnek linklerini eklerim. Çeşitli açılardan dokümanlar üzerinde düzeltme olanağı sağlıyor.

Görüntü işlerken görüntü netliği ile ilgili ayrıca bir işlemden geçirebilirsiniz. Yani netleştirmek, siyah beyaza çevirmek, gürültü azaltmak gibi bir kaç işlemden geçirip deneyebilirsiniz.

Bu şekilde ön hazırlık gerektirmeden renki olarak tesseract doğrudan çoğunlukla okuyabiliyor diye düşünüyorum.

Elinizde örnek görüntü varsa kodlayarak bakabiliriz.

Yine hazırlamak için bir örnek:

Algo Praxis / OCR with Tesseract and preparing images

Ama temelde oryantasyon ayarları ile farklı açılardaki yazılar düzeltilebiliyor. Şu an tam hatırlayamadım. Bir link bulursam bunu da eklerim güzel bir video vardı.

EDIT:

Videoyu bulamadım ama şurada daha anlaşılır bir resim var en azından.

python - How to detect text using Tesseract on images with poor camera angles? - Stack Overflow

Perspective Transform uygularsak biraz daha düzgün olur.

python - Mapping a rectangle to a quad with Pillow - Stack Overflow

Ama aslında OCR yerine yapay zeka uygulaması haline getirip, önceden bu açıdan plakaları tanıtmak da faydalı olabilir.

Yine de OCR üzerinden gidelim. Öncelikle görüntü üzerinde transform ile açıyı düzeltip sonra ocr ile taramak daha kolay olur.

Sanki Tesseract içinde bunu da yapan bir parametre vardı ama bir türlü aklıma gelmedi.

Videoyu bulursam onu da eklerim.

EDIT:

Sonunda buldum :slight_smile:

Document Scanner OPENCV PYTHON | Beginner Project - YouTube

Söylediğim gibi görüntüye göre işlemler farklılık gösterir. OCR yüksek doğruluklu okuma sağlar ama, yine de önceden öğretilmiş bir veri tabanı ile yapay zeka da kullanılabilir.

1 Beğeni

Yapılaiblir imkansız değil, eğer görüntüyü alan iha nın telimetri bilgilerine ulaşabiliryorsan yapabilirsin, dünyanın yarıçapının bir kabulü var zaten onunla ihanın 3 boyutlu konumunu biliyorsan (dünyanın merkezi (0,0,0) a göre) buradan biraz matematikle bulaiblirsin, ama dik bir şekilde bakman lazım eğik bir şekilde bakarsan yüzeyden yükseklik farkı olacağı için ölçüm sapaiblir kabaca şöyle :

işte o okulda öğrendiğim analitik geometri burda işe yarıyor.

1 Beğeni

Google ML Kit API’yi kullanabilirsin. Muhtemelen işini görecektir.

Projen tam olarak ne bilmiyorum ama opencv ve yapay zeka alanında az çok uğraş veriyorum. Ancak tek başına opencv’nin yeteceğini sanmıyorum. Yapay zeka yöntemlerini kullanman gerekebilir. Yukarıda verdiğim API muhtemelen yapay zeka bilgisi gerektirmeden google teknolojisini kullanacak. İşini görecek belki ama uzun süreli ve parasal bir proje olarak görüyorsan modeli kendin eğitmen en iyi çözüm olacaktır diye düşünüyorum.

1 Beğeni