SUAS’ta haritalama görevi kulağa basit geliyor: sahayı uç, elinde tek bir resmiyle dön. Gerçekte elinde dönen şey, hareketli ve titreşen bir platformdan çekilmiş, birbiriyle örtüşen birkaç yüz kare. Bunları tek tutarlı görüntüye çevirmek dikiş. Üzerinde ölçüm yapabileceğin bir şeye çevirmek ise ortomozaik. İkisi aynı şey değil ve aradaki fark, İHA çalışmamızda saygı duymayı öğrenene kadar bana zaman kaybettirdi.

Çizim: kendi çizimim.
Klasik hat hâlâ çalışıyor
İki kareyi dikmek bilinen bir tarif: anahtar nokta bul (acelen varsa ORB, sağlamlık istiyorsan SIFT), betimleyicileri eşle, RANSAC ile homografi kestir, bir kareyi diğerinin üstüne bük, dikişi harmanla. OpenCV’nin stitching modülü bütün zinciri paketliyor, bundle adjustment dahil, ve ilk harita için gerçekten iyi.
Modülün gerçekte koştuğu zincir, iki karelik tariften daha uzun: her çifti eşler, güvenilir olanları tutar, geometriyi kareden kareye zincirlemek yerine global kestirir, görüntüler arasında pozlama kazancını dengeler, dikiş çizgisini bir nesnenin ortasından değil örtüşmenin içinden geçirir ve ancak ondan sonra harmanlar. Bu ekstra adımların her biri, gerçek bir uçuşun temiz iki kare tarifinin bir varsayımını ihlal etmesi yüzünden var; hangi adımın hangi ihlali yuttuğunu bilmek, bozuk mozaiğe bakakalmak yerine onu ayıklamanı sağlayan şey.
İçe aktarmak yerine anlamaya değer kısım şu: homografi, düzlemi düzleme taşır. Sadece sahne düzlemsel olduğunda ya da kamera yalnızca döndüğünde geçerlidir. Düz bir arazi üzerinde 20-40 metreden çekilen hava kareleri düzlemselliğe yeterince yakın, o yüzden çalışıyor. Binaların ya da ağaçların üstünden uç, paralaks varsayımı kırar: farklı yükseklikteki şeyler tek dönüşümde anlaşmayı reddeder ve hiçbir harmanlamanın gizleyemediği bulanık çift kenarlar alırsın.
Ve bunların hepsinden önce: distorsiyonu gider. Lens distorsiyonu, homografilerin dayandığı düz çizgileri büker; kalan distorsiyon bir kare şeridi boyunca birikir ve harita yavaşça kıvrılır.
Panorama harita değildir
Stitcher çıktısı harika görünür ve yanlış ölçer. Ölçek mozaik boyunca kayar, perspektif de uçuşun o an neyse odur.
Ortomozaik daha güçlü bir söz verir: her piksel tam tepeden bakılıyormuş gibi, zeminde tekdüze çözünürlük, her pikselin altında gerçek bir yer koordinatı. Oraya varmak kamera pozları, bütün kareler üzerinde bundle adjustment ve bir arazi modeline karşı ortorektifikasyon ister. Bu fotogrametri, sadece dikiş değil. Benim pratik kuralım: teslimat “hedef kabaca nerede” ise dikilmiş harita yetebilir. Teslimat koordinatsa ortomozaiği kur.
Pratikte bu karar bir tartışma değil, kontrol listesi. Harita hangi soruyu cevaplıyor ve onu kim tüketiyor? Bir insan bakıp “çadır üçüncü ağaç hattının yanında” diyecekse dikilmiş harita yeter. Haritadan bir sayı çıkıyorsa, bir koordinat, bir mesafe, bir alan, o sayıya er ya da geç biri güvenecek demektir ve mozaiğin o güveni hak edecek şekilde kurulması gerekir. Biz bunu bir kez acıtan yönde yanlış yaptık: güzel görünen bir panorama, sessizce metrikmiş gibi kullanıldı.
Örtüşme, sonucu algoritma çalışmadan belirler
RANSAC’a inlier eşleşme lazım, eşleşmeye de kareler arasında ortak içerik. Fotogrametri pratiği, ardışık kareler arasında yüksek ileri örtüşme ve uçuş hatları arasında cömert yan örtüşme der; ince örtüşmenin zayıf eşleşme zincirleri ve kayan geometri ürettiğini gördükten sonra bununla tartışmıyorum. En kötü durum çim: dokusu fakir bir yüzey, sana özelliği en çok gerektiği yerde en az verir, o yüzden örtüşme tek emniyet payındır.
Bu, veri seti yazısındaki karolama kuralıyla kafiyeli: örtüşme sonradan taradığın bir ayar düğmesi değil. Gereksinim onu planlama anında, algoritma tek piksel görmeden belirler. Sıkıcı uç: sabit irtifa, tam tepeden bakan kamera, düz paralel hatlar.
Vaka: SUAS haritalama hattı, maket şehirden sahaya
SUAS’ta harita nihai ürün değil, bağlam katmanı. Sistemin tespit tarafı manken ve çadır arıyor; haritalama tarafı ise her birinin sahada nerede durduğunu söylemek zorunda. 20-40 metreden, tam tepeden bakan kamerayla uçtuk ve o irtifada bir hedef 4K karede kabaca 80-120 piksel kaplıyor. O kadar küçük ki haritadaki her geometrik hata, doğrudan hedefin konum hatasına dönüşüyor.
Hat saha verisini görmeden önce onu bir maket şehir üzerinde doğruladık: istediğimiz an, kontrollü ışıkta fotoğraflayabildiğimiz, yerleşimini ezbere bildiğimiz ölçekli bir maket. Bu tercih kendini hızla amorti etti. Kare sıralama hataları, dikiş yerleşimi, görüntüler arası pozlama basamakları, hepsi maket üzerinde ortaya çıktı; orada tam bir iterasyon uçuş slotu değil dakikalar tutuyordu. Dikilmiş maket şehir hayalet ve kıvrılmış kenar göstermeyi bıraktığında, hattın kendisinin sağlam olduğunu ve sahada çıkacak her yeni bozulmanın koddan değil uçuştan geleceğini biliyorduk.

Kare: projenin gerçek çıktısı.
Saha uçuşu, önceki bölümdeki sıkıcı uçuş doktrinini izledi: sabit irtifa, düz paralel hatlar, cömert örtüşme. Sonuç aşağıdaki ortomozaik. Maket koşusundan farkı, tam olarak bir sonraki bölümdeki hata kipleri listesiydi: rüzgarın platformu hattından itmesi, ışığın uçuş ortasında değişmesi ve gerçek çimin boyalı kartondan çok daha az özellik vermesi.

Kare: projenin gerçek çıktısı.
Haritanın aşağısında tespitçi oturuyor ve onun sayıları, haritanın neden geometrik olarak dürüst olmak zorunda olduğunu açıklıyor. YOLOv11m’i yaklaşık 15.000 görüntüyle eğittik; 80-120 piksellik hedefler öğrenilecek kadar piksel korusun diye kareleri 1280x1280 karolara böldük. Model mAP50 0.904 ve mAP50-95 0.691’e ulaştı, epoch 33 civarında yakınsadı ve 48’de erken durdu; çıkarım Jetson üzerinde TensorRT ile FP16 çalışıyor. O çalışma noktasındaki bir tespitçi zincirin en zayıf halkası olmaz; ölçeği kayan bir mozaik olurdu. İkili ancak iki taraf da üstüne düşeni yaptığı için çalışıyor.
Kimsenin uyarmadığı hata kipleri
- Otomatik pozlama. Uçuş ortasında gök aydınlanır, kamera telafi eder ve mozaiğin parlaklık basamaklarından bir yamalı bohçaya döner. Yapabiliyorsan pozlamayı kilitle.
- Hareketli nesneler. Örtüşme bölgesinden yürüyerek geçen biri, yarı saydam bir hayalet olarak iki kez görünür. Harmanlama ortalama alır, karar vermez.
- Harmanlama geometri hatasını gizler. Multi-band blending kozmetiktir. Temiz görünen bir dikiş, ölçümün bulacağı bir hizasızlığın üstünde oturuyor olabilir.
- Titreşim ve rolling shutter. Hareketli platform tek tek kareleri hafifçe yamultur. Özellikler yine eşleşir, homografi yamulmayı yutar ve hata daha sonra komşusuyla hizalanmayı reddeden bir şerit olarak geri döner.
- İrtifa kayması. Uçuş hatları arasında birkaç metrelik tırmanış ölçeği değiştirir. Eşleyici bunu tolere eder; haritanın zeminde tekdüze çözünürlüğü etmez.
Dürüst özet: dikiş algoritması, haritalama hattımızın en güvenilir parçasıydı. Uçuş planı, pozlama ayarları ve ondan önceki kalibrasyon, elinde iyi bir şey olup olmayacağına karar verdi.
Bir dahakine neyi değiştirirdim
İki şey. Birincisi, pozlama kilidini iyi günlerde hatırlanan bir kamera ayarı değil, uçuş kontrol listesinin bir maddesi yap. Yazılımda vakit harcadığımız her mozaik bozulmasının planlama anında daha ucuz bir çözümü vardı. İkincisi, maket şehri elden çıkarma. Kulağa oyuncak gibi geliyor ama dakikalar içinde yeniden çekebildiğin kontrollü bir sahne, bir dikiş hattının birim testine en yakın şeyi ve koda her dokunduğumuzda ona geri döndük. Saha uçuşları sistemi doğruladı; maket, değişiklikleri doğruladı.
Ve üçüncü, daha küçük bir şey: sağlamlık kontrollerini yazıya dök. Düz saha çizgileri dikişler boyunca düz kalmalı, yerdeki bilinen bir referans mesafe mozaiğin iki ucunda da aynı ölçmeli. Biz bunlara gözle baktık; bir betik, gerilemeleri bizden daha hızlı yakalardı.