Geri Dön
Bir adanın konumunu geometri ve CUDA programlamayla bulmak
SiTech AI Team2 წთ. საკითხავი

Bir adanın konumunu geometri ve CUDA programlamayla bulmak

Bir OSINT alıştırması Google Lens kullanılmadan çözüldü: 882 MB kıyı şeridi verisi, geometrik filtreler zinciri ve GPU'da kontrol edilen 80 milyon kara parçası üçlüsü, Mikronezya'daki Oan tatil köyüne ulaştı.

Blogunda yassa9 adıyla yazan bir geliştirici, 16 Ağustos 2026'da açık kaynak istihbaratı (OSINT) alıştırmasını nasıl çözdüğünü anlatan bir yazı yayımladı: Sofia Santos'un (Gralhix) 004 numaralı alıştırması. Görev, bir adadaki tatil köyünün fotoğrafıyla ilgili üç sorudan oluşuyordu: tatil köyünün adı, adanın koordinatları ve kameranın baktığı yön. Geliştirici Google Lens'i kullanmayı reddedip sorunu matematik ve programlamayla çözdü.

Meta veriler ve geometrik parmak izi

Exiftool, görüntünün 736×515 piksel boyutunda bir WebP dosyası olduğunu, ne GPS verisi ne de kamera modeli içerdiğini doğruladı. Bunun üzerine geliştirici fotoğraftaki üç kara parçasının geometrisini çıkardı: P0 tatil köyünün bulunduğu adacık, P1 sağdaki ada, P2 ise zirvesi olan öndeki sol ada. Küçük bir tıklama aracı (01_triangle_gui.py) piksel koordinatlarını kaydedip üçgenin kenar oranlarını ve açılarını hesapladı. Merkezleri gözle işaretlemek kesin olmadığı için aramaya bu değerler etrafında ±%20 tolerans tanındı.

Filtre zinciri

Arama uzayı, 882 MB boyutundaki OpenStreetMap küresel kıyı şeridi vektör seti land-polygons-split-4326 idi. İlk filtre yalnızca −30° ile 30° arasındaki tropikal enlem kuşağını bıraktı: 141.131 poligon. Yerel yoğunluk filtresi 5 km yarıçapta ondan fazla komşusu olan adacıkları eledi ve küme 51.576'ya düştü. 20 km içinde en az iki komşusu olmayan noktalar atıldı, 23.500 küme kaldı ve bu kümelerdeki tüm üçlülerin üretilmesi 80.690.777 aday üçgen verdi.

GPU'da eşleştirme

Her üçlü bir CUDA iş parçacığına atandı. İş parçacığı üç noktayı kara alanına göre sıralayarak P0'ı belirledi, iki boyutlu vektörel çarpımın işaretiyle P1 ve P2'yi atadı, ardından P0'daki açıyı, mesafe oranını ve boyut aralıklarını kontrol etti. 5.169 MB video belleğine sahip bir NVIDIA GeForce RTX 3050'de (sm_86) çekirdek 204,1 milisaniyede tamamlandı; 158.784 üçlü testi geçti ve tekrarlar ayıklandıktan sonra 8.915 kaldı.

Sonraki aşamalar listeyi daralttı: engelsiz su için "açık dikdörtgen" testi 948 aday bıraktı, mercan adacığı kompaktlık puanı (Polsby-Popper) 213'e, oval biçim kontrolü 137'ye, Element84'ün herkese açık Earth Search API'si üzerinden Sentinel-2 görüntülerinden hesaplanan NDVI bitki örtüsü kontrolü 66'ya indirdi. Son yükseklik kontrolü Copernicus DEM GLO-30 karolarını kullandı: P0 50 metrenin altında olmalı, kameranın ±50°'lik bakış yayı boyunca 2-20 km mesafedeki en yüksek arazi ise 100 ile 500 metre arasında yer almalıydı. Geriye 26 aday kaldı.

Sonuç

Nihai tablodaki, Mikronezya Federal Devletleri'ne atanan sekizinci kayıt fotoğrafla eşleşti. Tatil köyünün adı Oan; adanın koordinatları 7°21′48.4″ kuzey, 151°45′20.7″ doğu (7.363444, 151.755750); kamera ise kuzeybatıya, yaklaşık 324,97° yönüne bakıyordu. Kod ve nihai rapor GitHub'da yayımlandı.

SSiTech

SiTech — AI destekli web geliştirme

Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.