[Bf-blender-cvs] [b7a4225] soc-2016-multiview: temporary commit
Tianwei Shen
noreply at git.blender.org
Tue Jun 28 05:33:27 CEST 2016
Commit: b7a42255fb682f8429a648e3696331faed618654
Author: Tianwei Shen
Date: Thu Jun 23 17:15:49 2016 +0800
Branches: soc-2016-multiview
https://developer.blender.org/rBb7a42255fb682f8429a648e3696331faed618654
temporary commit
===================================================================
M intern/libmv/libmv/autotrack/pipeline.cc
===================================================================
diff --git a/intern/libmv/libmv/autotrack/pipeline.cc b/intern/libmv/libmv/autotrack/pipeline.cc
index acadf5d..914dfaf 100644
--- a/intern/libmv/libmv/autotrack/pipeline.cc
+++ b/intern/libmv/libmv/autotrack/pipeline.cc
@@ -108,128 +108,142 @@ bool InternalCompleteReconstruction(
const Tracks &tracks,
typename PipelineRoutines::Reconstruction *reconstruction,
libmv::ProgressUpdateCallback *update_callback = NULL) {
-// int max_track = tracks.MaxTrack();
-// int max_image = tracks.MaxImage();
-// int num_resects = -1;
-// int num_intersects = -1;
-// int tot_resects = 0;
-// LG << "Max track: " << max_track;
-// LG << "Max image: " << max_image;
-// LG << "Number of markers: " << tracks.NumMarkers();
-// while (num_resects != 0 || num_intersects != 0) {
-// // Do all possible intersections.
-// num_intersects = 0;
-// for (int track = 0; track <= max_track; ++track) {
-// if (reconstruction->PointForTrack(track)) {
-// LG << "Skipping point: " << track;
-// continue;
-// }
-// vector<Marker> all_markers = tracks.MarkersForTrack(track);
-// LG << "Got " << all_markers.size() << " markers for track " << track;
-//
-// vector<Marker> reconstructed_markers;
-// for (int i = 0; i < all_markers.size(); ++i) {
-// if (reconstruction->CameraForImage(all_markers[i].image)) {
-// reconstructed_markers.push_back(all_markers[i]);
-// }
-// }
-// LG << "Got " << reconstructed_markers.size()
-// << " reconstructed markers for track " << track;
-// if (reconstructed_markers.size() >= 2) {
-// CompleteReconstructionLogProgress(update_callback,
-// (double)tot_resects/(max_image));
-// if (PipelineRoutines::Intersect(reconstructed_markers,
-// reconstruction)) {
-// num_intersects++;
-// LG << "Ran Intersect() for track " << track;
-// } else {
-// LG << "Failed Intersect() for track " << track;
-// }
-// }
-// }
-// if (num_intersects) {
-// CompleteReconstructionLogProgress(update_callback,
-// (double)tot_resects/(max_image),
-// "Bundling...");
-// PipelineRoutines::Bundle(tracks, reconstruction);
-// LG << "Ran Bundle() after intersections.";
-// }
-// LG << "Did " << num_intersects << " intersects.";
-//
-// // Do all possible resections.
-// num_resects = 0;
-// for (int image = 0; image <= max_image; ++image) {
-// if (reconstruction->CameraForImage(image)) {
-// LG << "Skipping frame: " << image;
-// continue;
-// }
-// vector<Marker> all_markers = tracks.MarkersInImage(image);
-// LG << "Got " << all_markers.size() << " markers for image " << image;
-//
-// vector<Marker> reconstructed_markers;
-// for (int i = 0; i < all_markers.size(); ++i) {
-// if (reconstruction->PointForTrack(all_markers[i].track)) {
-// reconstructed_markers.push_back(all_markers[i]);
-// }
-// }
-// LG << "Got " << reconstructed_markers.size()
-// << " reconstructed markers for image " << image;
-// if (reconstructed_markers.size() >= 5) {
-// CompleteReconstructionLogProgress(update_callback,
-// (double)tot_resects/(max_image));
-// if (PipelineRoutines::Resect(reconstructed_markers,
-// reconstruction, false)) {
-// num_resects++;
-// tot_resects++;
-// LG << "Ran Resect() for image " << image;
-// } else {
-// LG << "Failed Resect() for image " << image;
-// }
-// }
-// }
-// if (num_resects) {
-// CompleteReconstructionLogProgress(update_callback,
-// (double)tot_resects/(max_image),
-// "Bundling...");
-// PipelineRoutines::Bundle(tracks, reconstruction);
-// }
-// LG << "Did " << num_resects << " resects.";
-// }
-//
-// // One last pass...
-// num_resects = 0;
-// for (int image = 0; image <= max_image; ++image) {
-// if (reconstruction->CameraForImage(image)) {
-// LG << "Skipping frame: " << image;
-// continue;
-// }
-// vector<Marker> all_markers = tracks.MarkersInImage(image);
-//
-// vector<Marker> reconstructed_markers;
-// for (int i = 0; i < all_markers.size(); ++i) {
-// if (reconstruction->PointForTrack(all_markers[i].track)) {
-// reconstructed_markers.push_back(all_markers[i]);
-// }
-// }
-// if (reconstructed_markers.size() >= 5) {
-// CompleteReconstructionLogProgress(update_callback,
-// (double)tot_resects/(max_image));
-// if (PipelineRoutines::Resect(reconstructed_markers,
-// reconstruction, true)) {
-// num_resects++;
-// LG << "Ran final Resect() for image " << image;
-// } else {
-// LG << "Failed final Resect() for image " << image;
-// }
-// }
-// }
-// if (num_resects) {
-// CompleteReconstructionLogProgress(update_callback,
-// (double)tot_resects/(max_image),
-// "Bundling...");
-// PipelineRoutines::Bundle(tracks, reconstruction);
-// }
-// return true;
+
+ int clip_num = tracks.GetClipNum();
+ int max_frames = 0; // maximum frame of all clips
+ for(int i = 0; i < clip_num; i++) {
+ max_frames += tracks.MaxFrame(i) + 1;
+ }
+
+ int max_track = tracks.MaxTrack();
+ int num_resects = -1;
+ int num_intersects = -1;
+ int total_resects = 0;
+ std::cout << "Max track: " << max_track << "\n";
+ std::cout << "Max image: " << max_frames << "\n";
+ std::cout << "Number of markers: " << tracks.NumMarkers() << "\n";
+ while (num_resects != 0 || num_intersects != 0) {
+ // Do all possible intersections.
+ num_intersects = 0;
+ for (int track = 0; track <= max_track; ++track) {
+ if (reconstruction->PointForTrack(track)) { // track has already been added
+ std::cout << "Skipping point: " << track << "\n";
+ continue;
+ }
+ vector<Marker> all_markers;
+ tracks.GetMarkersForTrack(track, &all_markers);
+ std::cout << "Got " << all_markers.size() << " markers for track " << track << "\n";
+
+ vector<Marker> reconstructed_markers;
+ for (int i = 0; i < all_markers.size(); ++i) {
+ if (reconstruction->CameraPoseForFrame(all_markers[i].clip, all_markers[i].frame)) {
+ reconstructed_markers.push_back(all_markers[i]);
+ }
+ }
+ std::cout << "Got " << reconstructed_markers.size() << " reconstructed markers for track " << track << "\n";
+ if (reconstructed_markers.size() >= 2) {
+ CompleteReconstructionLogProgress(update_callback,
+ (double)total_resects/(max_frames));
+ if (PipelineRoutines::Intersect(reconstructed_markers,
+ reconstruction)) {
+ num_intersects++;
+ std::cout << "Ran Intersect() for track " << track << "\n";
+ } else {
+ std::cout << "Failed Intersect() for track " << track << "\n";
+ }
+ }
+ }
+ if (num_intersects) {
+ CompleteReconstructionLogProgress(update_callback,
+ (double)total_resects/(max_frames),
+ "Bundling...");
+ PipelineRoutines::Bundle(tracks, reconstruction);
+ std::cout << "Ran Bundle() after intersections.\n";
+ }
+ std::cout << "Did " << num_intersects << " intersects.\n";
+
+ // Do all possible resections.
+ num_resects = 0;
+ for(int clip = 0; clip < clip_num; clip++) {
+ const int max_image = tracks.MaxFrame(clip);
+ for (int image = 0; image <= max_image; ++image) {
+ if (reconstruction->CameraPoseForFrame(clip, image)) { // this camera pose has been added
+ LG << "Skipping frame: " << image;
+ continue;
+ }
+ vector<Marker> all_markers;
+ tracks.GetMarkersInFrame(clip, image, &all_markers);
+ LG << "Got " << all_markers.size() << " markers for image " << image;
+
+ vector<Marker> reconstructed_markers;
+ for (int i = 0; i < all_markers.size(); ++i) {
+ if (reconstruction->PointForTrack(all_markers[i].track)) {
+ reconstructed_markers.push_back(all_markers[i]);
+ }
+ }
+ LG << "Got " << reconstructed_markers.size()
+ << " reconstructed markers for image " << image;
+ if (reconstructed_markers.size() >= 5) {
+ CompleteReconstructionLogProgress(update_callback,
+ (double)total_resects/(max_frames));
+ if (PipelineRoutines::Resect(reconstructed_markers,
+ reconstruction, false)) {
+ num_resects++;
+ total_resects++;
+ std::cout << "Ran Resect() for image (" << clip << ", " << image << ")\n";
+ } else {
+ std::cout << "Failed Resect() for image (" << clip << ", " << image << ")\n";
+ }
+ }
+ }
+ }
+ if (num_resects) {
+ CompleteReconstructionLogProgress(update_callback,
+ (double)total_resects/(max_frames),
+ "Bundling...");
+ PipelineRoutines::Bundle(tracks, reconstruction);
+ }
+ std::cout << "Did " << num_resects << " resects.\n";
+ }
+
+ // One last pass...
+ num_resects = 0;
+ for(int clip = 0; clip < clip_num; clip++) {
+ int max_image = tracks.MaxFrame(clip);
+ for (int image = 0; image <= max_image; ++image) {
+ if (reconstruction->CameraPoseForFrame(clip, image)) {
+ LG << "Skipping frame: " << image;
+ continue;
+ }
+ vector<Marker> all_markers;
+ tracks.GetMarkersInFrame(clip, image, &all_markers);
+
+ vector<Marker> reconstructed_markers;
+ for (int i = 0; i < all_markers.size(); ++i) {
+ if (reconstruction->PointForTrack(all_markers[i].track)) {
+ reconstructed_markers.push_back(all_markers[i]);
+ }
+ }
+ if (reconstructed_markers.size() >= 5) {
+ CompleteReconstructionLogProgress(update_callback,
+ (double)total_resects/(ma
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list