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   } // namespace computerVision
00365   
00366 } // namespace dlr
00367 
00368 
00369 /* ============ Definitions of inline & template functions ============ */
00370 
00371 
00372 #include <cmath>
00373 
00374 namespace dlr {
00375 
00376   namespace computerVision {
00377     
00378 
00379   } // namespace computerVision
00380   
00381 } // namespace dlr
00382 
00383 #endif /* #ifndef DLR_COMPUTERVISION_CAMERAINTRINSICSPINHOLE_H */

Generated on Wed Nov 25 12:15:03 2009 for dlrComputerVision Utility Library by  doxygen 1.5.8