8 #ifndef META_OCEAN_MATH_ANY_CAMERA_H
9 #define META_OCEAN_MATH_ANY_CAMERA_H
23 template <
typename T>
class AnyCameraT;
128 template <
typename T>
153 virtual std::string
name()
const = 0;
162 virtual std::unique_ptr<AnyCameraT<T>>
clone(
const unsigned int width = 0u,
const unsigned int height = 0u)
const = 0;
171 virtual std::unique_ptr<AnyCameraT<float>>
cloneToFloat(
const unsigned int width = 0u,
const unsigned int height = 0u)
const = 0;
180 virtual std::unique_ptr<AnyCameraT<double>>
cloneToDouble(
const unsigned int width = 0u,
const unsigned int height = 0u)
const = 0;
186 virtual unsigned int width()
const = 0;
449 template <
typename U>
490 template <
typename T,
typename TCameraWrapper>
530 std::string
name()
const override;
539 std::unique_ptr<AnyCameraT<T>>
clone(
const unsigned int width = 0u,
const unsigned int height = 0u)
const override;
548 std::unique_ptr<AnyCameraT<float>>
cloneToFloat(
const unsigned int width = 0u,
const unsigned int height = 0u)
const override;
557 std::unique_ptr<AnyCameraT<double>>
cloneToDouble(
const unsigned int width = 0u,
const unsigned int height = 0u)
const override;
563 unsigned int width()
const override;
569 unsigned int height()
const override;
618 T
fovX()
const override;
625 T
fovY()
const override;
724 void vector(
const VectorT2<T>* distortedImagePoints,
const size_t size,
VectorT3<T>* vectors,
const bool makeUnitVector =
true)
const override;
823 template <
typename T,
typename TCameraWrapperBase>
831 using typename TCameraWrapperBase::ActualCamera;
857 inline T
fovX()
const;
863 inline T
fovY()
const;
932 template <
typename T>
971 inline unsigned int width()
const;
977 inline unsigned int height()
const;
1074 template <
typename U>
1075 inline std::unique_ptr<AnyCameraT<U>>
clone(
const unsigned int width = 0u,
const unsigned int height = 0u)
const;
1087 static inline std::string
name();
1101 template <
typename T>
1140 inline unsigned int width()
const;
1146 inline unsigned int height()
const;
1248 template <
typename U>
1249 inline std::unique_ptr<AnyCameraT<U>>
clone(
const unsigned int width = 0u,
const unsigned int height = 0u)
const;
1261 static inline std::string
name();
1274 template <
typename T>
1289 const std::string&
reason()
const;
1324 template <
typename T>
1363 inline unsigned int width()
const;
1369 inline unsigned int height()
const;
1471 template <
typename U>
1472 inline std::unique_ptr<AnyCameraT<U>>
clone(
const unsigned int width = 0u,
const unsigned int height = 0u)
const;
1484 static inline std::string
name();
1498 template <
typename T>
1528 template <
typename T>
1558 template <
typename T>
1588 return anyCamera->cloneToFloat();
1600 return anyCamera->cloneToDouble();
1606 template <
typename T>
1607 template <
typename U>
1610 static_assert(std::is_same<T, U>::value,
"Invalid data types!");
1615 template <
typename T,
typename TCameraWrapper>
1622 template <
typename T,
typename TCameraWrapper>
1629 template <
typename T,
typename TCameraWrapper>
1632 return TCameraWrapper::anyCameraType();
1635 template <
typename T,
typename TCameraWrapper>
1638 return TCameraWrapper::name();
1641 template <
typename T,
typename TCameraWrapper>
1644 return TCameraWrapper::template clone<T>(width, height);
1647 template <
typename T,
typename TCameraWrapper>
1650 return TCameraWrapper::template clone<float>(width, height);
1653 template <
typename T,
typename TCameraWrapper>
1656 return TCameraWrapper::template clone<double>(width, height);
1659 template <
typename T,
typename TCameraWrapper>
1662 return TCameraWrapper::width();
1665 template <
typename T,
typename TCameraWrapper>
1668 return TCameraWrapper::height();
1671 template <
typename T,
typename TCameraWrapper>
1674 return TCameraWrapper::principalPoint();
1677 template <
typename T,
typename TCameraWrapper>
1680 return TCameraWrapper::principalPointX();
1683 template <
typename T,
typename TCameraWrapper>
1686 return TCameraWrapper::principalPointY();
1689 template <
typename T,
typename TCameraWrapper>
1692 return TCameraWrapper::focalLengthX();
1695 template <
typename T,
typename TCameraWrapper>
1698 return TCameraWrapper::focalLengthY();
1701 template <
typename T,
typename TCameraWrapper>
1704 return TCameraWrapper::inverseFocalLengthX();
1707 template <
typename T,
typename TCameraWrapper>
1710 return TCameraWrapper::inverseFocalLengthY();
1713 template <
typename T,
typename TCameraWrapper>
1716 return TCameraWrapper::fovX();
1719 template <
typename T,
typename TCameraWrapper>
1722 return TCameraWrapper::fovY();
1725 template <
typename T,
typename TCameraWrapper>
1728 return TCameraWrapper::isInside(imagePoint, signedBorder);
1731 template <
typename T,
typename TCameraWrapper>
1734 return TCameraWrapper::projectToImage(objectPoint);
1737 template <
typename T,
typename TCameraWrapper>
1740 return TCameraWrapper::projectToImage(world_T_camera, objectPoint);
1743 template <
typename T,
typename TCameraWrapper>
1746 return TCameraWrapper::projectToImageIF(objectPoint);
1749 template <
typename T,
typename TCameraWrapper>
1752 return TCameraWrapper::projectToImageIF(flippedCamera_T_world, objectPoint);
1755 template <
typename T,
typename TCameraWrapper>
1758 return TCameraWrapper::projectToImage(objectPoints, size, imagePoints);
1761 template <
typename T,
typename TCameraWrapper>
1764 return TCameraWrapper::projectToImage(world_T_camera, objectPoints, size, imagePoints);
1767 template <
typename T,
typename TCameraWrapper>
1770 return TCameraWrapper::projectToImageIF(objectPoints, size, imagePoints);
1773 template <
typename T,
typename TCameraWrapper>
1776 return TCameraWrapper::projectToImageIF(flippedCamera_T_world, objectPoints, size, imagePoints);
1779 template <
typename T,
typename TCameraWrapper>
1782 return TCameraWrapper::vector(distortedImagePoint, makeUnitVector);
1785 template <
typename T,
typename TCameraWrapper>
1788 return TCameraWrapper::vector(distortedImagePoints, size, vectors, makeUnitVector);
1791 template <
typename T,
typename TCameraWrapper>
1794 return TCameraWrapper::vectorIF(distortedImagePoint, makeUnitVector);
1797 template <
typename T,
typename TCameraWrapper>
1800 return TCameraWrapper::vectorIF(distortedImagePoints, size, vectors, makeUnitVector);
1803 template <
typename T,
typename TCameraWrapper>
1806 return TCameraWrapper::ray(distortedImagePoint, world_T_camera);
1809 template <
typename T,
typename TCameraWrapper>
1812 return TCameraWrapper::ray(distortedImagePoint);
1815 template <
typename T,
typename TCameraWrapper>
1818 return TCameraWrapper::pointJacobian2x3IF(flippedCameraObjectPoint, jx, jy);
1821 template <
typename T,
typename TCameraWrapper>
1824 return TCameraWrapper::pointJacobian2nx3IF(flippedCameraObjectPoints, numberObjectPoints, jacobians);
1827 template <
typename T,
typename TCameraWrapper>
1830 ocean_assert(eps >= T(0));
1832 if (isValid() != anyCamera.
isValid())
1844 if (name() != anyCamera.
name())
1852 template <
typename T,
typename TCameraWrapper>
1855 return TCameraWrapper::isValid();
1858 template <
typename T,
typename TCameraWrapperBase>
1865 template <
typename T,
typename TCameraWrapperBase>
1872 template <
typename T,
typename TCameraWrapperBase>
1875 return VectorT2<T>(TCameraWrapperBase::principalPointX(), TCameraWrapperBase::principalPointY());
1878 template <
typename T,
typename TCameraWrapperBase>
1881 ocean_assert(TCameraWrapperBase::isValid());
1896 if (T(TCameraWrapperBase::width()) <= TCameraWrapperBase::principalPointX())
1898 ocean_assert(
false &&
"Invalid principal point");
1899 return T(2) * leftAngle;
1902 const T rightAngle =
NumericT<T>::atan((T(TCameraWrapperBase::width()) - TCameraWrapperBase::principalPointX()) * TCameraWrapperBase::inverseFocalLengthX());
1904 return leftAngle + rightAngle;
1907 template <
typename T,
typename TCameraWrapperBase>
1910 ocean_assert(TCameraWrapperBase::isValid());
1925 if (T(TCameraWrapperBase::height()) <= TCameraWrapperBase::principalPointY())
1927 ocean_assert(
false &&
"Invalid principal point");
1928 return T(2) * topAngle;
1931 const T bottomAngle =
NumericT<T>::atan((T(TCameraWrapperBase::height()) - TCameraWrapperBase::principalPointY()) * TCameraWrapperBase::inverseFocalLengthY());
1933 return topAngle + bottomAngle;
1936 template <
typename T,
typename TCameraWrapperBase>
1939 ocean_assert(TCameraWrapperBase::isValid());
1941 const unsigned int cameraWidth = TCameraWrapperBase::width();
1942 const unsigned int cameraHeight = TCameraWrapperBase::height();
1944 ocean_assert(signedBorder < T(std::min(cameraWidth / 2u, cameraHeight / 2u)));
1946 return imagePoint.
x() >= signedBorder && imagePoint.
y() >= signedBorder
1947 && imagePoint.
x() < T(cameraWidth) - signedBorder && imagePoint.
y() < T(cameraHeight) - signedBorder;
1950 template <
typename T,
typename TCameraWrapperBase>
1953 return TCameraWrapperBase::projectToImageIF(
VectorT3<T>(objectPoint.
x(), -objectPoint.
y(), -objectPoint.
z()));
1956 template <
typename T,
typename TCameraWrapperBase>
1962 template <
typename T,
typename TCameraWrapperBase>
1965 ocean_assert(size == 0 || objectPoints !=
nullptr);
1966 ocean_assert(size == 0 || imagePoints !=
nullptr);
1968 for (
size_t n = 0; n < size; ++n)
1971 imagePoints[n] = TCameraWrapperBase::projectToImageIF(
VectorT3<T>(objectPoint.
x(), -objectPoint.
y(), -objectPoint.
z()));
1975 template <
typename T,
typename TCameraWrapperBase>
1981 template <
typename T,
typename TCameraWrapperBase>
1984 const VectorT3<T> localVectorIF(TCameraWrapperBase::vectorIF(distortedImagePoint, makeUnitVector));
1986 return VectorT3<T>(localVectorIF.
x(), -localVectorIF.
y(), -localVectorIF.
z());
1989 template <
typename T,
typename TCameraWrapperBase>
1992 TCameraWrapperBase::vectorIF(distortedImagePoints, size, vectors, makeUnitVector);
1994 for (
size_t n = 0; n < size; ++n)
1998 vectors[n] =
VectorT3<T>(localVectorIF.
x(), -localVectorIF.
y(), -localVectorIF.
z());
2002 template <
typename T,
typename TCameraWrapperBase>
2005 ocean_assert(TCameraWrapperBase::isValid() && world_T_camera.
isValid());
2010 template <
typename T,
typename TCameraWrapperBase>
2013 ocean_assert(TCameraWrapperBase::isValid());
2018 template <
typename T,
typename TCameraWrapperBase>
2021 ocean_assert(flippedCameraObjectPoints !=
nullptr);
2022 ocean_assert(numberObjectPoints >= 1);
2023 ocean_assert(jacobians !=
nullptr);
2025 for (
size_t n = 0; n < numberObjectPoints; ++n)
2027 TCameraWrapperBase::pointJacobian2x3IF(flippedCameraObjectPoints[n], jacobians + 0, jacobians + 3);
2032 template <
typename T>
2034 actualCamera_(std::move(actualCamera))
2039 template <
typename T>
2041 actualCamera_(actualCamera)
2046 template <
typename T>
2049 return actualCamera_;
2052 template <
typename T>
2055 return actualCamera_.width();
2058 template <
typename T>
2061 return actualCamera_.height();
2064 template <
typename T>
2067 return T(actualCamera_.principalPointX());
2070 template <
typename T>
2073 return T(actualCamera_.principalPointY());
2076 template <
typename T>
2079 return T(actualCamera_.focalLengthX());
2082 template <
typename T>
2085 return T(actualCamera_.focalLengthY());
2088 template <
typename T>
2091 return T(actualCamera_.inverseFocalLengthX());
2094 template <
typename T>
2097 return T(actualCamera_.inverseFocalLengthY());
2100 template <
typename T>
2106 template <
typename T>
2109 return VectorT2<T>(actualCamera_.template projectToImageIF<true>(flippedCamera_T_world, objectPoint,
true));
2112 template <
typename T>
2115 ocean_assert(size == 0 || objectPoints !=
nullptr);
2116 ocean_assert(size == 0 || imagePoints !=
nullptr);
2118 for (
size_t n = 0; n < size; ++n)
2120 imagePoints[n] = projectToImageIF(objectPoints[n]);
2124 template <
typename T>
2127 ocean_assert(size == 0 || objectPoints !=
nullptr);
2128 ocean_assert(size == 0 || imagePoints !=
nullptr);
2130 for (
size_t n = 0; n < size; ++n)
2132 imagePoints[n] = projectToImageIF(flippedCamera_T_world, objectPoints[n]);
2136 template <
typename T>
2139 const VectorT2<T> undistortedImagePoint(actualCamera_.template undistort<true>(distortedImagePoint));
2141 return VectorT3<T>(actualCamera_.vectorIF(undistortedImagePoint, makeUnitVector));
2144 template <
typename T>
2147 ocean_assert(distortedImagePoints !=
nullptr && size > 0);
2148 ocean_assert(vectors !=
nullptr);
2150 for (
size_t n = 0; n < size; ++n)
2152 vectors[n] = vectorIF(distortedImagePoints[n], makeUnitVector);
2156 template <
typename T>
2159 ocean_assert(jx !=
nullptr && jy !=
nullptr);
2160 actualCamera_.template pointJacobian2x3IF<T, true>(flippedCameraObjectPoint, jx, jy);
2163 template <
typename T>
2166 ocean_assert(eps >= T(0));
2168 return actualCamera_.isEqual(basePinhole.
actualCamera_, eps);
2171 template <
typename T>
2174 return actualCamera_.isValid();
2177 template <
typename T>
2178 template <
typename U>
2181 ocean_assert(actualCamera_.isValid());
2183 if constexpr (std::is_same<T, U>::value)
2185 if ((width == 0u && height == 0u) || (width == actualCamera_.width() && height == actualCamera_.height()))
2187 return std::make_unique<AnyCameraWrappingT<U, CameraWrapperT<U, CameraWrapperBasePinholeT<U>>>>(actualCamera_);
2190 const unsigned int validWidth = (height * actualCamera_.width() + actualCamera_.height() / 2u) / actualCamera_.height();
2191 const unsigned int validHeight = (width * actualCamera_.height() + actualCamera_.width() / 2u) / actualCamera_.width();
2195 ocean_assert(
false &&
"Wrong aspect ratio!");
2199 return std::make_unique<AnyCameraWrappingT<U, CameraWrapperT<U, CameraWrapperBasePinholeT<U>>>>(
PinholeCameraT<U>(width, height, actualCamera_));
2205 if ((width == 0u && height == 0u) || (width == actualCamera_.width() && height == actualCamera_.height()))
2207 return std::make_unique<AnyCameraWrappingT<U, CameraWrapperT<U, CameraWrapperBasePinholeT<U>>>>(convertedPinholeCamera);
2210 const unsigned int validWidth = (height * actualCamera_.width() + actualCamera_.height() / 2u) / actualCamera_.height();
2211 const unsigned int validHeight = (width * actualCamera_.height() + actualCamera_.width() / 2u) / actualCamera_.width();
2215 ocean_assert(
false &&
"Wrong aspect ratio!");
2219 return std::make_unique<AnyCameraWrappingT<U, CameraWrapperT<U, CameraWrapperBasePinholeT<U>>>>(
PinholeCameraT<U>(width, height, convertedPinholeCamera));
2223 template <
typename T>
2229 template <
typename T>
2232 return std::string(
"Ocean Pinhole");
2235 template <
typename T>
2237 actualCamera_(std::move(camera))
2242 template <
typename T>
2244 actualCamera_(camera)
2249 template <
typename T>
2252 return actualCamera_;
2255 template <
typename T>
2258 return actualCamera_.width();
2261 template <
typename T>
2264 return actualCamera_.height();
2267 template <
typename T>
2270 return actualCamera_.principalPoint();
2273 template <
typename T>
2276 return actualCamera_.principalPointX();
2279 template <
typename T>
2282 return actualCamera_.principalPointY();
2285 template <
typename T>
2288 return actualCamera_.focalLengthX();
2291 template <
typename T>
2294 return actualCamera_.focalLengthY();
2297 template <
typename T>
2300 return actualCamera_.inverseFocalLengthX();
2303 template <
typename T>
2306 return actualCamera_.inverseFocalLengthY();
2309 template <
typename T>
2312 return actualCamera_.projectToImageIF(objectPoint);
2315 template <
typename T>
2318 return actualCamera_.projectToImageIF(flippedCamera_T_world, objectPoint);
2321 template <
typename T>
2324 ocean_assert(size == 0 || objectPoints !=
nullptr);
2325 ocean_assert(size == 0 || imagePoints !=
nullptr);
2327 for (
size_t n = 0; n < size; ++n)
2329 imagePoints[n] = projectToImageIF(objectPoints[n]);
2333 template <
typename T>
2336 ocean_assert(size == 0 || objectPoints !=
nullptr);
2337 ocean_assert(size == 0 || imagePoints !=
nullptr);
2339 for (
size_t n = 0; n < size; ++n)
2341 imagePoints[n] = projectToImageIF(flippedCamera_T_world, objectPoints[n]);
2345 template <
typename T>
2348 return actualCamera_.vectorIF(distortedImagePoint, makeUnitVector);
2351 template <
typename T>
2354 ocean_assert(distortedImagePoints !=
nullptr && size > 0);
2355 ocean_assert(vectors !=
nullptr);
2357 for (
size_t n = 0; n < size; ++n)
2359 vectors[n] = vectorIF(distortedImagePoints[n], makeUnitVector);
2363 template <
typename T>
2366 actualCamera_.pointJacobian2x3IF(flippedCameraObjectPoint, jx, jy);
2369 template <
typename T>
2372 ocean_assert(eps >= T(0));
2374 return actualCamera_.isEqual(baseFisheye.
actualCamera_, eps);
2377 template <
typename T>
2380 return actualCamera_.isValid();
2383 template <
typename T>
2384 template <
typename U>
2387 ocean_assert(actualCamera_.isValid());
2389 if ((width == 0u && height == 0u) || (width == actualCamera_.width() && height == actualCamera_.height()))
2391 return std::make_unique<AnyCameraWrappingT<U, CameraWrapperT<U, CameraWrapperBaseFisheyeT<U>>>>(
FisheyeCameraT<U>(actualCamera_));
2394 const unsigned int validWidth = (height * actualCamera_.width() + actualCamera_.height() / 2u) / actualCamera_.height();
2398 ocean_assert(
false &&
"Wrong aspect ratio!");
2402 const T xFactor = T(width) / T(actualCamera_.width());
2403 const T yFactor = T(height) / T(actualCamera_.height());
2405 const U newPrincipalX = U(actualCamera_.principalPointX() * xFactor);
2406 const U newPrincipalY = U(actualCamera_.principalPointY() * yFactor);
2408 const U newFocalLengthX = U(actualCamera_.focalLengthX() * xFactor);
2409 const U newFocalLengthY = U(actualCamera_.focalLengthY() * yFactor);
2411 U radialDistortion[6];
2412 for (
unsigned int n = 0u; n < 6u; ++n)
2414 radialDistortion[n] = U(actualCamera_.radialDistortion()[n]);
2417 const U tangentialDistortion[2] =
2419 U(actualCamera_.tangentialDistortion()[0]),
2420 U(actualCamera_.tangentialDistortion()[1])
2423 return std::make_unique<AnyCameraWrappingT<U, CameraWrapperT<U, CameraWrapperBaseFisheyeT<U>>>>(
FisheyeCameraT<U>(width, height, newFocalLengthX, newFocalLengthY, newPrincipalX, newPrincipalY, radialDistortion, tangentialDistortion));
2426 template <
typename T>
2432 template <
typename T>
2435 return std::string(
"Ocean Fisheye");
2438 template <
typename T>
2440 actualCamera_(std::move(camera))
2445 template <
typename T>
2447 actualCamera_(camera)
2452 template <
typename T>
2455 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2457 ocean_assert(
false &&
"This function must never be called.");
2459 return actualCamera_;
2462 template <
typename T>
2465 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2467 ocean_assert(
false &&
"This function must never be called.");
2469 return (
unsigned int)(-1);
2472 template <
typename T>
2475 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2477 ocean_assert(
false &&
"This function must never be called.");
2479 return (
unsigned int)(-1);
2482 template <
typename T>
2485 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2487 ocean_assert(
false &&
"This function must never be called.");
2492 template <
typename T>
2495 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2497 ocean_assert(
false &&
"This function must never be called.");
2502 template <
typename T>
2505 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2507 ocean_assert(
false &&
"This function must never be called.");
2512 template <
typename T>
2515 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2517 ocean_assert(
false &&
"This function must never be called.");
2522 template <
typename T>
2525 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2527 ocean_assert(
false &&
"This function must never be called.");
2532 template <
typename T>
2535 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2537 ocean_assert(
false &&
"This function must never be called.");
2542 template <
typename T>
2545 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2547 ocean_assert(
false &&
"This function must never be called.");
2552 template <
typename T>
2555 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2557 ocean_assert(
false &&
"This function must never be called.");
2562 template <
typename T>
2565 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2567 ocean_assert(
false &&
"This function must never be called.");
2572 template <
typename T>
2575 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2577 ocean_assert(
false &&
"This function must never be called.");
2581 template <
typename T>
2584 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2586 ocean_assert(
false &&
"This function must never be called.");
2589 template <
typename T>
2592 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2594 ocean_assert(
false &&
"This function must never be called.");
2599 template <
typename T>
2602 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2604 ocean_assert(
false &&
"This function must never be called.");
2607 template <
typename T>
2610 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2612 ocean_assert(
false &&
"This function must never be called.");
2615 template <
typename T>
2618 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2620 ocean_assert(
false &&
"This function must never be called.");
2625 template <
typename T>
2631 template <
typename T>
2632 template <
typename U>
2635 Log::error() <<
"Invalid camera: " << actualCamera_.reason();
2637 ocean_assert(
false &&
"This function must never be called.");
2642 template <
typename T>
2648 template <
typename T>
2651 return std::string(
"Invalid camera");
2654 template <
typename T>
2661 template <
typename T>
This class implements the abstract base class for all AnyCamera objects.
Definition: AnyCamera.h:130
virtual ~AnyCameraT()=default
Destructs the AnyCamera object.
AnyCameraT(AnyCameraT< T > &&)=delete
Disabled move constructor.
virtual VectorT3< T > vectorIF(const VectorT2< T > &distortedImagePoint, const bool makeUnitVector=true) const =0
Returns a vector starting at the camera's center and intersecting a given 2D point in the image.
virtual unsigned int width() const =0
Returns the width of the camera image.
virtual T focalLengthX() const =0
Returns the horizontal focal length parameter.
virtual std::unique_ptr< AnyCameraT< double > > cloneToDouble(const unsigned int width=0u, const unsigned int height=0u) const =0
Returns a copy of this camera object with double precision.
virtual VectorT2< T > projectToImageIF(const VectorT3< T > &objectPoint) const =0
Projects a 3D object point into the camera frame.
virtual void vectorIF(const VectorT2< T > *distortedImagePoints, const size_t size, VectorT3< T > *vectors, const bool makeUnitVector=true) const =0
Returns vectors starting at the camera's center and intersecting a given 2D points in the image.
virtual void projectToImage(const VectorT3< T > *objectPoints, const size_t size, VectorT2< T > *imagePoints) const =0
Projects several 3D object points into the camera frame at once.
AnyCameraT & operator=(const AnyCameraT &)=delete
Disabled assign operator.
virtual T inverseFocalLengthY() const =0
Returns the inverse vertical focal length parameter.
virtual LineT3< T > ray(const VectorT2< T > &distortedImagePoint) const =0
Returns a ray starting at the camera's center and intersecting a given 2D point in the image.
virtual void projectToImageIF(const VectorT3< T > *objectPoints, const size_t size, VectorT2< T > *imagePoints) const =0
Projects several 3D object points into the camera frame at once.
virtual T fovX() const =0
Returns the field of view in x direction of the camera.
static std::shared_ptr< AnyCameraT< T > > convert(const std::shared_ptr< AnyCameraT< U >> &anyCamera)
Converts an AnyCamera object with arbitrary scalar type to another AnyCamera object with arbitrary sc...
Definition: AnyCamera.h:1608
virtual T inverseFocalLengthX() const =0
Returns the inverse horizontal focal length parameter.
virtual std::unique_ptr< AnyCameraT< T > > clone(const unsigned int width=0u, const unsigned int height=0u) const =0
Returns a copy of this camera object.
virtual T focalLengthY() const =0
Returns the vertical focal length parameter.
virtual void pointJacobian2x3IF(const VectorT3< T > &flippedCameraObjectPoint, T *jx, T *jy) const =0
Calculates the 2x3 jacobian matrix for the 3D object point projection into the camera frame.
virtual VectorT2< T > projectToImage(const VectorT3< T > &objectPoint) const =0
Projects a 3D object point into the camera frame.
virtual unsigned int height() const =0
Returns the height of the camera image.
virtual VectorT2< T > projectToImageIF(const HomogenousMatrixT4< T > &flippedCamera_T_world, const VectorT3< T > &objectPoint) const =0
Projects a 3D object point into the camera frame.
virtual T fovY() const =0
Returns the field of view in x direction of the camera.
virtual T principalPointY() const =0
Returns the y-value of the principal point of the camera image in the pixel domain.
virtual void projectToImage(const HomogenousMatrixT4< T > &world_T_camera, const VectorT3< T > *objectPoints, const size_t size, VectorT2< T > *imagePoints) const =0
Projects several 3D object points into the camera frame at once.
virtual bool isEqual(const AnyCameraT< T > &anyCamera, const T eps=NumericT< T >::eps()) const =0
Returns whether two camera objects are identical up to a given epsilon.
virtual bool isValid() const =0
Returns whether this camera is valid.
virtual VectorT2< T > principalPoint() const =0
Returns the coordinate of the principal point of the camera image in the pixel domain.
virtual AnyCameraType anyCameraType() const =0
Returns the type of this camera.
AnyCameraT()=default
Protected default constructor.
virtual LineT3< T > ray(const VectorT2< T > &distortedImagePoint, const HomogenousMatrixT4< T > &world_T_camera) const =0
Returns a ray starting at the camera's center and intersecting a given 2D point in the image.
virtual void vector(const VectorT2< T > *distortedImagePoints, const size_t size, VectorT3< T > *vectors, const bool makeUnitVector=true) const =0
Determines vectors starting at the camera's center and intersecting given 2D points in the image.
T TScalar
The scalar data type of this object.
Definition: AnyCamera.h:134
virtual std::unique_ptr< AnyCameraT< float > > cloneToFloat(const unsigned int width=0u, const unsigned int height=0u) const =0
Returns a copy of this camera object with float precision.
virtual void pointJacobian2nx3IF(const VectorT3< T > *flippedCameraObjectPoints, const size_t numberObjectPoints, T *jacobians) const =0
Calculates the 2n x 3 jacobian matrix for the 3D object point projection into the camera frame.
virtual std::string name() const =0
Returns the name of this camera.
AnyCameraT(const AnyCameraT< T > &anyCamera)=default
Protected copy constructor.
virtual void projectToImageIF(const HomogenousMatrixT4< T > &flippedCamera_T_world, const VectorT3< T > *objectPoints, const size_t size, VectorT2< T > *imagePoints) const =0
Projects several 3D object points into the camera frame at once.
virtual VectorT3< T > vector(const VectorT2< T > &distortedImagePoint, const bool makeUnitVector=true) const =0
Returns a vector starting at the camera's center and intersecting a given 2D point in the image.
virtual bool isInside(const VectorT2< T > &imagePoint, const T signedBorder=T(0)) const =0
Returns whether a given 2D image point lies inside the camera frame.
AnyCameraT & operator=(AnyCameraT &&)=delete
Disabled move operator.
virtual VectorT2< T > projectToImage(const HomogenousMatrixT4< T > &world_T_camera, const VectorT3< T > &objectPoint) const =0
Projects a 3D object point into the camera frame.
virtual T principalPointX() const =0
Returns the x-value of the principal point of the camera image in the pixel domain.
This class implements a specialized AnyCamera object wrapping the actual camera model.
Definition: AnyCamera.h:494
VectorT2< T > principalPoint() const override
Returns the coordinate of the principal point of the camera image in the pixel domain.
Definition: AnyCamera.h:1672
void pointJacobian2nx3IF(const VectorT3< T > *flippedCameraObjectPoints, const size_t numberObjectPoints, T *jacobians) const override
Calculates the 2n x 3 jacobian matrix for the 3D object point projection into the camera frame.
Definition: AnyCamera.h:1822
VectorT2< T > projectToImage(const VectorT3< T > &objectPoint) const override
Projects a 3D object point into the camera frame.
Definition: AnyCamera.h:1732
bool isEqual(const AnyCameraT< T > &anyCamera, const T eps=NumericT< T >::eps()) const override
Returns whether two camera objects are identical up to a given epsilon.
Definition: AnyCamera.h:1828
unsigned int width() const override
Returns the width of the camera image.
Definition: AnyCamera.h:1660
TCameraWrapper CameraWrapper
The class which is actually wrapping the camera object.
Definition: AnyCamera.h:501
unsigned int height() const override
Returns the height of the camera image.
Definition: AnyCamera.h:1666
std::unique_ptr< AnyCameraT< float > > cloneToFloat(const unsigned int width=0u, const unsigned int height=0u) const override
Returns a copy of this camera object with float precision.
Definition: AnyCamera.h:1648
std::unique_ptr< AnyCameraT< T > > clone(const unsigned int width=0u, const unsigned int height=0u) const override
Returns a copy of this camera object.
Definition: AnyCamera.h:1642
T focalLengthY() const override
Returns the vertical focal length parameter.
Definition: AnyCamera.h:1696
bool isValid() const override
Returns whether this camera is valid.
Definition: AnyCamera.h:1853
AnyCameraType anyCameraType() const override
Returns the type of this camera.
Definition: AnyCamera.h:1630
T inverseFocalLengthX() const override
Returns the inverse horizontal focal length parameter.
Definition: AnyCamera.h:1702
T principalPointY() const override
Returns the y-value of the principal point of the camera image in the pixel domain.
Definition: AnyCamera.h:1684
AnyCameraWrappingT(ActualCamera &&actualCamera)
Creates a new AnyCamera object wrapping the actual camera model.
Definition: AnyCamera.h:1616
VectorT3< T > vector(const VectorT2< T > &distortedImagePoint, const bool makeUnitVector=true) const override
Returns a vector starting at the camera's center and intersecting a given 2D point in the image.
Definition: AnyCamera.h:1780
TCameraWrapper::ActualCamera ActualCamera
The actual camera object wrapped by this class.
Definition: AnyCamera.h:504
VectorT2< T > projectToImageIF(const VectorT3< T > &objectPoint) const override
Projects a 3D object point into the camera frame.
Definition: AnyCamera.h:1744
T focalLengthX() const override
Returns the horizontal focal length parameter.
Definition: AnyCamera.h:1690
T fovX() const override
Returns the field of view in x direction of the camera.
Definition: AnyCamera.h:1714
bool isInside(const VectorT2< T > &imagePoint, const T signedBorder=T(0)) const override
Returns whether a given 2D image point lies inside the camera frame.
Definition: AnyCamera.h:1726
std::string name() const override
Returns the name of this camera.
Definition: AnyCamera.h:1636
LineT3< T > ray(const VectorT2< T > &distortedImagePoint, const HomogenousMatrixT4< T > &world_T_camera) const override
Returns a ray starting at the camera's center and intersecting a given 2D point in the image.
Definition: AnyCamera.h:1804
VectorT3< T > vectorIF(const VectorT2< T > &distortedImagePoint, const bool makeUnitVector=true) const override
Returns a vector starting at the camera's center and intersecting a given 2D point in the image.
Definition: AnyCamera.h:1792
T TScalar
The scalar data type of this object.
Definition: AnyCamera.h:498
T principalPointX() const override
Returns the x-value of the principal point of the camera image in the pixel domain.
Definition: AnyCamera.h:1678
std::unique_ptr< AnyCameraT< double > > cloneToDouble(const unsigned int width=0u, const unsigned int height=0u) const override
Returns a copy of this camera object with double precision.
Definition: AnyCamera.h:1654
void pointJacobian2x3IF(const VectorT3< T > &flippedCameraObjectPoint, T *jx, T *jy) const override
Calculates the 2x3 jacobian matrix for the 3D object point projection into the camera frame.
Definition: AnyCamera.h:1816
T fovY() const override
Returns the field of view in x direction of the camera.
Definition: AnyCamera.h:1720
T inverseFocalLengthY() const override
Returns the inverse vertical focal length parameter.
Definition: AnyCamera.h:1708
This class implements the base class for all cameras.
Definition: Camera.h:54
This class implements the base wrapper around Ocean's fisheye camera profile.
Definition: AnyCamera.h:1103
T principalPointX() const
Returns the x-value of the principal point of the camera image in the pixel domain.
Definition: AnyCamera.h:2274
T inverseFocalLengthX() const
Returns the inverse horizontal focal length parameter.
Definition: AnyCamera.h:2298
ActualCamera actualCamera_
The actual fisheye camera object.
Definition: AnyCamera.h:1266
unsigned int height() const
Returns the height of the camera image.
Definition: AnyCamera.h:2262
void pointJacobian2x3IF(const VectorT3< T > &flippedCameraObjectPoint, T *jx, T *jy) const
Calculates the 2x3 jacobian matrix for the 3D object point projection into the camera frame.
Definition: AnyCamera.h:2364
unsigned int width() const
Returns the width of the camera image.
Definition: AnyCamera.h:2256
bool isValid() const
Returns whether this camera is valid.
Definition: AnyCamera.h:2378
T inverseFocalLengthY() const
Returns the inverse vertical focal length parameter.
Definition: AnyCamera.h:2304
static AnyCameraType anyCameraType()
Returns the type of this camera.
Definition: AnyCamera.h:2427
VectorT3< T > vectorIF(const VectorT2< T > &distortedImagePoint, const bool makeUnitVector) const
Returns a vector starting at the camera's center and intersecting a given 2D point in the image.
Definition: AnyCamera.h:2346
const ActualCamera & actualCamera() const
Returns the actual camera object wrapped in this class.
Definition: AnyCamera.h:2250
VectorT2< T > principalPoint() const
Returns the coordinate of the principal point of the camera image in the pixel domain.
Definition: AnyCamera.h:2268
T principalPointY() const
Returns the y-value of the principal point of the camera image in the pixel domain.
Definition: AnyCamera.h:2280
static std::string name()
Returns the name of this camera.
Definition: AnyCamera.h:2433
T focalLengthX() const
Returns the horizontal focal length parameter.
Definition: AnyCamera.h:2286
T focalLengthY() const
Returns the vertical focal length parameter.
Definition: AnyCamera.h:2292
VectorT2< T > projectToImageIF(const VectorT3< T > &objectPoint) const
Projects a 3D object point into the camera frame.
Definition: AnyCamera.h:2310
CameraWrapperBaseFisheyeT(ActualCamera &&actualCamera)
Creates a new CameraWrapperBaseFisheyeT object wrapping the actual camera model.
Definition: AnyCamera.h:2236
std::unique_ptr< AnyCameraT< U > > clone(const unsigned int width=0u, const unsigned int height=0u) const
Returns a copy of the actual camera object.
Definition: AnyCamera.h:2385
bool isEqual(const CameraWrapperBaseFisheyeT< T > &baseFisheye, const T eps=NumericT< T >::eps()) const
Returns whether two camera objects are identical up to a given epsilon.
Definition: AnyCamera.h:2370
FisheyeCameraT< T > ActualCamera
Definition of the actual camera object wrapped by this class.
Definition: AnyCamera.h:1109
This class implements the base wrapper around an invalid camera profile.
Definition: AnyCamera.h:1326
bool isEqual(const CameraWrapperBaseInvalidT< T > &baseInvalid, const T eps=NumericT< T >::eps()) const
Returns whether two camera objects are identical up to a given epsilon.
Definition: AnyCamera.h:2616
VectorT2< T > projectToImageIF(const VectorT3< T > &objectPoint) const
Projects a 3D object point into the camera frame.
Definition: AnyCamera.h:2553
CameraWrapperBaseInvalidT(ActualCamera &&actualCamera)
Creates a new CameraWrapperBaseInvalidT object wrapping the actual camera model.
Definition: AnyCamera.h:2439
unsigned int height() const
Returns the height of the camera image.
Definition: AnyCamera.h:2473
const ActualCamera & actualCamera() const
Returns the actual camera object wrapped in this class.
Definition: AnyCamera.h:2453
static std::string name()
Returns the name of this camera.
Definition: AnyCamera.h:2649
ActualCamera actualCamera_
The actual invalid camera.
Definition: AnyCamera.h:1489
T principalPointX() const
Returns the x-value of the principal point of the camera image in the pixel domain.
Definition: AnyCamera.h:2493
VectorT2< T > principalPoint() const
Returns the coordinate of the principal point of the camera image in the pixel domain.
Definition: AnyCamera.h:2483
T inverseFocalLengthX() const
Returns the inverse horizontal focal length parameter.
Definition: AnyCamera.h:2533
bool isValid() const
Returns whether this camera is valid.
Definition: AnyCamera.h:2626
static AnyCameraType anyCameraType()
Returns the type of this camera.
Definition: AnyCamera.h:2643
std::unique_ptr< AnyCameraT< U > > clone(const unsigned int width=0u, const unsigned int height=0u) const
Returns a copy of the actual camera object.
Definition: AnyCamera.h:2633
T inverseFocalLengthY() const
Returns the inverse vertical focal length parameter.
Definition: AnyCamera.h:2543
InvalidCameraT< T > ActualCamera
Definition of the actual camera object wrapped by this class.
Definition: AnyCamera.h:1332
void pointJacobian2x3IF(const VectorT3< T > &flippedCameraObjectPoint, T *jx, T *jy) const
Calculates the 2x3 jacobian matrix for the 3D object point projection into the camera frame.
Definition: AnyCamera.h:2608
VectorT3< T > vectorIF(const VectorT2< T > &distortedImagePoint, const bool makeUnitVector) const
Returns a vector starting at the camera's center and intersecting a given 2D point in the image.
Definition: AnyCamera.h:2590
T focalLengthY() const
Returns the vertical focal length parameter.
Definition: AnyCamera.h:2523
T principalPointY() const
Returns the y-value of the principal point of the camera image in the pixel domain.
Definition: AnyCamera.h:2503
T focalLengthX() const
Returns the horizontal focal length parameter.
Definition: AnyCamera.h:2513
unsigned int width() const
Returns the width of the camera image.
Definition: AnyCamera.h:2463
This class implements the base wrapper around Ocean's pinhole camera profile.
Definition: AnyCamera.h:934
T inverseFocalLengthX() const
Returns the inverse horizontal focal length parameter.
Definition: AnyCamera.h:2089
void pointJacobian2x3IF(const VectorT3< T > &flippedCameraObjectPoint, T *jx, T *jy) const
Calculates the 2x3 jacobian matrix for the 3D object point projection into the camera frame.
Definition: AnyCamera.h:2157
unsigned int height() const
Returns the height of the camera image.
Definition: AnyCamera.h:2059
bool isValid() const
Returns whether this camera is valid.
Definition: AnyCamera.h:2172
T principalPointY() const
Returns the y-value of the principal point of the camera image in the pixel domain.
Definition: AnyCamera.h:2071
T inverseFocalLengthY() const
Returns the inverse vertical focal length parameter.
Definition: AnyCamera.h:2095
static std::string name()
Returns the name of this camera.
Definition: AnyCamera.h:2230
ActualCamera actualCamera_
The actual pinhole camera.
Definition: AnyCamera.h:1092
const ActualCamera & actualCamera() const
Returns the actual camera object wrapped in this class.
Definition: AnyCamera.h:2047
unsigned int width() const
Returns the width of the camera image.
Definition: AnyCamera.h:2053
CameraWrapperBasePinholeT(ActualCamera &&actualCamera)
Creates a new CameraWrapperBasePinholeT object wrapping the actual camera model.
Definition: AnyCamera.h:2033
VectorT3< T > vectorIF(const VectorT2< T > &distortedImagePoint, const bool makeUnitVector) const
Returns a vector starting at the camera's center and intersecting a given 2D point in the image.
Definition: AnyCamera.h:2137
VectorT2< T > projectToImageIF(const VectorT3< T > &objectPoint) const
Projects a 3D object point into the camera frame.
Definition: AnyCamera.h:2101
PinholeCameraT< T > ActualCamera
Definition of the actual camera object wrapped by this class.
Definition: AnyCamera.h:940
static AnyCameraType anyCameraType()
Returns the type of this camera.
Definition: AnyCamera.h:2224
T principalPointX() const
Returns the x-value of the principal point of the camera image in the pixel domain.
Definition: AnyCamera.h:2065
bool isEqual(const CameraWrapperBasePinholeT< T > &basePinhole, const T eps=NumericT< T >::eps()) const
Returns whether two camera objects are identical up to a given epsilon.
Definition: AnyCamera.h:2164
std::unique_ptr< AnyCameraT< U > > clone(const unsigned int width=0u, const unsigned int height=0u) const
Returns a copy of the actual camera object.
Definition: AnyCamera.h:2179
T focalLengthY() const
Returns the vertical focal length parameter.
Definition: AnyCamera.h:2083
T focalLengthX() const
Returns the horizontal focal length parameter.
Definition: AnyCamera.h:2077
This class implements a wrapper for an actual camera object.
Definition: AnyCamera.h:825
LineT3< T > ray(const VectorT2< T > &distortedImagePoint, const HomogenousMatrixT4< T > &world_T_camera) const
Returns a ray starting at the camera's center and intersecting a given 2D point in the image.
Definition: AnyCamera.h:2003
T fovY() const
Returns the field of view in x direction of the camera.
Definition: AnyCamera.h:1908
T fovX() const
Returns the field of view in x direction of the camera.
Definition: AnyCamera.h:1879
CameraWrapperT(ActualCamera &&actualCamera)
Creates a new CameraWrapperT object wrapping the actual camera model.
Definition: AnyCamera.h:1859
VectorT3< T > vector(const VectorT2< T > &distortedImagePoint, const bool makeUnitVector) const
Returns a vector starting at the camera's center and intersecting a given 2D point in the image.
Definition: AnyCamera.h:1982
void pointJacobian2nx3IF(const VectorT3< T > *flippedCameraObjectPoints, const size_t numberObjectPoints, T *jacobians) const
Calculates the 2x3 jacobian matrix for the 3D object point projection into the camera frame.
Definition: AnyCamera.h:2019
bool isInside(const VectorT2< T > &imagePoint, const T signedBorder=T(0)) const
Returns whether a given 2D image point lies inside the camera frame.
Definition: AnyCamera.h:1937
VectorT2< T > principalPoint() const
Returns the coordinate of the principal point of the camera image in the pixel domain.
Definition: AnyCamera.h:1873
VectorT2< T > projectToImage(const VectorT3< T > &objectPoint) const
Projects a 3D object point into the camera frame.
Definition: AnyCamera.h:1951
Class representing a fisheye camera.
Definition: FisheyeCamera.h:106
This class implements a 4x4 homogeneous transformation matrix using floating point values with the pr...
Definition: HomogenousMatrix4.h:110
SquareMatrixT3< T > rotationMatrix() const
Returns the rotation matrix of the transformation.
Definition: HomogenousMatrix4.h:1493
VectorT3< T > translation() const
Returns the translation of the transformation.
Definition: HomogenousMatrix4.h:1381
bool isValid() const
Returns whether this matrix is a valid homogeneous transformation.
Definition: HomogenousMatrix4.h:1806
This class implements invalid camera profiles, e.g.
Definition: AnyCamera.h:1276
const std::string & reason() const
Returns the reason of this invalid camera.
Definition: AnyCamera.h:2662
std::string reason_
The reason why no valid camera is available.
Definition: AnyCamera.h:1294
InvalidCameraT(const std::string &reason)
Creates an invalid camera.
Definition: AnyCamera.h:2655
This class implements an infinite line in 3D space.
Definition: Line3.h:70
static MessageObject error()
Returns the message for error messages.
Definition: Messenger.h:1074
This class provides basic numeric functionalities.
Definition: Numeric.h:57
static constexpr T minValue()
Returns the min scalar value.
Definition: Numeric.h:3250
static T atan(const T value)
Returns the arctangent of a given value.
Definition: Numeric.h:1616
static T abs(const T value)
Returns the absolute value of a given value.
Definition: Numeric.h:1220
static bool isEqual(const T first, const T second)
Returns whether two values are equal up to a small epsilon.
Definition: Numeric.h:2386
Definition of a pinhole camera model.
Definition: PinholeCamera.h:114
This class implements a vector with two elements.
Definition: Vector2.h:96
const T & x() const noexcept
Returns the x value.
Definition: Vector2.h:698
const T & y() const noexcept
Returns the y value.
Definition: Vector2.h:710
This class implements a vector with three elements.
Definition: Vector3.h:97
const T & y() const noexcept
Returns the y value.
Definition: Vector3.h:812
const T & x() const noexcept
Returns the x value.
Definition: Vector3.h:800
const T & z() const noexcept
Returns the z value.
Definition: Vector3.h:824
AnyCameraPinholeT< float > AnyCameraPinholeF
Definition of an AnyCamera object based on Ocean's pinhole camera class with element precision 'float...
Definition: AnyCamera.h:1520
std::shared_ptr< AnyCameraD > SharedAnyCameraD
Definition of a shared pointer holding an AnyCamera object with double precision.
Definition: AnyCamera.h:67
AnyCameraFisheyeT< double > AnyCameraFisheyeD
Definition of an AnyCamera object based on Ocean's fisheye camera class with element precision 'doubl...
Definition: AnyCamera.h:1543
std::shared_ptr< AnyCamera > SharedAnyCamera
Definition of a shared pointer holding an AnyCamera object with Scalar precision.
Definition: AnyCamera.h:60
AnyCameraFisheyeT< float > AnyCameraFisheyeF
Definition of an AnyCamera object based on Ocean's fisheye camera class with element precision 'float...
Definition: AnyCamera.h:1550
AnyCameraInvalidT< Scalar > AnyCameraInvalid
Definition of an AnyCamera object based on an invalid (by design) camera with element precision 'Scal...
Definition: AnyCamera.h:1566
AnyCameraInvalidT< double > AnyCameraInvalidD
Definition of an AnyCamera object based on an invalid (by design) camera with element precision 'doub...
Definition: AnyCamera.h:1573
AnyCameraInvalidT< float > AnyCameraInvalidF
Definition of an AnyCamera object based on an invalid (by design) camera with element precision 'floa...
Definition: AnyCamera.h:1580
SharedAnyCamerasT< float > SharedAnyCamerasF
Definition of a vector holding AnyCameraF objects.
Definition: AnyCamera.h:104
SharedAnyCamerasT< double > SharedAnyCamerasD
Definition of a vector holding AnyCameraD objects.
Definition: AnyCamera.h:97
InvalidCameraT< float > InvalidCameraF
Definition of an invalid camera object based with element precision 'float'.
Definition: AnyCamera.h:1316
AnyCameraType
Definition of individual camera types.
Definition: AnyCamera.h:111
std::shared_ptr< AnyCameraF > SharedAnyCameraF
Definition of a shared pointer holding an AnyCamera object with float precision.
Definition: AnyCamera.h:74
std::vector< std::shared_ptr< AnyCameraT< T > >> SharedAnyCamerasT
Definition of a typename alias for vectors with shared AnyCameraT objects.
Definition: AnyCamera.h:83
AnyCameraFisheyeT< Scalar > AnyCameraFisheye
Definition of an AnyCamera object based on Ocean's fisheye camera class with element precision 'Scala...
Definition: AnyCamera.h:1536
AnyCameraPinholeT< double > AnyCameraPinholeD
Definition of an AnyCamera object based on Ocean's pinhole camera class with element precision 'doubl...
Definition: AnyCamera.h:1513
SharedAnyCamerasT< Scalar > SharedAnyCameras
Definition of a vector holding AnyCamera objects.
Definition: AnyCamera.h:90
InvalidCameraT< Scalar > InvalidCamera
Definition of an invalid camera object based with element precision 'Scalar'.
Definition: AnyCamera.h:1302
InvalidCameraT< double > InvalidCameraD
Definition of an invalid camera object based with element precision 'double'.
Definition: AnyCamera.h:1309
AnyCameraPinholeT< Scalar > AnyCameraPinhole
Definition of an AnyCamera object based on Ocean's pinhole camera class with element precision 'Scala...
Definition: AnyCamera.h:1506
std::shared_ptr< AnyCameraT< T > > SharedAnyCameraT
Definition of a shared pointer holding an AnyCamera object with Scalar precision.
Definition: AnyCamera.h:53
@ FISHEYE
A fisheye camera.
@ PINHOLE
A pinhole camera.
@ INVALID
An invalid camera type.
The namespace covering the entire Ocean framework.
Definition: Accessor.h:15