![]() |
ViSP
2.6.2
|
#include <vpCameraParameters.h>
Public Types | |
enum | vpCameraParametersProjType { perspectiveProjWithoutDistortion, perspectiveProjWithDistortion } |
Public Member Functions | |
vpCameraParameters () | |
vpCameraParameters (const vpCameraParameters &c) | |
vpCameraParameters (const double px, const double py, const double u0, const double v0) | |
vpCameraParameters (const double px, const double py, const double u0, const double v0, const double kud, const double kdu) | |
vpCameraParameters & | operator= (const vpCameraParameters &c) |
virtual | ~vpCameraParameters () |
void | init () |
void | init (const vpCameraParameters &c) |
void | initFromCalibrationMatrix (const vpMatrix &_K) |
void | initPersProjWithoutDistortion (const double px, const double py, const double u0, const double v0) |
void | initPersProjWithDistortion (const double px, const double py, const double u0, const double v0, const double kud, const double kdu) |
double | get_px () const |
double | get_px_inverse () const |
double | get_py_inverse () const |
double | get_py () const |
double | get_u0 () const |
double | get_v0 () const |
double | get_kud () const |
double | get_kdu () const |
vpCameraParametersProjType | get_projModel () const |
vpMatrix | get_K () const |
void | printParameters () |
Friends | |
class | vpMeterPixelConversion |
class | vpPixelMeterConversion |
VISP_EXPORT std::ostream & | operator<< (std::ostream &os, const vpCameraParameters &cam) |
Generic class defining intrinsic camera parameters.
Two kinds of camera modelisation are implemented:
The main intrinsic camera parameters are the ratio between the focal length and the size of a pixel, and
the coordinates of the principal point in pixel. The lens distorsion can also be considered by two additional parameters
.
1. Camera parameters for a perspective projection without distortion model
In this modelisation, only parameters are used. If we denote
the position of a pixel in the digitized image, this position is related to the corresponding coordinates
in the normalized space (in meter) by:
The conversion from pixel coordinates in the normalized space
is implemented in vpPixelMeterConversion, whereas the conversion from normalized coordinates into pixel is implemented in vpMeterPixelConversion.
2. Camera parameters for a perspective projection with distortion model
In this modelisation, parameters are used. If a model with distortion is considered, we got:
where and
are geometrical distortions introduced in the camera model. These distortions are due to imperfections in the lenses design and assembly there usually are some positional errors that have to be taken into account.
and
can be modeled as follow:
The selection of one of these modelisations is done during vpCameraParameters initialisation.
Here an example of camera initialisation, for a model without distortion:
Here an example of camera initialisation, for a model with distortion:
The code below shows how to know the currently used projection model:
An XML parser for camera parameters is also provided in vpXmlParserCamera.
Definition at line 197 of file vpCameraParameters.h.
Enumerator | |
---|---|
perspectiveProjWithoutDistortion |
Perspective projection without distortion model. |
perspectiveProjWithDistortion |
Perspective projection with distortion model. |
Definition at line 202 of file vpCameraParameters.h.
vpCameraParameters::vpCameraParameters | ( | ) |
Default constructor. By default, a perspective projection without distortion model is set.
Definition at line 73 of file vpCameraParameters.cpp.
References init().
vpCameraParameters::vpCameraParameters | ( | const vpCameraParameters & | c | ) |
vpCameraParameters::vpCameraParameters | ( | const double | px, |
const double | py, | ||
const double | u0, | ||
const double | v0 | ||
) |
Constructor for perspective projection without distortion model
px,py | : pixel size |
u0,v0 | : principal points |
Definition at line 93 of file vpCameraParameters.cpp.
References initPersProjWithoutDistortion().
vpCameraParameters::vpCameraParameters | ( | const double | px, |
const double | py, | ||
const double | u0, | ||
const double | v0, | ||
const double | kud, | ||
const double | kdu | ||
) |
Constructor for perspective projection with distortion model
px,py | : pixel size |
u0,v0 | : principal points |
kud | : undistorted to distorted radial distortion |
kdu | : distorted to undistorted radial distortion |
Definition at line 108 of file vpCameraParameters.cpp.
References initPersProjWithDistortion().
|
virtual |
vpMatrix vpCameraParameters::get_K | ( | ) | const |
return the calibration matrix K
K is 3x3 matrix given by:
Definition at line 299 of file vpCameraParameters.cpp.
References vpException::notImplementedError, perspectiveProjWithDistortion, perspectiveProjWithoutDistortion, vpMatrix::resize(), and vpERROR_TRACE.
Referenced by vpMbEdgeTracker::downScale(), vpPose::poseFromRectangle(), and vpMbEdgeTracker::upScale().
|
inline |
Definition at line 236 of file vpCameraParameters.h.
Referenced by vpCalibration::computeStdDeviation_dist().
|
inline |
Definition at line 235 of file vpCameraParameters.h.
Referenced by vpCalibration::computeStdDeviation_dist(), vpCalibration::displayGrid(), and vpImageTools::undistort().
|
inline |
Definition at line 238 of file vpCameraParameters.h.
Referenced by vpXmlParserCamera::save().
|
inline |
Definition at line 229 of file vpCameraParameters.h.
Referenced by vpFeatureLuminance::buildFrom(), vpCalibration::computeStdDeviation(), vpCalibration::computeStdDeviation_dist(), vpMbEdgeTracker::computeVVS(), vpCalibration::displayGrid(), vpSimulatorAfma6::initDisplay(), vpSimulatorViper850::initDisplay(), vpSimulatorAfma6::setCameraParameters(), vpSimulatorViper850::setCameraParameters(), vpSimulator::setExternalCameraParameters(), vpWireFrameSimulator::setExternalCameraParameters(), vpSimulator::setInternalCameraParameters(), vpWireFrameSimulator::setInternalCameraParameters(), vpImageTools::undistort(), and vpAROgre::updateCameraProjection().
|
inline |
Definition at line 230 of file vpCameraParameters.h.
|
inline |
Definition at line 232 of file vpCameraParameters.h.
Referenced by vpFeatureLuminance::buildFrom(), vpCalibration::computeStdDeviation(), vpCalibration::computeStdDeviation_dist(), vpCalibration::displayGrid(), vpSimulatorAfma6::initDisplay(), vpSimulatorViper850::initDisplay(), vpSimulatorAfma6::setCameraParameters(), vpSimulatorViper850::setCameraParameters(), vpSimulator::setExternalCameraParameters(), vpWireFrameSimulator::setExternalCameraParameters(), vpSimulator::setInternalCameraParameters(), vpWireFrameSimulator::setInternalCameraParameters(), vpImageTools::undistort(), and vpAROgre::updateCameraProjection().
|
inline |
Definition at line 231 of file vpCameraParameters.h.
|
inline |
Definition at line 233 of file vpCameraParameters.h.
Referenced by vpCalibration::computeStdDeviation(), vpCalibration::computeStdDeviation_dist(), vpCalibration::displayGrid(), vpImageTools::undistort(), and vpAROgre::updateCameraProjection().
|
inline |
Definition at line 234 of file vpCameraParameters.h.
Referenced by vpCalibration::computeStdDeviation(), vpCalibration::computeStdDeviation_dist(), vpCalibration::displayGrid(), vpImageTools::undistort(), and vpAROgre::updateCameraProjection().
void vpCameraParameters::init | ( | ) |
basic initialization with the default parameters
Definition at line 119 of file vpCameraParameters.cpp.
References vpException::divideByZeroError, and vpERROR_TRACE.
Referenced by vpCameraParameters().
void vpCameraParameters::init | ( | const vpCameraParameters & | c | ) |
initialization from another vpCameraParameters object
Definition at line 232 of file vpCameraParameters.cpp.
void vpCameraParameters::initFromCalibrationMatrix | ( | const vpMatrix & | _K | ) |
initialise the camera from a calibration matrix. Using a calibration matrix leads to a camera without distorsion
The K matrix in parameters must be like:
_K | : the 3by3 calibration matrix |
Definition at line 253 of file vpCameraParameters.cpp.
References vpException::badValue, vpException::dimensionError, vpMatrix::getCols(), vpMatrix::getRows(), and initPersProjWithoutDistortion().
Referenced by vpMbEdgeTracker::downScale(), and vpMbEdgeTracker::upScale().
void vpCameraParameters::initPersProjWithDistortion | ( | const double | px, |
const double | py, | ||
const double | u0, | ||
const double | v0, | ||
const double | kud, | ||
const double | kdu | ||
) |
Initialization with specific parameters using perpective projection with distortion model.
px,py | : pixel size |
u0,v0 | : principal points |
kud | : undistorted to distorted radial distortion |
kdu | : distorted to undistorted radial distortion |
Definition at line 190 of file vpCameraParameters.cpp.
References vpException::divideByZeroError, perspectiveProjWithDistortion, and vpERROR_TRACE.
Referenced by vpViper850::getCameraParameters(), vpAfma6::getCameraParameters(), vpKinect::start(), and vpCameraParameters().
void vpCameraParameters::initPersProjWithoutDistortion | ( | const double | px, |
const double | py, | ||
const double | u0, | ||
const double | v0 | ||
) |
Initialization with specific parameters using perpective projection without distortion model.
px,py | : pixel size |
u0,v0 | : principal point |
Definition at line 153 of file vpCameraParameters.cpp.
References vpException::divideByZeroError, perspectiveProjWithoutDistortion, and vpERROR_TRACE.
Referenced by vpViper850::getCameraParameters(), vpServolens::getCameraParameters(), vpAfma6::getCameraParameters(), vpSimulatorAfma6::getCameraParameters(), vpSimulatorViper850::getCameraParameters(), vpSimulatorAfma6::initDisplay(), vpSimulatorViper850::initDisplay(), initFromCalibrationMatrix(), and vpCameraParameters().
vpCameraParameters & vpCameraParameters::operator= | ( | const vpCameraParameters & | cam | ) |
copy operator
Definition at line 269 of file vpCameraParameters.cpp.
void vpCameraParameters::printParameters | ( | ) |
Print the camera parameters on the standard output
Definition at line 330 of file vpCameraParameters.cpp.
References perspectiveProjWithDistortion, and perspectiveProjWithoutDistortion.
Referenced by vpCalibration::computeCalibration(), and vpCalibration::computeCalibrationMulti().
|
friend |
Print on the output stream os the camera parameters.
os | : Output stream. |
cam | : Camera parameters. |
Definition at line 358 of file vpCameraParameters.cpp.
|
friend |
Definition at line 199 of file vpCameraParameters.h.
|
friend |
Definition at line 200 of file vpCameraParameters.h.