Camera Jacobian nasıl türetilir

Nov 20 2020

Kameraları kullanarak noktaları 3D olarak izlemeye çalışan bir Kalman Filtresi durumuyla uğraşıyorum, bunların her biri bir 3D noktayı 2D projeksiyon olarak temsil edebilir:

$$ \begin{bmatrix} u \\ v \end{bmatrix} = \begin{bmatrix} \alpha_x & \gamma & u_0 \\ 0 & \alpha_y & v_0 \end{bmatrix} \cdot R_{3\times3} \cdot \begin{bmatrix} x \\ y \\ z \end{bmatrix} + \begin{bmatrix} \alpha_x & \gamma & u_0 \\ 0 & \alpha_y & v_0 \end{bmatrix} \cdot \vec{T}_{3\times1} $$

Nerede $u$ ve $v$ kamera çerçevesindeki bir noktanın piksel koordinatlarıdır; $ \begin{bmatrix} \alpha_x & \gamma & u_0 \\ 0 & \alpha_y & v_0 \end{bmatrix} $kamera matrisinin üstteki iki satırı $K$, $R_{3x3}$dünya koordinat çerçevesinin kameraya göre dönüşünü açıklayan bir rotasyon matrisidir; ve$\vec{T}_{3x1}$ dünya koordinat çerçevesinin kameraya göre konumunu tanımlayan bir çeviridir.

Bunun formda olmasını gerçekten çok isterim

$$ \vec{y} = H \vec{x} $$

Bunu gördüm $H$"gözlem matrisi" ve diğer durumlarda "Jacobian" olarak adlandırılır. Ancak Jacobian,

$$ \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_1}{\partial x_2} & \frac{\partial y_1}{\partial x_3} \\ \frac{\partial y_2}{\partial x_1} & \frac{\partial y_2}{\partial x_2} & \frac{\partial y_2}{\partial x_3} \end{bmatrix} $$

ve bunun sana gerçekten vereceği bana net değil $\vec{y}$ itibaren $\vec{x}$.

Sanırım birkaç sorum var:

  • Nasıl tek bir tane türetebilirim $H$ Dönüşümümü bir Kalman filtresinin kaldırabileceği bir forma koymak için?

  • Bunun yerine homojen koordinatlar kullanmalı mıyım (bazı 1'leri işaretlemeli)? Bu durumda Kalman filtresi, son girişini güvenilir bir şekilde 1 olarak tutar mı?

  • Yapabilirim $\vec{y} = \begin{bmatrix} u \\ v \end{bmatrix} - \begin{bmatrix} \alpha_x & \gamma & u_0 \\ 0 & \alpha_y & v_0 \end{bmatrix} \cdot \vec{T}_{3\times1}$ama bu gerçekten istediğim şey değil.

  • Katkı maddesi terimini doğru tutmak bunu doğrusal olmayan yapar mı? $\vec{y} = H_{2\times3} \vec{x} + K_{2\times3}\vec{T}_{3\times1} \rightarrow \vec{y} = \tilde{H}(\vec{x}) $? O halde bunun Jacobian ile nasıl bir ilişkisi var?

Yanıtlar

PavelKomarov Nov 21 2020 at 03:21

Biraz ilerleme kaydettim.

Birincisi, kamera denklemim kesinlikle yanlıştı: Menzilden nesneye bölme eksikti. Bu video , ışığı görmeme neden oldu. Gerçekten mi:

$$ \begin{bmatrix} u \\ v \end{bmatrix} = K_{2\times3} \cdot \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix}/z' $$

nerede

$$ \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix} = R_{3\times3} \cdot \begin{bmatrix} x \\ y \\ z \end{bmatrix} + T \tag{1}$$

Hazırlanmış ($'$) değişkenleri, kameranın referans çerçevesinde kameraya yansıtmaya çalıştığınız şeyin koordinatlarını temsil eder ve primlenmemiş değişkenler, dünya çerçevesindeki koordinatları temsil eder. Bulmaya çalışıyorum$H$ dünya çerçevesi içinde.

Bu yapar

$$ u = \frac{\alpha_x x'}{z'} + u_0 $$ $$ v = \frac{\alpha_x x'}{z'} + u_0 $$

Yukarıdaki soruda bıraktığım Jacobian denklemini izlerseniz (çok dikkatli bir şekilde, $x$ ve yerine arkadaşlar $x'$ ve diğer arkadaşlar) bir buçuk sayfası ve doğrusal cebiri basitleştirerek, sonunda

$$ Jacobian_{2\times3} = \frac{KR}{z'} - \frac{K\vec{x'} \otimes R_3}{z'^2} $$

nerede $ \vec{x'} = \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix} $, $R_3$ üçüncü satırı $R$ matris ve $\otimes$ bir dış üründür.

Denklem (1) 'e isteğe bağlı olarak döndürmeden önce çevirmeyi dahil edebileceğinizi ve türevlerde hiçbir fark yaratmadığını unutmayın, çünkü $x$, $y$, ve $z$ çeviri teriminde görünmez.

İkincisi, sistem evrimi ve gözlem işlevleri ile Jakobenler arasında yapılacak bir ayrım vardır . Bunlar birlikte bulanıklaşma eğilimindedir, çünkü doğrusal durumda Jacobian ile çarpmak işlevi değerlendirmekle aynıdır. Örnek al$y_1 = ax_1 + bx_2$, $y_2 = cx_1 + dx_2$. Ardından sistemi şu şekilde yazabiliriz:

$$ \begin{bmatrix} y_1 \\ y_2 \end{bmatrix} = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} $$

Ayrıca

$$ \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_1}{\partial x_2} \\ \frac{\partial y_2}{\partial x_1} & \frac{\partial y_2}{\partial x_2} \end{bmatrix} = \begin{bmatrix} a & b \\ c & d \end{bmatrix} $$

Her ikinizin de bulması gerekiyorsa bu uygundur. $\vec{y}$ itibaren $\vec{x}$ve kovaryans matrislerini projelendirmek gibi başka şeyler de yapın , ancak doğrusal olmayan bir sistemde bunları ayrı yöntemlerle yaparsınız:

İlk satırın kullanımlarına dikkat edin $h(x)$ama sonraki satırlarda Jacobian'ı kullanıyoruz $H$ değerlendirildi $x$. Aynı şekilde güncelleme adımında kullandığımız$f(x)$ sistemi geliştirmek ve $F$ değerlendirildi $x$ kovaryansı güncellemek için.

Şimdi özellikle sorularıma cevap vermek için:

  • Sadece bir tek alamazsın $H$; ikisine de ihtiyacın var$H(\vec{x})$ ve $h(\vec{x})$, değerlendirildi $\vec{x}$ çünkü doğrusal olmama, şekli bir yerden bir yere değiştirir.

  • Hayır, homojen koordinatlar kullanmayın. Bu aslında çok doğrusal değildir (bu bölüm sayesinde$z'$) Jacobian'ı kesinlikle kullanmanız gerekecek. Bir durum değişkenini sabit tutmak için bir filtreye güvenilip güvenilemeyeceğinden emin değilim. Bu değişkende gürültü olmasaydı ve güncelleme denklemleri tam olarak böyleyse, belki? Şimdi burada alakasız.

  • Bu çıkarma değil .. hayır.

  • Doğrusallığın aslında bu ilave terim tarafından ihlal edilmediğini düşünüyorum, çünkü bu sadece bir sapma. Ama doğrusallık edilir Sonuçta burada ihlal etti.