Cách lấy Camera Jacobian
Tôi đang giải quyết tình huống Bộ lọc Kalman, cố gắng theo dõi các điểm trong 3D bằng cách sử dụng máy ảnh, mỗi máy ảnh có thể biểu diễn một điểm 3D dưới dạng hình chiếu 2D theo:
$$ \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 $u$ và $v$ là tọa độ pixel của một điểm trong khung máy ảnh; $ \begin{bmatrix} \alpha_x & \gamma & u_0 \\ 0 & \alpha_y & v_0 \end{bmatrix} $là hai hàng trên của ma trận camera $K$, $R_{3x3}$là ma trận quay mô tả chuyển động quay của khung tọa độ thế giới so với máy ảnh; và$\vec{T}_{3x1}$ là một phép tịnh tiến mô tả vị trí của khung tọa độ thế giới so với máy ảnh.
Tôi thực sự muốn cái này ở dạng
$$ \vec{y} = H \vec{x} $$
Tôi đã thấy cái này $H$được gọi là "ma trận quan sát" và trong các trường hợp khác là "Jacobian". Nhưng Jacobian sẽ ngụ ý một cấu trúc như
$$ \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} $$
và tôi không rõ rằng điều này có thực sự mang lại cho bạn $\vec{y}$ từ $\vec{x}$.
Vì vậy, tôi đoán tôi có một số câu hỏi:
Làm thế nào tôi có thể lấy được một $H$ để đặt biến đổi của tôi ở dạng mà bộ lọc Kalman có thể xử lý?
Thay vào đó, tôi có nên sử dụng tọa độ đồng nhất (tack trên một số 1s) không? Liệu bộ lọc Kalman có cập nhật trạng thái một cách đáng tin cậy để giữ mục nhập cuối cùng của nó là 1 không?
Tôi có thể làm cho của tôi $\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}$, nhưng đây thực sự không phải là điều tôi muốn.
Việc giữ thuật ngữ phụ gia ở bên phải có làm cho điều này phi tuyến tính không? $\vec{y} = H_{2\times3} \vec{x} + K_{2\times3}\vec{T}_{3\times1} \rightarrow \vec{y} = \tilde{H}(\vec{x}) $? Làm thế nào điều này sau đó liên quan đến Jacobian?
Trả lời
Tôi đã đạt được một số tiến bộ.
Đầu tiên, phương trình máy ảnh của tôi chắc chắn đã sai: Tôi đã thiếu sự phân chia theo phạm vi cho đối tượng. Video này là thứ khiến tôi nhìn thấy ánh sáng. Có thật không:
$$ \begin{bmatrix} u \\ v \end{bmatrix} = K_{2\times3} \cdot \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix}/z' $$
Ở đâu
$$ \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix} = R_{3\times3} \cdot \begin{bmatrix} x \\ y \\ z \end{bmatrix} + T \tag{1}$$
Sơn lót ($'$) các biến đại diện cho tọa độ của thứ mà bạn đang cố chiếu vào máy ảnh trong hệ quy chiếu của máy ảnh và các biến không có tiêu chuẩn biểu thị tọa độ trong khung thế giới. Tôi đang cố tìm$H$ wrt khung thế giới.
Điều này làm cho
$$ u = \frac{\alpha_x x'}{z'} + u_0 $$ $$ v = \frac{\alpha_x x'}{z'} + u_0 $$
Nếu bạn làm theo phương trình Jacobian mà tôi đã để lại ở trên trong câu hỏi (rất cẩn thận, lấy dẫn xuất wrt $x$ và bạn bè hơn là $x'$ và những người bạn khác) thông qua một trang rưỡi giải tích và đơn giản hóa đại số tuyến tính, cuối cùng bạn sẽ
$$ Jacobian_{2\times3} = \frac{KR}{z'} - \frac{K\vec{x'} \otimes R_3}{z'^2} $$
Ở đâu $ \vec{x'} = \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix} $, $R_3$ là hàng thứ ba của $R$ ma trận, và $\otimes$ là một sản phẩm bên ngoài.
Lưu ý rằng bạn có thể tùy chọn bao gồm phép tịnh tiến trước khi quay trong phương trình (1) và nó không có gì khác biệt với các đạo hàm vì $x$, $y$và $z$ không xuất hiện trong thuật ngữ dịch.
Thứ hai, có sự phân biệt giữa tiến hóa hệ thống và chức năng quan sát và người Gia-cốp. Chúng có xu hướng làm mờ cùng nhau bởi vì trong trường hợp tuyến tính nhân với Jacobian cũng giống như đánh giá hàm. Lấy ví dụ$y_1 = ax_1 + bx_2$, $y_2 = cx_1 + dx_2$. Sau đó, chúng ta có thể viết hệ thống là:
$$ \begin{bmatrix} y_1 \\ y_2 \end{bmatrix} = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} $$
Nhưng cũng
$$ \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} $$
Điều này thật tiện lợi nếu bạn cần tìm cả hai $\vec{y}$ từ $\vec{x}$và làm những việc khác như ma trận hiệp phương sai của dự án xung quanh , nhưng trong một hệ thống phi tuyến, bạn thực hiện những việc này bằng các phương pháp riêng biệt:
Lưu ý dòng đầu tiên sử dụng $h(x)$, nhưng trên các dòng tiếp theo, chúng tôi sử dụng Jacobian $H$ đánh giá tại $x$. Tương tự như vậy ở bước cập nhật chúng tôi sử dụng$f(x)$ để phát triển hệ thống và $F$ đánh giá tại $x$ để cập nhật hiệp phương sai.
Bây giờ để trả lời cụ thể các câu hỏi của tôi:
Bạn không chỉ nhận được một $H$; bạn cần cả hai$H(\vec{x})$ và $h(\vec{x})$, được đánh giá tại $\vec{x}$ bởi vì tính phi tuyến làm cho hình dạng thay đổi tùy nơi.
Không, không sử dụng tọa độ đồng nhất. Điều này thực sự rất phi tuyến tính (nhờ sự phân chia đó cho$z'$) mà bạn chắc chắn sẽ cần sử dụng Jacobian. Không chắc chắn liệu một bộ lọc có thể được tin cậy để giữ một biến trạng thái cố định hay không. Nếu không có nhiễu trong biến đó và các phương trình cập nhật chỉ như vậy, có thể không? Bây giờ không liên quan ở đây.
Phép trừ đó không phải là..nope.
Tôi nghĩ rằng tuyến tính không thực sự bị vi phạm bởi thuật ngữ phụ gia đó, vì đó chỉ là một phần bù. Nhưng tuyến tính được vi phạm ở đây sau khi tất cả.