diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-12-20 15:03:39 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-12-20 15:03:39 +0400 |
commit | 0d7e4f3229f9a61a236de484db1a9a91039353b1 (patch) | |
tree | 978a6ceac1d756b8cb557b470a7e39b6d6bd552b /extern/libmv/libmv | |
parent | 2f3d2483c3e8cfc615cf75395bd686ba09ecef0f (diff) |
Camera tracking: synchronize changes with own branch
Should be no functional changes.
Diffstat (limited to 'extern/libmv/libmv')
-rw-r--r-- | extern/libmv/libmv/multiview/fundamental.cc | 4 | ||||
-rw-r--r-- | extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc | 16 | ||||
-rw-r--r-- | extern/libmv/libmv/simple_pipeline/tracks.cc | 26 | ||||
-rw-r--r-- | extern/libmv/libmv/simple_pipeline/tracks.h | 8 |
4 files changed, 36 insertions, 18 deletions
diff --git a/extern/libmv/libmv/multiview/fundamental.cc b/extern/libmv/libmv/multiview/fundamental.cc index 80f155e804d..12a611c748f 100644 --- a/extern/libmv/libmv/multiview/fundamental.cc +++ b/extern/libmv/libmv/multiview/fundamental.cc @@ -254,8 +254,8 @@ double SymmetricEpipolarDistance(const Mat &F, const Vec2 &x1, const Vec2 &x2) { Vec3 Ft_y = F.transpose() * y; double y_F_x = y.dot(F_x); - return Square(y_F_x) * ( 1 / F_x.head<2>().squaredNorm() - + 1 / Ft_y.head<2>().squaredNorm()); + return y_F_x * ( 1 / F_x.head<2>().norm() + + 1 / Ft_y.head<2>().norm()); } // HZ 9.6 pag 257 (formula 9.12) diff --git a/extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc b/extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc index 9c06d1ef4e6..84d143b77d6 100644 --- a/extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc +++ b/extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc @@ -31,22 +31,6 @@ namespace libmv { namespace { -void CoordinatesForMarkersInImage(const vector<Marker> &markers, - int image, - Mat *coordinates) { - vector<Vec2> coords; - for (int i = 0; i < markers.size(); ++i) { - const Marker &marker = markers[i]; - if (markers[i].image == image) { - coords.push_back(Vec2(marker.x, marker.y)); - } - } - coordinates->resize(2, coords.size()); - for (int i = 0; i < coords.size(); i++) { - coordinates->col(i) = coords[i]; - } -} - void GetImagesInMarkers(const vector<Marker> &markers, int *image1, int *image2) { if (markers.size() < 2) { diff --git a/extern/libmv/libmv/simple_pipeline/tracks.cc b/extern/libmv/libmv/simple_pipeline/tracks.cc index 3fb8ddbe513..620f6fc880a 100644 --- a/extern/libmv/libmv/simple_pipeline/tracks.cc +++ b/extern/libmv/libmv/simple_pipeline/tracks.cc @@ -72,6 +72,16 @@ vector<Marker> Tracks::MarkersForTrack(int track) const { return markers; } +vector<Marker> Tracks::MarkersInBothImages(int image1, int image2) const { + vector<Marker> markers; + for (int i = 0; i < markers_.size(); ++i) { + int image = markers_[i].image; + if (image == image1 || image == image2) + markers.push_back(markers_[i]); + } + return markers; +} + vector<Marker> Tracks::MarkersForTracksInBothImages(int image1, int image2) const { std::vector<int> image1_tracks; std::vector<int> image2_tracks; @@ -156,4 +166,20 @@ int Tracks::NumMarkers() const { return markers_.size(); } +void CoordinatesForMarkersInImage(const vector<Marker> &markers, + int image, + Mat *coordinates) { + vector<Vec2> coords; + for (int i = 0; i < markers.size(); ++i) { + const Marker &marker = markers[i]; + if (markers[i].image == image) { + coords.push_back(Vec2(marker.x, marker.y)); + } + } + coordinates->resize(2, coords.size()); + for (int i = 0; i < coords.size(); i++) { + coordinates->col(i) = coords[i]; + } +} + } // namespace libmv diff --git a/extern/libmv/libmv/simple_pipeline/tracks.h b/extern/libmv/libmv/simple_pipeline/tracks.h index aa0fbaa6e4c..f9af3ada45b 100644 --- a/extern/libmv/libmv/simple_pipeline/tracks.h +++ b/extern/libmv/libmv/simple_pipeline/tracks.h @@ -22,6 +22,7 @@ #define LIBMV_SIMPLE_PIPELINE_TRACKS_H_ #include "libmv/base/vector.h" +#include "libmv/numeric/numeric.h" namespace libmv { @@ -84,6 +85,9 @@ class Tracks { /// Returns all the markers visible in \a image. vector<Marker> MarkersInImage(int image) const; + /// Returns all the markers visible in \a image1 and \a image2. + vector<Marker> MarkersInBothImages(int image1, int image2) const; + /*! Returns the markers in \a image1 and \a image2 which have a common track. @@ -114,6 +118,10 @@ class Tracks { vector<Marker> markers_; }; +void CoordinatesForMarkersInImage(const vector<Marker> &markers, + int image, + Mat *coordinates); + } // namespace libmv #endif // LIBMV_SIMPLE_PIPELINE_MARKERS_H_ |