{ } Raw JSON

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

ABCMeta

skimage.transform._geometric:FundamentalMatrixTransform

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

Signature

def   FundamentalMatrixTransform ( matrix = None * dimensionality = None )

Members

Summary

Fundamental matrix transformation.

Extended Summary

The fundamental matrix relates corresponding points between a pair of uncalibrated images. The matrix transforms homogeneous image points in one image to epipolar lines in the other image.

The fundamental matrix is only defined for a pair of moving images. 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 known, the essential matrix describes the metric relation between the two images (EssentialMatrixTransform).

Parameters

matrix : (3, 3) array_like, optional

Fundamental 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

Fundamental matrix.

Notes

See [1] and [2] for details of the estimation procedure. [2] is a good place to start.

Examples

import numpy as np
import skimage as ski
Define source and destination points:
src = np.array([1.839035, 1.924743,
                0.543582, 0.375221,
                0.473240, 0.142522,
                0.964910, 0.598376,
                0.102388, 0.140092,
               15.994343, 9.622164,
                0.285901, 0.430055,
                0.091150, 0.254594]).reshape(-1, 2)
dst = np.array([1.002114, 1.129644,
                1.521742, 1.846002,
                1.084332, 0.275134,
                0.293328, 0.588992,
                0.839509, 0.087290,
                1.779735, 1.116857,
                0.878616, 0.602447,
                0.642616, 1.028681]).reshape(-1, 2)
Estimate the transformation matrix:
tform = ski.transform.FundamentalMatrixTransform.from_estimate(
     src, dst)
tform.params
Compute the Sampson distance:
tform.residuals(src, dst)
Apply inverse transformation:
tform.inverse(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.FundamentalMatrixTransform.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.FundamentalMatrixTransform