Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
image_geometry::PinholeCameraModel Class Reference

Simplifies interpreting images geometrically using the parameters from sensor_msgs/CameraInfo. More...

#include <pinhole_camera_model.h>

Classes

struct  Cache
 

Public Member Functions

uint32_t binningX () const
 Returns the number of columns in each bin. More...
 
uint32_t binningY () const
 Returns the number of rows in each bin. More...
 
const sensor_msgs::CameraInfo & cameraInfo () const
 Returns the camera info message held internally. More...
 
double cx () const
 Returns the x coordinate of the optical center. More...
 
double cy () const
 Returns the y coordinate of the optical center. More...
 
const cv::Mat_< double > & distortionCoeffs () const
 Returns the distortion coefficients. More...
 
bool fromCameraInfo (const sensor_msgs::CameraInfo &msg)
 Set the camera parameters from the sensor_msgs/CameraInfo message. More...
 
bool fromCameraInfo (const sensor_msgs::CameraInfoConstPtr &msg)
 Set the camera parameters from the sensor_msgs/CameraInfo message. More...
 
const cv::Matx33d & fullIntrinsicMatrix () const
 Returns the original camera matrix for full resolution. More...
 
const cv::Matx34d & fullProjectionMatrix () const
 Returns the projection matrix for full resolution. More...
 
cv::Size fullResolution () const
 The resolution at which the camera was calibrated. More...
 
double fx () const
 Returns the focal length (pixels) in x direction of the rectified image. More...
 
double fy () const
 Returns the focal length (pixels) in y direction of the rectified image. More...
 
double getDeltaU (double deltaX, double Z) const
 Compute delta u, given Z and delta X in Cartesian space. More...
 
double getDeltaV (double deltaY, double Z) const
 Compute delta v, given Z and delta Y in Cartesian space. More...
 
double getDeltaX (double deltaU, double Z) const
 Compute delta X, given Z in Cartesian space and delta u in pixels. More...
 
double getDeltaY (double deltaV, double Z) const
 Compute delta Y, given Z in Cartesian space and delta v in pixels. More...
 
bool initialized () const
 Returns true if the camera has been initialized. More...
 
const cv::Matx33d & intrinsicMatrix () const
 Returns the original camera matrix. More...
 
PinholeCameraModeloperator= (const PinholeCameraModel &other)
 
 PinholeCameraModel ()
 
 PinholeCameraModel (const PinholeCameraModel &other)
 
cv::Point2d project3dToPixel (const cv::Point3d &xyz) const
 Project a 3d point to rectified pixel coordinates. More...
 
const cv::Matx34d & projectionMatrix () const
 Returns the projection matrix. More...
 
cv::Point3d projectPixelTo3dRay (const cv::Point2d &uv_rect) const
 Project a rectified pixel to a 3d ray. More...
 
cv::Rect rawRoi () const
 The current raw ROI, as used for capture by the camera driver. More...
 
cv::Rect rectifiedRoi () const
 The current rectified ROI, which best fits the raw ROI. More...
 
void rectifyImage (const cv::Mat &raw, cv::Mat &rectified, int interpolation=cv::INTER_LINEAR) const
 Rectify a raw camera image. More...
 
cv::Point2d rectifyPoint (const cv::Point2d &uv_raw) const
 Compute the rectified image coordinates of a pixel in the raw image. More...
 
cv::Rect rectifyRoi (const cv::Rect &roi_raw) const
 Compute the rectified ROI best fitting a raw ROI. More...
 
cv::Size reducedResolution () const
 The resolution of the current rectified image. More...
 
const cv::Matx33d & rotationMatrix () const
 Returns the rotation matrix. More...
 
ros::Time stamp () const
 Get the time stamp associated with this camera model. More...
 
std::string tfFrame () const
 Get the name of the camera coordinate frame in tf. More...
 
cv::Point2d toFullResolution (const cv::Point2d &uv_reduced) const
 
cv::Rect toFullResolution (const cv::Rect &roi_reduced) const
 
cv::Point2d toReducedResolution (const cv::Point2d &uv_full) const
 
cv::Rect toReducedResolution (const cv::Rect &roi_full) const
 
double Tx () const
 Returns the x-translation term of the projection matrix. More...
 
double Ty () const
 Returns the y-translation term of the projection matrix. More...
 
void unrectifyImage (const cv::Mat &rectified, cv::Mat &raw, int interpolation=cv::INTER_LINEAR) const
 Apply camera distortion to a rectified image. More...
 
cv::Point2d unrectifyPoint (const cv::Point2d &uv_rect) const
 Compute the raw image coordinates of a pixel in the rectified image. More...
 
cv::Rect unrectifyRoi (const cv::Rect &roi_rect) const
 Compute the raw ROI best fitting a rectified ROI. More...
 

Protected Member Functions

void initRectificationMaps () const
 

Protected Attributes

std::shared_ptr< Cachecache_
 
sensor_msgs::CameraInfo cam_info_
 
cv::Mat_< double > D_
 
cv::Matx33d K_
 
cv::Matx33d K_full_
 
cv::Matx34d P_
 
cv::Matx34d P_full_
 
cv::Matx33d R_
 

Friends

class StereoCameraModel
 

Detailed Description

Simplifies interpreting images geometrically using the parameters from sensor_msgs/CameraInfo.

Definition at line 24 of file pinhole_camera_model.h.

Constructor & Destructor Documentation

◆ PinholeCameraModel() [1/2]

image_geometry::PinholeCameraModel::PinholeCameraModel ( )

Definition at line 34 of file pinhole_camera_model.cpp.

◆ PinholeCameraModel() [2/2]

image_geometry::PinholeCameraModel::PinholeCameraModel ( const PinholeCameraModel other)

Definition at line 45 of file pinhole_camera_model.cpp.

Member Function Documentation

◆ binningX()

uint32_t image_geometry::PinholeCameraModel::binningX ( ) const
inline

Returns the number of columns in each bin.

Definition at line 315 of file pinhole_camera_model.h.

◆ binningY()

uint32_t image_geometry::PinholeCameraModel::binningY ( ) const
inline

Returns the number of rows in each bin.

Definition at line 316 of file pinhole_camera_model.h.

◆ cameraInfo()

const sensor_msgs::CameraInfo & image_geometry::PinholeCameraModel::cameraInfo ( ) const
inline

Returns the camera info message held internally.

Definition at line 300 of file pinhole_camera_model.h.

◆ cx()

double image_geometry::PinholeCameraModel::cx ( ) const
inline

Returns the x coordinate of the optical center.

Definition at line 310 of file pinhole_camera_model.h.

◆ cy()

double image_geometry::PinholeCameraModel::cy ( ) const
inline

Returns the y coordinate of the optical center.

Definition at line 311 of file pinhole_camera_model.h.

◆ distortionCoeffs()

const cv::Mat_< double > & image_geometry::PinholeCameraModel::distortionCoeffs ( ) const
inline

Returns the distortion coefficients.

Definition at line 302 of file pinhole_camera_model.h.

◆ fromCameraInfo() [1/2]

bool image_geometry::PinholeCameraModel::fromCameraInfo ( const sensor_msgs::CameraInfo &  msg)

Set the camera parameters from the sensor_msgs/CameraInfo message.

Todo:
Calculate and use rectified ROI
Todo:
Adjust P by rectified ROI instead

Definition at line 84 of file pinhole_camera_model.cpp.

◆ fromCameraInfo() [2/2]

bool image_geometry::PinholeCameraModel::fromCameraInfo ( const sensor_msgs::CameraInfoConstPtr &  msg)

Set the camera parameters from the sensor_msgs/CameraInfo message.

Definition at line 194 of file pinhole_camera_model.cpp.

◆ fullIntrinsicMatrix()

const cv::Matx33d & image_geometry::PinholeCameraModel::fullIntrinsicMatrix ( ) const
inline

Returns the original camera matrix for full resolution.

Definition at line 305 of file pinhole_camera_model.h.

◆ fullProjectionMatrix()

const cv::Matx34d & image_geometry::PinholeCameraModel::fullProjectionMatrix ( ) const
inline

Returns the projection matrix for full resolution.

Definition at line 306 of file pinhole_camera_model.h.

◆ fullResolution()

cv::Size image_geometry::PinholeCameraModel::fullResolution ( ) const

The resolution at which the camera was calibrated.

The maximum resolution at which the camera can be used with the current calibration; normally this is the same as the imager resolution.

Definition at line 199 of file pinhole_camera_model.cpp.

◆ fx()

double image_geometry::PinholeCameraModel::fx ( ) const
inline

Returns the focal length (pixels) in x direction of the rectified image.

Definition at line 308 of file pinhole_camera_model.h.

◆ fy()

double image_geometry::PinholeCameraModel::fy ( ) const
inline

Returns the focal length (pixels) in y direction of the rectified image.

Definition at line 309 of file pinhole_camera_model.h.

◆ getDeltaU()

double image_geometry::PinholeCameraModel::getDeltaU ( double  deltaX,
double  Z 
) const
inline

Compute delta u, given Z and delta X in Cartesian space.

For given Z, this is the inverse of getDeltaX().

Parameters
deltaXDelta X, in Cartesian space
ZZ (depth), in Cartesian space

Definition at line 318 of file pinhole_camera_model.h.

◆ getDeltaV()

double image_geometry::PinholeCameraModel::getDeltaV ( double  deltaY,
double  Z 
) const
inline

Compute delta v, given Z and delta Y in Cartesian space.

For given Z, this is the inverse of getDeltaY().

Parameters
deltaYDelta Y, in Cartesian space
ZZ (depth), in Cartesian space

Definition at line 324 of file pinhole_camera_model.h.

◆ getDeltaX()

double image_geometry::PinholeCameraModel::getDeltaX ( double  deltaU,
double  Z 
) const
inline

Compute delta X, given Z in Cartesian space and delta u in pixels.

For given Z, this is the inverse of getDeltaU().

Parameters
deltaUDelta u, in pixels
ZZ (depth), in Cartesian space

Definition at line 330 of file pinhole_camera_model.h.

◆ getDeltaY()

double image_geometry::PinholeCameraModel::getDeltaY ( double  deltaV,
double  Z 
) const
inline

Compute delta Y, given Z in Cartesian space and delta v in pixels.

For given Z, this is the inverse of getDeltaV().

Parameters
deltaVDelta v, in pixels
ZZ (depth), in Cartesian space

Definition at line 336 of file pinhole_camera_model.h.

◆ initialized()

bool image_geometry::PinholeCameraModel::initialized ( ) const
inline

Returns true if the camera has been initialized.

Definition at line 262 of file pinhole_camera_model.h.

◆ initRectificationMaps()

void image_geometry::PinholeCameraModel::initRectificationMaps ( ) const
protected
Todo:
For large binning settings, can drop extra rows/cols at bottom/right boundary. Make sure we're handling that 100% correctly.
Todo:
Should binned resolution, K, P be part of public API?
Todo:
Use rectified ROI

Definition at line 413 of file pinhole_camera_model.cpp.

◆ intrinsicMatrix()

const cv::Matx33d & image_geometry::PinholeCameraModel::intrinsicMatrix ( ) const
inline

Returns the original camera matrix.

Definition at line 301 of file pinhole_camera_model.h.

◆ operator=()

PinholeCameraModel & image_geometry::PinholeCameraModel::operator= ( const PinholeCameraModel other)

Definition at line 38 of file pinhole_camera_model.cpp.

◆ project3dToPixel()

cv::Point2d image_geometry::PinholeCameraModel::project3dToPixel ( const cv::Point3d &  xyz) const

Project a 3d point to rectified pixel coordinates.

This is the inverse of projectPixelTo3dRay().

Parameters
xyz3d point in the camera coordinate frame
Returns
(u,v) in rectified pixel coordinates

Definition at line 268 of file pinhole_camera_model.cpp.

◆ projectionMatrix()

const cv::Matx34d & image_geometry::PinholeCameraModel::projectionMatrix ( ) const
inline

Returns the projection matrix.

Definition at line 304 of file pinhole_camera_model.h.

◆ projectPixelTo3dRay()

cv::Point3d image_geometry::PinholeCameraModel::projectPixelTo3dRay ( const cv::Point2d &  uv_rect) const

Project a rectified pixel to a 3d ray.

Returns the unit vector in the camera coordinate frame in the direction of rectified pixel (u,v) in the image plane. This is the inverse of project3dToPixel().

In 1.4.x, the vector has z = 1.0. Previously, this function returned a unit vector.

Parameters
uv_rectRectified pixel coordinates
Returns
3d ray passing through (u,v)

Definition at line 282 of file pinhole_camera_model.cpp.

◆ rawRoi()

cv::Rect image_geometry::PinholeCameraModel::rawRoi ( ) const

The current raw ROI, as used for capture by the camera driver.

Definition at line 245 of file pinhole_camera_model.cpp.

◆ rectifiedRoi()

cv::Rect image_geometry::PinholeCameraModel::rectifiedRoi ( ) const

The current rectified ROI, which best fits the raw ROI.

Definition at line 253 of file pinhole_camera_model.cpp.

◆ rectifyImage()

void image_geometry::PinholeCameraModel::rectifyImage ( const cv::Mat &  raw,
cv::Mat &  rectified,
int  interpolation = cv::INTER_LINEAR 
) const

Rectify a raw camera image.

Definition at line 293 of file pinhole_camera_model.cpp.

◆ rectifyPoint()

cv::Point2d image_geometry::PinholeCameraModel::rectifyPoint ( const cv::Point2d &  uv_raw) const

Compute the rectified image coordinates of a pixel in the raw image.

Todo:
cv::undistortPoints requires the point data to be float, should allow double

Definition at line 331 of file pinhole_camera_model.cpp.

◆ rectifyRoi()

cv::Rect image_geometry::PinholeCameraModel::rectifyRoi ( const cv::Rect &  roi_raw) const

Compute the rectified ROI best fitting a raw ROI.

Todo:
Actually implement "best fit" as described by REP 104.

Definition at line 371 of file pinhole_camera_model.cpp.

◆ reducedResolution()

cv::Size image_geometry::PinholeCameraModel::reducedResolution ( ) const

The resolution of the current rectified image.

The size of the rectified image associated with the latest CameraInfo, as reduced by binning/ROI and affected by distortion. If binning and ROI are not in use, this is the same as fullResolution().

Definition at line 205 of file pinhole_camera_model.cpp.

◆ rotationMatrix()

const cv::Matx33d & image_geometry::PinholeCameraModel::rotationMatrix ( ) const
inline

Returns the rotation matrix.

Definition at line 303 of file pinhole_camera_model.h.

◆ stamp()

ros::Time image_geometry::PinholeCameraModel::stamp ( ) const
inline

Get the time stamp associated with this camera model.

Definition at line 294 of file pinhole_camera_model.h.

◆ tfFrame()

std::string image_geometry::PinholeCameraModel::tfFrame ( ) const
inline

Get the name of the camera coordinate frame in tf.

Definition at line 288 of file pinhole_camera_model.h.

◆ toFullResolution() [1/2]

cv::Point2d image_geometry::PinholeCameraModel::toFullResolution ( const cv::Point2d &  uv_reduced) const

Definition at line 213 of file pinhole_camera_model.cpp.

◆ toFullResolution() [2/2]

cv::Rect image_geometry::PinholeCameraModel::toFullResolution ( const cv::Rect &  roi_reduced) const

Definition at line 220 of file pinhole_camera_model.cpp.

◆ toReducedResolution() [1/2]

cv::Point2d image_geometry::PinholeCameraModel::toReducedResolution ( const cv::Point2d &  uv_full) const

Definition at line 229 of file pinhole_camera_model.cpp.

◆ toReducedResolution() [2/2]

cv::Rect image_geometry::PinholeCameraModel::toReducedResolution ( const cv::Rect &  roi_full) const

Definition at line 236 of file pinhole_camera_model.cpp.

◆ Tx()

double image_geometry::PinholeCameraModel::Tx ( ) const
inline

Returns the x-translation term of the projection matrix.

Definition at line 312 of file pinhole_camera_model.h.

◆ Ty()

double image_geometry::PinholeCameraModel::Ty ( ) const
inline

Returns the y-translation term of the projection matrix.

Definition at line 313 of file pinhole_camera_model.h.

◆ unrectifyImage()

void image_geometry::PinholeCameraModel::unrectifyImage ( const cv::Mat &  rectified,
cv::Mat &  raw,
int  interpolation = cv::INTER_LINEAR 
) const

Apply camera distortion to a rectified image.

Todo:
Implement unrectifyImage()

Definition at line 317 of file pinhole_camera_model.cpp.

◆ unrectifyPoint()

cv::Point2d image_geometry::PinholeCameraModel::unrectifyPoint ( const cv::Point2d &  uv_rect) const

Compute the raw image coordinates of a pixel in the rectified image.

Definition at line 349 of file pinhole_camera_model.cpp.

◆ unrectifyRoi()

cv::Rect image_geometry::PinholeCameraModel::unrectifyRoi ( const cv::Rect &  roi_rect) const

Compute the raw ROI best fitting a rectified ROI.

Todo:
Actually implement "best fit" as described by REP 104.

Definition at line 392 of file pinhole_camera_model.cpp.

Friends And Related Function Documentation

◆ StereoCameraModel

friend class StereoCameraModel
friend

Definition at line 283 of file pinhole_camera_model.h.

Member Data Documentation

◆ cache_

std::shared_ptr<Cache> image_geometry::PinholeCameraModel::cache_
protected

Definition at line 274 of file pinhole_camera_model.h.

◆ cam_info_

sensor_msgs::CameraInfo image_geometry::PinholeCameraModel::cam_info_
protected

Definition at line 265 of file pinhole_camera_model.h.

◆ D_

cv::Mat_<double> image_geometry::PinholeCameraModel::D_
protected

Definition at line 266 of file pinhole_camera_model.h.

◆ K_

cv::Matx33d image_geometry::PinholeCameraModel::K_
protected

Definition at line 268 of file pinhole_camera_model.h.

◆ K_full_

cv::Matx33d image_geometry::PinholeCameraModel::K_full_
protected

Definition at line 270 of file pinhole_camera_model.h.

◆ P_

cv::Matx34d image_geometry::PinholeCameraModel::P_
protected

Definition at line 269 of file pinhole_camera_model.h.

◆ P_full_

cv::Matx34d image_geometry::PinholeCameraModel::P_full_
protected

Definition at line 271 of file pinhole_camera_model.h.

◆ R_

cv::Matx33d image_geometry::PinholeCameraModel::R_
protected

Definition at line 267 of file pinhole_camera_model.h.


The documentation for this class was generated from the following files:


image_geometry
Author(s): Patrick Mihelich
autogenerated on Tue Oct 4 2022 02:19:05