PinholeModel.compute_unit_vector_jacobian

giant.camera_models.pinhole_model:

PinholeModel.compute_unit_vector_jacobian(pixel_locations, image=0, temperature=0)[source]

This method computes the Jacobian matrix \(\partial\mathbf{x}_C/\partial\mathbf{x}_P\) where \(\mathbf{x}_C\) is a vector in the camera frame that projects to \(\mathbf{x}_P\) which is the pixel location.

This method is used in the LimbScanning process in order to predict the change in the unit vector that projects to a pixel location with respect to a change in the pixel location. The pixel_locations input should be a 2xn array of vectors which the Jacobian is to be computed for.

Parameters:
  • pixel_locations (Sequence | ndarray) – The pixel locations to compute the Jacobian at

  • image (int) – The number of the image we are computing the Jacobian for

  • temperature (Real) – The temperature to compute the Jacobian at

Returns:

The Jacobian matrix as a nx3x2 array

Return type:

ndarray

Mathematically this Jacobian is defined as

\[\frac{\partial\mathbf{x}_C}{\partial\mathbf{x}_P} = \frac{\partial\mathbf{x}_C}{\partial\mathbf{x}_C'} \frac{\partial\mathbf{x}_C'}{\partial\mathbf{x}_I} \frac{\partial\mathbf{x}_I}{\partial\mathbf{x}_P}\]

where

\begin{gather} \frac{\partial\mathbf{x}_C}{\partial\mathbf{x}_C'} = \mathbf{T}_{\boldsymbol{\delta\theta}}^T\\ \frac{\partial\mathbf{x}_C'}{\partial\mathbf{x}_I} = \left[\begin{array}{cc} 1/v & 0 \\ 0 & 1/v \\ 0 & 0\end{array}\right] - \frac{1}{v^3}\left[\begin{array}{c} \mathbf{x}_I \\ f \end{array}\right]\mathbf{x}_I^T \\ \frac{\partial\mathbf{x}_I}{\partial\mathbf{x}_P} = \frac{\mathbf{K}^{-1}}{1+a_1T+a_2T^2+a_3T^3} \end{gather}

\(\mathbf{x}_C'\) is the camera frame point after applying the misalignment, \(\boldsymbol{\delta\theta}\) is the misalignment vector, \(\mathbf{x}_C\) is the camera frame point before misalignment is applied, \(\mathbf{x}_P\) is the pixel location, \(\mathbf{x}_I\) is the gnomic location, \(a_{1-3}\) are the temperature coefficients, \(T\) is the temperature, \(k_x\) is the inverse of the pixel pitch in the x direction, \(k_y\) is the inverse of the pixel pitch in the y direction, \(f\) is the focal length, \(\mathbf{T}_{\boldsymbol{\delta\theta}}\) is the rotation matrix corresponding to rotation vector \(\boldsymbol{\delta\theta}\), \(v=\sqrt{\mathbf{x}_I^T\mathbf{x}_I + f^2}\), and \(\mathbf{K}^{-1}\) is the inverse intrinsic matrix.