[Bf-blender-cvs] [b2aec13] soc-2016-multiview: debugging in progress

Tianwei Shen noreply at git.blender.org
Tue Jun 28 18:37:08 CEST 2016


Commit: b2aec13185b290915ffb6b3fd9ec3a037f9e1862
Author: Tianwei Shen
Date:   Wed Jun 29 00:36:55 2016 +0800
Branches: soc-2016-multiview
https://developer.blender.org/rBb2aec13185b290915ffb6b3fd9ec3a037f9e1862

debugging in progress

===================================================================

M	intern/libmv/intern/reconstructionN.cc
M	intern/libmv/libmv/autotrack/intersect.cc
M	intern/libmv/libmv/autotrack/reconstruction.cc
M	intern/libmv/libmv/autotrack/reconstruction.h
M	source/blender/blenkernel/intern/tracking_correspondence.c

===================================================================

diff --git a/intern/libmv/intern/reconstructionN.cc b/intern/libmv/intern/reconstructionN.cc
index b40c89f..ef19d8a 100644
--- a/intern/libmv/intern/reconstructionN.cc
+++ b/intern/libmv/intern/reconstructionN.cc
@@ -238,6 +238,9 @@ libmv_ReconstructionN** libmv_solveMultiviewReconstruction(
 		all_libmv_reconstruction[0]->is_valid = false;
 		return all_libmv_reconstruction;
 	}
+	std::cout << "[libmv_solveMultiviewReconstruction] reconstruct "
+	          <<  reconstruction.GetReconstructedCameraNum()
+	          << " cameras after ReconstructTwoFrames" << std::endl;
 	// bundle the two-view initial reconstruction
 	// (it is redundant for now since now 3d point is added at this stage)
 	//if(!mv::EuclideanBundleAll(all_normalized_tracks, &reconstruction)) {
@@ -252,7 +255,7 @@ libmv_ReconstructionN** libmv_solveMultiviewReconstruction(
 	}
 
 	/* Refinement/ */
-	// TODO(Tianwei): current api allows only one camera intrinsics
+	//TODO(Tianwei): current api allows only one camera intrinsics
 	if (libmv_reconstruction_options->all_refine_intrinsics[0]) {
 		libmv_solveRefineIntrinsics(
 		            all_normalized_tracks,
@@ -264,7 +267,7 @@ libmv_ReconstructionN** libmv_solveMultiviewReconstruction(
 		            all_libmv_reconstruction[0]->intrinsics);
 	}
 
-	/* Set reconstruction scale to unity. */
+	///* Set reconstruction scale to unity. */
 	mv::EuclideanScaleToUnity(&reconstruction);
 
 	/* Finish reconstruction. */
diff --git a/intern/libmv/libmv/autotrack/intersect.cc b/intern/libmv/libmv/autotrack/intersect.cc
index cc8ee89..614eec9 100644
--- a/intern/libmv/libmv/autotrack/intersect.cc
+++ b/intern/libmv/libmv/autotrack/intersect.cc
@@ -91,7 +91,6 @@ bool EuclideanIntersect(const vector<Marker> &markers,
     libmv::P_From_KRt(K, camera->R, camera->t, &P);
     cameras.push_back(P);
   }
-  std::cout << "[Intersect] camera size: " << cameras.size() << std::endl;
 
   // Stack the 2D coordinates together as required by NViewTriangulate.
   Mat2X points(2, markers.size());
diff --git a/intern/libmv/libmv/autotrack/reconstruction.cc b/intern/libmv/libmv/autotrack/reconstruction.cc
index 4827aa8..e077cb1 100644
--- a/intern/libmv/libmv/autotrack/reconstruction.cc
+++ b/intern/libmv/libmv/autotrack/reconstruction.cc
@@ -115,7 +115,7 @@ bool ReconstructTwoFrames(const vector<Marker> &markers,
 	reconstruction->AddCameraPose(pose1);
 	reconstruction->AddCameraPose(pose2);
 
-	std::cout << "From two frame reconstruction got:\nR:\n" << R << "\nt:" << t.transpose();
+	LG << "From two frame reconstruction got:\nR:\n" << R << "\nt:" << t.transpose();
 	return true;
 }
 
@@ -168,6 +168,8 @@ const CameraPose* Reconstruction::CameraPoseForFrame(int clip, int frame) const
 		return NULL;
 	if (camera_poses_[clip].size() <= frame)
 		return NULL;
+	if (camera_poses_[clip][frame].clip == -1)	// this CameraPose is uninitilized
+		return NULL;
 	return (const CameraPose*) &(camera_poses_[clip][frame]);
 }
 
@@ -203,4 +205,15 @@ const vector<Point>& Reconstruction::AllPoints() const {
 	return points_;
 }
 
+int Reconstruction::GetReconstructedCameraNum() const {
+	int reconstructed_num = 0;
+	for(int i = 0; i < camera_poses_.size(); i++) {
+		for(int j = 0; j < camera_poses_[i].size(); j++) {
+			if(camera_poses_[i][j].clip != -1 && camera_poses_[i][j].frame != -1)
+				reconstructed_num++;
+		}
+	}
+	return reconstructed_num;
+}
+
 }  // namespace mv
diff --git a/intern/libmv/libmv/autotrack/reconstruction.h b/intern/libmv/libmv/autotrack/reconstruction.h
index 774d2bd..af04871 100644
--- a/intern/libmv/libmv/autotrack/reconstruction.h
+++ b/intern/libmv/libmv/autotrack/reconstruction.h
@@ -83,6 +83,7 @@ public:
 
 	int GetClipNum() const;
 	int GetAllPoseNum() const;
+	int GetReconstructedCameraNum() const;
 
 private:
 	// Indexed by CameraPose::intrinsics. Owns the intrinsics objects.
diff --git a/source/blender/blenkernel/intern/tracking_correspondence.c b/source/blender/blenkernel/intern/tracking_correspondence.c
index 4d67f42..a3cd8a3 100644
--- a/source/blender/blenkernel/intern/tracking_correspondence.c
+++ b/source/blender/blenkernel/intern/tracking_correspondence.c
@@ -175,6 +175,7 @@ static struct libmv_TracksN *libmv_multiview_tracks_new(MovieClip *clip, int cli
 				        ((track->flag & TRACK_DISABLE_GREEN) ? LIBMV_MARKER_CHANNEL_G : 0) |
 				        ((track->flag & TRACK_DISABLE_BLUE)  ? LIBMV_MARKER_CHANNEL_B : 0);
 
+				printf("add makers %d, %d, %d\n", clip_id, marker->framenr, global_track_index[tracknr]);
 				libmv_tracksAddMarkerN(tracks, &libmv_marker);
 			}
 		}
@@ -241,7 +242,6 @@ static int libmv_CorrespondencesFromTracking(ListBase *tracking_correspondences,
 			libmv_AddCorrespondenceN(libmv_correspondences, clip1, clip2, track1, track2);
 			num_valid_corrs++;
 		}
-		printf("%s %d %d %d %d\n", corr->name, clip1, clip2, track1, track2);
 		// change the global index of clip2-track2 to clip1-track1
 		global_track_index[clip2][track2] = global_track_index[clip1][track1];
 		corr = corr->next;




More information about the Bf-blender-cvs mailing list