OKVIS
|
#include <PinholeCamera.hpp>
Public Member Functions | |
PinholeCamera (int imageWidth, int imageHeight, double focalLengthU, double focalLengthV, double imageCenterU, double imageCenterV, const distortion_t &distortion, uint64_t id=-1) | |
Constructor that will figure out the type of distortion. More... | |
~PinholeCamera () | |
Destructor. More... | |
double | focalLengthU () const |
Get the focal length along the u-dimension. More... | |
double | focalLengthV () const |
Get the focal length along the v-dimension. More... | |
double | imageCenterU () const |
Get the image centre along the u-dimension. More... | |
double | imageCenterV () const |
Get the focal image centre along the v-dimension. More... | |
void | getIntrinsics (Eigen::VectorXd &intrinsics) const |
Get the intrinsics as a concatenated vector. More... | |
bool | setIntrinsics (const Eigen::VectorXd &intrinsics) |
overwrite all intrinsics - use with caution ! More... | |
int | noIntrinsicsParameters () const |
Get the total number of intrinsics. More... | |
std::string | type () const |
Obtain the projection type. More... | |
const std::string | distortionType () const |
Obtain the projection type. More... | |
Methods to project points | |
CameraBase::ProjectionStatus | project (const Eigen::Vector3d &point, Eigen::Vector2d *imagePoint) const |
Projects a Euclidean point to a 2d image point (projection). Uses projection including distortion models. More... | |
CameraBase::ProjectionStatus | project (const Eigen::Vector3d &point, Eigen::Vector2d *imagePoint, Eigen::Matrix< double, 2, 3 > *pointJacobian, Eigen::Matrix2Xd *intrinsicsJacobian=NULL) const |
Projects a Euclidean point to a 2d image point (projection). Uses projection including distortion models. More... | |
CameraBase::ProjectionStatus | projectWithExternalParameters (const Eigen::Vector3d &point, const Eigen::VectorXd ¶meters, Eigen::Vector2d *imagePoint, Eigen::Matrix< double, 2, 3 > *pointJacobian, Eigen::Matrix2Xd *intrinsicsJacobian=NULL) const |
Projects a Euclidean point to a 2d image point (projection). Uses projection including distortion models. More... | |
void | projectBatch (const Eigen::Matrix3Xd &points, Eigen::Matrix2Xd *imagePoints, std::vector< CameraBase::ProjectionStatus > *stati) const |
Projects Euclidean points to 2d image points (projection) in a batch. Uses projection including distortion models. More... | |
CameraBase::ProjectionStatus | projectHomogeneous (const Eigen::Vector4d &point, Eigen::Vector2d *imagePoint) const |
Projects a point in homogenous coordinates to a 2d image point (projection). Uses projection including distortion models. More... | |
CameraBase::ProjectionStatus | projectHomogeneous (const Eigen::Vector4d &point, Eigen::Vector2d *imagePoint, Eigen::Matrix< double, 2, 4 > *pointJacobian, Eigen::Matrix2Xd *intrinsicsJacobian=NULL) const |
Projects a point in homogenous coordinates to a 2d image point (projection). Uses projection including distortion models. More... | |
CameraBase::ProjectionStatus | projectHomogeneousWithExternalParameters (const Eigen::Vector4d &point, const Eigen::VectorXd ¶meters, Eigen::Vector2d *imagePoint, Eigen::Matrix< double, 2, 4 > *pointJacobian=NULL, Eigen::Matrix2Xd *intrinsicsJacobian=NULL) const |
Projects a point in homogenous coordinates to a 2d image point (projection). Uses projection including distortion models. More... | |
void | projectHomogeneousBatch (const Eigen::Matrix4Xd &points, Eigen::Matrix2Xd *imagePoints, std::vector< CameraBase::ProjectionStatus > *stati) const |
Projects points in homogenous coordinates to 2d image points (projection) in a batch. Uses projection including distortion models. More... | |
Methods to backproject points | |
bool | backProject (const Eigen::Vector2d &imagePoint, Eigen::Vector3d *direction) const |
Back-project a 2d image point into Euclidean space (direction vector). More... | |
bool | backProject (const Eigen::Vector2d &imagePoint, Eigen::Vector3d *direction, Eigen::Matrix< double, 3, 2 > *pointJacobian) const |
Back-project a 2d image point into Euclidean space (direction vector). More... | |
bool | backProjectBatch (const Eigen::Matrix2Xd &imagePoints, Eigen::Matrix3Xd *directions, std::vector< bool > *success) const |
Back-project 2d image points into Euclidean space (direction vectors). More... | |
bool | backProjectHomogeneous (const Eigen::Vector2d &imagePoint, Eigen::Vector4d *direction) const |
Back-project a 2d image point into homogeneous point (direction vector). More... | |
bool | backProjectHomogeneous (const Eigen::Vector2d &imagePoint, Eigen::Vector4d *direction, Eigen::Matrix< double, 4, 2 > *pointJacobian) const |
Back-project a 2d image point into homogeneous point (direction vector). More... | |
bool | backProjectHomogeneousBatch (const Eigen::Matrix2Xd &imagePoints, Eigen::Matrix4Xd *directions, std::vector< bool > *success) const |
Back-project 2d image points into homogeneous points (direction vectors). More... | |
Public Member Functions inherited from okvis::cameras::CameraBase | |
CameraBase () | |
default Constructor – does nothing serious More... | |
CameraBase (int imageWidth, int imageHeight, uint64_t id=0) | |
Constructor for width, height and Id. More... | |
virtual | ~CameraBase () |
Destructor – does nothing. More... | |
uint32_t | imageWidth () const |
The width of the image in pixels. More... | |
uint32_t | imageHeight () const |
The height of the image in pixels. More... | |
bool | setMask (const cv::Mat &mask) |
Set the mask. It must be the same size as the image and comply with OpenCV: 0 == masked, nonzero == valid. Type must be CV_8U1C. More... | |
bool | hasMask () const |
Was a nonzero mask set? More... | |
bool | removeMask () |
stop masking More... | |
const cv::Mat & | mask () const |
Get the mask. More... | |
void | setId (uint64_t id) |
Set an Id. More... | |
uint64_t | id () const |
Obtain the Id. More... | |
virtual void | projectBatch (const Eigen::Matrix3Xd &points, Eigen::Matrix2Xd *imagePoints, std::vector< ProjectionStatus > *stati) const =0 |
Projects Euclidean points to 2d image points (projection) in a batch. Uses projection including distortion models. More... | |
virtual void | projectHomogeneousBatch (const Eigen::Matrix4Xd &points, Eigen::Matrix2Xd *imagePoints, std::vector< ProjectionStatus > *stati) const =0 |
Projects points in homogenous coordinates to 2d image points (projection) in a batch. Uses projection including distortion models. More... | |
virtual Eigen::Vector2d | createRandomImagePoint () const |
Creates a random (uniform distribution) image point. More... | |
virtual Eigen::Vector3d | createRandomVisiblePoint (double minDist=0.0, double maxDist=10.0) const |
Creates a random visible point in Euclidean coordinates. More... | |
virtual Eigen::Vector4d | createRandomVisibleHomogeneousPoint (double minDist=0.0, double maxDist=10.0) const |
Creates a random visible point in homogeneous coordinates. More... | |
Static Public Member Functions | |
static std::shared_ptr < CameraBase > | createTestObject () |
get a test instance More... | |
static PinholeCamera | testObject () |
get a test instance More... | |
Public Attributes | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef DISTORTION_T | distortion_t |
Makes the distortion type accessible. More... | |
Static Public Attributes | |
static const int | NumProjectionIntrinsics = 4 |
optimisable projection intrinsics More... | |
static const int | NumIntrinsics |
total number of intrinsics More... | |
Protected Member Functions | |
PinholeCamera ()=delete | |
No default constructor. More... | |
Protected Member Functions inherited from okvis::cameras::CameraBase | |
bool | isMasked (const Eigen::Vector2d &imagePoint) const |
Check if the keypoint is masked. More... | |
bool | isInImage (const Eigen::Vector2d &imagePoint) const |
Check if the keypoint is in the image. More... | |
Protected Attributes | |
distortion_t | distortion_ |
the distortion to be used More... | |
Eigen::Matrix< double, NumIntrinsics, 1 > | intrinsics_ |
summary of all intrinsics parameters More... | |
double | fu_ |
focalLengthU More... | |
double | fv_ |
focalLengthV More... | |
double | cu_ |
imageCenterU More... | |
double | cv_ |
imageCenterV More... | |
double | one_over_fu_ |
1.0 / fu_ More... | |
double | one_over_fv_ |
1.0 / fv_ More... | |
double | fu_over_fv_ |
fu_ / fv_ More... | |
Protected Attributes inherited from okvis::cameras::CameraBase | |
cv::Mat | mask_ |
The mask – empty by default. More... | |
int | imageWidth_ |
image width in pixels More... | |
int | imageHeight_ |
image height in pixels More... | |
uint64_t | id_ |
an Id More... | |
Additional Inherited Members | |
Public Types inherited from okvis::cameras::CameraBase | |
enum | ProjectionStatus { ProjectionStatus::Successful, ProjectionStatus::OutsideImage, ProjectionStatus::Masked, ProjectionStatus::Behind, ProjectionStatus::Invalid } |
okvis::cameras::PinholeCamera< DISTORTION_T >::PinholeCamera | ( | int | imageWidth, |
int | imageHeight, | ||
double | focalLengthU, | ||
double | focalLengthV, | ||
double | imageCenterU, | ||
double | imageCenterV, | ||
const distortion_t & | distortion, | ||
uint64_t | id = -1 |
||
) |
Constructor that will figure out the type of distortion.
[in] | imageWidth | The width in pixels. |
[in] | imageHeight | The height in pixels. |
[in] | focalLengthU | The horizontal focal length in pixels. |
[in] | focalLengthV | The vertical focal length in pixels. |
[in] | imageCenterU | The horizontal centre in pixels. |
[in] | imageCenterV | The vertical centre in pixels. |
[in] | distortion | The distortion object to be used. |
[in] | id | Assign a generic ID, if desired. |
|
inline |
Destructor.
|
protecteddelete |
No default constructor.
|
inlinevirtual |
Back-project a 2d image point into Euclidean space (direction vector).
[in] | imagePoint | The image point. |
[out] | direction | The Euclidean direction vector. |
Implements okvis::cameras::CameraBase.
|
inlinevirtual |
Back-project a 2d image point into Euclidean space (direction vector).
[in] | imagePoint | The image point. |
[out] | direction | The Euclidean direction vector. |
[out] | pointJacobian | Jacobian of the back-projection function w.r.t. the point. |
Implements okvis::cameras::CameraBase.
|
inlinevirtual |
Back-project 2d image points into Euclidean space (direction vectors).
[in] | imagePoints | The image points (one point per column). |
[out] | directions | The Euclidean direction vectors (one point per column). |
[out] | success | Success of each of the back-projection |
Implements okvis::cameras::CameraBase.
|
inlinevirtual |
Back-project a 2d image point into homogeneous point (direction vector).
[in] | imagePoint | The image point. |
[out] | direction | The homogeneous point as direction vector. |
Implements okvis::cameras::CameraBase.
|
inlinevirtual |
Back-project a 2d image point into homogeneous point (direction vector).
[in] | imagePoint | The image point. |
[out] | direction | The homogeneous point as direction vector. |
[out] | pointJacobian | Jacobian of the back-projection function. |
Implements okvis::cameras::CameraBase.
|
inlinevirtual |
Back-project 2d image points into homogeneous points (direction vectors).
[in] | imagePoints | The image points (one point per column). |
[out] | directions | The homogeneous points as direction vectors (one point per column). |
[out] | success | Success of each of the back-projection |
Implements okvis::cameras::CameraBase.
|
inlinestatic |
get a test instance
|
inlinevirtual |
Obtain the projection type.
Implements okvis::cameras::CameraBase.
|
inline |
Get the focal length along the u-dimension.
|
inline |
Get the focal length along the v-dimension.
|
inlinevirtual |
Get the intrinsics as a concatenated vector.
Implements okvis::cameras::CameraBase.
|
inline |
Get the image centre along the u-dimension.
|
inline |
Get the focal image centre along the v-dimension.
|
inlinevirtual |
Get the total number of intrinsics.
Implements okvis::cameras::CameraBase.
|
inlinevirtual |
Projects a Euclidean point to a 2d image point (projection). Uses projection including distortion models.
[in] | point | The point in Euclidean coordinates. |
[out] | imagePoint | The image point. |
Implements okvis::cameras::CameraBase.
|
inlinevirtual |
Projects a Euclidean point to a 2d image point (projection). Uses projection including distortion models.
[in] | point | The point in Euclidean coordinates. |
[out] | imagePoint | The image point. |
[out] | pointJacobian | The Jacobian of the projection function w.r.t. the point.. |
[out] | intrinsicsJacobian | The Jacobian of the projection function w.r.t. the intinsics. |
Implements okvis::cameras::CameraBase.
|
inline |
Projects Euclidean points to 2d image points (projection) in a batch. Uses projection including distortion models.
[in] | points | The points in Euclidean coordinates (one point per column). |
[out] | imagePoints | The image points (one point per column). |
[out] | stati | Get information about the success of the projections. See ProjectionStatus for more information. |
|
inlinevirtual |
Projects a point in homogenous coordinates to a 2d image point (projection). Uses projection including distortion models.
[in] | point | The point in Homogeneous coordinates. |
[out] | imagePoint | The image point. |
Implements okvis::cameras::CameraBase.
|
inlinevirtual |
Projects a point in homogenous coordinates to a 2d image point (projection). Uses projection including distortion models.
[in] | point | The point in Homogeneous coordinates. |
[out] | imagePoint | The image point. |
[out] | pointJacobian | The Jacobian of the projection function w.r.t. the point. |
[out] | intrinsicsJacobian | The Jacobian of the projection function w.r.t. the intrinsics. |
Implements okvis::cameras::CameraBase.
|
inline |
Projects points in homogenous coordinates to 2d image points (projection) in a batch. Uses projection including distortion models.
[in] | points | The points in homogeneous coordinates (one point per column). |
[out] | imagePoints | The image points (one point per column). |
[out] | stati | Get information about the success of the projections. See ProjectionStatus for more information. |
|
inlinevirtual |
Projects a point in homogenous coordinates to a 2d image point (projection). Uses projection including distortion models.
[in] | point | The point in Homogeneous coordinates. |
[in] | parameters | The intrinsics. |
[out] | imagePoint | The image point. |
[out] | pointJacobian | The Jacobian of the projection function w.r.t. the point. |
[out] | intrinsicsJacobian | The Jacobian of the projection function w.r.t. the intrinsics. |
Implements okvis::cameras::CameraBase.
|
inlinevirtual |
Projects a Euclidean point to a 2d image point (projection). Uses projection including distortion models.
[in] | point | The point in Euclidean coordinates. |
[in] | parameters | The intrinsics. |
[out] | imagePoint | The image point. |
[out] | pointJacobian | The Jacobian of the projection function w.r.t. the point.. |
[out] | intrinsicsJacobian | The Jacobian of the projection function w.r.t. the intinsics. |
Implements okvis::cameras::CameraBase.
|
inlinevirtual |
overwrite all intrinsics - use with caution !
[in] | intrinsics | The intrinsics as a concatenated vector. |
Implements okvis::cameras::CameraBase.
|
inlinestatic |
get a test instance
|
inlinevirtual |
Obtain the projection type.
Implements okvis::cameras::CameraBase.
|
protected |
imageCenterU
|
protected |
imageCenterV
|
protected |
the distortion to be used
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef DISTORTION_T okvis::cameras::PinholeCamera< DISTORTION_T >::distortion_t |
Makes the distortion type accessible.
|
protected |
focalLengthU
|
protected |
fu_ / fv_
|
protected |
focalLengthV
|
protected |
summary of all intrinsics parameters
|
static |
total number of intrinsics
|
static |
optimisable projection intrinsics
|
protected |
1.0 / fu_
|
protected |
1.0 / fv_