1 commit b813dbe3f46bbbc7e73ac791d4665622e4fc7ba5
2 Author: Sergey Sharybin <sergey.vfx@gmail.com>
3 Date: Wed May 9 19:01:10 2012 +0600
5 Modal solver: Detect rigid transformation between initial frame and current
6 instead of detecting it between two neighbour frames.
8 This prevents accumulation of error and seems to be working better in footages i've tested.
10 commit 9254621c76daaf239ec1f535e197ca792eea97b6
11 Author: Sergey Sharybin <sergey.vfx@gmail.com>
12 Date: Wed May 9 18:57:00 2012 +0600
14 Backport changes made by Keir in Blender:
16 - Enhance logging in libmv's trackers.
17 - Cleanups in brute_region_tracker.cc.
19 commit d9c56b9d3c63f886d83129ca0ebed1e76d9c93d7
20 Author: Sergey Sharybin <sergey.vfx@gmail.com>
21 Date: Fri Apr 27 16:20:41 2012 +0600
23 Fixes for MinGW64 support by Caleb Joseph with slight modifications by Antony Riakiotakis
25 - Functions snprintf and sincos shouldn't be redefined for MinGW64
26 - Type pid_t shouldn't be re-defined for MinGW64
28 commit e1902b6938676011607ac99986b8b140bdbf090e
29 Author: Sergey Sharybin <sergey.vfx@gmail.com>
30 Date: Fri Apr 27 16:04:19 2012 +0600
32 Fixes for Qt calibration tool
34 - Passing directory with images via command line argument now isn't
35 required -- it there's no such directory specified standard open
36 dialog might be used for this (before application used to abort
37 due to accessing to non-existing list element).
38 - Conversion of source images to grayscale now happens correct.
39 It was needed to build grayscale palette for 8bit indexed buffer.
41 commit 05f1a0a78ad8ff6646d1e8da97e6f7575b891536
42 Author: Sergey Sharybin <sergey.vfx@gmail.com>
43 Date: Sat Apr 14 17:21:29 2012 +0600
45 Make QtTracker compilable again porting it to recent API change and code cleanup:
47 - It was using SAD tracker with own API, now it's using standard RegionTracker API
48 which should make it easier to switch between different trackers.
49 - Restored LaplaceFilter from old SAD module which convolves images with the
50 discrete laplacian operator.
52 commit a44312a7beb2963b8e3bf8015c516d2eff40cc3d
53 Author: Sergey Sharybin <sergey.vfx@gmail.com>
54 Date: Thu Apr 12 13:56:02 2012 +0600
56 Added solver for modal camera motion, currently supports only tripod solving
58 This solver is intended to deal with such camera motions as tripod and panning,
59 where it's impossible to reconstruct exact position of markers in 3d view.
61 It projects markers onto sphere and uses rigid registration of rotation to
62 find rotation angles which makes bundles from previous and current frame be
63 as closest as it's possible.
65 commit fa3842e472e3b9c789e47bf6d8f592aa40a84f16
66 Author: Sergey Sharybin <sergey.vfx@gmail.com>
67 Date: Thu Apr 12 12:32:48 2012 +0600
69 implementation of some basic algorithms for point cloud orientation:
71 - Implementation of rigid registration algorithm which searches transformation
72 form one point cloud to another assuming that points in this clouds are
73 already paired (points with the same index in different clouds belongs to
74 the same pair) which minimizes average distance between points in pairs.
76 Algorithm uses Levenberg-Marquardt solver to find such transformation.
78 Supports registration of rotation-scale-transform (which is probably most
79 common usage) and rotation only (which might be useful for basic modal
82 - Implementation of Iterative-Point-Clouds algorithm which searches
83 transformation from one arbitrary point cloud to another making
84 points as closest to each other as possible.
86 This algorithm doesn't require points be initially paired, but for
87 good result clouds should have rough initial orientation. If they're
88 arbitrary oriented from the very beginning, algorithm might fail
89 producing good resold.
91 Iteration is based on building pairs of closest to each other points
92 and registering rigid transformation between them which incrementally
93 constructs final result.
95 TODO: building pairs might be speedup a lot using data structures like
96 AABB trees, K-D trees or so.
98 commit 9618d9a1d48bb3c28da605d9027f57a74f462785
99 Author: Sergey Sharybin <sergey.vfx@gmail.com>
100 Date: Wed Apr 11 14:17:14 2012 +0600
102 Added configuration file for glog to compile smooth on Hurd platform.
104 Patch by Pino Toscano <pino@debian.org>, thanks!
106 commit 63b2bd20237c8599fa73ce42556e4fb99b9f7cca
107 Author: Sergey Sharybin <sergey.vfx@gmail.com>
108 Date: Thu Mar 22 17:03:34 2012 +0600
110 Trackers refactoring:
111 - Deduplicate pattern sampling used in esm and lmicklt trackers
112 and move SamplePattern to image/sample.h
113 - Move computation of Pearson product-moment correlation into
114 own function in new file image/correlation.h so all trackers
115 can use it to check final correlation.
116 - Remove SAD tracker. It's almost the same as brute tracker,
117 with only two differences:
118 1. It does brute search of affine transformation which in some cases
119 helps to track rotating features
120 2. It didn't use common tracker api which probably gave some speed
121 advantage, but lead to a real headache to use it together with
122 other trackers leading to duplicated code in 3d-party software.
124 commit 9fe49c32e990f28c83f2bbb1d18057aed8879af7
125 Author: Sergey Sharybin <sergey.vfx@gmail.com>
126 Date: Mon Mar 12 09:36:15 2012 +0600
128 Code cleanup: convert line endings to Unix style (native on my platform) so it
129 wouldn't confuse other versioning systems used for project where libmv is bundled to,
131 Also change mode to +x for glog's windows-related script.
133 commit fe74ae2b53769389b0ed9d7e604c8e60be81077d
134 Author: Sergey I. Sharybin <g.ulairi@gmail.com>
135 Date: Sun Mar 11 20:34:15 2012 +0600
137 Replace "third_party/glog/src/glog/logging.h" with <glog/logging.h>
139 It was needed because of how build systems is setup in Blender but think
140 this will be helpful change for other applications too because it makes
141 it's easier to move libraries around and even use libraries installed
142 on the operation system.
144 commit 37fc726701479f2d321d6af878fa93f3176278d5
145 Author: Sergey I. Sharybin <g.ulairi@gmail.com>
146 Date: Sun Mar 11 19:27:41 2012 +0600
148 Upgrade gflags and glog libraries - stage 2 (final)
150 Changes to upstream code which are needed to make libmv compile smooth on all platforms
152 * Replace <gflags/gflags.h> with "third_party/gflags/gflags/gflags.h" which is easier
153 to setup things in libmv and also helps with setting up building libmv into
154 external applications.
155 * Replace "glog/logging.h" and "glog/logging.h" with <glog/logging.h> and <glog/logging.h>
156 which is needed on Windows platform because otherwise files like logging.cc will be using
157 relative path which points to headers used by linux instead of headers need to be used
159 * Replace _asm int 3 with __debugbreak(). Such assembler code is obsolete and doesn't work
160 with 64bit versions of MSVC compilers.
161 * Do not use stacktrace for MinGW and FreeBSD because it leads into issues accessing
162 some specific data on this platforms.
163 * Define HAVE_LIB_GFLAGS for Windows builds.
164 * Do not define __declspec(dllimport) for MinGW platforms.
165 * Setup proper includes and datatypes for int32, uint32, int64 and uint64 for MinGW
166 * Do not define va_copy for MinGW platforms (it's already defined there).
167 * Patch localtime_r to be working fine with MinGW, disable strerror_r for MinGW because
168 of lack of needed functions.
170 commit 8ed07abfa49d1e0511752021c972e0715e5a1383
171 Author: Sergey I. Sharybin <g.ulairi@gmail.com>
172 Date: Sun Mar 11 19:06:33 2012 +0600
174 Upgrade gflags and glog libraries - stage 1
176 This commit copies sources from latest original release of gflags and glog
177 over currently bundled versions of this libraries without any modifications.
179 This revision can't b compiled, all needed changes to make new libraries working
180 fine will be done with next commit to make it clear which changes were necessary
181 for easier bundling further newer version and extract patches and put them to
182 gflags/glog upstream repo.
184 Such upgrade of libraries is needed to make it able to compile libmv
185 with clang compilers. Currently used versions:
187 - gflags is version 2.0
188 - glog is version 0.3.2
190 commit 75b9af405964ff2c7d3f0a44500e27e63b37c91b
191 Author: Sergey Sharybin <sergey.vfx@gmail.com>
192 Date: Fri Feb 17 23:29:11 2012 +0600
194 _USE_MATH_DEFINES is needed to define constants like M_E when building with msvc
195 Occasionally was removed, but now added comment about this so hopefully it
196 wouldn't removed again.
198 commit f85b1232a9b929f69443b5eed6e7a39908cd6551
199 Author: Sergey Sharybin <sergey.vfx@gmail.com>
200 Date: Fri Feb 17 21:34:40 2012 +0600
202 Picky edit: corrected mode for ssba readme file.
204 commit f8c2b223f01551fd81a85f6d5221646165147035
205 Author: Sergey Sharybin <sergey.vfx@gmail.com>
206 Date: Fri Feb 17 21:32:05 2012 +0600
208 Picky edits: corrected EOL
210 commit 3f2a4205ec5adadcdfa306b161c705c868a7be93
211 Author: Sergey Sharybin <sergey.vfx@gmail.com>
212 Date: Fri Feb 17 21:30:07 2012 +0600
214 Fixed incorrect access to ucontext on linux. Caused by incorrect merge conflict resolve.
216 commit d360a21a5aa125cf9e83dd26b302508688ff7007
217 Author: Sergey Sharybin <sergey.vfx@gmail.com>
218 Date: Fri Feb 17 20:54:13 2012 +0600
220 More Windows -> Unix EOL conversions
222 commit 18aeda58bec9556140ba617724e31ada6f5b67c0
223 Author: Sergey Sharybin <sergey.vfx@gmail.com>
224 Date: Fri Feb 17 20:15:42 2012 +0600
226 Looks like this debug output was removed accidentally.
228 commit 189dc0cacdee3c1eab68c43263ecb038ed244c09
229 Author: Sergey Sharybin <sergey.vfx@gmail.com>
230 Date: Fri Feb 17 20:11:56 2012 +0600
232 Made V3D verbose again by default
234 commit 8b3422d3eec5e450d76243886bf07fb0a3e83a81
235 Author: Sergey Sharybin <sergey.vfx@gmail.com>
236 Date: Fri Feb 17 20:08:01 2012 +0600
238 SAD tracker now can deal with pattern size any size,
239 Very quick implementation came from Blender before Hybrid tracker was added.
240 Better to be replaced with brute tracker.
242 commit d547c9cfe37d5d3397d33c8b0e58471e1e1c1634
243 Author: Sergey Sharybin <sergey.vfx@gmail.com>
244 Date: Fri Feb 17 20:03:52 2012 +0600
246 Just convert end of lines to unix style.
248 commit eb73ddbaec5b9e1ad30331bbf858a6ebc266c4aa
249 Author: Sergey Sharybin <sergey.vfx@gmail.com>
250 Date: Fri Feb 17 20:02:20 2012 +0600
252 Made some function static. Resolves possible linking issues when building with MinGW.
254 commit 2930681fafd86e4f4a958054b1db8bfff29623d1
255 Author: Sergey Sharybin <sergey.vfx@gmail.com>
256 Date: Fri Feb 17 19:59:45 2012 +0600
258 Missed this in commit with improvements in camera intrinsics.
260 commit 8d31bc767019b05c5bf8c9f309f9545b3428afa1
261 Author: Sergey Sharybin <sergey.vfx@gmail.com>
262 Date: Fri Feb 17 19:57:51 2012 +0600
264 Another step of syncing codebase with Blender.
265 Mainly fixes for freebsd/osx compilation and aligned memory allocation.
267 commit 3214a2df5bfd98021f25d0f1a626a86318bb245f
268 Author: Sergey Sharybin <sergey.vfx@gmail.com>
269 Date: Fri Feb 17 19:48:02 2012 +0600
271 Support compilation on FreeBSD platform
273 commit 0e5abe96f543687ccfb3a923ec639cb8f45d54f8
274 Author: Sergey Sharybin <sergey.vfx@gmail.com>
275 Date: Fri Feb 17 19:44:18 2012 +0600
277 Implementation of basic system for progress reporting into callee stuff
279 Implemented by using simple callbacks classes which are getting invoked from
280 places where lots of calculation happens, so applications which are using
281 libmv may display nice progress bar.
283 commit c5e18fe35464618055e0e9761be8d22fae56db49
284 Author: Keir Mierle <mierle@gmail.com>
285 Date: Fri Feb 17 19:25:45 2012 +0600
287 Add support for detecting tracking failure in the ESM tracker component of
288 libmv. Since both KLT and Hybrid rely on ESM underneath, KLT and Hybrid now
289 have a minimum correlation setting to match. With this fix, track failures
290 should get detected quicker, with the issue that sometimes the tracker will
291 give up too easily. That is fixable by reducing the required correlation (in
292 the track properties).
294 commit ea0fed736ecdcc8c020227aeef8ef4cd3be5e63d
295 Author: Keir Mierle <mierle@gmail.com>
296 Date: Fri Feb 17 19:23:50 2012 +0600
298 Add a new hybrid region tracker for motion tracking to libmv, and
299 add it as an option (under "Hybrid") in the tracking settings. The
300 region tracker is a combination of brute force tracking for coarse
301 alignment, then refinement with the ESM/KLT algorithm already in
302 libmv that gives excellent subpixel precision (typically 1/50'th
305 This also adds a new "brute force" region tracker which does a
306 brute force search through every pixel position in the destination
307 for the pattern in the first frame. It leverages SSE if available,
308 similar to the SAD tracker, to do this quickly. Currently it does
309 some unnecessary conversions to/from floating point that will get
312 The hybrid tracker glues the two trackers (brute & ESM) together
313 to get an overall better tracker. The algorithm is simple:
315 1. Track from frame 1 to frame 2 with the brute force tracker.
316 This tries every possible pixel position for the pattern from
317 frame 1 in frame 2. The position with the smallest
318 sum-of-absolute-differences is chosen. By definition, this
319 position is only accurate up to 1 pixel or so.
320 2. Using the result from 1, initialize a track with ESM. This does
321 a least-squares fit with subpixel precision.
322 3. If the ESM shift was more than 2 pixels, report failure.
323 4. If the ESM track shifted less than 2 pixels, then the track is
324 good and we're done. The rationale here is that if the
325 refinement stage shifts more than 1 pixel, then the brute force
326 result likely found some random position that's not a good fit.
328 commit a07fff8431621c01d81ae52595d8dd91a295a776
329 Author: Keir Mierle <mierle@gmail.com>
330 Date: Fri Feb 17 19:19:58 2012 +0600
332 Assorted camera tracker improvements
334 - Add support for refining the camera's intrinsic parameters
335 during a solve. Currently, refining supports only the following
336 combinations of intrinsic parameters:
344 This is not the same as autocalibration, since the user must
345 still make a reasonable initial guess about the focal length and
346 other parameters, whereas true autocalibration would eliminate
347 the need for the user specify intrinsic parameters at all.
349 However, the solver works well with only rough guesses for the
350 focal length, so perhaps full autocalibation is not that
353 Adding support for the last two combinations, (f, k1) and (f,
354 k1, k2) required changes to the library libmv depends on for
355 bundle adjustment, SSBA. These changes should get ported
356 upstream not just to libmv but to SSBA as well.
358 - Improved the region of convergence for bundle adjustment by
359 increasing the number of Levenberg-Marquardt iterations from 50
360 to 500. This way, the solver is able to crawl out of the bad
361 local minima it gets stuck in when changing from, for example,
362 bundling k1 and k2 to just k1 and resetting k2 to 0.
364 - Add several new region tracker implementations. A region tracker
365 is a libmv concept, which refers to tracking a template image
366 pattern through frames. The impact to end users is that tracking
367 should "just work better". I am reserving a more detailed
368 writeup, and maybe a paper, for later.
370 - Other libmv tweaks, such as detecting that a tracker is headed
371 outside of the image bounds.
373 This includes several changes made directly to the libmv extern
374 code rather expecting to get those changes through normal libmv
375 channels, because I, the libmv BDFL, decided it was faster to work
376 on libmv directly in Blender, then later reverse-port the libmv
377 changes from Blender back into libmv trunk. The interesting part
378 is that I added a full Levenberg-Marquardt loop to the region
379 tracking code, which should lead to a more stable solutions. I
380 also added a hacky implementation of "Efficient Second-Order
381 Minimization" for tracking, which works nicely. A more detailed
382 quantitative evaluation will follow.
384 commit 0bf66c009d5022eacfc473d247884a73ffeefa8f
385 Author: Sergey Sharybin <sergey.vfx@gmail.com>
386 Date: Fri Feb 17 19:13:49 2012 +0600
388 Rest of compilation fix with FAST library.
390 commit 71b578ca2ba34c528363c514cd1fcc85791d01f3
391 Author: Keir Mierle <mierle@gmail.com>
392 Date: Fri Feb 17 19:00:28 2012 +0600
394 Improve the KLT tracking behaviour and UI
396 - Remove the overly-conservative use of libmv's re-track tracker. The re-track
397 tracker would take a normal tracker such as TRKLT or KLT or pyramid KLT, and
398 track from frame 1 to 2, then back from the position found in 2 back to 1.
399 Then, when the reverse-track doesn't match the original track with high
400 precision, the track is considered "failed". This is a good approach for
401 fully automatic reconstruction, but is too conservative for supervised
404 The retrack-tracker will return when fully automatic tracking is added.
406 - Always solve for (dx, dy) in the TRKLT loop even if the linear system is
407 ill-conditioned. The client (Blender in this case) can still use the solved
408 position, even though it is less reliable.
410 commit 7d8a8762f2bc2e36f95b0b6f4fb4ca996f9f0db7
411 Author: Sergey Sharybin <sergey.vfx@gmail.com>
412 Date: Fri Feb 17 18:46:24 2012 +0600
414 Changes in camera intrinsics distortion/undistortion:
416 - Distortion/undistortion of scaled images wasn't happening right,
417 because camera intrinsics are calibrated on an original frame which
418 has got some particular resolution and trying to apply this model on
419 an image with another resolution gives totally wrong result.
420 This is needed to be able to do post-prccessing of render, running
421 distortion on a scene which might be rendered with higher resolution
422 than footage itself and then be scaled down.
423 - Fixed incorrect calculation/applying of precomputed grid when
424 distortion is high high enough and produces pixel offset higher
425 than 127 pixels. This might be still not very distorted image,
426 but if it's a 4K footage "normal" camera will easily give such
428 - Added support of overscan distortion/undistortion.
430 commit ed080785d63bb8e3a13dde51a2dc94fe59b059bb
431 Author: Sergey Sharybin <sergey.vfx@gmail.com>
432 Date: Fri Feb 17 18:38:51 2012 +0600
434 Fast headers now can be included from C++ sources.
435 Was needed to make it working fine when bundling in Blender but might also
436 be needed to bundle into another applications.
438 commit 5f5a7aa46a2d87b96c8098dfc8682f4d01b5cd40
439 Author: Sergey Sharybin <sergey.vfx@gmail.com>
440 Date: Fri Feb 17 18:36:16 2012 +0600
442 Bring back FAST detector which seems to be working much nicer than Morravec.
443 Both of them are available in API.
445 commit 2cab13c18216fb684b270cec077f7300262584af
446 Author: Sergey Sharybin <sergey.vfx@gmail.com>
447 Date: Fri Feb 17 18:27:36 2012 +0600
449 Revert "Make CameraIntrinsics (and thus Qt tracker) compilable without linking libmv."
451 This reverts commit 81613ee0cc94b315f333c9632b18b95d426aad05.
453 That commit made inverting intrinsics totally unworkable, so reverted this and
454 made needed tweaks to qt-tracker project file to make it compilable (was needed
455 to make it linking together with glog).
459 src/ui/tracker/tracker.cc
460 src/ui/tracker/tracker.pro
462 commit ec46cae041401b17afb4fe4d9c9343d10797090f
463 Author: Sergey Sharybin <sergey.vfx@gmail.com>
464 Date: Fri Feb 17 17:59:55 2012 +0600
466 Fix compilation error using official MinGW
468 commit 6fbc370e922c47cfa35381662b6c439f4891ed74
469 Author: Sergey Sharybin <sergey.vfx@gmail.com>
470 Date: Fri Feb 17 17:38:20 2012 +0600
472 Fix compilation error with MSVC 2010 which is more picky for "missed" STL headers
474 commit be9e6b63691d83b551a085f0766878bd84220767
475 Author: Sergey Sharybin <sergey.vfx@gmail.com>
476 Date: Fri Feb 17 17:36:18 2012 +0600
478 Fix compilation with MSVC where snprintf function is declared as unsafe and _snprintf should be used instead.
480 Better to switch to own implementation will ensure string is correctly NULL-terminated.
482 commit 1847d9e414ed763cd80668775d7d9f79575fc8ca
483 Author: Sergey Sharybin <sergey.vfx@gmail.com>
484 Date: Fri Feb 17 17:34:45 2012 +0600
486 Fix compilation error on OSX caused by incorrect access to ucontext
488 commit 90579b6ffad07672172a1c240499615b30b25549
489 Merge: b9aac30 531c79b
490 Author: Sergey Sharybin <sergey.vfx@gmail.com>
491 Date: Fri Feb 17 18:32:52 2012 +0600
493 Merge remote-tracking branch 'Matthias-Fauconneau/master' into devel
496 src/libmv/tracking/CMakeLists.txt
498 commit b9aac30a9ca6bc8362c09a0e191040964f7c6de2
499 Merge: 198894e 6969e1a
500 Author: Keir Mierle <mierle@gmail.com>
501 Date: Sat Nov 5 17:38:30 2011 -0700
503 Merge pull request #3 from nathanwiegand/master
505 Just a few tiny cleanups
507 commit 6969e1a9534291a982749baa5a3672c97bfa506d
508 Author: Nathan Wiegand <nathanwiegand@gmail.com>
509 Date: Sat Nov 5 14:26:54 2011 -0700
511 I've added cleaned up a few style issues here an there. Also, I've updated the CMakeLists.txt file so that it can build the image_io library. Note, it's only been tested on OSX 10.6
513 commit 4763f851299050140757bfaa069107a0cf639e56
514 Author: Nathan Wiegand <nathanwiegand@gmail.com>
515 Date: Fri Nov 4 23:59:08 2011 -0700
517 Removed a superfulous comment
519 commit a44577c0162e273681e4a9a3cc5f5b37d4315b67
520 Author: Nathan Wiegand <nathanwiegand@gmail.com>
521 Date: Fri Nov 4 23:55:52 2011 -0700
523 Removed a duplicate entry for an author.
525 commit 198894e4c4f51c2c1784ad7c02eb45d2d1ada9bc
526 Merge: c4c67db 6e797d6
527 Author: Keir Mierle <mierle@gmail.com>
528 Date: Fri Nov 4 21:47:05 2011 -0700
530 Merge pull request #2 from nathanwiegand/master
532 CMake changes for OSX
534 commit 6e797d678c4c19f6a9e21657d66183f412cc995b
535 Author: Nathan Wiegand <nathanwiegand@gmail.com>
536 Date: Fri Nov 4 21:43:28 2011 -0700
538 Uncomment the GUI part of the CMake file
540 commit 33ef88a33860345d8906f3c9dd22d8dbce3df53e
541 Author: Nathan Wiegand <nathanwiegand@gmail.com>
542 Date: Fri Nov 4 21:31:22 2011 -0700
544 Fixed build error on OSX by adding 'glog' to the dependencies in the tracker CMake
546 commit 531c79bf95fddaaa70707d1abcd4fdafda16bbf0
547 Author: Matthias Fauconneau <matthias.fauconneau@gmail.com>
548 Date: Sat Aug 20 00:00:42 2011 +0200
550 Display warped pattern in marker preview.
552 commit bb5c27e671b6f8eb56ddf490f0795d59bede591b
553 Author: Matthias Fauconneau <matthias.fauconneau@gmail.com>
554 Date: Fri Aug 19 18:37:48 2011 +0200