← Yazılara dön
16 Haziran 2026 · 3 dk okuma

Kamera kalibrasyonu ve lens distorsiyonu: düz çizgilerin neden bükülüyor

Pist düz, görüntü aksini söylüyor. Kalibrasyonun aslında neyi kestirdiği, satranç tahtası ritüelini nasıl yürüttüğüm ve düzeltilmemiş distorsiyonun haritalama hattını nereden ısırdığı.

Kurduğum her haritalama ya da ölçüm hattı er ya da geç aynı şikâyete çarptı: dünyada düz olan bir şey görüntüde düz değil. Pist kenarı, bina duvarı, ufuk çizgisi. Bunu lens yaptı. O görüntü üzerinden bir şey ölçmeyi planlıyorsan bunu modellemek zorundasın, çünkü hata tam da en az baktığın yerde en büyük.

Buna en sert SUAS çalışmamızda çarptım: drone kareleri haritaya, harita pikselleri yer koordinatına dönüşüyor. Kare merkezine yakın bir hedefin konumu doğru çıkıyordu. Aynı hedef köşeye yakınken metrelerce sapıyordu. Dedektör yanılmıyordu. Pikseller yanlış yerdeydi.

Satranç tahtası görüntüleri ve kalibrasyon sonrası distorsiyonu giderilmiş kare

Şekil: sentetik veri üzerinde kendi çizimim.

Kalibrasyon aslında neyi kestiriyor

Başlangıç noktası iğne deliği modeli: her ışın tek bir noktadan geçer ve düz bir sensöre düşer. Bu modelde dünyadaki düz çizgi görüntüde de düz kalır. Gerçek lensler buna uymaz.

Kalibrasyon iki grup sayıyı kestirir. İçsel parametreler: piksel cinsinden odak uzaklıkları fx ve fy, bir de optik eksenin sensöre gerçekten değdiği nokta olan cx, cy; bu nokta neredeyse hiçbir zaman tam merkez değildir. İkinci grup, lensin ışınları ideal modelden nasıl saptırdığını anlatan distorsiyon katsayıları. OpenCV’de bu tipik olarak radyal için k1, k2, k3, tanjantsal için p1, p2 demek.

Çizgiler iki şekilde bükülür

Radyal distorsiyon görüntü merkezinden uzaklaştıkça büyür. Fıçı distorsiyonu çizgileri dışa bombeler ve uçurduğumuz geniş açılı lenslerde varsayılandır, çünkü 30 metre irtifada geniş görüş alanı geometrik saflıktan daha değerli. Yastık distorsiyonu ters yöne büker, tele uçta yaygındır. İki durumda da karenin merkezi neredeyse dürüsttür, köşeler yalan söyler.

Tanjantsal distorsiyon, lensin sensöre tam paralel oturmamasından gelir. Daha küçüktür ama asimetriktir: bombelemek yerine kaydırır. Ucuz montaj kendini burada gösterir.

Satranç tahtası ritüeli, doğru yapılırsa

OpenCV akışı standart: satranç tahtası bas, farklı açılardan çek, findChessboardCorners, calibrateCamera, karşılığında bir yeniden projeksiyon hatası al. Mekanik kısmı bir eğitim yazısı. Muhakeme kısmı değil. Benim gerçekten dayattıklarım:

  • Karenin köşelerini kapsa. Distorsiyon, verine oturtulan bir polinom; veri vermediğin yerde ekstrapolasyon yapar. Köşeler, distorsiyonun en kötü olduğu ve tembel çekim oturumlarında tahtanın hiç uğramadığı yerdir.
  • Tahtayı eğ. Cepheden çekimler odak uzaklığını iyi kısıtlamaz.
  • Sadece global RMS’e değil, kare başına yeniden projeksiyon hatasına bak. Bulanık tek bir kare uydurmayı zehirler, ortalama hâlâ makul görünür.
  • Modeli değil, üniteyi kalibre et. Aynı modelin iki kamerası aynı içsel parametreleri paylaşmaz. Savunma tarafında görünür ve termal kanalı yan yana çalıştırıyoruz; her biri ayrı kalibre ediliyor, çünkü termal lensin kendi geometrisi var ve basılı tahta yerine termal kontrastı olan bir hedef gerekiyor.

Ve mekanik her şeyden sonra yeniden kalibre et: odak değişimi, lens değişimi, sert iniş.

Aşağı akışta nereden ısırır

Distorsiyon giderme, sonrasındaki her şeyin sıkıcı ilk adımı. Kareleri haritaya dikmek, homografilerin düzlemi düzleme taşıdığını varsayar; kalan distorsiyon, harmanlamanın gizlediği ve ölçümün bulduğu hizasızlığa dönüşür. Pikselden yere konumlama, içsel parametrelerden geçen bir ışın demek; yanlış bir ana nokta haritadaki her hedefi kaydırır. Termal tespit işi aynı problemi daha kötü optikle devralır.

Tekrar tekrar öğrendiğim örüntü şu: distorsiyon gürültüyle çökmez. Sana neredeyse doğru sonuçlar verir, sapması kenarlara doğru büyür. Bu da tam olarak kazayla sahaya gönderdiğin türden bir hata.

Kaynakça

kalibrasyonOpenCVgörüntü işleme