cameraIntrinsicsPinhole.h
Go to the documentation of this file.00001
00016 #ifndef DLR_COMPUTERVISION_CAMERAINTRINSICSPINHOLE_H
00017 #define DLR_COMPUTERVISION_CAMERAINTRINSICSPINHOLE_H
00018
00019 #include <iostream>
00020 #include <dlrComputerVision/cameraIntrinsics.h>
00021 #include <dlrGeometry/ray3D.h>
00022 #include <dlrNumeric/array2D.h>
00023 #include <dlrNumeric/vector2D.h>
00024
00025
00026 namespace dlr {
00027
00028 namespace computerVision {
00029
00065 class CameraIntrinsicsPinhole : public CameraIntrinsics {
00066 public:
00067
00073 CameraIntrinsicsPinhole();
00074
00075
00116 CameraIntrinsicsPinhole(size_t numPixelsX,
00117 size_t numPixelsY,
00118 double focalLength,
00119 double pixelSizeX,
00120 double pixelSizeY,
00121 double centerU,
00122 double centerV);
00123
00124
00128 virtual
00129 ~CameraIntrinsicsPinhole() {}
00130
00131
00140 double
00141 getCenterU() const {return m_centerU;}
00142
00143
00152 double
00153 getCenterV() const {return m_centerV;}
00154
00155
00162 double
00163 getFocalLength() const {return m_focalLength;}
00164
00165
00172 double
00173 getKx() const {return m_kX;}
00174
00175
00182 double
00183 getKy() const {return m_kY;}
00184
00185
00193 size_t
00194 getNumPixelsX() const {return m_numPixelsX;}
00195
00196
00204 size_t
00205 getNumPixelsY() const {return m_numPixelsY;}
00206
00207
00215 double
00216 getPixelSizeX() const {return m_focalLength / m_kX;}
00217
00218
00226 double
00227 getPixelSizeY() const {return m_focalLength / m_kY;}
00228
00229
00238 dlr::numeric::Array2D<double>
00239 getProjectionMatrix() const;
00240
00241
00251 virtual dlr::numeric::Vector2D
00252 project(const dlr::numeric::Vector3D& point) const;
00253
00254
00266 std::istream&
00267 readFromStream(std::istream& inputStream);
00268
00269
00286 virtual dlr::geometry::Ray3D
00287 reverseProject(const dlr::numeric::Vector2D& pixelPosition,
00288 bool normalize = true) const;
00289
00290
00301 std::ostream&
00302 writeToStream(std::ostream& outputStream) const;
00303
00304
00305 protected:
00306
00307 double m_centerU;
00308 double m_centerV;
00309 double m_focalLength;
00310 double m_kX;
00311 double m_kY;
00312 size_t m_numPixelsX;
00313 size_t m_numPixelsY;
00314
00315 };
00316
00317
00334 inline std::ostream&
00335 operator<<(std::ostream& stream,
00336 const CameraIntrinsicsPinhole& intrinsics)
00337 {
00338 return intrinsics.writeToStream(stream);
00339 }
00340
00341
00356 inline std::istream&
00357 operator>>(std::istream& stream,
00358 CameraIntrinsicsPinhole& intrinsics)
00359 {
00360 return intrinsics.readFromStream(stream);
00361 }
00362
00363
00364 }
00365
00366 }
00367
00368
00369
00370
00371
00372 #include <cmath>
00373
00374 namespace dlr {
00375
00376 namespace computerVision {
00377
00378
00379 }
00380
00381 }
00382
00383 #endif