Calibration Library 1.0.0
A C++ library for camera calibration and vision-related geometric transformations
Loading...
Searching...
No Matches
calib::ScheimpflugCamera< CameraT > Struct Template Referencefinal

Camera model with a tilted sensor plane (Scheimpflug configuration). More...

#include <scheimpflug.h>

Collaboration diagram for calib::ScheimpflugCamera< CameraT >:

Public Types

using Scalar = typename CameraT::Scalar
 

Public Member Functions

 ScheimpflugCamera ()
 Default constructor - creates camera with zero tilt angles.
 
 ScheimpflugCamera (const CameraT &cam, ScheimpflugAngles angles)
 Construct from camera and angle structure.
 
template<camera_model OtherCamT, typename T >
 ScheimpflugCamera (OtherCamT cam, T tau_x_angle, T tau_y_angle)
 Construct from different camera type and individual angles.
 
 ScheimpflugCamera (const ScheimpflugCamera &other)
 Copy constructor.
 
ScheimpflugCameraoperator= (const ScheimpflugCamera &other)
 Copy assignment operator.
 
 ScheimpflugCamera (ScheimpflugCamera &&other) noexcept
 Move constructor.
 
ScheimpflugCameraoperator= (ScheimpflugCamera &&other) noexcept
 Move assignment operator.
 
template<typename T >
Eigen::Matrix< T, 2, 1 > apply_intrinsics (const Eigen::Matrix< T, 2, 1 > &plane_point) const
 Apply linear intrinsic parameters to plane coordinates.
 
template<typename T >
Eigen::Matrix< T, 2, 1 > remove_intrinsics (const Eigen::Matrix< T, 2, 1 > &pixel) const
 Remove linear intrinsic parameters from pixel coordinates.
 
template<typename T >
auto project (const Eigen::Matrix< T, 3, 1 > &x_camera) const -> Eigen::Matrix< T, 2, 1 >
 Project a 3D point in the camera frame to pixel coordinates.
 
template<typename T >
auto unproject (const Eigen::Matrix< T, 2, 1 > &pixel) const -> Eigen::Matrix< T, 2, 1 >
 Unproject pixel coordinates to sensor plane coordinates.
 

Public Attributes

CameraT camera
 Underlying camera model.
 
Scalar tau_x {0}
 Tilt around the X axis (radians)
 
Scalar tau_y {0}
 Tilt around the Y axis (radians)
 

Detailed Description

template<camera_model CameraT>
struct calib::ScheimpflugCamera< CameraT >

Camera model with a tilted sensor plane (Scheimpflug configuration).

The camera follows the central projection model but the image sensor is tilted with respect to the optical axis. The tilt is parameterised by two angles: tau_x is a rotation around the camera X axis and tau_y around the Y axis. Distortion is applied in the metric coordinates on the tilted sensor plane.

Template Parameters
CameraTUnderlying camera model type that satisfies camera_model concept

Definition at line 35 of file scheimpflug.h.

Member Typedef Documentation

◆ Scalar

template<camera_model CameraT>
using calib::ScheimpflugCamera< CameraT >::Scalar = typename CameraT::Scalar

Definition at line 36 of file scheimpflug.h.

Constructor & Destructor Documentation

◆ ScheimpflugCamera() [1/5]

template<camera_model CameraT>
calib::ScheimpflugCamera< CameraT >::ScheimpflugCamera ( )
inline

Default constructor - creates camera with zero tilt angles.

Definition at line 42 of file scheimpflug.h.

◆ ScheimpflugCamera() [2/5]

template<camera_model CameraT>
calib::ScheimpflugCamera< CameraT >::ScheimpflugCamera ( const CameraT &  cam,
ScheimpflugAngles  angles 
)
inline

Construct from camera and angle structure.

Parameters
camUnderlying camera model
anglesScheimpflug tilt angles (tau_x, tau_y)

Definition at line 49 of file scheimpflug.h.

◆ ScheimpflugCamera() [3/5]

template<camera_model CameraT>
template<camera_model OtherCamT, typename T >
calib::ScheimpflugCamera< CameraT >::ScheimpflugCamera ( OtherCamT  cam,
tau_x_angle,
tau_y_angle 
)
inline

Construct from different camera type and individual angles.

Template Parameters
OtherCamTCamera type (can differ from CameraT)
TScalar type for angles
Parameters
camUnderlying camera model
tau_x_angleTilt around X axis (radians)
tau_y_angleTilt around Y axis (radians)

Definition at line 61 of file scheimpflug.h.

◆ ScheimpflugCamera() [4/5]

template<camera_model CameraT>
calib::ScheimpflugCamera< CameraT >::ScheimpflugCamera ( const ScheimpflugCamera< CameraT > &  other)
inline

Copy constructor.

Definition at line 65 of file scheimpflug.h.

◆ ScheimpflugCamera() [5/5]

template<camera_model CameraT>
calib::ScheimpflugCamera< CameraT >::ScheimpflugCamera ( ScheimpflugCamera< CameraT > &&  other)
inlinenoexcept

Move constructor.

Definition at line 79 of file scheimpflug.h.

Member Function Documentation

◆ apply_intrinsics()

template<camera_model CameraT>
template<typename T >
Eigen::Matrix< T, 2, 1 > calib::ScheimpflugCamera< CameraT >::apply_intrinsics ( const Eigen::Matrix< T, 2, 1 > &  plane_point) const
inline

Apply linear intrinsic parameters to plane coordinates.

Maps plane coordinates m = (mx, my) to pixel coordinates using linear intrinsics only (no distortion). Delegates to underlying camera model. Typically: apply_intrinsics([x,y]) = [fx*x + skew*y + cx, fy*y + cy]

Template Parameters
TScalar type (double or ceres::Jet for automatic differentiation)
Parameters
plane_point2D coordinates on the sensor plane
Returns
2D pixel coordinates after applying linear intrinsics

Definition at line 105 of file scheimpflug.h.

◆ operator=() [1/2]

template<camera_model CameraT>
ScheimpflugCamera & calib::ScheimpflugCamera< CameraT >::operator= ( const ScheimpflugCamera< CameraT > &  other)
inline

Copy assignment operator.

Definition at line 69 of file scheimpflug.h.

◆ operator=() [2/2]

template<camera_model CameraT>
ScheimpflugCamera & calib::ScheimpflugCamera< CameraT >::operator= ( ScheimpflugCamera< CameraT > &&  other)
inlinenoexcept

Move assignment operator.

Definition at line 83 of file scheimpflug.h.

◆ project()

template<camera_model CameraT>
template<typename T >
auto calib::ScheimpflugCamera< CameraT >::project ( const Eigen::Matrix< T, 3, 1 > &  x_camera) const -> Eigen::Matrix<T, 2, 1>
inline

Project a 3D point in the camera frame to pixel coordinates.

Performs central projection accounting for the tilted sensor plane. The algorithm:

  1. Computes ray-plane intersection with the tilted sensor
  2. Finds the principal ray intersection point
  3. Applies distortion to the local delta coordinates
  4. Adds linear shift from principal intersection
Template Parameters
TScalar type (double or ceres::Jet for automatic differentiation)
Parameters
x_camera3D point expressed in the camera frame
Returns
2D pixel coordinates

Definition at line 141 of file scheimpflug.h.

◆ remove_intrinsics()

template<camera_model CameraT>
template<typename T >
Eigen::Matrix< T, 2, 1 > calib::ScheimpflugCamera< CameraT >::remove_intrinsics ( const Eigen::Matrix< T, 2, 1 > &  pixel) const
inline

Remove linear intrinsic parameters from pixel coordinates.

Inverse operation: pixels -> plane coords m = (mx, my), linear part only. Typically: remove_intrinsics([u,v]) = [(u-cx - skew*((v-cy)/fy))/fx, (v-cy)/fy]

Template Parameters
TScalar type (double or ceres::Jet for automatic differentiation)
Parameters
pixel2D pixel coordinates
Returns
2D plane coordinates after removing linear intrinsics

Definition at line 121 of file scheimpflug.h.

◆ unproject()

template<camera_model CameraT>
template<typename T >
auto calib::ScheimpflugCamera< CameraT >::unproject ( const Eigen::Matrix< T, 2, 1 > &  pixel) const -> Eigen::Matrix<T, 2, 1>
inline

Unproject pixel coordinates to sensor plane coordinates.

Inverse of the projection operation. Computes coordinates on the tilted sensor plane corresponding to given pixel coordinates. The algorithm:

  1. Removes principal ray offset using linear intrinsics
  2. Inverts distortion through underlying camera model
  3. Adds back the principal intersection coordinates
Template Parameters
TScalar type (double or ceres::Jet for automatic differentiation)
Parameters
pixel2D pixel coordinates
Returns
2D coordinates on the tilted sensor plane

Definition at line 198 of file scheimpflug.h.

Member Data Documentation

◆ camera

template<camera_model CameraT>
CameraT calib::ScheimpflugCamera< CameraT >::camera

Underlying camera model.

Definition at line 37 of file scheimpflug.h.

◆ tau_x

template<camera_model CameraT>
Scalar calib::ScheimpflugCamera< CameraT >::tau_x {0}

Tilt around the X axis (radians)

Definition at line 38 of file scheimpflug.h.

◆ tau_y

template<camera_model CameraT>
Scalar calib::ScheimpflugCamera< CameraT >::tau_y {0}

Tilt around the Y axis (radians)

Definition at line 39 of file scheimpflug.h.


The documentation for this struct was generated from the following file: