2010-05-19 17 views
11

Fotoğraf makinesi kalibrasyonu amacıyla kullanılan OpenCV'nin koordinatlarının çeşitli parametrelerinin ayarlanması ile ilgili bir sorun yaşıyorum.Neden 3 çakışan OpenCV kamera kalibrasyon formülü var?

(1) kendi kitabında yılında "Öğrenme OpenCV ..." Bradski ve Kaehler yazma konusunda lensi: Sorun görüntü distorsiyon formüller hakkında bilgi üç farklı kaynaklardan görünüşte katılan parametreleri ve denklem üç olmayan eşdeğer tanımını veren olmasıdır bozulma (sayfa 376):

xcorrected = x * (1 + k1 * r^2 + k2 * r^4 + k3 * r^6) + [ 2 * p1 * x * y + p2 * (r^2 + 2 * x^2) ], 

ycorrected = y * (1 + k1 * r^2 + k2 * r^4 + k3 * r^6) + [ p1 * (r^2 + 2 * y^2) + 2 * p2 * x * y ], 

burada r = sqrt (x^2 + y^2).

assumably, (x, y) koordinatları ile dünya noktası nesnelere karşılık gelen düzeltilmemiş çekilen görüntüdeki piksellerin koordinatlar (X, Y, Z) başvurulan, kamera çerçevesi, ki

xcorrected = fx * (X/Z) + cx and  ycorrected = fy * (Y/Z) + cy, 
için

Burada, fx, fy, cx ve cy, kameranın gerçek parametreleridir. Bu nedenle, yakalanan bir görüntüden (x, y) sahip olmak, yukarıda belirtilen iki düzeltme ifadesini uygulayarak yakalanan dünya sahnesinin bozulmamış görüntüsünü üretmek için istenen koordinatları (xcorrected, verilmiş) elde edebiliriz. Ancak

...

(2) biz OpenCV 2.0 Kamera Kalibrasyon ve 3D İmar bölümünde C Referans giriş baktığım gibi komplikasyon ortaya çıkar. Karşılaştırma kolaylığı için, tüm referans noktası (X, Y, Z) koordinatlarının, kameranın referans çerçevesiyle ilgili olarak, # 1'de olduğu gibi başlıyoruz. Sonuç olarak, dönüşüm matrisi [R | t] hiçbir endişe duymaz. Cı referans olarak

, bu ifade edildiğini:

x' = X/Z, 

y' = Y/Z, 

x'' = x' * (1 + k1 * r'^2 + k2 * r'^4 + k3 * r'^6) + [ 2 * p1 * x' * y' + p2 * (r'^2 + 2 * x'^2) ], 

y'' = y' * (1 + k1 * r'^2 + k2 * r'^4 + k3 * r'^6) + [ p1 * (r'^2 + 2 * y'^2) + 2 * p2 * x' * y' ], 

burada, r'= sqrt (x^2 +^2' y) ve en son olarak

u = fx * x'' + cx, 

v = fy * y'' + cy. 

de bir Bu ifadelerin # 1'de sunulanlara eşdeğer olmadığını görebiliriz, sonuçta iki düzeltilmiş koordinat kümesi (xcorrected, ycorrected) ve (u, v) aynı değildir. Neden çelişki? Görünüşe göre ilk set, her bir ve her x ve y için fiziksel bir anlam ekleyebildiğimden daha mantıklı geliyor, ben de fotoğraf makinesi odaklandığında x '= X/Z ve y' = Y/Z'de fiziksel bir anlam bulamıyorum. uzunluk tam olarak 1 değildir. Ayrıca, bilmediğimiz için x 've y' hesaplanamaz (X, Y, Z).

(3) biz kısmen devletler Intel'in Açık Kaynak Bilgisayar Görme Kütüphanesi Kılavuzu bölümü Lens Bozulma (sayfa 6-4), içinde eserlerine başvurarak Ne yazık ki, işler daha murkier olsun:

"(Let v, v) gerçek piksel görüntü koordinatları, yani ideal izdüşüm ile koordinatlar ve (u ̃, v ̃) gerçek gözlenen (çarpık) görüntü koordinatlarına karşılık gelmelidir.Aynı şekilde, (x, y) ideal (distorsiyonsuz) .

x ̃ = x * (1 + k1 * r^2 + k2 * r^4) + [ 2 p1 * x * y + p2 * (r^2 + 2 * x^2) ] 

y ̃ = y * (1 + k1 * r^2 + k2 * r^4 ] + [ 2 p2 * x * y + p2 * (r^2 + 2 * y^2) ], 
: ve (x, y), hesap iki genişleme açısından dikkate alındığında, aşağıdaki gerçek (bozuk) görüntü fiziksel koordinatları veren edilir 210 burada r = sqrt (x^2 + y^2). ...

"u = cx + fx * Çünkü u ve v = cy + fy * v ... şöyle çıkan sistem yazılabilir:

u ̃ = u + (u – cx) * [ k1 * r^2 + k2 * r^4 + 2 * p1 * y + p2 * (r^2/x + 2 * x) ] 

v ̃ = v + (v – cy) * [ k1 * r^2 + k2 * r^4 + 2 * p2 * x + p1 * (r^2/y + 2 * y) ] 

ikincisi ilişkiler görüntüleri undistort kullanılır kamera."

Peki, x ̃ ve y invol içeren ifadelerin, xcorrected ve ycorrected içeren bu yazının üst kısmında verilen iki ifadeyle çakıştığı görülecektir. Ancak, x ̃ ve y given verilen açıklamaya göre düzeltilmiş koordinatları belirtmez. Koordinatların anlamı (x ̃, y ̃) ve (u ̃, v ̃) arasındaki veya bu konudaki çiftler (x, y) ve (u, v) arasındaki farkı anlamıyorum. Tanımlarından, tek farkları, (x ̃, y ̃) ve (x, y) 'nin (̃, v ̃) ve (u, v)' nin "fiziksel" koordinatlarına atıfta bulunmamasıdır. Bu ayrım ne hakkında? Hepsi fiziksel koordinat değil mi? Kayboldum!

Herhangi bir girdi için teşekkürler!

cevap

2

Fotoğraf makinesi kalibrasyonu için tek ve yalnızca formül yoktur, hepsi geçerlidir. Birincisi, r^2, r^4 & r^6 için sabitler K1, K2 & K3 ve diğer ikisinin de r^2 ve r^4 için sabitleri olduğu dikkat edin. Çünkü hepsi yaklaşık modellerdir. Birincisi, daha fazla parametresi olduğu için daha doğru olması muhtemeldir.

Herzaman Gördüğünüz:

r = sqrt(x^2 + y^2) 

o x = (x piksel koordinatı) varsaymak muhtemelen güvenlidir - r genellikle merkezden yarıçapı demektir beri (piksel kamera merkezi).

Bu arada ne yapmaya çalışıyorsunuz? Kamera parametrelerini tahmin edin, lens distorsiyonunu düzeltin mi, yoksa her ikisini de mi?

+0

Girdiğiniz için teşekkürler Doug. Ne yazık ki, soruyu yeterince açıklayamamış olabilirim, çünkü üç formülasyon arasında çekişme noktasını kaçırıyorsunuz. Burada söz konusu olan çeşitli yaklaşımlarda kullanılan terimlerin sayısındaki farklılık değil, daha doğrusu, --- en azından onu buldum --- üç farklı formülasyonun matematiksel olarak eşdeğer olmadığını (hatta varsayarak) bunların hepsi, yaklaşık olarak aynı sayıda terime sahiptir.) Fx, fy, cx ve cy verilen kamera bozulmalarını düzelten bir program yazmaya çalışıyorum. John – John