Camera Jacobian nasıl türetilir
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
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.