En doğru kamera kalibrasyonunu nasıl alabilirim?


16

Öncelikle, bunun doğru Stack Exchange panosu olduğunu umuyorum. Değilse özür dilerim.

Kamerayı kalibre etmemi gerektiren bir şey üzerinde çalışıyorum. Başarılı bir şekilde OpenCV (C ++) bunu yapmak için kod uyguladık. Dahili satranç tahtası işlevlerini ve yazdırdığım bir satranç tahtasını kullanıyorum.

İnternette, satranç tahtasının birden fazla görünümünü vermeyi ve her çerçeveden köşeleri çıkarmayı gösteren birçok öğretici vardır.

En doğru kamera kalibrasyonunu elde etmek için işleve verilecek optimum görünüm kümesi var mı? Kalibrasyonun doğruluğunu ne etkiler?

Örneğin, bir şeyi hareket ettirmeden aynı görüntünün 5 görüntüsünü verirsem, web kamerası akışını denediğimde ve bozulmadan denediğimde bazı düz sonuçlar verir.

Ziyaret eden herkese FYI: Yakın zamanda asimetrik daireler ve ilgili OpenCV işlevini kullanarak daha iyi kamera kalibrasyonu yapabileceğinizi öğrendim.

Yanıtlar:


8

Kalibrasyon için farklı açılardan ve açılar arasında olabildiğince büyük bir farkla (üç Euler açısının tamamı değişmelidir) görüntüler çekmelisiniz, ancak desen çapı hala kamera görüş alanına uyuyordu. Ne kadar çok görünüm kullanırsanız o kadar iyi kalibrasyon olur. Bu gereklidir, çünkü kalibrasyon sırasında odak uzaklığı ve bozulma parametrelerini tespit edersiniz, böylece bunları en az kare yöntemiyle elde etmek için farklı açılar gerekir. Kamerayı hiç hareket ettirmiyorsanız, yeni bilgi almıyorsunuz ve kalibrasyon işe yaramaz. Genellikle yalnızca odak uzaklığına ihtiyacınız olduğunu unutmayın, bozulma parametreleri tüketici kameraları, web kameraları ve cep telefonu kameraları için bile genellikle ihmal edilebilir düzeydedir. Odak uzaklığını kamera teknik özelliklerinden zaten biliyorsanız, kalibrasyona bile ihtiyacınız olmayabilir.

Geniş açı veya 360 ° gibi "özel" kameralarda bozulma katsayısı daha fazla bulunur.

Kalibrasyon ile ilgili Wikipedia girişi . Ve burada, çoğu kamera için ihmal edilebilir olan doğrusal olmayan bozulma .


Eulers açılarına göre kameranın x, y'de satranç tahtası etrafında (satranç tahtası pivot olarak) döndürülmesini ve kameranın z'deki satranç tahtasına doğru ve uzağa taşınmasını mı kastediyorsunuz? Dönüştürülmüş satranç tahtalarını basan ve kamerayı aynı yerde tutan birini okudum. Örneğin: i.imgur.com/rYzV4.png ve i.imgur.com/McG9z.png . Bunun gibi şeyleri kullanmak, şeylerin gerçekte nasıl distory olacağını gösteremeyeceği için kötü bir karar mıdır?
Çita

Kamerayı hareket ettirme hakkında evet. Yerinde tutmak konusunda tekrar evet.
mirror2image

@ mirror2image Yani, pratik işlemlerde, farklı açıları değiştirmek daha iyidir. Ancak bu, farklı görüşlerin farklı dünya koordinasyon sistemlerine sahip olacağı anlamına gelir. Nesne noktalarını aynı koordinasyon sisteminde tutmak için ortak bir dünya koordinasyon sistemi kullanmam gerekir mi?
Richard

3

@Ben - görüntülenme sayısı kameraya ve gereken son doğruluğa bağlıdır.

Bozulmaları haritalamak için çok sayıda satranç tahtası görüntüsü kullanan çok yüksek kaliteli, düşük distorsiyonlu merceklerle (üst düzey 35mm SLR), distorsiyonlar bir pikselin kesirleri olduğu için kararsız olabilir.
Görüntü merkezi normalde yalnızca nominal x / 2, y / 2 piksellerinin birkaç pikselinde olduğundan ve odak ile değişeceğinden, kart (veya kamera) döndürülmüşken hala birkaç çekim yapmanız gerekir. Ve elbette zoom her şeyi değiştirir.

Lens çip merkezi ve odak uzunluğuna (X ve Y cinsinden) sahip olduğunuzda, size kamera konumunu vermek için çekimde yalnızca tek bir satranç tahtasına ihtiyacınız vardır.


Çok kötü kalibrasyon almaya devam ediyorum ve dürüstçe nedenini anlayamıyorum. Duvarda basılı bir satranç tahtası var ve kamerayı farklı pozisyonlara taşıyorum, bu yüzden satranç tahtasında farklı görüşlere sahip ama opencv'deki bozulmamış işlevi her kullandığımda ve orijinaline kıyasla çok garip ve çarpık çıkıyor. Fotoğraf makinem bir Microsoft LifeCam Studio 1080p.
Çita

@Ben Otomatik odaklamayı devre dışı bırakın. Küçük lens web kameralarında odak uzaklığı ve lens merkezi odaklanarak değişir. Merkeze iyi uyması için yeterince dönüyor musunuz? Köşelere çıkan kareler var mı? Son olarak, tüm hedeflerde tespit edilen tüm karelerin olup olmadığını kontrol edin.
Martin Beckett

Otomatik odaklama zaten devre dışı. Yeterince tanımlamak ister misiniz? Noktaları toplamak için olabildiğince aşırı açılar deniyorum. "Köşelere çıkan kareler" ile ne demek istediğinizden emin değilim, eğer görüntüden çıkarılan köşeleri çeken işlevi kastediyorsanız - o zaman evet. Tüm köşelerin tespit edildiğini görmek için zaten kontrolüm var. Benim sorun düşünüyorum OLABİLİR Ben kalibrasyon fonksiyonuna geçmesini içsel matris içinde başlangıç odak uzaklığı ayarlamak ne yalan. 1: 1, 16: 9 denedim (web kamerası en boy oranının ne olduğuna inanıyorum) ve ayrıca hiçbir şey denemedim (ki bunu yapabilirsiniz)
Çita

@Martin Fotoğraf makinesini kırtasiye konumunda tutarak ve fotoğraf makinesi ile satranç tahtası arasındaki mesafeyi değiştirmeden satranç tahtası yönünü değiştirerek kalibrasyon yapmak mümkün mü ??

@Santosh - evet bu kesinlikle eşdeğer. Birçok farklı açıyı kapsadığınızdan emin olmalısınız
Martin Beckett

3

Bu cevabı buraya göndermeye karar verdim çünkü bir süre önce bu, Google'da en iyi sonuç olarak ortaya çıktı ve önerileri bana yardımcı oldu. Ben de deneyimlerimi paylaşmaya karar verdim.

Bir Kinect üzerinde en iyi stereo kalibrasyonu elde etmek için sayısız saat geçirdikten sonra, burada bir blog gönderisinde ipuçları ve bulgularımı paylaştım .

Stereo kalibrasyona ve daha spesifik olarak Kinect'e yönelik olmasına rağmen, ipuçlarının bir kamerayı kalibre etmeye çalışan herkese yardımcı olacağına inanıyorum.

Ayrıca, bir gün ölmem veya barınmamı yenilemeyi unutmam durumunda, işte gönderiden değiştirilmiş bir alıntı:

  1. Mümkün olan en büyük kalibrasyon desenine sahip olduğunuzdan emin olun. Yukarıda söylediklerimi takip et. Profesyonel olarak basılmış güzel bir desen alın. Her karenin en az 8 cm x 8 cm olduğundan emin olun. Ayrıca, kalibrasyon deseninin bir tarafında tek sayıda kare ve diğer tarafında çift sayıda kare olduğundan emin olun (örn. 9 × 6 veya 7 × 8). Hedefin pozunun doğru tespit edilmesi önemlidir. Ayrıca, bazı araç kutuları bu gereksinimi karşılamıyor desen tespit edemez. Daha önce de belirtildiği gibi, büyük sayfalara yazdırmak için kullandığım desenler buraya (9 cm kareler için) ve buraya (10 cm kareler için) yüklenir.
  2. Basılı deseninizin çevresinde yeterli beyaz kenarlık olduğundan emin olun, aksi takdirde çoğu araç kutusu tarafından kolayca algılanmayabilir.
  3. Kinect'in hareket etmediğinden emin olun. Kinect'imi bir tripoda monte etmek için bir yuva kullandım.
  4. Kalibrasyon hedefinin olabildiğince çok görüntüsünü almaya çalışın. En iyi kalibrasyonum, kameradan 0,5 metreye kadar 10 metreye kadar olan mesafelerde 300 görüntü kullanılarak elde edildi. Deseni X, Y ve Z eksenleri etrafında döndürdüğünüzden emin olun. Ayrıca, görüntüyü aynı mesafeden çekilen görüntülerle “döşemeye” çalışın: örn. Bir resim çekin, hedefi görüş alanındaki bir sonraki döşemeye taşıyın, bir tane daha alın ve geçerli olanın tümünü "döşeyene kadar tekrarlayın. Görüş alanı. Amaç, her bir mesafeden tüm görüş alanını mümkün olduğunca kapsamaktır.
  5. Mümkünse MATLAB'ın stereo kalibrasyon uygulamasını kullanın. Her kalibrasyon aşamasından sonra aykırı değerlerden kurtulmanızı sağlar.

3

Başlangıçta burada gönderdiğim kamera kalibrasyonu için en iyi uygulamaların bir listesi: https://calib.io/blogs/knowledge-base/calibration-best-practices

  • Doğru boyut kalibrasyon hedefini seçin. Parametreleri uygun şekilde sınırlayacak kadar büyük. Tercihen yakl. kamera görüntülerinde ön paralel göründüğünde toplam alanın yarısı.
  • Kalibrasyonu son uygulamanızın yaklaşık çalışma mesafesinde (WD) yapın. Kamera bu mesafeye odaklanmalı ve kalibrasyondan sonra odak değiştirilmemelidir.
  • Hedef yüksek özellik sayısına sahip olmalıdır. İnce desenler kullanmak tercih edilir. Bununla birlikte, bir noktada tespit sağlamlığı zarar görür. Tavsiyemiz 3MPx üzerindeki kameralar için ve ışık kontrollü ve iyi ise ince desen sayımları kullanmaktır.
  • Farklı alanlardan ve eğik görüntüler toplayın. Hedefi görüntü alanını tamamen kaplayacak şekilde kaydırın ve eşit kapsama alanı sağlayın. Objektif deformasyonu yalnızca önden paralel görüntülerden doğru bir şekilde belirlenebilir, ancak odak uzaklığı tahmini, kısalmanın gözlemlenmesine bağlıdır. Her iki ön paralel görüntüyü ve tahta yatay ve dikey yönde +/- 45 dereceye kadar eğik olarak çekilen görüntüleri dahil edin. Özellik yerelleştirme doğruluğu düştüğü için daha fazla yatırmak genellikle iyi bir fikir değildir.
  • İyi aydınlatma kullanın. Bu genellikle göz ardı edilir, ancak son derece önemlidir. Kalibrasyon hedefi tercihen kontrollü fotoğraf aydınlatması ile dağınık şekilde aydınlatılmalıdır. Güçlü nokta kaynakları eşit olmayan aydınlatmaya neden olur, muhtemelen algılama başarısız olur ve kameranın dinamik aralığını çok iyi kullanmaz. Gölgeler de aynısını yapabilir.
  • Yeterli gözlem yapın. Genellikle kalibrasyon, bir kalibrasyon hedefinin en az 6 gözleminde (görüntü) yapılmalıdır. Daha yüksek dereceli bir kamera veya bozulma modeli kullanılırsa, daha fazla gözlem yararlıdır.
  • CharuCo kartları gibi benzersiz kodlanmış hedefler kullanmayı düşünün. Bunlar, kamera sensörü ve merceğin en uçlarından gözlemler toplamanızı ve böylece bozulma parametrelerini çok iyi sınırlamanızı sağlar. Ayrıca, tek özellik noktaları diğer gereksinimleri karşılamasa bile veri toplamanızı sağlar.
  • Kalibrasyon sadece kullanılan kalibrasyon hedefi kadar doğrudur. Lazerle yazdırılmış hedefleri yalnızca doğrulamak ve test etmek için kullanın.
  • Kalibrasyon hedefi ve kameranın doğru montajı. Daha büyük hedeflerde bozulmayı ve yayı en aza indirmek için, bunları dikey olarak monte edin veya sert bir desteğe düz olarak yerleştirin. Bunun yerine kamerayı hareket ettirmeyi düşünün. Kaliteli bir tripod kullanın ve çekim sırasında kameraya dokunmaktan kaçının.
  • Kötü gözlemleri kaldırın. Yeniden projeksiyon hatalarını dikkatlice inceleyin. Hem görüntüleme başına hem de özellik başına. Bunlardan herhangi biri aykırı olarak görünüyorsa, bunları hariç tutun ve yeniden kalibre edin.

Kalibrasyon hedefleri için PDF oluşturmak için çevrimiçi bir araç burada bulunur: https://calib.io/pages/camera-calibration-pattern-generator


Merhaba, DSP SE'ye hoş geldiniz. Kendini tanıtan cevaplar genellikle burada kabul edilmez. Lütfen daha kaliteli cevap vermeyi düşünün.
jojek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.