วิธีการรับ Camera Jacobian
ฉันกำลังจัดการกับสถานการณ์ Kalman Filter พยายามติดตามจุดใน 3 มิติโดยใช้กล้องซึ่งแต่ละจุดสามารถแสดงจุด 3 มิติเป็นการฉายภาพ 2 มิติได้ตาม:
$$ \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} $$
ที่ไหน $u$ และ $v$ คือพิกัดพิกเซลของจุดในกรอบกล้อง $ \begin{bmatrix} \alpha_x & \gamma & u_0 \\ 0 & \alpha_y & v_0 \end{bmatrix} $คือสองแถวบนของเมทริกซ์กล้อง $K$, $R_{3x3}$เป็นเมทริกซ์การหมุนที่อธิบายการหมุนของกรอบพิกัดโลกที่สัมพันธ์กับกล้อง และ$\vec{T}_{3x1}$ เป็นการแปลที่อธิบายตำแหน่งของกรอบพิกัดโลกที่สัมพันธ์กับกล้อง
ฉันอยากให้มันอยู่ในรูปแบบนี้จริงๆ
$$ \vec{y} = H \vec{x} $$
ฉันเคยเห็นสิ่งนี้ $H$เรียกว่า "เมทริกซ์การสังเกต" และในอีกกรณีหนึ่งว่า "จาโคเบียน" แต่จาโคเบียนจะบ่งบอกถึงโครงสร้างเช่น
$$ \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} $$
และยังไม่ชัดเจนสำหรับฉันว่าสิ่งนี้จะให้คุณได้จริง $\vec{y}$ จาก $\vec{x}$.
ดังนั้นฉันเดาว่าฉันมีคำถามสองสามข้อ:
ฉันจะได้รับไฟล์ $H$ การเปลี่ยนแปลงของฉันในรูปแบบที่ตัวกรองคาลมานสามารถจัดการได้หรือไม่?
ฉันควรใช้พิกัดที่เป็นเนื้อเดียวกัน (ยึดติดกับ 1 วินาที) แทนหรือไม่ ตัวกรองคาลมานจะอัปเดตเป็นสถานะอย่างน่าเชื่อถือให้รายการสุดท้ายเป็น 1 หรือไม่
ฉันสามารถสร้างไฟล์ $\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}$แต่นี่ไม่ใช่สิ่งที่ฉันต้องการจริงๆ
การเก็บคำเติมแต่งไว้ทางขวาทำให้ไม่เป็นเชิงเส้นหรือไม่? $\vec{y} = H_{2\times3} \vec{x} + K_{2\times3}\vec{T}_{3\times1} \rightarrow \vec{y} = \tilde{H}(\vec{x}) $เหรอ? แล้วสิ่งนี้เกี่ยวข้องกับยาโคเบียนอย่างไร?
คำตอบ
ฉันก้าวหน้าไปบ้างแล้ว
ประการแรกสมการกล้องของฉันผิดอย่างแน่นอน: ฉันไม่มีการหารตามช่วงถึงวัตถุ วิดีโอนี้คือสิ่งที่ทำให้ฉันเห็นแสงสว่าง จริงๆ:
$$ \begin{bmatrix} u \\ v \end{bmatrix} = K_{2\times3} \cdot \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix}/z' $$
ที่ไหน
$$ \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix} = R_{3\times3} \cdot \begin{bmatrix} x \\ y \\ z \end{bmatrix} + T \tag{1}$$
รองพื้น ($'$) ตัวแปรแสดงพิกัดของสิ่งที่คุณพยายามจะฉายไปที่กล้องในกรอบอ้างอิงของกล้องและตัวแปรที่ไม่มีการกำหนดค่าจะแสดงพิกัดในกรอบโลก ฉันกำลังพยายามค้นหา$H$ บิดกรอบโลก
สิ่งนี้ทำให้
$$ u = \frac{\alpha_x x'}{z'} + u_0 $$ $$ v = \frac{\alpha_x x'}{z'} + u_0 $$
หากคุณทำตามสมการจาโคเบียนที่ฉันทิ้งไว้ข้างต้นในคำถาม (อย่างระมัดระวังโดยใช้อนุพันธ์ wrt $x$ และเพื่อนมากกว่า $x'$ และเพื่อนคนอื่น ๆ ) ผ่านหน้าครึ่งหนึ่งของแคลคูลัสและทำให้พีชคณิตเชิงเส้นง่ายขึ้นในที่สุดคุณก็จบลงด้วย
$$ Jacobian_{2\times3} = \frac{KR}{z'} - \frac{K\vec{x'} \otimes R_3}{z'^2} $$
ที่ไหน $ \vec{x'} = \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix} $, $R_3$ คือแถวที่สามของ $R$ เมทริกซ์และ $\otimes$ เป็นผลิตภัณฑ์ภายนอก
โปรดทราบว่าคุณสามารถเลือกรวมการแปลก่อนการหมุนในสมการ (1) ได้และจะไม่แตกต่างกับอนุพันธ์เนื่องจาก $x$, $y$และ $z$ ไม่ปรากฏในคำแปล
ประการที่สองมีความแตกต่างระหว่างวิวัฒนาการของระบบและฟังก์ชันการสังเกตและจาโคเบียน สิ่งเหล่านี้มักจะเบลอพร้อมกันเนื่องจากในกรณีเชิงเส้นที่คูณด้วยจาโคเบียนจะเหมือนกับการประเมินฟังก์ชัน ยกตัวอย่าง$y_1 = ax_1 + bx_2$, $y_2 = cx_1 + dx_2$. จากนั้นเราสามารถเขียนระบบเป็น:
$$ \begin{bmatrix} y_1 \\ y_2 \end{bmatrix} = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} $$
แต่ยัง
$$ \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} $$
วิธีนี้สะดวกหากคุณต้องการค้นหาทั้งสองอย่าง $\vec{y}$ จาก $\vec{x}$และทำสิ่งอื่น ๆ เช่นเมทริกซ์ความแปรปรวนร่วมของโปรเจ็กต์รอบ ๆแต่ในระบบไม่เชิงเส้นคุณจะทำสิ่งเหล่านี้โดยแยกวิธี:
สังเกตบรรทัดแรกใช้ $h(x)$แต่ในบรรทัดต่อมาเราใช้ยาโคเบียน $H$ ประเมินที่ $x$. เช่นเดียวกันในขั้นตอนการอัปเดตที่เราใช้$f(x)$ เพื่อพัฒนาระบบและ $F$ ประเมินที่ $x$ เพื่ออัปเดตความแปรปรวนร่วม
ตอนนี้เพื่อตอบคำถามของฉันโดยเฉพาะ:
คุณไม่ได้รับเพียงอย่างเดียว $H$; คุณต้องการทั้งสองอย่าง$H(\vec{x})$ และ $h(\vec{x})$, ประเมินที่ $\vec{x}$ เนื่องจากความไม่เป็นเชิงเส้นทำให้รูปร่างแตกต่างกันไปในแต่ละที่
ไม่อย่าใช้พิกัดที่เป็นเนื้อเดียวกัน นี่เป็นแบบไม่เชิงเส้น (ขอบคุณการหารด้วย$z'$) ว่าคุณจะต้องใช้ Jacobian อย่างแน่นอน ไม่แน่ใจว่าตัวกรองจะเชื่อถือได้หรือไม่เพื่อให้ตัวแปรสถานะนิ่ง หากไม่มีสัญญาณรบกวนในตัวแปรนั้นและสมการการอัพเดตเป็นเช่นนั้นอาจเป็น? ไม่เกี่ยวข้องที่นี่ตอนนี้
การลบนั้นไม่ใช่.. ไม่ใช่
ฉันคิดว่าความเป็นเส้นตรงไม่ได้ถูกละเมิดโดยคำเสริมนั้นเนื่องจากเป็นเพียงการชดเชย แต่ความเป็นเชิงเส้นถูกละเมิดที่นี่หลังจากทั้งหมด