CentralCamera.visjac_p_polar#

CentralCamera.visjac_p_polar(p: ndarray | float | int | list[float | int] | tuple[float | int, ...], Z: float | ndarray) ndarray[source]#

Visual Jacobian for point features in polar coordinates

Parameters:
  • p (array_like(2), ndarray(2,N)) – image plane point or points

  • depth (float, array_like(N)) – point depth

Returns:

visual Jacobian matrix in polar coordinates

Return type:

ndarray(2,6), ndarray(2N,6)

Compute the image Jacobian \(\mat{J}\) which maps

\[\begin{split}\begin{pmatrix} \dot{\phi} \\ \dot{r} \end{pmatrix} = \mat{J}(\vec{p}, z) \vec{\nu}\end{split}\]

camera spatial velocity \(\vec{\nu}\) to the image plane velocity of the point expressed in polar coordinate form \((\phi, r)\).

If p describes multiple points then return a stack of these \(2\times 6\) matrices, one per point.

Depth is the z-component of the point’s coordinate in the camera frame. If depth is a scalar then it is the depth for all points.

Example:

>>> from machinevisiontoolbox import CentralCamera
>>> from spatialmath import SE3
>>> camera = CentralCamera.Default()
>>> camera.visjac_p_polar((200, 300), 2)
array([[    0.0015,     0.0008,     0.    ,    -0.0016,     0.0029,
            1.    ],
       [    0.2436,    -0.4366,  -150.    , 78597.63  , 43847.3779,
            0.    ]])
References:
Seealso:

visjac_p visjac_l visjac_e