Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-12-20 15:03:39 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-12-20 15:03:39 +0400
commit0d7e4f3229f9a61a236de484db1a9a91039353b1 (patch)
tree978a6ceac1d756b8cb557b470a7e39b6d6bd552b /extern/libmv/libmv
parent2f3d2483c3e8cfc615cf75395bd686ba09ecef0f (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.cc4
-rw-r--r--extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc16
-rw-r--r--extern/libmv/libmv/simple_pipeline/tracks.cc26
-rw-r--r--extern/libmv/libmv/simple_pipeline/tracks.h8
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_