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/vector2D.h>
00023 
00024 
00025 namespace dlr {
00026 
00027   namespace computerVision {
00028 
00064     class CameraIntrinsicsPinhole : public CameraIntrinsics {
00065     public:
00066 
00072       CameraIntrinsicsPinhole();
00073 
00074       
00115       CameraIntrinsicsPinhole(size_t numPixelsX,
00116                               size_t numPixelsY,
00117                               double focalLength,
00118                               double pixelSizeX,
00119                               double pixelSizeY,
00120                               double centerU,
00121                               double centerV);
00122 
00123 
00127       virtual
00128       ~CameraIntrinsicsPinhole() {}
00129 
00130 
00140       virtual dlr::numeric::Vector2D
00141       project(const dlr::numeric::Vector3D& point) const;
00142 
00143 
00155       std::istream&
00156       readFromStream(std::istream& inputStream);
00157 
00158 
00175       virtual dlr::geometry::Ray3D
00176       reverseProject(const dlr::numeric::Vector2D& pixelPosition,
00177                      bool normalize = true) const;
00178 
00179 
00190       std::ostream&
00191       writeToStream(std::ostream& outputStream) const;
00192 
00193       
00194     protected:
00195 
00196       double m_centerU;
00197       double m_centerV;
00198       double m_kX;
00199       double m_kY;
00200       size_t m_numPixelsX;
00201       size_t m_numPixelsY;
00202 
00203     };
00204 
00205 
00222     inline std::ostream&
00223     operator<<(std::ostream& stream,
00224                const CameraIntrinsicsPinhole& intrinsics)
00225     {
00226       return intrinsics.writeToStream(stream);
00227     }
00228 
00229 
00244     inline std::istream&
00245     operator>>(std::istream& stream,
00246                CameraIntrinsicsPinhole& intrinsics)
00247     {
00248       return intrinsics.readFromStream(stream);
00249     }
00250 
00251     
00252   } // namespace computerVision
00253   
00254 } // namespace dlr
00255 
00256 
00257 /* ============ Definitions of inline & template functions ============ */
00258 
00259 
00260 #include <cmath>
00261 
00262 namespace dlr {
00263 
00264   
00265 } // namespace dlr
00266 
00267 #endif /* #ifndef DLR_COMPUTERVISION_CAMERAINTRINSICSPINHOLE_H */

Generated on Tue Jan 6 23:24:56 2009 for dlrComputerVision Utility Library by  doxygen 1.5.6