minor comments change

release/4.3a0
akrishnan86 2020-07-20 23:45:45 -07:00
parent c1c8b0a1a3
commit 0eec6fbeec
3 changed files with 14 additions and 11 deletions

View File

@ -120,7 +120,7 @@ std::map<KeyPair, double> MFAS::computeOutlierWeights() {
for (auto it = start; it != end; it++) { for (auto it = start; it != end; it++) {
// relativeTranslations may have negative weight edges, we make sure all edges // relativeTranslations may have negative weight edges, we make sure all edges
// are along the postive direction by flipping them if they are not. // are along the positive direction by flipping them if they are not.
KeyPair edge = it->first; KeyPair edge = it->first;
if (positiveEdgeWeights_.find(edge) == positiveEdgeWeights_.end()) { if (positiveEdgeWeights_.find(edge) == positiveEdgeWeights_.end()) {
std::swap(edge.first, edge.second); std::swap(edge.first, edge.second);

View File

@ -25,7 +25,7 @@ namespace gtsam {
using KeyPair = std::pair<Key, Key>; using KeyPair = std::pair<Key, Key>;
using TranslationEdges = std::map<KeyPair, Unit3>; using TranslationEdges = std::map<KeyPair, Unit3>;
/* /**
The MFAS class to solve a Minimum feedback arc set (MFAS) The MFAS class to solve a Minimum feedback arc set (MFAS)
problem. We implement the solution from: problem. We implement the solution from:
Kyle Wilson and Noah Snavely, "Robust Global Translations with 1DSfM", Kyle Wilson and Noah Snavely, "Robust Global Translations with 1DSfM",
@ -34,12 +34,13 @@ using TranslationEdges = std::map<KeyPair, Unit3>;
Given a weighted directed graph, the objective in a Minimum feedback arc set Given a weighted directed graph, the objective in a Minimum feedback arc set
problem is to obtain a graph that does not contain any cycles by removing problem is to obtain a graph that does not contain any cycles by removing
edges such that the total weight of removed edges is minimum. edges such that the total weight of removed edges is minimum.
@addtogroup SFM
*/ */
class MFAS { class MFAS {
public: public:
/* /**
* @brief Construct from the nodes in a graph (points in 3D), edges * @brief Construct from the nodes in a graph (points in 3D), edges
* that are transation directions in 3D and the direction in * that are translation directions in 3D and the direction in
* which edges are to be projected. * which edges are to be projected.
* @param nodes Nodes in the graph * @param nodes Nodes in the graph
* @param relativeTranslations translation directions between nodes * @param relativeTranslations translation directions between nodes
@ -49,8 +50,8 @@ class MFAS {
const std::shared_ptr<TranslationEdges> &relativeTranslations, const std::shared_ptr<TranslationEdges> &relativeTranslations,
const Unit3 &projectionDirection); const Unit3 &projectionDirection);
/* /**
* Construct from the nodes in a graph and weighted directed edges * @brief Construct from the nodes in a graph and weighted directed edges
* between the graph. Not recommended for any purpose other than unit testing. * between the graph. Not recommended for any purpose other than unit testing.
* The computeOutlierWeights method will return an empty output if this constructor * The computeOutlierWeights method will return an empty output if this constructor
* is used. * is used.
@ -62,7 +63,7 @@ class MFAS {
MFAS(const std::shared_ptr<std::vector<Key>> &nodes, MFAS(const std::shared_ptr<std::vector<Key>> &nodes,
const std::map<KeyPair, double> &edgeWeights); const std::map<KeyPair, double> &edgeWeights);
/* /**
* @brief Computes the "outlier weights" of the graph. We define the outlier weight * @brief Computes the "outlier weights" of the graph. We define the outlier weight
* of a edge to be zero if the edge in an inlier and the magnitude of its edgeWeight * of a edge to be zero if the edge in an inlier and the magnitude of its edgeWeight
* if it is an outlier. This function can only be used when constructing the * if it is an outlier. This function can only be used when constructing the
@ -70,8 +71,8 @@ class MFAS {
*/ */
std::map<KeyPair, double> computeOutlierWeights(); std::map<KeyPair, double> computeOutlierWeights();
/* /**
* Computes the 1D MFAS ordering of nodes in the graph * @brief Computes the 1D MFAS ordering of nodes in the graph
* @return orderedNodes: vector of nodes in the obtained order * @return orderedNodes: vector of nodes in the obtained order
*/ */
std::vector<Key> computeOrdering(); std::vector<Key> computeOrdering();

View File

@ -5,12 +5,14 @@
using namespace std; using namespace std;
using namespace gtsam; using namespace gtsam;
/* We (partially) use the example from the paper on 1dsfm /**
* We (partially) use the example from the paper on 1dsfm
* (https://research.cs.cornell.edu/1dsfm/docs/1DSfM_ECCV14.pdf, Fig 1, Page 5) * (https://research.cs.cornell.edu/1dsfm/docs/1DSfM_ECCV14.pdf, Fig 1, Page 5)
* for the unit tests here. The only change is that we leave out node 4 and use * for the unit tests here. The only change is that we leave out node 4 and use
* only nodes 0-3. This makes the test easier to understand and also * only nodes 0-3. This makes the test easier to understand and also
* avoids an ambiguity in the ground truth ordering that arises due to * avoids an ambiguity in the ground truth ordering that arises due to
* insufficient edges in the geaph when using the 4th node. */ * insufficient edges in the geaph when using the 4th node.
*/
// edges in the graph - last edge from node 3 to 0 is an outlier // edges in the graph - last edge from node 3 to 0 is an outlier
vector<KeyPair> graph = {make_pair(3, 2), make_pair(0, 1), make_pair(3, 1), vector<KeyPair> graph = {make_pair(3, 2), make_pair(0, 1), make_pair(3, 1),