[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60134] branches/soc-2013-motion_track/ extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc: Multicamera-ify reconstruction initialization

Joseph Mansfield sftrabbit at gmail.com
Sat Sep 14 10:46:38 CEST 2013


Revision: 60134
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60134
Author:   sftrabbit
Date:     2013-09-14 08:46:37 +0000 (Sat, 14 Sep 2013)
Log Message:
-----------
Multicamera-ify reconstruction initialization

Initialization can now reconstruct from two images regardless of the source camera.

Modified Paths:
--------------
    branches/soc-2013-motion_track/extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc

Modified: branches/soc-2013-motion_track/extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc
===================================================================
--- branches/soc-2013-motion_track/extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc	2013-09-14 03:41:11 UTC (rev 60133)
+++ branches/soc-2013-motion_track/extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc	2013-09-14 08:46:37 UTC (rev 60134)
@@ -32,15 +32,18 @@
 namespace libmv {
 namespace {
 
-void GetImagesInMarkers(const vector<Marker> &markers,
-                        int *image1, int *image2) {
+void GetImagesAndCamerasInMarkers(const vector<Marker> &markers,
+                                  int *image1, int *image2,
+                                  int *camera1, int *camera2) {
   if (markers.size() < 2) {
     return;
   }
   *image1 = markers[0].image;
+  *camera1 = markers[0].camera;
   for (int i = 1; i < markers.size(); ++i) {
     if (markers[i].image != *image1) {
       *image2 = markers[i].image;
+      *camera2 = markers[i].camera;
       return;
     }
   }
@@ -57,10 +60,9 @@
     return false;
   }
 
-  int camera = markers[0].camera;
-
   int image1, image2;
-  GetImagesInMarkers(markers, &image1, &image2);
+  int camera1, camera2;
+  GetImagesAndCamerasInMarkers(markers, &image1, &image2, &camera1, &camera2);
 
   Mat x1, x2;
   CoordinatesForMarkersInImage(markers, image1, &x1);
@@ -87,8 +89,8 @@
   }
 
   // Image 1 gets the reference frame, image 2 gets the relative motion.
-  reconstruction->InsertView(image1, Mat3::Identity(), Vec3::Zero(), camera);
-  reconstruction->InsertView(image2, R, t, camera);
+  reconstruction->InsertView(image1, Mat3::Identity(), Vec3::Zero(), camera1);
+  reconstruction->InsertView(image2, R, t, camera2);
 
   LG << "From two frame reconstruction got:\nR:\n" << R
      << "\nt:" << t.transpose();
@@ -148,7 +150,8 @@
   }
 
   int image1, image2;
-  GetImagesInMarkers(markers, &image1, &image2);
+  int camera1, camera2;
+  GetImagesAndCamerasInMarkers(markers, &image1, &image2, &camera1, &camera2);
 
   Mat x1, x2;
   CoordinatesForMarkersInImage(markers, image1, &x1);
@@ -188,8 +191,8 @@
   Mat34 P2;
   ProjectionsFromFundamental(F, &P1, &P2);
 
-  reconstruction->InsertView(image1, P1, 0);
-  reconstruction->InsertView(image2, P2, 0);
+  reconstruction->InsertView(image1, P1, camera1);
+  reconstruction->InsertView(image2, P2, camera2);
 
   LG << "From two frame reconstruction got P2:\n" << P2;
   return true;




More information about the Bf-blender-cvs mailing list