[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