[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56769] trunk/blender: Cleanup and small improvements to libmv
Sergey Sharybin
sergey.vfx at gmail.com
Mon May 13 16:39:06 CEST 2013
Revision: 56769
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56769
Author: nazgul
Date: 2013-05-13 14:39:06 +0000 (Mon, 13 May 2013)
Log Message:
-----------
Cleanup and small improvements to libmv
- Added const modifiers where it makes sense and
helps keep code safe.
- Reshuffled argument to match <inputs>,<outputs>
convention on parameters.
- Pass values to ApplyRadialDistortionCameraIntrinsics
by a constant reference.
This will save lots of CPU ticks passing relatively
heavy jet objects to this function when running
bundle adjustment.
Modified Paths:
--------------
trunk/blender/extern/libmv/ChangeLog
trunk/blender/extern/libmv/libmv/simple_pipeline/camera_intrinsics.h
trunk/blender/extern/libmv/libmv/simple_pipeline/detect.cc
trunk/blender/extern/libmv/libmv/simple_pipeline/detect.h
trunk/blender/extern/libmv/libmv/simple_pipeline/reconstruction_scale.cc
trunk/blender/extern/libmv/libmv-capi.cc
trunk/blender/extern/libmv/libmv-capi.h
trunk/blender/source/blender/blenkernel/intern/tracking.c
Modified: trunk/blender/extern/libmv/ChangeLog
===================================================================
--- trunk/blender/extern/libmv/ChangeLog 2013-05-13 14:31:45 UTC (rev 56768)
+++ trunk/blender/extern/libmv/ChangeLog 2013-05-13 14:39:06 UTC (rev 56769)
@@ -1,3 +1,19 @@
+commit 61ac890908a397860cabc60207500039876532cc
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date: Mon May 13 04:44:14 2013 +0600
+
+ Pass ApplyRadialDistortionCameraIntrinsics input arguments by reference
+
+ This shall save some CPU time on calling copy constructor and give
+ some boost of bundle adjuster (where jet could take some time to
+ be passed by value).
+
+commit 4d005ff0771e0e28159be25f8da69d983641384f
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date: Mon May 13 04:22:05 2013 +0600
+
+ Minor code style cleanup.
+
commit f003b9e3031db4592c2d91b1ea2538c73b7e767d
Author: Sergey Sharybin <sergey.vfx at gmail.com>
Date: Sun May 12 22:34:54 2013 +0600
@@ -618,26 +634,3 @@
This information is useful, but in cases when you, say,
working on a bundler it's annoying to scroll all the
information up.
-
-commit ac252bb1250b3028b9c94736b644e7ab4e7b14b8
-Author: Sergey Sharybin <sergey.vfx at gmail.com>
-Date: Fri Mar 1 17:36:19 2013 +0600
-
- Move radial distortion code to own templated function
-
- This shall not lead to any functional changes, just
- avoids radial distortion code duplicated in camera
- intrinsics and bundling code.
-
- For fancier bundle adjustment support of different
- distortion models this is not actually enough and
- would need to make some bigger changes, but this
- changes makes code a bit easier to maintain already.
-
-commit c253b794612dd529e1d3a9bd7a7c41c32c9a9abb
-Author: Sergey Sharybin <sergey.vfx at gmail.com>
-Date: Fri Mar 1 17:33:27 2013 +0600
-
- Use threaded cost function, jacobian and linear solver
- computation, so bundling is as fast as it could be with
- current parameter block structure.
Modified: trunk/blender/extern/libmv/libmv/simple_pipeline/camera_intrinsics.h
===================================================================
--- trunk/blender/extern/libmv/libmv/simple_pipeline/camera_intrinsics.h 2013-05-13 14:31:45 UTC (rev 56768)
+++ trunk/blender/extern/libmv/libmv/simple_pipeline/camera_intrinsics.h 2013-05-13 14:39:06 UTC (rev 56769)
@@ -172,14 +172,17 @@
// camera coordinates (i.e. the principal point is at (0, 0)) to get image
// coordinates in pixels. Templated for use with autodifferentiation.
template <typename T>
-inline void ApplyRadialDistortionCameraIntrinsics(T focal_length_x,
- T focal_length_y,
- T principal_point_x,
- T principal_point_y,
- T k1, T k2, T k3,
- T p1, T p2,
- T normalized_x,
- T normalized_y,
+inline void ApplyRadialDistortionCameraIntrinsics(const T &focal_length_x,
+ const T &focal_length_y,
+ const T &principal_point_x,
+ const T &principal_point_y,
+ const T &k1,
+ const T &k2,
+ const T &k3,
+ const T &p1,
+ const T &p2,
+ const T &normalized_x,
+ const T &normalized_y,
T *image_x,
T *image_y) {
T x = normalized_x;
Modified: trunk/blender/extern/libmv/libmv/simple_pipeline/detect.cc
===================================================================
--- trunk/blender/extern/libmv/libmv/simple_pipeline/detect.cc 2013-05-13 14:31:45 UTC (rev 56768)
+++ trunk/blender/extern/libmv/libmv/simple_pipeline/detect.cc 2013-05-13 14:39:06 UTC (rev 56769)
@@ -132,7 +132,7 @@
}
#endif
-void DetectMORAVEC(ubyte* image,
+void DetectMORAVEC(const ubyte* image,
int stride, int width, int height,
Feature* detected, int* count,
int distance,
@@ -144,7 +144,7 @@
const int r = 1; // radius for self similarity comparison
for (int y = distance; y < height-distance; y++) {
for (int x = distance; x < width-distance; x++) {
- ubyte* s = &image[y*stride+x];
+ const ubyte* s = &image[y*stride+x];
int score = // low self-similarity with overlapping patterns
// OPTI: load pattern once
SAD(s, s-r*stride-r, stride, stride)+SAD(s, s-r*stride, stride, stride)+SAD(s, s-r*stride+r, stride, stride)+
Modified: trunk/blender/extern/libmv/libmv/simple_pipeline/detect.h
===================================================================
--- trunk/blender/extern/libmv/libmv/simple_pipeline/detect.h 2013-05-13 14:31:45 UTC (rev 56768)
+++ trunk/blender/extern/libmv/libmv/simple_pipeline/detect.h 2013-05-13 14:39:06 UTC (rev 56769)
@@ -88,7 +88,7 @@
\note \a You can crop the image (to avoid detecting markers near the borders) without copying:
image += marginY*stride+marginX, width -= 2*marginX, height -= 2*marginY;
*/
-void DetectMORAVEC(ubyte* image, int stride, int width, int height,
+void DetectMORAVEC(const ubyte* image, int stride, int width, int height,
Feature* detected, int* count, int distance /*=32*/,
ubyte* pattern /*=0*/);
Modified: trunk/blender/extern/libmv/libmv/simple_pipeline/reconstruction_scale.cc
===================================================================
--- trunk/blender/extern/libmv/libmv/simple_pipeline/reconstruction_scale.cc 2013-05-13 14:31:45 UTC (rev 56768)
+++ trunk/blender/extern/libmv/libmv/simple_pipeline/reconstruction_scale.cc 2013-05-13 14:39:06 UTC (rev 56769)
@@ -38,8 +38,9 @@
double max_distance = 0.0;
for (int i = 0; i < all_cameras.size(); ++i) {
double distance = (all_cameras[i].t - cameras_mass_center).squaredNorm();
- if (distance > max_distance)
+ if (distance > max_distance) {
max_distance = distance;
+ }
}
if (max_distance == 0.0) {
Modified: trunk/blender/extern/libmv/libmv-capi.cc
===================================================================
--- trunk/blender/extern/libmv/libmv-capi.cc 2013-05-13 14:31:45 UTC (rev 56768)
+++ trunk/blender/extern/libmv/libmv-capi.cc 2013-05-13 14:39:06 UTC (rev 56769)
@@ -139,7 +139,8 @@
}
#if defined(DUMP_FAILURE) || defined (DUMP_ALWAYS)
-static void savePNGImage(png_bytep *row_pointers, int width, int height, int depth, int color_type, char *file_name)
+static void savePNGImage(png_bytep *row_pointers, int width, int height, int depth, int color_type,
+ const char *file_name)
{
png_infop info_ptr;
png_structp png_ptr;
@@ -421,10 +422,13 @@
void *callback_customdata_;
};
-static void libmv_solveRefineIntrinsics(libmv::Tracks *tracks, libmv::CameraIntrinsics *intrinsics,
- libmv::EuclideanReconstruction *reconstruction, int refine_intrinsics,
- reconstruct_progress_update_cb progress_update_callback, void *callback_customdata,
- int bundle_constraints = libmv::BUNDLE_NO_CONSTRAINTS)
+static void libmv_solveRefineIntrinsics(const libmv::Tracks &tracks,
+ const int refine_intrinsics,
+ const int bundle_constraints,
+ reconstruct_progress_update_cb progress_update_callback,
+ void *callback_customdata,
+ libmv::EuclideanReconstruction *reconstruction,
+ libmv::CameraIntrinsics *intrinsics)
{
/* only a few combinations are supported but trust the caller */
int bundle_intrinsics = 0;
@@ -444,15 +448,15 @@
progress_update_callback(callback_customdata, 1.0, "Refining solution");
- libmv::EuclideanBundleCommonIntrinsics(*(libmv::Tracks *)tracks,
+ libmv::EuclideanBundleCommonIntrinsics(tracks,
bundle_intrinsics,
bundle_constraints,
reconstruction,
intrinsics);
}
-static void cameraIntrinsicsFromOptions(libmv::CameraIntrinsics *camera_intrinsics,
- libmv_cameraIntrinsicsOptions *camera_intrinsics_options)
+static void cameraIntrinsicsFromOptions(const libmv_cameraIntrinsicsOptions *camera_intrinsics_options,
+ libmv::CameraIntrinsics *camera_intrinsics)
{
camera_intrinsics->SetFocalLength(camera_intrinsics_options->focal_length,
camera_intrinsics_options->focal_length);
@@ -468,47 +472,47 @@
camera_intrinsics_options->image_height);
}
-static libmv::Tracks getNormalizedTracks(libmv::Tracks *tracks, libmv::CameraIntrinsics *camera_intrinsics)
+static libmv::Tracks getNormalizedTracks(const libmv::Tracks &tracks, const libmv::CameraIntrinsics &camera_intrinsics)
{
- libmv::vector<libmv::Marker> markers = tracks->AllMarkers();
+ libmv::vector<libmv::Marker> markers = tracks.AllMarkers();
for (int i = 0; i < markers.size(); ++i) {
- camera_intrinsics->InvertIntrinsics(markers[i].x, markers[i].y,
+ camera_intrinsics.InvertIntrinsics(markers[i].x, markers[i].y,
&(markers[i].x), &(markers[i].y));
}
return libmv::Tracks(markers);
}
-static void finishReconstruction(libmv::Tracks *tracks, libmv::CameraIntrinsics *camera_intrinsics,
+static void finishReconstruction(const libmv::Tracks &tracks, const libmv::CameraIntrinsics &camera_intrinsics,
libmv_Reconstruction *libmv_reconstruction,
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list