Source code for kornia.geometry.epipolar.numeric

"""Module containing numerical functionalities for SfM."""

import torch

[docs]def cross_product_matrix(x: torch.Tensor) -> torch.Tensor: r"""Return the cross_product_matrix symmetric matrix of a vector. Args: x: The input vector to construct the matrix in the shape :math:`(*, 3)`. Returns: The constructed cross_product_matrix symmetric matrix with shape :math:`(*, 3, 3)`. """ if not x.shape[-1] == 3: raise AssertionError(x.shape) # get vector compononens x0 = x[..., 0] x1 = x[..., 1] x2 = x[..., 2] # construct the matrix, reshape to 3x3 and return zeros = torch.zeros_like(x0) cross_product_matrix_flat = torch.stack([zeros, -x2, x1, x2, zeros, -x0, -x1, x0, zeros], dim=-1) shape_ = x.shape[:-1] + (3, 3) return cross_product_matrix_flat.view(*shape_)