{ } Raw JSON

bundles / skimage 0.26.1rc0.dev0+git20260530.b607368ff / skimage / transform / _geometric / EssentialMatrixTransform

ABCMeta

skimage.transform._geometric:EssentialMatrixTransform

source: /dev/scikit-image/src/skimage/transform/_geometric.py :724

Signature

def   EssentialMatrixTransform ( * rotation = None translation = None matrix = None dimensionality = None )

Members

Summary

Essential matrix transformation.

Extended Summary

The essential matrix relates corresponding points between a pair of calibrated images. The matrix transforms normalized, homogeneous image points in one image to epipolar lines in the other image.

The essential matrix is only defined for a pair of moving images capturing a non-planar scene. In the case of pure rotation or planar scenes, the homography describes the geometric relation between two images (ProjectiveTransform). If the intrinsic calibration of the images is unknown, the fundamental matrix describes the projective relation between the two images (FundamentalMatrixTransform).

Parameters

rotation : (3, 3) array_like, optional

Rotation matrix of the relative camera motion.

translation : (3, 1) array_like, optional

Translation vector of the relative camera motion. The vector must have unit length.

matrix : (3, 3) array_like, optional

Essential matrix.

dimensionality : int, optional

Fallback number of dimensions when matrix not specified, in which case, must equal 2 (the default).

Attributes

params : (3, 3) array

Essential matrix.

Examples

import numpy as np
import skimage as ski
tform = ski.transform.EssentialMatrixTransform(
    rotation=np.eye(3), translation=np.array([0, 0, 1])
)
tform.params
src = np.array([[ 1.839035, 1.924743],
                [ 0.543582, 0.375221],
                [ 0.47324 , 0.142522],
                [ 0.96491 , 0.598376],
                [ 0.102388, 0.140092],
                [15.994343, 9.622164],
                [ 0.285901, 0.430055],
                [ 0.09115 , 0.254594]])
dst = np.array([[1.002114, 1.129644],
                [1.521742, 1.846002],
                [1.084332, 0.275134],
                [0.293328, 0.588992],
                [0.839509, 0.08729 ],
                [1.779735, 1.116857],
                [0.878616, 0.602447],
                [0.642616, 1.028681]])
tform = ski.transform.EssentialMatrixTransform.from_estimate(src, dst)
tform.residuals(src, dst)
The estimation can fail - for example, if all the input or output points are the same. If this happens, you will get a transform that is not "truthy" - meaning that ``bool(tform)`` is ``False``:
if tform:
    print("Estimation succeeded.")
bad_src = np.ones((8, 2))
bad_tform = ski.transform.EssentialMatrixTransform.from_estimate(
     bad_src, dst)
if not bad_tform:
    print("Estimation failed.")
Trying to use this failed estimation transform result will give a suitable error:
bad_tform.params  # doctest: +IGNORE_EXCEPTION_DETAIL

Aliases

  • skimage.transform.EssentialMatrixTransform