| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef PARALLEL_BA_H |
| | #define PARALLEL_BA_H |
| |
|
| | #if defined(_WIN32) |
| | #ifdef PBA_DLL |
| | #ifdef DLL_EXPORT |
| | #define PBA_EXPORT __declspec(dllexport) |
| | #else |
| | #define PBA_EXPORT __declspec(dllimport) |
| | #endif |
| | #else |
| | #define PBA_EXPORT |
| | #endif |
| |
|
| | #define PBA_EXPORT_EXTERN PBA_EXPORT |
| |
|
| | #if _MSC_VER > 1000 |
| | #pragma once |
| | #endif |
| | #else |
| | #define PBA_EXPORT |
| | #define PBA_EXPORT_EXTERN extern "C" |
| | #endif |
| |
|
| | |
| | #include "DataInterface.h" |
| | #include "ConfigBA.h" |
| |
|
| | namespace pba { |
| |
|
| | class ParallelBA { |
| | public: |
| | enum StatusT { |
| | STATUS_SUCCESS = 0, |
| | STATUS_CAMERA_MISSING = 1, |
| | STATUS_POINT_MISSING, |
| | STATUS_PROJECTION_MISSING, |
| | STATUS_MEASURMENT_MISSING, |
| | STATUS_ALLOCATION_FAIL |
| | }; |
| | enum DeviceT { |
| | PBA_INVALID_DEVICE = -4, |
| | PBA_CPU_DOUBLE = -3, |
| | PBA_CPU_FLOAT = -2, |
| | PBA_CUDA_DEVICE_DEFAULT = -1, |
| | PBA_CUDA_DEVICE0 = 0 |
| | }; |
| | enum DistortionT { |
| | PBA_MEASUREMENT_DISTORTION = -1, |
| | PBA_NO_DISTORTION = 0, |
| | PBA_PROJECTION_DISTORTION = 1 |
| | }; |
| | enum BundleModeT { |
| | BUNDLE_FULL = 0, |
| | BUNDLE_ONLY_MOTION = 1, |
| | BUNDLE_ONLY_STRUCTURE = 2, |
| | }; |
| |
|
| | private: |
| | ParallelBA* _optimizer; |
| |
|
| | public: |
| | |
| | |
| | PBA_EXPORT virtual void ParseParam(int narg, char** argv); |
| | PBA_EXPORT virtual ConfigBA* GetInternalConfig(); |
| | PBA_EXPORT virtual void SetFixedIntrinsics( |
| | bool fixed); |
| | PBA_EXPORT virtual void EnableRadialDistortion( |
| | DistortionT type); |
| | PBA_EXPORT virtual void SetNextTimeBudget( |
| | int seconds); |
| | PBA_EXPORT virtual void ReserveStorage(size_t ncam, size_t npt, size_t nproj); |
| |
|
| | public: |
| | |
| | inline void SetFocalLengthFixed(bool fixed) { SetFixedIntrinsics(fixed); } |
| | inline void ResetBundleStorage() { |
| | ReserveStorage(0, 0, 0); |
| | } |
| |
|
| | public: |
| | |
| | |
| | PBA_EXPORT virtual void SetCameraData(size_t ncam, |
| | CameraT* cams); |
| | PBA_EXPORT virtual void SetPointData(size_t npoint, |
| | Point3D* pts); |
| | PBA_EXPORT virtual void SetProjection(size_t nproj, const Point2D* imgpts, |
| | const int* point_idx, |
| | const int* cam_idx); |
| | PBA_EXPORT virtual void SetNextBundleMode( |
| | BundleModeT |
| | mode = BUNDLE_FULL); |
| | PBA_EXPORT virtual int RunBundleAdjustment(); |
| | |
| | |
| | public: |
| | |
| | |
| | |
| | |
| | PBA_EXPORT virtual float |
| | GetMeanSquaredError(); |
| | PBA_EXPORT virtual void |
| | AbortBundleAdjustment(); |
| | PBA_EXPORT virtual int |
| | GetCurrentIteration(); |
| | public: |
| | PBA_EXPORT ParallelBA(DeviceT device = PBA_CUDA_DEVICE_DEFAULT, |
| | const int num_threads = -1); |
| | |
| | PBA_EXPORT virtual ~ParallelBA(); |
| |
|
| | public: |
| | |
| | |
| | |
| | PBA_EXPORT virtual void SetFocalMask(const int* fmask, float weight = 1.0f); |
| | }; |
| |
|
| | |
| | PBA_EXPORT_EXTERN ParallelBA* NewParallelBA( |
| | ParallelBA::DeviceT device = ParallelBA::PBA_CUDA_DEVICE_DEFAULT); |
| | typedef ParallelBA* (*NEWPARALLELBAPROC)(ParallelBA::DeviceT); |
| |
|
| | |
| | |
| | PBA_EXPORT_EXTERN int ParallelBA_GetVersion(); |
| |
|
| | } |
| |
|
| | #endif |
| |
|