machinevisiontoolbox.Camera.CatadioptricCamera

class machinevisiontoolbox.Camera.CatadioptricCamera(k=None, projection='equiangular', maxangle=None, **kwargs)[source]

Create catadioptric camera projection model

Inheritance diagram of machinevisiontoolbox.Camera.CatadioptricCamera
Parameters:
  • k (float, optional) – scale factor

  • projection (str, optional) – projection model: 'equiangular' [default], 'sine', 'equisolid' or 'stereographic'

  • kwargs – arguments passed to CameraBase constructor

A catadioptric camera comprises a perspective camera pointed at a convex mirror, typically paraboloidal or conical.

The elevation angle range is from \(-\pi/2\) (below the mirror) to maxangle above the horizontal plane. The mapping from elevation angle \(\theta\) to image plane radius is given by:

Projection

\(r(\theta)\)

equiangular

\(r = k \theta\)

sine

\(r = k \sin \theta\)

equisolid

\(r = k \sin \frac{\theta}{2}\)

stereographic

\(r = k \tan \frac{\theta}{2}\)

Note:
  • If K is not specified it is computed such that the circular

    imaging region maximally fills the image plane.

  • This camera model assumes central projection, that is, the focal point

    is at \(z=0\) and the image plane is at \(z=f\). The image is not inverted.

References:
  • Robotics, Vision & Control for Python, Section 13.3.2, P. Corke, Springer 2023.

Seealso:

CameraBase CentralCamera FishEyeCamera SphericalCamera

__init__(k=None, projection='equiangular', maxangle=None, **kwargs)[source]

Abstract camera base class

Parameters:
  • name (str, optional) – camera instance name, defaults to None

  • camtype (str, optional) – camera projection type, defaults to ‘central’

  • rho (scalar or array_like(2), optional) – pixel size, defaults to 1

  • imagesize (int or array_like(2), optional) – image dimension in pixels, defaults to None

  • sensorsize (array_like(2), optional) – image sensor size, defaults to None

  • pp (array_like(2), optional) – principal point position, defaults to None

  • noise (float, optional) – standard deviation of image plane projection noise, defaults to None

  • pose (SE3, optional) – camera pose, defaults to None

  • limits (array_like(4), optional) – bounds of virtual image plane [umin, umax, vmin, vmax], defaults to None

  • labels (2-tuple of str, optional) – axis labels for virtual image plane, defaults to ('u', 'v')

  • seed (int, optional) – random number seed for projection noise, defaults to None

Raises:
  • TypeError – name must be a string

  • TypeError – camtype must be a string

  • ValueError – rho must be a 1- or 2-element vector

This abstract class is the base for all camera projection model classes. All baseclass constructors support these options.

Methods

__init__

Abstract camera base class

clf

Clear the virtual image plane (base method)

disp

Display image on virtual image plane (base method)

move

Move camera (base method)

plot

Plot 3D camera icon in world view (base method)

plot_line2

Plot 2D line on virtual image plane (base method)

plot_point

Plot points on virtual image plane (base method)

plot_wireframe

Plot 3D wireframe in virtual image plane (base method)

project_conic

project_line

project_point

Project 3D points to image plane

reset

Reset camera pose (base method)

Attributes

camtype

Set/get camera type (base method)

height

Get image plane height (base method)

imagesize

Set/get size of virtual image plane (base method)

name

Set/get camera name (base method)

noise

Set/Get projection noise (base method)

nu

Get image plane width (base method)

nv

Get image plane height (base method)

pose

Set/get camera pose (base method)

pp

Set/get principal point coordinate (base method)

rho

Get pixel dimensions (base method)

rhou

Get pixel width (base method)

rhov

Get pixel width (base method)

u0

Get principal point: horizontal coordinate (base method)

v0

Get principal point: vertical coordinate (base method)

width

Get image plane width (base method)