vrcore  0.45
visuReal Messkern
 All Classes Files Functions Variables
coord_transform.h
Go to the documentation of this file.
1 #ifndef VR_COORD_TRANSFORM_H
2 #define VR_COORD_TRANSFORM_H
3 
4 namespace vr
5 {
6 
20 {
21  // camera matrix
22  cv::Matx33d mat3dTo2d_;
23  // inverse der camera matrix
24  cv::Matx33d mat2dTo3d_;
25  cv::Mat distortionCoeffs_;
26  // Rotations- und Translationsvektor aus cv::solvePnP();
27  // Argumente für cv::projectPoints().
28  cv::Vec3d rvec_, tvec_;
29  cv::Matx33d R_;
30  cv::Matx33d R_inv_;
31  const cv::Matx33d& scaledCameraMatrix(const cv::Matx33d& cameraMatrix, double scaleFactor);
32 public:
38  CoordinateTransformation(const cv::Matx33d& cameraMatrix,
39  const cv::Mat& distortionCoeffs,
40  double scaleFactor = 1.0);
49  void init(cv::InputArray objPoints, cv::InputArray imgPoints,
50  const cv::Vec3d& rvec, const cv::Vec3d& tvec);
56  {
57  rvec_ = src.rvec_;
58  tvec_ = src.tvec_;
59  R_ = src.R_;
60  R_inv_ = src.R_inv_;
61  }
62  inline const cv::Vec3d& getRotationVector() const {return rvec_; };
63  inline const cv::Vec3d& getTranslationVector() const {return tvec_; };
72  cv::Vec3d& fromScreen(const cv::Point2f& imgPoint, cv::Vec3d& imgPlanePoint) const;
78  cv::Point2f& toScreen(const cv::Vec3d& camPoint, cv::Point2f& imgPoint) const;
84  void toScreen(cv::InputArray camPoints, cv::OutputArray imgPoints) const
85  {
86  cv::Vec3d rvec(0, 0, 0);
87  cv::Vec3d tvec(0, 0, 0);
88  cv::projectPoints(camPoints, rvec, tvec, mat3dTo2d_, distortionCoeffs_, imgPoints);
89  }
90 
96  cv::Vec3d& fromWorld(const cv::Vec3d& objPoint, cv::Vec3d& camPoint) const;
97  cv::Point3f& fromWorld(const cv::Point3f& objPoint, cv::Point3f& camPoint) const;
103  cv::Vec3d& toWorld(const cv::Vec3d& camPoint, cv::Vec3d& objPoint) const;
110  void worldToScreen(cv::InputArray objPoints, cv::OutputArray imgPoints) const
111  {
112  cv::projectPoints(objPoints, rvec_, tvec_, mat3dTo2d_, distortionCoeffs_, imgPoints);
113  }
120  cv::Point2f& worldToScreen(const cv::Vec3d& objPoint, cv::Point2f& imgPoint) const;
129  Line screenToWorld(const cv::Point2f& imgPoint) const;
130 };
131 
132 } // namespace vr
133 
134 #endif // VR_COORD_TRANSFORM_H
void toScreen(cv::InputArray camPoints, cv::OutputArray imgPoints) const
Projiziert Raumpunkte ins Bild.
Definition: coord_transform.h:84
cv::Point2f & toScreen(const cv::Vec3d &camPoint, cv::Point2f &imgPoint) const
Projiziert einen Raumpunkt ins Bild.
Definition: coord_transform.cpp:93
void worldToScreen(cv::InputArray objPoints, cv::OutputArray imgPoints) const
Projiziert Raumpunkte auf Bildpunkte.
Definition: coord_transform.h:110
void copyExtrinsicParamsFrom(const CoordinateTransformation &src)
copy extrinsic camera parameters from another CoordinateTransformation object.
Definition: coord_transform.h:55
Line screenToWorld(const cv::Point2f &imgPoint) const
Bildpunkt -> Gerade im Raum im Weltkoordinatensystem.
Definition: coord_transform.cpp:107
cv::Vec3d & fromScreen(const cv::Point2f &imgPoint, cv::Vec3d &imgPlanePoint) const
Projiziert einen Bildpunkt auf die Bildebene.
Definition: coord_transform.cpp:80
void init(cv::InputArray objPoints, cv::InputArray imgPoints, const cv::Vec3d &rvec, const cv::Vec3d &tvec)
Definition: coord_transform.cpp:38
Definition: coord_transform.h:19
cv::Vec3d & toWorld(const cv::Vec3d &camPoint, cv::Vec3d &objPoint) const
Kamerakoordinaten -> Weltkoordinaten.
Definition: coord_transform.cpp:70
Gerade im Raum.
Definition: algorithms.h:22
cv::Vec3d & fromWorld(const cv::Vec3d &objPoint, cv::Vec3d &camPoint) const
Weltkoordinaten -> Kamerakoordinaten.
Definition: coord_transform.cpp:50