farm-ng-core
|
Image MutImage, owning images types. More...
Namespaces | |
ceres | |
concepts | |
detail | |
jet_helpers | |
lie | |
linalg | |
test | |
Classes | |
class | AffineTransform |
struct | AnyImagePredicate |
class | BasisSpline |
class | BasisSplineFn |
class | BasisSplineImpl |
struct | BasisSplineSegment |
class | BrownConradyTransform |
struct | CameraInRig |
Camera as part of a sensor rig . More... | |
class | CameraModel |
Concrete camera model class. More... | |
class | CameraModelT |
Camera model class template for pinhole-like camera projections. More... | |
struct | ClippingPlanes |
struct | ClosestApproachResult |
class | Complex |
class | ComplexImpl |
class | DynImage |
Type-erased image with shared ownership, and read-only access to pixels. Type is nullable. More... | |
class | DynImageView |
struct | GroupManifold |
class | Identity |
class | Image |
Image read-only access to pixels and shared ownership, hence cheap to copy. Type is nullable. More... | |
class | ImageLayout |
Layout of the image: width, height and pitch in bytes. More... | |
struct | ImageSize |
Image size, hence its width and height. More... | |
struct | ImageTraits |
Number type. More... | |
struct | ImageTraits< Eigen::Matrix< TT, kNumChannelsT, 1 > > |
struct | ImageView |
A view of an (immutable) image, which does not own the data. More... | |
class | ImuModel |
struct | IndexAndU |
struct | IntensityImagePredicate |
class | InverseDepthPoint3 |
Inverse depth point representation. More... | |
class | Isometry2 |
class | Isometry3 |
struct | IsUniformRandomBitGenerator |
class | KannalaBrandtK3Transform |
struct | Mapper |
Helper for mapping tangent vectors (scalars) over pointers to data. More... | |
struct | Mapper< TScalar, typename std::enable_if< kIsMappableV< TScalar > >::type > |
struct | MaybeLeakingUniqueDataAreaDeleter |
struct | MultiCameraRig |
Sensor rig with multiple cameras. More... | |
class | MutDynImage |
class | MutDynImageView |
class | MutImage |
A image with write access to pixels and exclusive ownership. There is no copy constr / copy assignment, but move constr / assignment. More... | |
class | MutImageView |
View of a mutable image, which does not own the data. More... | |
struct | PixelFormat |
struct | PointTraits |
struct | PointTraits< TPoint > |
class | PointTransformer |
Functor to efficiently transform a number of point given a Isometry3 pose. More... | |
class | Pose3 |
class | ProductManifold |
struct | ProjectionOrtho |
struct | ProjectionZ1 |
class | Quaternion |
class | QuaternionImpl |
class | Ray |
class | Region |
A region is a closed interval [a, b] with a being the lower bound (=min) and b being the upper bound (=max). More... | |
class | Rotation2 |
class | Rotation3 |
class | Scaling |
struct | ScalingNonOrthogonalityAcceleroModel |
struct | ScalingNonOrthogonalityGyroModel |
class | ScalingTranslation |
class | Similarity2 |
class | Similarity3 |
class | SpiralSimilarity2 |
class | SpiralSimilarity3 |
class | SplineBasisFunction |
class | Translation |
struct | UninitTag |
struct | UniqueDataAreaDeleter |
class | UnitVector |
struct | VectorManifold |
Typedefs | |
using | RegionI = Region< int > |
using | RegionF32 = Region< float > |
using | RegionF64 = Region< double > |
template<concepts::ScalarType TScalar> | |
using | Region2 = Region< Eigen::Array< TScalar, 2, 1 > > |
using | Region2I = Region2< int > |
using | Region2F32 = Region2< float > |
using | Region2F64 = Region2< double > |
template<concepts::ScalarType TScalar> | |
using | Region3 = Region< Eigen::Array< TScalar, 3, 1 > > |
using | Region3I = Region3< int > |
using | Region3F32 = Region3< float > |
using | Region3F64 = Region3< double > |
template<concepts::ScalarType TScalar> | |
using | Region4 = Region< Eigen::Array< TScalar, 4, 1 > > |
using | Region4I = Region4< int > |
using | Region4F32 = Region4< float > |
using | Region4F64 = Region4< double > |
template<class TScalar > | |
using | IsSpecialized = decltype(complete(std::declval< TScalar * >())) |
template<class TScalar > | |
using | IsMappable = IsSpecialized< Eigen::internal::traits< std::decay_t< TScalar > >> |
Type trait used to distinguish mappable vector types from scalars. More... | |
using | InverseDepthPoint3F64 = InverseDepthPoint3< double > |
template<class TScalar > | |
using | Ray2 = Ray< TScalar, 2 > |
template<class TScalar > | |
using | Ray3 = Ray< TScalar, 3 > |
using | Ray2F64 = Ray2< double > |
using | Ray3F64 = Ray3< double > |
template<class TAllocator = Eigen::aligned_allocator<uint8_t>> | |
using | AnyImage = DynImage< AnyImagePredicate, TAllocator > |
Image representing any number of channels (>=1) and any floating and unsigned integral channel type. More... | |
using | AnyImageView = DynImageView< AnyImagePredicate > |
template<class TAllocator = Eigen::aligned_allocator<uint8_t>> | |
using | MutAnyImage = MutDynImage< AnyImagePredicate, TAllocator > |
using | MutAnyImageView = MutDynImageView< AnyImagePredicate > |
template<class TAllocator = Eigen::aligned_allocator<uint8_t>> | |
using | IntensityImage = DynImage< IntensityImagePredicate, TAllocator > |
Image to represent intensity image / texture as grayscale (=1 channel), RGB (=3 channel ) and RGBA (=4 channel), either uint8_t [0-255], uint16 [0-65535] or float [0.0-1.0] channel type. More... | |
using | IntensityImageView = DynImageView< IntensityImagePredicate > |
template<class TAllocator = Eigen::aligned_allocator<uint8_t>> | |
using | MutIntensityImage = MutDynImage< IntensityImagePredicate, TAllocator > |
using | MutIntensityImageView = MutDynImageView< IntensityImagePredicate > |
template<class TChannel > | |
using | Pixel2 = Eigen::Matrix< TChannel, 2, 1 > |
using | Pixel2U8 = Pixel2< uint8_t > |
using | Pixel2U16 = Pixel2< uint16_t > |
using | Pixel2F32 = Pixel2< float > |
template<class TChannel > | |
using | Pixel3 = Eigen::Matrix< TChannel, 3, 1 > |
using | Pixel3U8 = Pixel3< uint8_t > |
using | Pixel3U16 = Pixel3< uint16_t > |
using | Pixel3F32 = Pixel3< float > |
template<class TChannel > | |
using | Pixel4 = Eigen::Matrix< TChannel, 4, 1 > |
using | Pixel4U8 = Pixel4< uint8_t > |
using | Pixel4U16 = Pixel4< uint16_t > |
using | Pixel4F32 = Pixel4< float > |
using | ImageViewBool = ImageView< bool > |
using | MutImageViewBool = MutImageView< bool > |
using | ImageViewU8 = ImageView< uint8_t > |
using | ImageViewU16 = ImageView< uint16_t > |
using | ImageViewF32 = ImageView< float > |
using | MutImageViewU8 = MutImageView< uint8_t > |
using | MutImageViewU16 = MutImageView< uint16_t > |
using | MutImageViewF32 = MutImageView< float > |
template<class TChannel > | |
using | ImageView3 = ImageView< Pixel3< TChannel > > |
using | ImageView3U8 = ImageView3< uint8_t > |
using | ImageView3U16 = ImageView3< uint16_t > |
using | ImageView3F32 = ImageView3< float > |
template<class TChannel > | |
using | MutImageView3 = MutImageView< Pixel3< TChannel > > |
using | MutImageView3U8 = MutImageView3< uint8_t > |
using | MutImageView3U16 = MutImageView3< uint16_t > |
using | MutImageView3F32 = MutImageView3< float > |
template<class TChannel > | |
using | ImageView4 = ImageView< Pixel4< TChannel > > |
using | ImageView4U8 = ImageView4< uint8_t > |
using | ImageView4U16 = ImageView4< uint16_t > |
using | ImageView4F32 = ImageView4< float > |
template<class TChannel > | |
using | MutImageView4 = MutImageView< Pixel4< TChannel > > |
using | MutImageView4U8 = MutImageView4< uint8_t > |
using | MutImageView4U16 = MutImageView4< uint16_t > |
using | MutImageView4F32 = MutImageView4< float > |
using | ImageBool = Image< bool > |
using | MutImageBool = MutImage< bool > |
using | ImageU8 = Image< uint8_t > |
using | ImageU16 = Image< uint16_t > |
using | ImageF32 = Image< float > |
using | MutImageU8 = MutImage< uint8_t > |
using | MutImageU16 = MutImage< uint16_t > |
using | MutImageF32 = MutImage< float > |
template<class TChannel > | |
using | Image3 = Image< Pixel3< TChannel > > |
using | Image3U8 = Image3< uint8_t > |
using | Image3U16 = Image3< uint16_t > |
using | Image3F32 = Image3< float > |
template<class TChannel > | |
using | MutImage3 = MutImage< Pixel3< TChannel > > |
using | MutImage3U8 = MutImage3< uint8_t > |
using | MutImage3U16 = MutImage3< uint16_t > |
using | MutImage3F32 = MutImage3< float > |
template<class TChannel > | |
using | Image4 = Image< Pixel4< TChannel > > |
using | Image4U8 = Image4< uint8_t > |
using | Image4U16 = Image4< uint16_t > |
using | Image4F32 = Image4< float > |
template<class TChannel > | |
using | MutImage4 = MutImage< Pixel4< TChannel > > |
using | MutImage4U8 = MutImage4< uint8_t > |
using | MutImage4U16 = MutImage4< uint16_t > |
using | MutImage4F32 = MutImage4< float > |
template<class TAllocator > | |
using | UniqueDataArea = std::unique_ptr< uint8_t, MaybeLeakingUniqueDataAreaDeleter< TAllocator > > |
template<concepts::LieGroup TGroup> | |
using | LeftPlus = GroupManifold< TGroup, ManifoldPlusType::left_plus > |
template<concepts::LieGroup TGroup> | |
using | RightPlus = GroupManifold< TGroup, ManifoldPlusType::right_plus > |
template<class TScalar > | |
using | Identity2 = Identity< TScalar, 2 > |
template<class TScalar > | |
using | Identity3 = Identity< TScalar, 3 > |
using | Isometry2F32 = Isometry2< float > |
using | Isometry2F64 = Isometry2< double > |
using | Isometry3F32 = Isometry3< float > |
using | Isometry3F64 = Isometry3< double > |
template<class TScalar > | |
using | SE3 = Isometry3< TScalar > |
using | SE3f = Isometry3< float > |
using | SE3d = Isometry3< double > |
using | Pose3F32 = Pose3< float > |
using | Pose3F64 = Pose3< double > |
using | Rotation2F32 = Rotation2< float > |
using | Rotation2F64 = Rotation2< double > |
using | Rotation3F32 = Rotation3< float > |
using | Rotation3F64 = Rotation3< double > |
template<class TScalar > | |
using | SO3 = Rotation3< TScalar > |
using | SO3f = Rotation3< float > |
using | SO3d = Rotation3< double > |
template<class TScalar > | |
using | Scaling2 = Scaling< TScalar, 2 > |
template<class TScalar > | |
using | Scaling3 = Scaling< TScalar, 3 > |
template<class TScalar > | |
using | ScalingTranslation2 = ScalingTranslation< TScalar, 2 > |
template<class TScalar > | |
using | ScalingTranslation3 = ScalingTranslation< TScalar, 3 > |
using | ScalingTranslation2F64 = ScalingTranslation2< double > |
using | ScalingTranslation3F64 = ScalingTranslation3< double > |
using | Similarity2F32 = Similarity2< float > |
using | Similarity2F64 = Similarity2< double > |
using | Similarity3F32 = Similarity3< float > |
using | Similarity3F64 = Similarity3< double > |
using | SpiralSimilarity2F32 = SpiralSimilarity2< float > |
using | SpiralSimilarity2F64 = SpiralSimilarity2< double > |
using | SpiralSimilarity3F32 = SpiralSimilarity3< float > |
using | SpiralSimilarity3F64 = SpiralSimilarity3< double > |
template<class TScalar > | |
using | Translation2 = Translation< TScalar, 2 > |
template<class TScalar > | |
using | Translation3 = Translation< TScalar, 3 > |
using | Translation2F32 = Translation2< float > |
using | Translation2F64 = Translation2< double > |
using | Translation3F32 = Translation3< float > |
using | Translation3F64 = Translation3< double > |
using | QuaternionF64 = Quaternion< double > |
template<class TScalar > | |
using | UnitVector3 = UnitVector< TScalar, 3 > |
template<class TScalar > | |
using | UnitVector2 = UnitVector< TScalar, 2 > |
using | UnitVector2F64 = UnitVector2< double > |
using | UnitVector3F64 = UnitVector3< double > |
using | PinholeModel = CameraModelT< double, AffineTransform, ProjectionZ1 > |
Pinhole camera model. More... | |
using | BrownConradyModel = CameraModelT< double, BrownConradyTransform, ProjectionZ1 > |
Brown Conrady camera model. More... | |
using | KannalaBrandtK3Model = CameraModelT< double, KannalaBrandtK3Transform, ProjectionZ1 > |
KannalaBrandt camera model with k0, k1, k2, k3. More... | |
using | OrthographicModel = CameraModelT< double, AffineTransform, ProjectionOrtho > |
using | CameraDistortionVariant = std::variant< PinholeModel, BrownConradyModel, KannalaBrandtK3Model, OrthographicModel > |
Variant of camera models. More... | |
using | GyroModelVariant = std::variant< ScalingNonOrthogonalityGyroModel< double > > |
using | AcceleroModelVariant = std::variant< ScalingNonOrthogonalityAcceleroModel< double > > |
template<class TScalar > | |
using | OrthographicModelT = CameraModelT< TScalar, AffineTransform, ProjectionOrtho > |
Enumerations | |
enum | SegmentCase { SegmentCase::first, SegmentCase::normal, SegmentCase::last } |
Functions | |
template<class TScalar , class TFn > | |
auto | curveNumDiff (TFn curve, TScalar t, TScalar h=kEpsilonSqrt< TScalar >) -> decltype(details::Curve< TScalar >::numDiff(std::move(curve), t, h)) |
Calculates the derivative of a curve at a point t . More... | |
template<class TScalar , int kMatrixDim, int kM, class TScalarOrVector , class TFn > | |
auto | vectorFieldNumDiff (TFn vector_field, TScalarOrVector const &a, TScalar eps=kEpsilonSqrt< TScalar >) -> Eigen::Matrix< TScalar, kMatrixDim, kM > |
Calculates the derivative of a vector field at a point a . More... | |
template<class TT > | |
auto | operator== (Region< TT > const &lhs, Region< TT > const &rhs) -> bool |
template<class TScalar , std::size_t = sizeof(TScalar)> | |
constexpr std::true_type | complete (TScalar *) |
constexpr std::false_type | complete (...) |
SOPHUS_ENUM (NumberType,(fixed_point, floating_point)) | |
auto | fitPlaneToPoints (Eigen::Matrix3Xd const &points) -> Eigen::Hyperplane< double, 3 > |
auto | fitPlaneToPoints (std::vector< Eigen::Vector3d > const &points) -> Eigen::Hyperplane< double, 3 > |
auto | fitPlaneToPoints (std::vector< Eigen::Vector3f > const &points) -> Eigen::Hyperplane< double, 3 > |
template<class TScalar > | |
auto | normalFromRotation2 (Rotation2< TScalar > const &foo_rotation_line) -> Eigen::Vector2< TScalar > |
Takes in a rotation foo_rotation_plane and returns the corresponding line normal along the y-axis (in reference frame foo ). More... | |
template<class TScalar > | |
auto | rotation2FromNormal (Eigen::Vector2< TScalar > normal_in_foo) -> Rotation2< TScalar > |
Takes in line normal in reference frame foo and constructs a corresponding rotation matrix foo_rotation_line . More... | |
template<class TScalar > | |
auto | normalFromRotation3 (Rotation3< TScalar > const &foo_rotation_plane) -> Eigen::Vector3< TScalar > |
Takes in a rotation foo_rotation_plane and returns the corresponding plane normal along the z-axis (in reference frame foo ). More... | |
template<class TScalar > | |
auto | rotation3FromNormal (Eigen::Vector3< TScalar > const &normal_in_foo, Eigen::Vector3< TScalar > x_dir_hint_foo=Eigen::Vector3< TScalar >(TScalar(1), TScalar(0), TScalar(0)), Eigen::Vector3< TScalar > y_dir_hint_foo=Eigen::Vector3< TScalar >(TScalar(0), TScalar(1), TScalar(0))) -> Eigen::Matrix3< TScalar > |
Takes in plane normal in reference frame foo and constructs a corresponding rotation matrix foo_rotation_plane . More... | |
template<class TScalar > | |
auto | rotation3FromPlane (Eigen::Vector3< TScalar > const &normal_in_foo) -> Rotation3< TScalar > |
Takes in plane normal in reference frame foo and constructs a corresponding rotation matrix foo_rotation_plane . More... | |
template<class TScalar > | |
auto | lineFromIsometry (Isometry2< TScalar > const &foo_from_line) -> Eigen::Hyperplane< TScalar, 2 > |
Returns a line (wrt. to frame foo ), given a pose of the line in reference frame foo . More... | |
template<class TScalar > | |
auto | isometryFromLine (Eigen::Hyperplane< TScalar, 2 > const &line_in_foo) -> Isometry2< TScalar > |
Returns the pose T_foo_line , given a line in reference frame foo . More... | |
template<class TScalar > | |
auto | planeFromIsometry (Isometry3< TScalar > const &foo_from_plane) -> Eigen::Hyperplane< TScalar, 3 > |
Returns a plane (wrt. to frame foo ), given a pose of the plane in reference frame foo . More... | |
template<class TScalar > | |
auto | isometryFromPlane (Eigen::Hyperplane< TScalar, 3 > const &plane_in_foo) -> Isometry3< TScalar > |
Returns the pose foo_from_plane , given a plane in reference frame foo . More... | |
template<class TScalar , int kMatrixDim> | |
auto | makeHyperplaneUnique (Eigen::Hyperplane< TScalar, kMatrixDim > const &plane) -> Eigen::Hyperplane< TScalar, kMatrixDim > |
Takes in a hyperplane and returns unique representation by ensuring that the offset is not negative. More... | |
template<class TT > | |
auto | proj (InverseDepthPoint3< TT > const &inverse_depth_point) -> Eigen::Matrix< TT, 2, 1 > |
Projects 3-point (a,b,psi) = (x/z,y/z,1/z) through the origin (0,0,0) onto the plane z=1. Hence it returns (a,b) = (x/z, y/z). More... | |
template<class TT > | |
auto | dxProjX (InverseDepthPoint3< TT > const &) -> Eigen::Matrix< TT, 2, 3 > |
Returns point derivative of inverse depth point projection: More... | |
template<class TT > | |
auto | dxProjExpXPointAt0 (InverseDepthPoint3< TT > const &inverse_depth_point) -> Eigen::Matrix< TT, 2, 6 > |
Returns pose derivative of inverse depth point projection at the identity: More... | |
template<class TT > | |
auto | scaledTransform (sophus::Isometry3< TT > const &foo_from_bar, InverseDepthPoint3< TT > const &inverse_depth_point_in_bar) -> Eigen::Matrix< TT, 3, 1 > |
Transforms inverse_depth point in frame bar to a scaled inverse depth point in frame foo. Here the scale is psi, the input inverse depth. More... | |
template<class TT > | |
auto | projTransform (sophus::Isometry3< TT > const &foo_from_bar, InverseDepthPoint3< TT > const &inverse_depth_point_in_bar) -> Eigen::Matrix< TT, 2, 1 > |
Transforms inverse_depth point from frame bar to frame foo followed by a projection. More... | |
template<class TT > | |
auto | operator* (Isometry2< TT > const &bar_from_foo, Ray< TT, 2 > const &ray_foo) -> Ray< TT, 2 > |
template<class TT > | |
auto | operator* (Isometry3< TT > const &bar_from_foo, Ray< TT, 3 > const &ray_foo) -> Ray< TT, 3 > |
template<class TT > | |
auto | operator* (Isometry3< TT > const &bar_from_foo, UnitVector< TT, 3 > const &v_foo) -> Ray< TT, 3 > |
template<class TT > | |
auto | operator* (Similarity2< TT > const &b_from_a, Ray2< TT > const &ray_a) -> Ray2< TT > |
template<class TT > | |
auto | operator* (Similarity3< TT > const &b_from_a, Ray3< TT > const &ray_a) -> Ray3< TT > |
template<class TT > | |
auto | closestApproachParameters (Ray3< TT > const &line_0, Ray3< TT > const &line_1) -> std::optional< ClosestApproachResult< TT >> |
For two parametric lines in lambda0 and lambda1 respectively,. More... | |
template<class TT > | |
auto | closestApproach (Ray3< TT > const &line_0, Ray3< TT > const &line_1) -> std::optional< Eigen::Vector3< TT >> |
For two lines line_0 and line_1 returns the mid-point of the line segment connecting one point from each of the lines which are closest to one another according to the l2 distance measure. More... | |
template<typename TUserFunc , class TPredicate = IntensityImagePredicate, class TAllocator = Eigen::aligned_allocator<uint8_t>> | |
void | visitImage (TUserFunc &&func, DynImage< TPredicate, TAllocator > const &image) |
template<class TUserFunc , class TPredicate = IntensityImagePredicate> | |
void | visitImage (TUserFunc &&func, DynImageView< TPredicate > const &image) |
auto | half (ImageSize size) -> ImageSize |
If the original width [height] is odd, the new width [height] will be: (width+1)/2 [height+1)/2]. More... | |
auto | operator== (ImageSize const &lhs, ImageSize const &rhs) -> bool |
Equality operator. More... | |
auto | operator!= (ImageSize const &lhs, ImageSize const &rhs) -> bool |
auto | operator< (ImageSize const &lhs, ImageSize const &rhs) -> bool |
Ordering operator, for keys in sets and maps. More... | |
auto | operator<< (std::ostream &os, ImageSize const &image_size) -> std::ostream & |
Ostream operator. More... | |
template<class TPixel > | |
auto | imageCoordsInterval (ImageSize image_size, int border=0) -> Region2I |
auto | count (ImageViewBool mask, bool truth_value) -> int |
Returns number of pixels equal truth_value in mask. More... | |
auto | countTrue (ImageViewBool mask) -> int |
Returns number of true pixels in mask. More... | |
auto | countFalse (ImageViewBool mask) -> int |
Returns number of false pixels in mask. More... | |
auto | isAllTrue (ImageViewBool mask) -> bool |
Returns true if all pixels are true. More... | |
auto | isAnyTrue (ImageViewBool mask) -> bool |
Returns true if at least one pixel is true. More... | |
auto | neg (ImageViewBool mask) -> MutImageBool |
Returns boolean image with the result per pixel: More... | |
auto | firstPixel (ImageViewBool mask, bool truth_value) -> std::optional< Eigen::Vector2i > |
Returns first pixel of mask which equals truth_value , nullopt otherwise. More... | |
auto | firstTruePixel (ImageViewBool mask) -> std::optional< Eigen::Vector2i > |
Returns first true pixel, nullopt otherwise. More... | |
auto | firstFalsePixel (ImageViewBool mask) -> std::optional< Eigen::Vector2i > |
Returns first false pixel, nullopt otherwise. More... | |
template<class TPixel > | |
auto | isEqualMask (ImageView< TPixel > lhs, ImageView< TPixel > rhs) -> MutImageBool |
Returns boolean image with the result per pixel: More... | |
template<class TPixel > | |
auto | isLessMask (ImageView< TPixel > lhs, ImageView< TPixel > rhs) -> MutImageBool |
Returns boolean image with the result per pixel: More... | |
template<class TPixel > | |
auto | isGreaterMask (ImageView< TPixel > lhs, ImageView< TPixel > rhs) -> MutImageBool |
Returns boolean image with the result per pixel: More... | |
template<class TPixel > | |
auto | isNearMask (ImageView< TPixel > lhs, ImageView< TPixel > rhs, typename ImageTraits< TPixel >::ChannelT thr) -> MutImageBool |
Returns boolean image with the result per pixel: More... | |
template<class TT > | |
auto | interpolate (sophus::ImageView< TT > const &image, Eigen::Vector2f uv) -> TT |
auto | operator== (ImageLayout const &lhs, ImageLayout const &rhs) -> bool |
Equality operator. More... | |
auto | operator!= (ImageLayout const &lhs, ImageLayout const &rhs) -> bool |
auto | operator<< (std::ostream &os, ImageLayout const &layout) -> std::ostream & |
Ostream operator. More... | |
auto | operator== (PixelFormat const &lhs, PixelFormat const &rhs) -> bool |
auto | operator<< (std::ostream &os, PixelFormat const &type) -> std::ostream & |
Example: PixelFormat::fromTemplate<float>() outputs: "1F32"; PixelFormat::fromTemplate<Eigen::Matrix<uint8_t,4,1>>() outputs: "4U8";. More... | |
SOPHUS_ENUM (ManifoldPlusType,(left_plus, right_plus)) | |
template<concepts::Range TSequenceContainer> | |
auto | iterativeMean (TSequenceContainer const &foo_from_bar_transforms, int max_num_iterations) -> std::optional< typename TSequenceContainer::value_type > |
Calculates mean iteratively. More... | |
template<concepts::Range TSequenceContainer, int kPointDim = TSequenceContainer::value_type::kDof, class TScalar = typename TSequenceContainer::value_type::Scalar> | |
auto | average (TSequenceContainer const &foo_from_bar_transforms) -> std::enable_if_t< std::is_same< typename TSequenceContainer::value_type, Translation< TScalar, kPointDim > >::value, std::optional< typename TSequenceContainer::value_type > > |
template<concepts::Range TSequenceContainer, class TScalar = typename TSequenceContainer::value_type::Scalar> | |
auto | average (TSequenceContainer const &foo_from_bar_transforms) -> std::enable_if_t< std::is_same< typename TSequenceContainer::value_type, Rotation2< TScalar > >::value, std::optional< typename TSequenceContainer::value_type > > |
template<concepts::Range TSequenceContainer, class TScalar = typename TSequenceContainer::value_type::Scalar> | |
auto | average (TSequenceContainer const &foo_from_bar_transforms, int max_num_iterations=20) -> std::enable_if_t< std::is_same< typename TSequenceContainer::value_type, Isometry2< TScalar > >::value, std::optional< typename TSequenceContainer::value_type > > |
template<concepts::Range TSequenceContainer, int kPointDim = TSequenceContainer::value_type::kPointDim, class TScalar = typename TSequenceContainer::value_type::Scalar> | |
auto | average (TSequenceContainer const &foo_from_bar_transforms, int max_num_iterations=20) -> std::enable_if_t< std::is_same< typename TSequenceContainer::value_type, ScalingTranslation< TScalar, kPointDim > >::value, std::optional< typename TSequenceContainer::value_type > > |
template<concepts::LieGroup TGroup, concepts::ConvertibleTo< typename TGroup::Scalar > TScalar> | |
auto | interpolate (TGroup const &foo_from_bar, TGroup const &foo_from_daz, TScalar p=TScalar(0.5f)) -> TGroup |
This function interpolates between two Lie group elements foo_from_bar and foo_from_daz with an interpolation factor of alpha in [0, 1]. More... | |
template<class TScalar > | |
auto | rotThroughPoints (UnitVector3< TScalar > const &from, UnitVector3< TScalar > const &to) -> Rotation3< TScalar > |
Construct rotation which would take unit direction vector from into to such that to = rotThroughPoints(from,to) * from . I.e. that the rotated point from is colinear with to (equal up to scale) More... | |
template<class TScalar > | |
auto | rotThroughPoints (Eigen::Vector< TScalar, 3 > const &from, Eigen::Vector< TScalar, 3 > const &to) -> Rotation3< TScalar > |
Construct rotation which would take direction vector from into to such that to \propto rotThroughPoints(from,to) * from . I.e. that the rotated point from is colinear with to (equal up to scale) More... | |
template<class TTo , class TT > | |
auto | cast (const TT &p) |
template<class TPoint > | |
auto | proj (Eigen::MatrixBase< TPoint > const &p) -> Eigen::Vector< typename TPoint::Scalar, TPoint::RowsAtCompileTime - 1 > |
Projects 3-point (x,y,z) through the origin (0,0,0) onto the plane z=1. Hence it returns (x/z, y/z). More... | |
template<class TPoint > | |
auto | unproj (Eigen::MatrixBase< TPoint > const &p, const typename TPoint::Scalar &z=1.0) -> Eigen::Vector< typename TPoint::Scalar, TPoint::RowsAtCompileTime+1 > |
Maps point on the z=1 plane (a,b) to homogeneous representation of the same point: (z*a, z*b, z). Z defaults to 1. More... | |
template<class TD > | |
auto | isOrthogonal (Eigen::MatrixBase< TD > const &r) -> bool |
Takes in arbitrary square matrix and returns true if it is orthogonal. More... | |
template<class TD > | |
auto | isScaledOrthogonalAndPositive (Eigen::MatrixBase< TD > const &s_r) -> bool |
Takes in arbitrary square matrix and returns true if it is "scaled-orthogonal" with positive determinant. More... | |
template<class TD > | |
auto | makeRotationMatrix (Eigen::MatrixBase< TD > const &r) -> std::enable_if_t< std::is_floating_point< typename TD::Scalar >::value, Eigen::Matrix< typename TD::Scalar, TD::RowsAtCompileTime, TD::RowsAtCompileTime >> |
Takes in arbitrary square matrix (2x2 or larger) and returns closest orthogonal matrix with positive determinant. More... | |
template<::sophus::concepts::ScalarType TPoint> | |
auto | zero () -> TPoint |
template<::sophus::concepts::ScalarType TPoint> | |
auto | eval (TPoint const &p) |
template<::sophus::concepts::ScalarType TPoint> | |
auto | allTrue (TPoint const &p) -> bool |
template<::sophus::concepts::ScalarType TPoint> | |
auto | anyTrue (TPoint const &p) -> bool |
template<::sophus::concepts::ScalarType TPoint> | |
auto | isFinite (TPoint const &p) -> bool |
template<::sophus::concepts::ScalarType TPoint> | |
auto | isNan (TPoint const &p) -> bool |
template<::sophus::concepts::ScalarType TPoint> | |
auto | square (TPoint const &v) |
template<::sophus::concepts::ScalarType TPoint> | |
auto | min (TPoint const &a, TPoint const &b) -> TPoint |
template<::sophus::concepts::ScalarType TPoint> | |
auto | max (TPoint const &a, TPoint const &b) -> TPoint |
template<::sophus::concepts::PointType TPoint> | |
auto | clamp (TPoint const &val, TPoint const &lo, TPoint const &hi) -> TPoint |
template<::sophus::concepts::ScalarType TPoint> | |
auto | floor (TPoint s) |
template<::sophus::concepts::ScalarType TPoint> | |
auto | ceil (TPoint s) |
template<::sophus::concepts::ScalarType TPoint> | |
auto | round (TPoint s) |
template<::sophus::concepts::ScalarType TPoint> | |
auto | plus (TPoint p, TPoint s) |
template<::sophus::concepts::EigenDenseType TPoint> | |
auto | plus (TPoint p, typename TPoint::Scalar s) |
template<::sophus::concepts::ScalarType TPoint> | |
auto | isLessEqual (TPoint const &lhs, TPoint const &rhs) -> bool |
template<::sophus::concepts::ScalarType TPoint> | |
auto | tryGetElem (TPoint const &p, size_t row, size_t col=0) -> Expected< TPoint > |
template<::sophus::concepts::ScalarType TPoint> | |
auto | trySetElem (TPoint &p, TPoint s, size_t row, size_t col=0) -> Expected< Success > |
template<::sophus::concepts::EigenDenseType TPoint> | |
auto | trySetElem (TPoint &p, typename TPoint::Scalar s, size_t row, size_t col=0) -> Expected< Success > |
template<::sophus::concepts::ScalarType TPoint> | |
auto | transpose (TPoint p) |
template<class TScalar , int kDim> | |
auto | pointExamples () |
template<int... Ds> | |
constexpr std::array< int, sizeof...(Ds)> | cumulativeSum () |
auto | createDefaultPinholeModel (ImageSize image_size) -> PinholeModel |
Creates default pinhole model from image_size . More... | |
auto | createDefaultOrthoModel (ImageSize image_size) -> OrthographicModel |
Creates default orthographic model from image_size . More... | |
template<class TScalar > | |
auto | subsampleDown (Eigen::Matrix< TScalar, 2, 1 > const &in) -> Eigen::Matrix< TScalar, 2, 1 > |
Subsamples pixel down, factor of 0.5. More... | |
template<class TScalar > | |
auto | subsampleUp (Eigen::Matrix< TScalar, 2, 1 > const &in) -> Eigen::Matrix< TScalar, 2, 1 > |
Subsamples pixel up, factor of 2.0. More... | |
template<class TScalar > | |
auto | binDown (Eigen::Matrix< TScalar, 2, 1 > const &in) -> Eigen::Matrix< TScalar, 2, 1 > |
Bins pixel down, factor of 0.5. More... | |
template<class TScalar > | |
auto | binUp (Eigen::Matrix< TScalar, 2, 1 > const &in) -> Eigen::Matrix< TScalar, 2, 1 > |
Bins pixel up, factor of 2.0. More... | |
SOPHUS_ENUM (CameraDistortionType,(pinhole, brown_conrady, kannala_brandt_k3, orthographic)) | |
Camera model projection type. More... | |
auto | getModelFromType (GyroModelType model_type, Eigen::VectorXd const ¶ms) -> GyroModelVariant |
auto | getModelFromType (AcceleroModelType model_type, Eigen::VectorXd const ¶ms) -> AcceleroModelVariant |
template<class TT > | |
auto | nonOrthogonalityMatrix (Eigen::Matrix< TT, 3, 1 > const &non_orthogonality) -> Eigen::Matrix< TT, 3, 3 > |
SOPHUS_ENUM (GyroModelType,(scaling_non_orthogonality)) | |
SOPHUS_ENUM (AcceleroModelType,(scaling_non_orthogonality)) | |
template<class TScalar > | |
auto | orthoCamFromBoundingBox (Region2< TScalar > const &bounding_box, ImageSize image_size) -> OrthographicModelT< TScalar > |
Returns orthographic camera model given bounding box and image size. More... | |
template<class TScalar > | |
auto | boundingBoxFromOrthoCam (OrthographicModelT< TScalar > const &ortho_cam) -> Region2< TScalar > |
Returns 2d bounding box corresponding the the given orthographic camera model. More... | |
Variables | |
template<class TScalar > | |
constexpr bool | kIsMappableV = IsMappable<TScalar>::value |
template<class TScalar > | |
const TScalar | kEpsilon = TScalar(1e-10) |
template<> | |
const float | kEpsilon< float > = float(1e-5) |
template<class TScalar > | |
const TScalar | kEpsilonPlus |
template<class TScalar > | |
const TScalar | kEpsilonSqrt = TScalar(1e-5) |
template<> | |
const float | kEpsilonSqrt< float > = float(3.16227766e-3) |
template<class TScalar > | |
const TScalar | kPi = TScalar(3.141592653589793238462643383279502884) |
const float | kPiF32 = kPi<float> |
const double | kPiF64 = kPi<double> |
template<class TGenerator > | |
constexpr bool | kIsUniformRandomBitGeneratorV |
Image MutImage, owning images types.
ImageView and MutImageView, non owning images types.
Note that it is a conscious API decision to follow "shallow-compare" type semantic for ImageView, MutImageView, Image and MutImage. See image_view.h for details.
See image.h for Image and MutImage, owning images types.
Note that it is a conscious API decision to follow "shallow-compare" type semantic for ImageView, MutImageView, Image and MutImage. Similar "shallow-compare" types are: std::span (shallow-compare reference type), and std::unique_ptr (shallow compare unique ownership type). This is in contrast to regular types such as std::vector, std::string and reference types which mimic regular type semantic such as std::string_view. Also see https://abseil.io/blog/20180531-regular-types.
using sophus::AcceleroModelVariant = typedef std::variant<ScalingNonOrthogonalityAcceleroModel<double> > |
using sophus::AnyImage = typedef DynImage<AnyImagePredicate, TAllocator> |
Image representing any number of channels (>=1) and any floating and unsigned integral channel type.
using sophus::AnyImageView = typedef DynImageView<AnyImagePredicate> |
using sophus::BrownConradyModel = typedef CameraModelT<double, BrownConradyTransform, ProjectionZ1> |
Brown Conrady camera model.
using sophus::CameraDistortionVariant = typedef std::variant< PinholeModel, BrownConradyModel, KannalaBrandtK3Model, OrthographicModel> |
Variant of camera models.
using sophus::GyroModelVariant = typedef std::variant<ScalingNonOrthogonalityGyroModel<double> > |
using sophus::Identity2 = typedef Identity<TScalar, 2> |
using sophus::Identity3 = typedef Identity<TScalar, 3> |
using sophus::Image3 = typedef Image<Pixel3<TChannel> > |
using sophus::Image3F32 = typedef Image3<float> |
using sophus::Image3U16 = typedef Image3<uint16_t> |
using sophus::Image3U8 = typedef Image3<uint8_t> |
using sophus::Image4 = typedef Image<Pixel4<TChannel> > |
using sophus::Image4F32 = typedef Image4<float> |
using sophus::Image4U16 = typedef Image4<uint16_t> |
using sophus::Image4U8 = typedef Image4<uint8_t> |
using sophus::ImageBool = typedef Image<bool> |
using sophus::ImageF32 = typedef Image<float> |
using sophus::ImageU16 = typedef Image<uint16_t> |
using sophus::ImageU8 = typedef Image<uint8_t> |
using sophus::ImageView3 = typedef ImageView<Pixel3<TChannel> > |
using sophus::ImageView3F32 = typedef ImageView3<float> |
using sophus::ImageView3U16 = typedef ImageView3<uint16_t> |
using sophus::ImageView3U8 = typedef ImageView3<uint8_t> |
using sophus::ImageView4 = typedef ImageView<Pixel4<TChannel> > |
using sophus::ImageView4F32 = typedef ImageView4<float> |
using sophus::ImageView4U16 = typedef ImageView4<uint16_t> |
using sophus::ImageView4U8 = typedef ImageView4<uint8_t> |
using sophus::ImageViewBool = typedef ImageView<bool> |
using sophus::ImageViewF32 = typedef ImageView<float> |
using sophus::ImageViewU16 = typedef ImageView<uint16_t> |
using sophus::ImageViewU8 = typedef ImageView<uint8_t> |
using sophus::IntensityImage = typedef DynImage<IntensityImagePredicate, TAllocator> |
Image to represent intensity image / texture as grayscale (=1 channel), RGB (=3 channel ) and RGBA (=4 channel), either uint8_t [0-255], uint16 [0-65535] or float [0.0-1.0] channel type.
using sophus::IntensityImageView = typedef DynImageView<IntensityImagePredicate> |
using sophus::InverseDepthPoint3F64 = typedef InverseDepthPoint3<double> |
using sophus::IsMappable = typedef IsSpecialized<Eigen::internal::traits<std::decay_t<TScalar> >> |
Type trait used to distinguish mappable vector types from scalars.
We use this class to distinguish Eigen::Vector<Scalar, kMatrixDim> from Scalar types in LieGroup<TScalar>::Tangent
Primary use is mapping LieGroup::Tangent over raw data, with 2 options:
Specialization of Eigen::internal::traits<TScalar> for TScalar is crucial for for constructing Eigen::Map<TScalar>, thus we use that property for distinguishing between those two options. At this moment there seem to be no option to check this using only "external" API of Eigen
using sophus::Isometry2F32 = typedef Isometry2<float> |
using sophus::Isometry2F64 = typedef Isometry2<double> |
using sophus::Isometry3F32 = typedef Isometry3<float> |
using sophus::Isometry3F64 = typedef Isometry3<double> |
using sophus::IsSpecialized = typedef decltype(complete(std::declval<TScalar*>())) |
using sophus::KannalaBrandtK3Model = typedef CameraModelT<double, KannalaBrandtK3Transform, ProjectionZ1> |
KannalaBrandt camera model with k0, k1, k2, k3.
using sophus::LeftPlus = typedef GroupManifold<TGroup, ManifoldPlusType::left_plus> |
using sophus::MutAnyImage = typedef MutDynImage<AnyImagePredicate, TAllocator> |
using sophus::MutAnyImageView = typedef MutDynImageView<AnyImagePredicate> |
using sophus::MutImage3 = typedef MutImage<Pixel3<TChannel> > |
using sophus::MutImage3F32 = typedef MutImage3<float> |
using sophus::MutImage3U16 = typedef MutImage3<uint16_t> |
using sophus::MutImage3U8 = typedef MutImage3<uint8_t> |
using sophus::MutImage4 = typedef MutImage<Pixel4<TChannel> > |
using sophus::MutImage4F32 = typedef MutImage4<float> |
using sophus::MutImage4U16 = typedef MutImage4<uint16_t> |
using sophus::MutImage4U8 = typedef MutImage4<uint8_t> |
using sophus::MutImageBool = typedef MutImage<bool> |
using sophus::MutImageF32 = typedef MutImage<float> |
using sophus::MutImageU16 = typedef MutImage<uint16_t> |
using sophus::MutImageU8 = typedef MutImage<uint8_t> |
using sophus::MutImageView3 = typedef MutImageView<Pixel3<TChannel> > |
using sophus::MutImageView3F32 = typedef MutImageView3<float> |
using sophus::MutImageView3U16 = typedef MutImageView3<uint16_t> |
using sophus::MutImageView3U8 = typedef MutImageView3<uint8_t> |
using sophus::MutImageView4 = typedef MutImageView<Pixel4<TChannel> > |
using sophus::MutImageView4F32 = typedef MutImageView4<float> |
using sophus::MutImageView4U16 = typedef MutImageView4<uint16_t> |
using sophus::MutImageView4U8 = typedef MutImageView4<uint8_t> |
using sophus::MutImageViewBool = typedef MutImageView<bool> |
using sophus::MutImageViewF32 = typedef MutImageView<float> |
using sophus::MutImageViewU16 = typedef MutImageView<uint16_t> |
using sophus::MutImageViewU8 = typedef MutImageView<uint8_t> |
using sophus::MutIntensityImage = typedef MutDynImage<IntensityImagePredicate, TAllocator> |
using sophus::MutIntensityImageView = typedef MutDynImageView<IntensityImagePredicate> |
using sophus::OrthographicModel = typedef CameraModelT<double, AffineTransform, ProjectionOrtho> |
using sophus::OrthographicModelT = typedef CameraModelT<TScalar, AffineTransform, ProjectionOrtho> |
using sophus::PinholeModel = typedef CameraModelT<double, AffineTransform, ProjectionZ1> |
Pinhole camera model.
using sophus::Pixel2 = typedef Eigen::Matrix<TChannel, 2, 1> |
using sophus::Pixel2F32 = typedef Pixel2<float> |
using sophus::Pixel2U16 = typedef Pixel2<uint16_t> |
using sophus::Pixel2U8 = typedef Pixel2<uint8_t> |
using sophus::Pixel3 = typedef Eigen::Matrix<TChannel, 3, 1> |
using sophus::Pixel3F32 = typedef Pixel3<float> |
using sophus::Pixel3U16 = typedef Pixel3<uint16_t> |
using sophus::Pixel3U8 = typedef Pixel3<uint8_t> |
using sophus::Pixel4 = typedef Eigen::Matrix<TChannel, 4, 1> |
using sophus::Pixel4F32 = typedef Pixel4<float> |
using sophus::Pixel4U16 = typedef Pixel4<uint16_t> |
using sophus::Pixel4U8 = typedef Pixel4<uint8_t> |
using sophus::Pose3F32 = typedef Pose3<float> |
using sophus::Pose3F64 = typedef Pose3<double> |
using sophus::QuaternionF64 = typedef Quaternion<double> |
using sophus::Ray2 = typedef Ray<TScalar, 2> |
using sophus::Ray2F64 = typedef Ray2<double> |
using sophus::Ray3 = typedef Ray<TScalar, 3> |
using sophus::Ray3F64 = typedef Ray3<double> |
using sophus::Region2 = typedef Region<Eigen::Array<TScalar, 2, 1> > |
using sophus::Region2F32 = typedef Region2<float> |
using sophus::Region2F64 = typedef Region2<double> |
using sophus::Region2I = typedef Region2<int> |
using sophus::Region3 = typedef Region<Eigen::Array<TScalar, 3, 1> > |
using sophus::Region3F32 = typedef Region3<float> |
using sophus::Region3F64 = typedef Region3<double> |
using sophus::Region3I = typedef Region3<int> |
using sophus::Region4 = typedef Region<Eigen::Array<TScalar, 4, 1> > |
using sophus::Region4F32 = typedef Region4<float> |
using sophus::Region4F64 = typedef Region4<double> |
using sophus::Region4I = typedef Region4<int> |
using sophus::RegionF32 = typedef Region<float> |
using sophus::RegionF64 = typedef Region<double> |
using sophus::RegionI = typedef Region<int> |
using sophus::RightPlus = typedef GroupManifold<TGroup, ManifoldPlusType::right_plus> |
using sophus::Rotation2F32 = typedef Rotation2<float> |
using sophus::Rotation2F64 = typedef Rotation2<double> |
using sophus::Rotation3F32 = typedef Rotation3<float> |
using sophus::Rotation3F64 = typedef Rotation3<double> |
using sophus::Scaling2 = typedef Scaling<TScalar, 2> |
using sophus::Scaling3 = typedef Scaling<TScalar, 3> |
using sophus::ScalingTranslation2 = typedef ScalingTranslation<TScalar, 2> |
using sophus::ScalingTranslation2F64 = typedef ScalingTranslation2<double> |
using sophus::ScalingTranslation3 = typedef ScalingTranslation<TScalar, 3> |
using sophus::ScalingTranslation3F64 = typedef ScalingTranslation3<double> |
using sophus::SE3 = typedef Isometry3<TScalar> |
using sophus::SE3d = typedef Isometry3<double> |
using sophus::SE3f = typedef Isometry3<float> |
using sophus::Similarity2F32 = typedef Similarity2<float> |
using sophus::Similarity2F64 = typedef Similarity2<double> |
using sophus::Similarity3F32 = typedef Similarity3<float> |
using sophus::Similarity3F64 = typedef Similarity3<double> |
using sophus::SO3 = typedef Rotation3<TScalar> |
using sophus::SO3d = typedef Rotation3<double> |
using sophus::SO3f = typedef Rotation3<float> |
using sophus::SpiralSimilarity2F32 = typedef SpiralSimilarity2<float> |
using sophus::SpiralSimilarity2F64 = typedef SpiralSimilarity2<double> |
using sophus::SpiralSimilarity3F32 = typedef SpiralSimilarity3<float> |
using sophus::SpiralSimilarity3F64 = typedef SpiralSimilarity3<double> |
using sophus::Translation2 = typedef Translation<TScalar, 2> |
using sophus::Translation2F32 = typedef Translation2<float> |
using sophus::Translation2F64 = typedef Translation2<double> |
using sophus::Translation3 = typedef Translation<TScalar, 3> |
using sophus::Translation3F32 = typedef Translation3<float> |
using sophus::Translation3F64 = typedef Translation3<double> |
using sophus::UniqueDataArea = typedef std::unique_ptr<uint8_t, MaybeLeakingUniqueDataAreaDeleter<TAllocator> > |
using sophus::UnitVector2 = typedef UnitVector<TScalar, 2> |
using sophus::UnitVector2F64 = typedef UnitVector2<double> |
using sophus::UnitVector3 = typedef UnitVector<TScalar, 3> |
using sophus::UnitVector3F64 = typedef UnitVector3<double> |
|
strong |
auto sophus::allTrue | ( | TPoint const & | p | ) | -> bool |
auto sophus::anyTrue | ( | TPoint const & | p | ) | -> bool |
auto sophus::average | ( | TSequenceContainer const & | foo_from_bar_transforms | ) | -> std::enable_if_t< std::is_same< typename TSequenceContainer::value_type, Rotation2<TScalar> >::value, std::optional<typename TSequenceContainer::value_type> > |
auto sophus::average | ( | TSequenceContainer const & | foo_from_bar_transforms | ) | -> std::enable_if_t< std::is_same< typename TSequenceContainer::value_type, Translation<TScalar, kPointDim> >::value, std::optional<typename TSequenceContainer::value_type> > |
auto sophus::average | ( | TSequenceContainer const & | foo_from_bar_transforms, |
int | max_num_iterations = 20 |
||
) | -> std::enable_if_t< std::is_same< typename TSequenceContainer::value_type, Isometry2<TScalar> >::value, std::optional<typename TSequenceContainer::value_type> > |
auto sophus::average | ( | TSequenceContainer const & | foo_from_bar_transforms, |
int | max_num_iterations = 20 |
||
) | -> std::enable_if_t< std::is_same< typename TSequenceContainer::value_type, ScalingTranslation<TScalar, kPointDim> >::value, std::optional<typename TSequenceContainer::value_type> > |
auto sophus::binDown | ( | Eigen::Matrix< TScalar, 2, 1 > const & | in | ) | -> Eigen::Matrix<TScalar, 2, 1> |
Bins pixel down, factor of 0.5.
See for details: https://docs.google.com/document/d/1xmhCMWklP2UoQMGaMqFnsoPWoeMvBfXN7S8-ie9k0UA/edit#heading=h.elfm6123mecj
auto sophus::binUp | ( | Eigen::Matrix< TScalar, 2, 1 > const & | in | ) | -> Eigen::Matrix<TScalar, 2, 1> |
Bins pixel up, factor of 2.0.
See for details: https://docs.google.com/document/d/1xmhCMWklP2UoQMGaMqFnsoPWoeMvBfXN7S8-ie9k0UA/edit#heading=h.elfm6123mecj
auto sophus::boundingBoxFromOrthoCam | ( | OrthographicModelT< TScalar > const & | ortho_cam | ) | -> Region2<TScalar> |
Returns 2d bounding box corresponding the the given orthographic camera model.
auto sophus::cast | ( | const TT & | p | ) |
auto sophus::ceil | ( | TPoint | s | ) |
auto sophus::clamp | ( | TPoint const & | val, |
TPoint const & | lo, | ||
TPoint const & | hi | ||
) | -> TPoint |
auto sophus::closestApproach | ( | Ray3< TT > const & | line_0, |
Ray3< TT > const & | line_1 | ||
) | -> std::optional<Eigen::Vector3<TT>> |
For two lines line_0
and line_1
returns the mid-point of the line segment connecting one point from each of the lines which are closest to one another according to the l2 distance measure.
If line_0 and line_1 are parallel, returns nullopt as no unique solution exists
auto sophus::closestApproachParameters | ( | Ray3< TT > const & | line_0, |
Ray3< TT > const & | line_1 | ||
) | -> std::optional<ClosestApproachResult<TT>> |
For two parametric lines in lambda0 and lambda1 respectively,.
returns distances [lambda0, lambda1] along the respective rays, corresponding to the closest approach of x and y according to an l2 distance measure. lambda0 and lambda1 may be positive or negative. If line_0 and line_1 are parallel, returns nullopt as no unique solution exists
|
constexpr |
|
constexpr |
auto sophus::count | ( | ImageViewBool | mask, |
bool | truth_value | ||
) | -> int |
Returns number of pixels equal truth_value
in mask.
auto sophus::countFalse | ( | ImageViewBool | mask | ) | -> int |
Returns number of false pixels in mask.
auto sophus::countTrue | ( | ImageViewBool | mask | ) | -> int |
Returns number of true pixels in mask.
auto sophus::createDefaultOrthoModel | ( | ImageSize | image_size | ) | -> OrthographicModel |
Creates default orthographic model from image_size
.
auto sophus::createDefaultPinholeModel | ( | ImageSize | image_size | ) | -> PinholeModel |
Creates default pinhole model from image_size
.
|
constexpr |
auto sophus::curveNumDiff | ( | TFn | curve, |
TScalar | t, | ||
TScalar | h = kEpsilonSqrt<TScalar> |
||
) | -> decltype(details::Curve<TScalar>::numDiff(std::move(curve), t, h)) |
Calculates the derivative of a curve at a point t
.
Here, a curve is a function from a Scalar to a Euclidean space. Thus, it returns either a Scalar, a vector or a matrix.
auto sophus::dxProjExpXPointAt0 | ( | InverseDepthPoint3< TT > const & | inverse_depth_point | ) | -> Eigen::Matrix<TT, 2, 6> |
Returns pose derivative of inverse depth point projection at the identity:
Dx proj(exp(x) * y) at x=0
with y = (a,b,psi) being an inverse depth point.
auto sophus::dxProjX | ( | InverseDepthPoint3< TT > const & | ) | -> Eigen::Matrix<TT, 2, 3> |
Returns point derivative of inverse depth point projection:
Dx proj(x) with x = (a,b,psi) being an inverse depth point.
auto sophus::eval | ( | TPoint const & | p | ) |
auto sophus::firstFalsePixel | ( | ImageViewBool | mask | ) | -> std::optional< Eigen::Vector2i > |
Returns first false pixel, nullopt otherwise.
auto sophus::firstPixel | ( | ImageViewBool | mask, |
bool | truth_value | ||
) | -> std::optional< Eigen::Vector2i > |
Returns first pixel of mask which equals truth_value
, nullopt otherwise.
auto sophus::firstTruePixel | ( | ImageViewBool | mask | ) | -> std::optional< Eigen::Vector2i > |
Returns first true pixel, nullopt otherwise.
|
inline |
auto sophus::fitPlaneToPoints | ( | std::vector< Eigen::Vector3d > const & | points | ) | -> Eigen::Hyperplane<double, 3> |
auto sophus::fitPlaneToPoints | ( | std::vector< Eigen::Vector3f > const & | points | ) | -> Eigen::Hyperplane<double, 3> |
auto sophus::floor | ( | TPoint | s | ) |
auto sophus::getModelFromType | ( | AcceleroModelType | model_type, |
Eigen::VectorXd const & | params | ||
) | -> AcceleroModelVariant |
auto sophus::getModelFromType | ( | GyroModelType | model_type, |
Eigen::VectorXd const & | params | ||
) | -> GyroModelVariant |
If the original width [height] is odd, the new width [height] will be: (width+1)/2 [height+1)/2].
|
inline |
auto sophus::interpolate | ( | sophus::ImageView< TT > const & | image, |
Eigen::Vector2f | uv | ||
) | -> TT |
auto sophus::interpolate | ( | TGroup const & | foo_from_bar, |
TGroup const & | foo_from_daz, | ||
TScalar | p = TScalar(0.5f) |
||
) | -> TGroup |
This function interpolates between two Lie group elements foo_from_bar
and foo_from_daz
with an interpolation factor of alpha
in [0, 1].
It returns a pose foo_T_quiz
with quiz
being a frame between bar
and baz
. If alpha=0
it returns foo_from_bar
. If it is 1, it returns foo_from_daz
.
(Since interpolation on Lie groups is inverse-invariant, we can equivalently think of the input arguments as being bar_from_foo
, baz_from_foo
and the return value being quiz_T_foo
.)
Precondition: p
must be in [0, 1].
auto sophus::isAllTrue | ( | ImageViewBool | mask | ) | -> bool |
Returns true if all pixels are true.
auto sophus::isAnyTrue | ( | ImageViewBool | mask | ) | -> bool |
Returns true if at least one pixel is true.
auto sophus::isEqualMask | ( | ImageView< TPixel > | lhs, |
ImageView< TPixel > | rhs | ||
) | -> MutImageBool |
Returns boolean image with the result per pixel:
mask(..) = lhs(..) == rhs (..)
auto sophus::isFinite | ( | TPoint const & | p | ) | -> bool |
auto sophus::isGreaterMask | ( | ImageView< TPixel > | lhs, |
ImageView< TPixel > | rhs | ||
) | -> MutImageBool |
Returns boolean image with the result per pixel:
mask(..) = lhs(..) > rhs (..)
auto sophus::isLessEqual | ( | TPoint const & | lhs, |
TPoint const & | rhs | ||
) | -> bool |
auto sophus::isLessMask | ( | ImageView< TPixel > | lhs, |
ImageView< TPixel > | rhs | ||
) | -> MutImageBool |
Returns boolean image with the result per pixel:
mask(..) = lhs(..) < rhs (..)
auto sophus::isNan | ( | TPoint const & | p | ) | -> bool |
auto sophus::isNearMask | ( | ImageView< TPixel > | lhs, |
ImageView< TPixel > | rhs, | ||
typename ImageTraits< TPixel >::ChannelT | thr | ||
) | -> MutImageBool |
Returns boolean image with the result per pixel:
mask(..) = ||lhs(..), rhs (..)|| <= thr
auto sophus::isometryFromLine | ( | Eigen::Hyperplane< TScalar, 2 > const & | line_in_foo | ) | -> Isometry2<TScalar> |
Returns the pose T_foo_line
, given a line in reference frame foo
.
Note: The line is defined by X-axis of the frame line
.
auto sophus::isometryFromPlane | ( | Eigen::Hyperplane< TScalar, 3 > const & | plane_in_foo | ) | -> Isometry3<TScalar> |
Returns the pose foo_from_plane
, given a plane in reference frame foo
.
Note: The plane is defined by XY-plane of the frame plane
.
auto sophus::isOrthogonal | ( | Eigen::MatrixBase< TD > const & | r | ) | -> bool |
Takes in arbitrary square matrix and returns true if it is orthogonal.
auto sophus::isScaledOrthogonalAndPositive | ( | Eigen::MatrixBase< TD > const & | s_r | ) | -> bool |
Takes in arbitrary square matrix and returns true if it is "scaled-orthogonal" with positive determinant.
auto sophus::iterativeMean | ( | TSequenceContainer const & | foo_from_bar_transforms, |
int | max_num_iterations | ||
) | -> std::optional<typename TSequenceContainer::value_type> |
Calculates mean iteratively.
Returns nullopt
if it does not converge.
auto sophus::lineFromIsometry | ( | Isometry2< TScalar > const & | foo_from_line | ) | -> Eigen::Hyperplane<TScalar, 2> |
Returns a line (wrt. to frame foo
), given a pose of the line
in reference frame foo
.
Note: The plane is defined by X-axis of the line
frame.
auto sophus::makeHyperplaneUnique | ( | Eigen::Hyperplane< TScalar, kMatrixDim > const & | plane | ) | -> Eigen::Hyperplane<TScalar, kMatrixDim> |
Takes in a hyperplane and returns unique representation by ensuring that the offset
is not negative.
auto sophus::makeRotationMatrix | ( | Eigen::MatrixBase< TD > const & | r | ) | -> std::enable_if_t< std::is_floating_point<typename TD::Scalar>::value, Eigen::Matrix< typename TD::Scalar, TD::RowsAtCompileTime, TD::RowsAtCompileTime>> |
Takes in arbitrary square matrix (2x2 or larger) and returns closest orthogonal matrix with positive determinant.
auto sophus::max | ( | TPoint const & | a, |
TPoint const & | b | ||
) | -> TPoint |
auto sophus::min | ( | TPoint const & | a, |
TPoint const & | b | ||
) | -> TPoint |
auto sophus::neg | ( | ImageViewBool | mask | ) | -> MutImageBool |
Returns boolean image with the result per pixel:
out_mask(..) = !mask(..)
auto sophus::nonOrthogonalityMatrix | ( | Eigen::Matrix< TT, 3, 1 > const & | non_orthogonality | ) | -> Eigen::Matrix<TT, 3, 3> |
auto sophus::normalFromRotation2 | ( | Rotation2< TScalar > const & | foo_rotation_line | ) | -> Eigen::Vector2<TScalar> |
Takes in a rotation foo_rotation_plane
and returns the corresponding line normal along the y-axis (in reference frame foo
).
auto sophus::normalFromRotation3 | ( | Rotation3< TScalar > const & | foo_rotation_plane | ) | -> Eigen::Vector3<TScalar> |
Takes in a rotation foo_rotation_plane
and returns the corresponding plane normal along the z-axis (in reference frame foo
).
auto sophus::operator!= | ( | ImageLayout const & | lhs, |
ImageLayout const & | rhs | ||
) | -> bool |
|
inline |
|
inline |
|
inline |
auto sophus::operator* | ( | Similarity2< TT > const & | b_from_a, |
Ray2< TT > const & | ray_a | ||
) | -> Ray2<TT> |
auto sophus::operator* | ( | Similarity3< TT > const & | b_from_a, |
Ray3< TT > const & | ray_a | ||
) | -> Ray3<TT> |
Ordering operator, for keys in sets and maps.
auto sophus::operator<< | ( | std::ostream & | os, |
ImageLayout const & | layout | ||
) | -> std::ostream & |
Ostream operator.
auto sophus::operator<< | ( | std::ostream & | os, |
ImageSize const & | image_size | ||
) | -> std::ostream & |
Ostream operator.
auto sophus::operator<< | ( | std::ostream & | os, |
PixelFormat const & | type | ||
) | -> std::ostream & |
Example: PixelFormat::fromTemplate<float>() outputs: "1F32"; PixelFormat::fromTemplate<Eigen::Matrix<uint8_t,4,1>>() outputs: "4U8";.
auto sophus::operator== | ( | ImageLayout const & | lhs, |
ImageLayout const & | rhs | ||
) | -> bool |
Equality operator.
auto sophus::operator== | ( | PixelFormat const & | lhs, |
PixelFormat const & | rhs | ||
) | -> bool |
auto sophus::operator== | ( | Region< TT > const & | lhs, |
Region< TT > const & | rhs | ||
) | -> bool |
auto sophus::orthoCamFromBoundingBox | ( | Region2< TScalar > const & | bounding_box, |
ImageSize | image_size | ||
) | -> OrthographicModelT<TScalar> |
Returns orthographic camera model given bounding box and image size.
auto sophus::planeFromIsometry | ( | Isometry3< TScalar > const & | foo_from_plane | ) | -> Eigen::Hyperplane<TScalar, 3> |
Returns a plane (wrt. to frame foo
), given a pose of the plane
in reference frame foo
.
Note: The plane is defined by XY-plane of the frame plane
.
auto sophus::plus | ( | TPoint | p, |
TPoint | s | ||
) |
auto sophus::plus | ( | TPoint | p, |
typename TPoint::Scalar | s | ||
) |
auto sophus::pointExamples | ( | ) |
auto sophus::proj | ( | Eigen::MatrixBase< TPoint > const & | p | ) | -> Eigen::Vector<typename TPoint::Scalar, TPoint::RowsAtCompileTime - 1> |
Projects 3-point (x,y,z) through the origin (0,0,0) onto the plane z=1. Hence it returns (x/z, y/z).
Precondition: z must not be close to 0.
auto sophus::proj | ( | InverseDepthPoint3< TT > const & | inverse_depth_point | ) | -> Eigen::Matrix<TT, 2, 1> |
Projects 3-point (a,b,psi) = (x/z,y/z,1/z) through the origin (0,0,0) onto the plane z=1. Hence it returns (a,b) = (x/z, y/z).
auto sophus::projTransform | ( | sophus::Isometry3< TT > const & | foo_from_bar, |
InverseDepthPoint3< TT > const & | inverse_depth_point_in_bar | ||
) | -> Eigen::Matrix<TT, 2, 1> |
Transforms inverse_depth point from frame bar to frame foo followed by a projection.
If psi != 0, hence the point is not at +/- infinity, this function is equivalent to:
camProj(foo_from_bar * inverse_depth_point_in_bar.toEuclideanPoint3());
However, this function can also applied when 1/z==0, hence the point is at +/- infinity.
auto sophus::rotation2FromNormal | ( | Eigen::Vector2< TScalar > | normal_in_foo | ) | -> Rotation2<TScalar> |
Takes in line normal in reference frame foo and constructs a corresponding rotation matrix foo_rotation_line
.
Precondition: normal_in_foo
must not be close to zero.
auto sophus::rotation3FromNormal | ( | Eigen::Vector3< TScalar > const & | normal_in_foo, |
Eigen::Vector3< TScalar > | x_dir_hint_foo = Eigen::Vector3<TScalar>(TScalar(1), TScalar(0), TScalar(0)) , |
||
Eigen::Vector3< TScalar > | y_dir_hint_foo = Eigen::Vector3<TScalar>( TScalar(0), TScalar(1), TScalar(0)) |
||
) | -> Eigen::Matrix3<TScalar> |
Takes in plane normal in reference frame foo and constructs a corresponding rotation matrix foo_rotation_plane
.
Note: The plane
frame is defined as such that the normal points along the positive z-axis. One can specify hints for the x-axis and y-axis of the plane
frame.
Preconditions:
normal_in_foo
, xDirHint_foo
, yDirHint_foo
must not be close to zero.xDirHint_foo
and yDirHint_foo
must be approx. perpendicular. auto sophus::rotation3FromPlane | ( | Eigen::Vector3< TScalar > const & | normal_in_foo | ) | -> Rotation3<TScalar> |
Takes in plane normal in reference frame foo and constructs a corresponding rotation matrix foo_rotation_plane
.
See rotationFromNormal
for details.
auto sophus::rotThroughPoints | ( | Eigen::Vector< TScalar, 3 > const & | from, |
Eigen::Vector< TScalar, 3 > const & | to | ||
) | -> Rotation3<TScalar> |
Construct rotation which would take direction vector from
into to
such that to \propto rotThroughPoints(from,to) * from
. I.e. that the rotated point from
is colinear with to
(equal up to scale)
The axis of rotation is perpendicular to both from
and to
.
Precondition: Neither from
nor to
must be zero. This is
auto sophus::rotThroughPoints | ( | UnitVector3< TScalar > const & | from, |
UnitVector3< TScalar > const & | to | ||
) | -> Rotation3<TScalar> |
Construct rotation which would take unit direction vector from
into to
such that to = rotThroughPoints(from,to) * from
. I.e. that the rotated point from
is colinear with to
(equal up to scale)
The axis of rotation is perpendicular to both from
and to
.
auto sophus::round | ( | TPoint | s | ) |
auto sophus::scaledTransform | ( | sophus::Isometry3< TT > const & | foo_from_bar, |
InverseDepthPoint3< TT > const & | inverse_depth_point_in_bar | ||
) | -> Eigen::Matrix<TT, 3, 1> |
Transforms inverse_depth point in frame bar to a scaled inverse depth point in frame foo. Here the scale is psi, the input inverse depth.
Given (a,b,psi) being the inverse depth point in frame bar, it returns
psi * (foo_from_bar * inverse_depth_point_in_bar.toEuclideanPoint3())
for psi!=0.
sophus::SOPHUS_ENUM | ( | AcceleroModelType | , |
(scaling_non_orthogonality) | |||
) |
sophus::SOPHUS_ENUM | ( | CameraDistortionType | , |
(pinhole, brown_conrady, kannala_brandt_k3, orthographic) | |||
) |
Camera model projection type.
sophus::SOPHUS_ENUM | ( | GyroModelType | , |
(scaling_non_orthogonality) | |||
) |
sophus::SOPHUS_ENUM | ( | ManifoldPlusType | , |
(left_plus, right_plus) | |||
) |
sophus::SOPHUS_ENUM | ( | NumberType | , |
(fixed_point, floating_point) | |||
) |
auto sophus::square | ( | TPoint const & | v | ) |
auto sophus::subsampleDown | ( | Eigen::Matrix< TScalar, 2, 1 > const & | in | ) | -> Eigen::Matrix<TScalar, 2, 1> |
Subsamples pixel down, factor of 0.5.
See for details: https://docs.google.com/document/d/1xmhCMWklP2UoQMGaMqFnsoPWoeMvBfXN7S8-ie9k0UA/edit#heading=h.97r8rr8owwpc
auto sophus::subsampleUp | ( | Eigen::Matrix< TScalar, 2, 1 > const & | in | ) | -> Eigen::Matrix<TScalar, 2, 1> |
Subsamples pixel up, factor of 2.0.
See for details: https://docs.google.com/document/d/1xmhCMWklP2UoQMGaMqFnsoPWoeMvBfXN7S8-ie9k0UA/edit#heading=h.97r8rr8owwpc
auto sophus::transpose | ( | TPoint | p | ) |
auto sophus::tryGetElem | ( | TPoint const & | p, |
size_t | row, | ||
size_t | col = 0 |
||
) | -> Expected<TPoint> |
auto sophus::trySetElem | ( | TPoint & | p, |
TPoint | s, | ||
size_t | row, | ||
size_t | col = 0 |
||
) | -> Expected<Success> |
auto sophus::trySetElem | ( | TPoint & | p, |
typename TPoint::Scalar | s, | ||
size_t | row, | ||
size_t | col = 0 |
||
) | -> Expected<Success> |
auto sophus::unproj | ( | Eigen::MatrixBase< TPoint > const & | p, |
const typename TPoint::Scalar & | z = 1.0 |
||
) | -> Eigen::Vector<typename TPoint::Scalar, TPoint::RowsAtCompileTime + 1> |
Maps point on the z=1 plane (a,b) to homogeneous representation of the same point: (z*a, z*b, z). Z defaults to 1.
auto sophus::vectorFieldNumDiff | ( | TFn | vector_field, |
TScalarOrVector const & | a, | ||
TScalar | eps = kEpsilonSqrt<TScalar> |
||
) | -> Eigen::Matrix<TScalar, kMatrixDim, kM> |
Calculates the derivative of a vector field at a point a
.
Here, a vector field is a function from a vector space to another vector space.
void sophus::visitImage | ( | TUserFunc && | func, |
DynImage< TPredicate, TAllocator > const & | image | ||
) |
void sophus::visitImage | ( | TUserFunc && | func, |
DynImageView< TPredicate > const & | image | ||
) |
auto sophus::zero | ( | ) | -> TPoint |
const TScalar sophus::kEpsilon = TScalar(1e-10) |
|
inline |
const TScalar sophus::kEpsilonPlus |
const TScalar sophus::kEpsilonSqrt = TScalar(1e-5) |
|
inline |
|
constexpr |
|
constexpr |
const TScalar sophus::kPi = TScalar(3.141592653589793238462643383279502884) |
const float sophus::kPiF32 = kPi<float> |
const double sophus::kPiF64 = kPi<double> |