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 }
00253
00254 }
00255
00256
00257
00258
00259
00260 #include <cmath>
00261
00262 namespace dlr {
00263
00264
00265 }
00266
00267 #endif