27 Ekim 2016 Perşembe

Python - Opencv kamera kalibrasyonu



Kamera kalibrasyonu 3 boyutlu bilgisayarlı görme uygulamalarında son derece önemlidir. Malumunuz kamera ile elde edilen görüntüler 2 boyutludur ve ayrıca kullanılan lensten kaynaklanan bozulmalar da vardır. Örneğin kullanılan lense göre görüntünün merkezindeki pikseller ile kenarlardaki piksellerin yer değiştirme oranları(nasıl tarif edeceğimi tam bulamadım ama literatürde bknz. lens distortion) farklı olabilir (Şekil 1). Kameranın üretiminden kaynaklanan bu bozukluğu gidermek için; kameranın iç parametreleri diye adlandırılan lens parametrelerini tahmin edip görüntüye düzeltme işlemi uygulamak gerekir. Bunun için gerçek büyüklüğü bilinen bir nesne referans olarak kullanılmalıdır. Genelde satranç tahtası (chessboard) bu amaçla kullanılır ve görüntü işlemede yaygın kullanılan OPENCV içerisinde de bu amaçla geliştirilmiş fonksiyonlar mevcuttur.


Şekil 1



Satranç tahtası ile farklı açılardan çok sayıda görüntüler alınarak kalibrasyon işlemi gerçekleştirilir. Ayrıca iki kamera kullanılarak elde edilen stereo görüntü ile görüntüdeki nesnelerin dünya koordinatları (yani kameraya göre tam konumları) elde edilebilir. Bunun için de her bir kameranın kalibrasyonuna ek olarak Stereo kalibrasyon yapılmalıdır yani kameraların birbirlerine göre konumları da dikkate alınmalıdır. Python ile Opencv kullanarak kamera kalibrasyonunun gerçekleştirilmesine dair örnek kodu aşağıda bulabilirsiniz.

Örnekte; klasör içerisinde left* ve right* (* lar görüntü numaları) formatında kayıtlı jpg görüntüleri okunarak kalibrasyon matrisleri oluşturulur. Doğru bir kalibrasyon işleminden sonra bu matrisleri kaydedip aynı kameralar ile elde edilen görüntüler için kullanabilirsiniz.










Hiç yorum yok:

Yorum Gönder