Declarations for sparse bundle adjustment related functions. More...
#include "general_resources.hpp"
#include "opencv_resources.hpp"
#include "ros_resources.hpp"
#include "reconstruction.hpp"
#include "keyframes.hpp"
#include "tracks.hpp"
#include <sba/sba.h>
#include <sba/visualization.h>
#include <time.h>
Go to the source code of this file.
Defines | |
#define | DEFAULT_MAX_DISPLACEMENT 0.3 |
Functions | |
void | addPointsToSBA (SysSBA &sba, vector< cv::Point3d > &cloud) |
void | addProjectionsToSBA (SysSBA &sba, vector< cv::Point2f > &loc, int idx) |
void | addProjectionToSBA (SysSBA &sba, cv::Point2f &loc, unsigned int trackNo, unsigned int camNo) |
double | adjustFullSystem (vector< featureTrack > &tracks, cameraParameters &camData, cv::Mat *cameras, unsigned int min_index, unsigned int max_index, unsigned int its=1) |
void | assignFullSystem (SysSBA &sba, vector< featureTrack > &tracks, cameraParameters &camData, cv::Mat *cameras, unsigned int start_index, unsigned int finish_index, bool dummy=false) |
void | assignPartialSystem (SysSBA &sba, vector< featureTrack > &tracks, cameraParameters &camData, cv::Mat *cameras, vector< unsigned int > &indices, bool assignProjections=true) |
void | assignSystem (SysSBA &sba, vector< featureTrack > &tracks, cameraParameters &camData, cv::Mat *cameras, vector< unsigned int > &camera_indices, vector< unsigned int > &track_indices) |
void | copySys (const SysSBA &src, SysSBA &dst) |
double | determineSystemSize (SysSBA &sys) |
Determines distance between farthest cameras. | |
double | distanceBetweenPoints (Eigen::Matrix< double, 4, 1 > &pt1, Eigen::Matrix< double, 4, 1 > &pt2) |
void | drawGraph2 (const SysSBA &sba, const ros::Publisher &camera_pub, const ros::Publisher &point_pub, const ros::Publisher &path_pub, int decimation=1, int bicolor=0, double scale=0.1) |
void | drawKeyframes (const ros::Publisher &camera_pub, const geometry_msgs::PoseStamped *keyframePoses, unsigned int keyframeCount) |
int | estimatePoseBetweenCameras (cameraParameters &camData, vector< cv::Point2f > &pts1, vector< cv::Point2f > &pts2, cv::Mat &C) |
void | extractCameras (const SysSBA &sba, visualization_msgs::MarkerArray &cameraArray, visualization_msgs::Marker &marker_path) |
void | extractPointCloud (const SysSBA &sba, pcl::PointCloud< pcl::PointXYZ > &point_cloud) |
void | findCentroid (SysSBA &sba, cv::Point3d ¢roid, cv::Point3d &stdDeviation) |
void | findIntermediatePoses (vector< featureTrack > &tracks, cameraParameters &camData, cv::Mat *cameras, unsigned int image_idx_1, unsigned int image_idx_2, bool fixBothEnds=true) |
void | findRelevantIndices (vector< featureTrack > &tracks, vector< unsigned int > &triangulated, vector< unsigned int > &untriangulated, unsigned int last_index, unsigned int new_index) |
void | finishTracks (vector< featureTrack > &tracks, vector< cv::Point2f > &pts, double retainProp=0.80, unsigned int maxOccurrences=0) |
void | getActiveCameras (cv::Mat *C, vector< unsigned int > &indices, unsigned int min_index, unsigned int max_index) |
void | getActiveTracks (vector< featureTrack > &tracks, vector< unsigned int > &cameras, vector< unsigned int > &indices) |
double | getFeatureMotion (vector< featureTrack > &tracks, vector< unsigned int > &indices, unsigned int idx_1, unsigned int idx_2) |
void | initializeFrameCamera (frame_common::CamParams &cam_params, const cv::Mat &newCamMat, int &maxx, int &maxy, const cv::Size &cameraSize) |
double | keyframeBundleAdjustment (cameraParameters &camData, vector< featureTrack > &tracks, cv::Mat *cameras, vector< unsigned int > &indices, unsigned int iterations=100, bool allFree=false, bool allFixedExceptLast=false, unsigned fixed_cams=0) |
double | keyframeBundleAdjustment (cameraParameters &camData, vector< featureTrack > &tracks, keyframeStore &kf_store, cv::Mat *cameras, unsigned int kfIndex, unsigned int iterations=100) |
void | normalizeSystem (SysSBA &sys, double factor=1.0) |
Scales up system size. | |
double | odometryBundleAdjustment (cameraParameters &camData, vector< featureTrack > &tracks, geometry_msgs::PoseStamped *keyframePoses, unsigned int keyframeCount, unsigned int iterations=100, bool debug=false) |
void | optimizeFullSystem (vector< featureTrack > &tracks, cameraParameters &camData, cv::Mat *cameras, unsigned int last_index) |
double | optimizeKeyframePair (vector< featureTrack > &tracks, cameraParameters &camData, int idx1, int idx2, cv::Mat *cameras) |
double | optimizeSubsystem (cameraParameters &camData, cv::Mat *C, vector< unsigned int > &c_i, vector< featureTrack > &tracks, vector< unsigned int > &t_i, unsigned int iterations=100) |
double | optimizeSystem (SysSBA &sba, double err=1e-3, int iterations=100, bool debug=false, int mode=SBA_SPARSE_CHOLESKY) |
* | |
bool | overwritePoints (const SysSBA &sys, const vector< int > &track_indices, vector< featureTrack > &tracks, double maxDisplacement=DEFAULT_MAX_DISPLACEMENT, double *averagePointShift=0, bool debug=false) |
double | predictiveBundleAdjustment (cameraParameters &camData, vector< featureTrack > &tracks, geometry_msgs::PoseStamped *keyframePoses, bool *keyframeTypes, unsigned int keyframeCount, geometry_msgs::PoseStamped &newPose, unsigned int iterations=100, bool debug=false, int mode=SBA_SPARSE_CHOLESKY, double err=1e-3, int *triangulations=0, double *averagePointShift=0) |
bool | reconstructFreshSubsequencePair (vector< featureTrack > &tracks, vector< cv::Point3d > &ptCloud, vector< unsigned int > &triangulatedIndices, cv::Mat &real_C0, cv::Mat &real_C1, cameraParameters camData, int idx1, int idx2) |
void | removePoorTracks (vector< featureTrack > &tracks, cameraParameters &camData, cv::Mat *cameras, unsigned int start_cam, unsigned int finish_cam) |
void | renormalizeSBA (SysSBA &sba, cv::Point3d &desiredCenter) |
void | rescaleSBA (SysSBA &sba, unsigned int idx1, unsigned int idx2) |
void | retrieveFullSystem (SysSBA &sys, cv::Mat *C, vector< featureTrack > &tracks, unsigned int start_cam, unsigned int final_cam) |
void | retrievePartialSystem (SysSBA &sys, cv::Mat *C, vector< featureTrack > &tracks, vector< unsigned int > &indices) |
void | retrieveSystem (SysSBA &sba, vector< featureTrack > &tracks, cameraParameters &camData, cv::Mat *cameras, vector< unsigned int > &camera_indices, vector< unsigned int > &track_indices) |
void | subselectPoints (const vector< cv::Point2f > &src1, vector< cv::Point2f > &dst1, const vector< cv::Point2f > &src2, vector< cv::Point2f > &dst2) |
double | testKeyframePair (vector< featureTrack > &tracks, cameraParameters &camData, double *scorecard[], int idx1, int idx2, double *scores, cv::Mat &pose, bool evaluate=false, bool debug=false) |
double | twoViewBundleAdjustment (cameraParameters cam_data, cv::Mat &cam1, cv::Mat &cam2, vector< cv::Point3d > &cloud, vector< cv::Point2f > &pts1, vector< cv::Point2f > &pts2, int iterations=10) |
Declarations for sparse bundle adjustment related functions.
Definition in file sba.hpp.
#define DEFAULT_MAX_DISPLACEMENT 0.3 |
void addPointsToSBA | ( | SysSBA & | sba, |
vector< cv::Point3d > & | cloud | ||
) |
void addProjectionsToSBA | ( | SysSBA & | sba, |
vector< cv::Point2f > & | loc, | ||
int | idx | ||
) |
void addProjectionToSBA | ( | SysSBA & | sba, |
cv::Point2f & | loc, | ||
unsigned int | trackNo, | ||
unsigned int | camNo | ||
) |
double adjustFullSystem | ( | vector< featureTrack > & | tracks, |
cameraParameters & | camData, | ||
cv::Mat * | cameras, | ||
unsigned int | min_index, | ||
unsigned int | max_index, | ||
unsigned int | its = 1 |
||
) |
void assignFullSystem | ( | SysSBA & | sba, |
vector< featureTrack > & | tracks, | ||
cameraParameters & | camData, | ||
cv::Mat * | cameras, | ||
unsigned int | start_index, | ||
unsigned int | finish_index, | ||
bool | dummy = false |
||
) |
void assignPartialSystem | ( | SysSBA & | sba, |
vector< featureTrack > & | tracks, | ||
cameraParameters & | camData, | ||
cv::Mat * | cameras, | ||
vector< unsigned int > & | indices, | ||
bool | assignProjections = true |
||
) |
void assignSystem | ( | SysSBA & | sba, |
vector< featureTrack > & | tracks, | ||
cameraParameters & | camData, | ||
cv::Mat * | cameras, | ||
vector< unsigned int > & | camera_indices, | ||
vector< unsigned int > & | track_indices | ||
) |
double determineSystemSize | ( | SysSBA & | sys | ) |
double distanceBetweenPoints | ( | Eigen::Matrix< double, 4, 1 > & | pt1, |
Eigen::Matrix< double, 4, 1 > & | pt2 | ||
) |
void drawGraph2 | ( | const SysSBA & | sba, |
const ros::Publisher & | camera_pub, | ||
const ros::Publisher & | point_pub, | ||
const ros::Publisher & | path_pub, | ||
int | decimation = 1 , |
||
int | bicolor = 0 , |
||
double | scale = 0.1 |
||
) |
void drawKeyframes | ( | const ros::Publisher & | camera_pub, |
const geometry_msgs::PoseStamped * | keyframePoses, | ||
unsigned int | keyframeCount | ||
) |
int estimatePoseBetweenCameras | ( | cameraParameters & | camData, |
vector< cv::Point2f > & | pts1, | ||
vector< cv::Point2f > & | pts2, | ||
cv::Mat & | C | ||
) |
void extractCameras | ( | const SysSBA & | sba, |
visualization_msgs::MarkerArray & | cameraArray, | ||
visualization_msgs::Marker & | marker_path | ||
) |
void extractPointCloud | ( | const SysSBA & | sba, |
pcl::PointCloud< pcl::PointXYZ > & | point_cloud | ||
) |
void findCentroid | ( | SysSBA & | sba, |
cv::Point3d & | centroid, | ||
cv::Point3d & | stdDeviation | ||
) |
void findIntermediatePoses | ( | vector< featureTrack > & | tracks, |
cameraParameters & | camData, | ||
cv::Mat * | cameras, | ||
unsigned int | image_idx_1, | ||
unsigned int | image_idx_2, | ||
bool | fixBothEnds = true |
||
) |
void findRelevantIndices | ( | vector< featureTrack > & | tracks, |
vector< unsigned int > & | triangulated, | ||
vector< unsigned int > & | untriangulated, | ||
unsigned int | last_index, | ||
unsigned int | new_index | ||
) |
void finishTracks | ( | vector< featureTrack > & | tracks, |
vector< cv::Point2f > & | pts, | ||
double | retainProp = 0.80 , |
||
unsigned int | maxOccurrences = 0 |
||
) |
void getActiveCameras | ( | cv::Mat * | C, |
vector< unsigned int > & | indices, | ||
unsigned int | min_index, | ||
unsigned int | max_index | ||
) |
void getActiveTracks | ( | vector< featureTrack > & | tracks, |
vector< unsigned int > & | cameras, | ||
vector< unsigned int > & | indices | ||
) |
double getFeatureMotion | ( | vector< featureTrack > & | tracks, |
vector< unsigned int > & | indices, | ||
unsigned int | idx_1, | ||
unsigned int | idx_2 | ||
) |
void initializeFrameCamera | ( | frame_common::CamParams & | cam_params, |
const cv::Mat & | newCamMat, | ||
int & | maxx, | ||
int & | maxy, | ||
const cv::Size & | cameraSize | ||
) |
double keyframeBundleAdjustment | ( | cameraParameters & | camData, |
vector< featureTrack > & | tracks, | ||
cv::Mat * | cameras, | ||
vector< unsigned int > & | indices, | ||
unsigned int | iterations = 100 , |
||
bool | allFree = false , |
||
bool | allFixedExceptLast = false , |
||
unsigned | fixed_cams = 0 |
||
) |
double keyframeBundleAdjustment | ( | cameraParameters & | camData, |
vector< featureTrack > & | tracks, | ||
keyframeStore & | kf_store, | ||
cv::Mat * | cameras, | ||
unsigned int | kfIndex, | ||
unsigned int | iterations = 100 |
||
) |
void normalizeSystem | ( | SysSBA & | sys, |
double | factor = 1.0 |
||
) |
double odometryBundleAdjustment | ( | cameraParameters & | camData, |
vector< featureTrack > & | tracks, | ||
geometry_msgs::PoseStamped * | keyframePoses, | ||
unsigned int | keyframeCount, | ||
unsigned int | iterations = 100 , |
||
bool | debug = false |
||
) |
void optimizeFullSystem | ( | vector< featureTrack > & | tracks, |
cameraParameters & | camData, | ||
cv::Mat * | cameras, | ||
unsigned int | last_index | ||
) |
double optimizeKeyframePair | ( | vector< featureTrack > & | tracks, |
cameraParameters & | camData, | ||
int | idx1, | ||
int | idx2, | ||
cv::Mat * | cameras | ||
) |
double optimizeSubsystem | ( | cameraParameters & | camData, |
cv::Mat * | C, | ||
vector< unsigned int > & | c_i, | ||
vector< featureTrack > & | tracks, | ||
vector< unsigned int > & | t_i, | ||
unsigned int | iterations = 100 |
||
) |
double optimizeSystem | ( | SysSBA & | sba, |
double | err, | ||
int | iterations, | ||
bool | debug, | ||
int | mode | ||
) |
bool overwritePoints | ( | const SysSBA & | sys, |
const vector< int > & | track_indices, | ||
vector< featureTrack > & | tracks, | ||
double | maxDisplacement = DEFAULT_MAX_DISPLACEMENT , |
||
double * | averagePointShift = 0 , |
||
bool | debug = false |
||
) |
double predictiveBundleAdjustment | ( | cameraParameters & | camData, |
vector< featureTrack > & | tracks, | ||
geometry_msgs::PoseStamped * | keyframePoses, | ||
bool * | keyframeTypes, | ||
unsigned int | keyframeCount, | ||
geometry_msgs::PoseStamped & | newPose, | ||
unsigned int | iterations = 100 , |
||
bool | debug = false , |
||
int | mode = SBA_SPARSE_CHOLESKY , |
||
double | err = 1e-3 , |
||
int * | triangulations = 0 , |
||
double * | averagePointShift = 0 |
||
) |
bool reconstructFreshSubsequencePair | ( | vector< featureTrack > & | tracks, |
vector< cv::Point3d > & | ptCloud, | ||
vector< unsigned int > & | triangulatedIndices, | ||
cv::Mat & | real_C0, | ||
cv::Mat & | real_C1, | ||
cameraParameters | camData, | ||
int | idx1, | ||
int | idx2 | ||
) |
void removePoorTracks | ( | vector< featureTrack > & | tracks, |
cameraParameters & | camData, | ||
cv::Mat * | cameras, | ||
unsigned int | start_cam, | ||
unsigned int | finish_cam | ||
) |
void renormalizeSBA | ( | SysSBA & | sba, |
cv::Point3d & | desiredCenter | ||
) |
void rescaleSBA | ( | SysSBA & | sba, |
unsigned int | idx1, | ||
unsigned int | idx2 | ||
) |
void retrieveFullSystem | ( | SysSBA & | sys, |
cv::Mat * | C, | ||
vector< featureTrack > & | tracks, | ||
unsigned int | start_cam, | ||
unsigned int | final_cam | ||
) |
void retrievePartialSystem | ( | SysSBA & | sys, |
cv::Mat * | C, | ||
vector< featureTrack > & | tracks, | ||
vector< unsigned int > & | indices | ||
) |
void retrieveSystem | ( | SysSBA & | sba, |
vector< featureTrack > & | tracks, | ||
cameraParameters & | camData, | ||
cv::Mat * | cameras, | ||
vector< unsigned int > & | camera_indices, | ||
vector< unsigned int > & | track_indices | ||
) |
void subselectPoints | ( | const vector< cv::Point2f > & | src1, |
vector< cv::Point2f > & | dst1, | ||
const vector< cv::Point2f > & | src2, | ||
vector< cv::Point2f > & | dst2 | ||
) |
double testKeyframePair | ( | vector< featureTrack > & | tracks, |
cameraParameters & | camData, | ||
double * | scorecard[], | ||
int | idx1, | ||
int | idx2, | ||
double * | scores, | ||
cv::Mat & | pose, | ||
bool | evaluate = false , |
||
bool | debug = false |
||
) |
double twoViewBundleAdjustment | ( | cameraParameters | cam_data, |
cv::Mat & | cam1, | ||
cv::Mat & | cam2, | ||
vector< cv::Point3d > & | cloud, | ||
vector< cv::Point2f > & | pts1, | ||
vector< cv::Point2f > & | pts2, | ||
int | iterations = 10 |
||
) |