Update Ceres to latest upstream version
[blender.git] / extern / libmv / ChangeLog
1 commit 2cd653e2952379da7daf56edcd9e71b0aa929f90
2 Author: Sergey Sharybin <sergey.vfx@gmail.com>
3 Date:   Sat Jun 1 16:20:35 2013 +0600
4
5     Pass vectors by a reference
6     
7     Saves couple of time which used to waste on copying objects,
8     also solves win32 compilation errors caused by alignment.
9
10 commit f61b8198b9bddd8d2fa53feae7924aa23df48cbd
11 Author: Sergey Sharybin <sergey.vfx@gmail.com>
12 Date:   Thu May 30 18:00:03 2013 +0600
13
14     Code cleanup
15     
16     - Made some arguments passing to detector const.
17     - Remove unneeded include from track_region header.
18
19 commit 61ac890908a397860cabc60207500039876532cc
20 Author: Sergey Sharybin <sergey.vfx@gmail.com>
21 Date:   Mon May 13 04:44:14 2013 +0600
22
23     Pass ApplyRadialDistortionCameraIntrinsics input arguments by reference
24     
25     This shall save some CPU time on calling copy constructor and give
26     some boost of bundle adjuster (where jet could take some time to
27     be passed by value).
28
29 commit 4d005ff0771e0e28159be25f8da69d983641384f
30 Author: Sergey Sharybin <sergey.vfx@gmail.com>
31 Date:   Mon May 13 04:22:05 2013 +0600
32
33     Minor code style cleanup.
34
35 commit f003b9e3031db4592c2d91b1ea2538c73b7e767d
36 Author: Sergey Sharybin <sergey.vfx@gmail.com>
37 Date:   Sun May 12 22:34:54 2013 +0600
38
39     Cleanup in simple pipeline's bundler
40     
41     - Better match Google's code style conventions.
42     - Move evaluation part into own function, makes
43       bundling itself easier to follow.
44     - Made evaluation an optional parameter.
45     - Removed note about unsupported camera intrinsics
46       refining flags. Technically, all combinations
47       are possible.
48
49 commit f0e68f69e5c5f0fd82334246d382e59f1eb20164
50 Author: Sergey Sharybin <sergey.vfx@gmail.com>
51 Date:   Sun May 12 22:19:31 2013 +0600
52
53     Remove check for zero focal length in BA cost functor
54     
55     This check is actually redundant, because empty intrinsics
56     will have focal length of 1.0, which means original comment
57     about BundleIntrinsics was not truth.
58     
59     It is possible that external user will send focal length of
60     zero to be refined, but blender prevents this from happening.
61
62 commit 7ed5e4da65d2c0df63a08b1e1f4b4de1855f1bf0
63 Author: Sergey Sharybin <sergey.vfx@gmail.com>
64 Date:   Sat May 11 20:33:54 2013 +0600
65
66     Fix compilation error with msvc2012
67     
68     Using change from glog's upstream for this.
69
70 commit 7e162266f96abc25d80e2352cd77f21ed93593b7
71 Author: Sergey Sharybin <sergey.vfx@gmail.com>
72 Date:   Sat May 11 19:50:57 2013 +0600
73
74     Style cleanup, mainly pointed by Sameer in Ceres's codereview
75
76 commit 42da053c6410b4f3fb13798c7e9c5f4a861b6825
77 Author: Sergey Sharybin <sergey.vfx@gmail.com>
78 Date:   Fri May 10 18:30:40 2013 +0600
79
80     Keyframe selection improvements
81     
82     Added additional criteria, which ignores
83     keyframe pair if success intersection factor
84     is lower than current candidate pair factor.
85     
86     This solves issue with keyframe pair at which
87     most of the tracks are intersecting behind the
88     camera is accepted (because variance in this
89     case is really small),
90     
91     Also tweaked generalized inverse function,
92     which now doesn't scale epsilon by maximal
93     matrix element. This gave issues at really bad
94     candidates with unstable covariance. In this
95     case almost all eigen values getting zeroed
96     on inverse leading to small expected error.
97
98 commit f3eb090f7240f86799099fe86ce9386eb2bd3007
99 Author: Sergey Sharybin <sergey.vfx@gmail.com>
100 Date:   Fri May 10 17:59:40 2013 +0600
101
102     Keyframe selection code cleanup
103     
104     - Updated comments in code.
105     - Removed currently unused functions.
106       Actually, they'd better be moved to some generic
107       logging module, but we don't have it now so was
108       lazy to create one now. Could happen later using
109       code from git history
110     - Renamed function to match better to what's going
111       on in it.
112
113 commit b917b48bd877eedd17dec907cacf0b27a36e717d
114 Author: Sergey Sharybin <sergey.vfx@gmail.com>
115 Date:   Fri May 10 17:44:49 2013 +0600
116
117     Optimization for reconstruction variance
118     
119     Achieved by replacing SVD-based pseudo-inverse with
120     an eigen solver pseudo inverse.
121     
122     New function works in the same way: it decomposes
123     matrix to V*D*V^-1, then inverts diagonal of D
124     and composes matrix back.
125     
126     The same way is used to deal with gauges - last
127     7 eigen values are getting zeroed.
128     
129     In own tests gives approx 2x boost, without
130     visible affect on selected keyframe quality.
131
132 commit 041b4b54fff66311347a307a5922c2516c76ee44
133 Author: Sergey Sharybin <sergey.vfx@gmail.com>
134 Date:   Thu Mar 14 14:53:42 2013 +0600
135
136     Initial commit of reconstruction variance criteria
137     which is an addition for GRIC-based keyframe selection.
138     
139     Uses paper Keyframe Selection for Camera Motion and Structure
140     Estimation from Multiple Views,
141     ftp://ftp.tnt.uni-hannover.de/pub/papers/2004/ECCV2004-TTHBAW.pdf
142     as a basis.
143     
144     Currently implemented camera positions reconstructions,
145     bundle positions estimation and bundle adjustment step.
146     
147     Covariance matrix is estimating using generalized inverse
148     with 7 (by the number of gauge freedoms) zeroed eigen values
149     of J^T * J.
150     
151     Additional changes:
152     - Added utility function FundamentalToEssential to extract
153       E from F matrix, used by both final reconstruction pipeline
154       and reconstruction variance code.
155     
156     - Refactored bundler a bit, so now it's possible to return
157       different evaluation data, such as number of cameras and
158       points being minimized and also jacobian.
159     
160       Jacobian currently contains only camera and points columns,
161       no intrinsics there yet. It is also currently converting to
162       an Eigen dense matrix. A bit weak, but speed is nice for
163       tests.
164     
165       Columns in jacobian are ordered in the following way:
166       first columns are cameras (3 cols for rotation and 3 cols
167       for translation), then goes 3D point columns.
168     
169     - Switched F and H refining to normalized space. Apparently,
170       refining F in pixel space squeezes it a lot making it wrong.
171     
172     - EuclideanIntersect will not add point to reconstruction if
173       it happened to be behind the camera.
174     
175     - Cleaned style a bit.
176
177 commit 94c4654f1145f86779bd0a7e8cda1fd2c751d27d
178 Author: Sergey Sharybin <sergey.vfx@gmail.com>
179 Date:   Fri May 10 13:27:21 2013 +0600
180
181     Left extra debugging print in reconstruction scale by accident.
182
183 commit 3886b488575ec5e79debce7b9f2e9824f5297c0f
184 Author: Sergey Sharybin <sergey.vfx@gmail.com>
185 Date:   Fri May 10 12:23:03 2013 +0600
186
187     Add check for points behind camera in euclidan BA cost functor
188     
189     In cases keyframes are no so good, algebraic two frames construction
190     could produce result, for which more aggressive Ceres-based BA code
191     will fall to a solution for which points goes behind the camera,
192     which is not so nice.
193     
194     Seems in newer Ceres returning false from cost functor wouldn't
195     abort solution, but will restrict solver from moving points behind
196     the camera.
197     
198     Works fine in own tests, but requires more tests.
199
200 commit a5699d7dbe126024673f51aaa570f9f244f8da2f
201 Author: Sergey Sharybin <sergey.vfx@gmail.com>
202 Date:   Wed Apr 24 22:06:38 2013 +0600
203
204     Forgot to add reconstruction scale to CMakeLists
205
206 commit 2b7d2b44e6446bbcc23038f5dbb824feca888069
207 Author: Sergey Sharybin <sergey.vfx@gmail.com>
208 Date:   Wed Apr 24 19:40:39 2013 +0600
209
210     Reconstructed scene scale ambiguity improvement
211     
212     Added a function EuclideanScaleToUnity() which is
213     aimed to solve scale ambiguity by scaling solution
214     in a way cameras centers variance in unity.
215     
216     Currently only available for euclidean pipeline,
217     projective one is not finished anyway.
218
219 commit ed1f650576dc6f5b648a026a2861c54827b0f5c9
220 Author: Sergey Sharybin <sergey.vfx@gmail.com>
221 Date:   Tue Apr 23 01:41:29 2013 +0600
222
223     Use epsilon in modal solver test
224     
225     Default epsilon for isApprox was too small,
226     leading to some false test failures.
227
228 commit c44679a9a0fafdde6a0a22e7e5c8496fc9c93cd0
229 Author: Sergey Sharybin <sergey.vfx@gmail.com>
230 Date:   Tue Apr 23 01:35:56 2013 +0600
231
232     Update Ceres to current HEAD
233     
234     Brings optimization for DENSE_NORMAL_CHOLESKY and
235     also fixes threading issues with BLAS.
236
237 commit 03cbc88ce7f51aa26ba503acea2e984bcb78873c
238 Author: Sergey Sharybin <sergey.vfx@gmail.com>
239 Date:   Mon Apr 15 05:35:33 2013 +0600
240
241     Fix for bundle adjusting with motion restricted
242     
243     Was a bug introduced in previous commit, which
244     was trying to set parameterization for non-existing
245     camera->t parameter block.
246     
247     Replaced with subset parameterization.
248     
249     Also added basic synthetic unit test for modal solver.
250
251 commit c78a68f980e778d40ce836fa1d7471cb7264d4a0
252 Author: Sergey Sharybin <sergey.vfx@gmail.com>
253 Date:   Mon Apr 8 23:33:20 2013 +0600
254
255      Bundle adjustment improvements
256     
257     - Get rid of rotation matrix parameterization,
258       use angle-axis instead.
259     
260       Also Joined rotation and translation into
261       a single parameter block.
262     
263       This made minimization go significantly faster,
264       like 1.3x times in average.
265     
266     - Fix first camera when bundling. This is to
267       address orientation ambiguity.
268     
269       Reconstruction result could still vary in
270       size, but that's another issue to be addressed
271       later.
272     
273     Additional change:
274     
275     Split EuclideanBundleCommonIntrinsics into
276     smaller functions, so it's now a bit easier
277     to follow.
278
279 commit 28c7566629c2cf5b03a787c9509856e87472eb2f
280 Author: Sergey Sharybin <sergey.vfx@gmail.com>
281 Date:   Mon Apr 8 23:31:57 2013 +0600
282
283     Update Ceres to current HEAD
284     
285     Brings up some noticeable speed improvements. In particular
286     the automatic differentiation and bundle adjustment solvers.
287
288 commit efde9faa21e70b031d3cbcb2dcdcd38e597bf56e
289 Author: Sergey Sharybin <sergey.vfx@gmail.com>
290 Date:   Mon Apr 8 02:21:26 2013 +0600
291
292     Corrected path to gflags
293     
294     Currently tools/track.cc is not used, but let's
295     keep things a bit more up-to-date :)
296
297 commit f8b5ea196fb00ab07d577e9738a60cdd1de16509
298 Author: Sergey Sharybin <sergey.vfx@gmail.com>
299 Date:   Mon Apr 8 02:17:16 2013 +0600
300
301     Re-enable tests for multiview and image
302     
303     For as long code is in repo and used by some tools
304     better to have it covered by tests.
305     
306     Some of them are failing tho, but that's completely
307     different story to be addressed later.
308
309 commit d2a7ee60a5845738f76b88bfc373eefc2cc8501a
310 Author: Sergey Sharybin <sergey.vfx@gmail.com>
311 Date:   Mon Apr 8 02:10:07 2013 +0600
312
313     Do not modify cache's CMAKE_CXX_FLAGS_RELEASE when configuring Ceres
314     
315     Otherwise you'll have infinite appending of Ceres-specific flags
316     on every saving of any CmakeLists.txt.
317
318 commit 45edb507bf46194dd55b7fc46a7d90ee3853834d
319 Author: Sergey Sharybin <sergey.vfx@gmail.com>
320 Date:   Sun Apr 7 21:53:23 2013 +0600
321
322     Fixed compilation with BUILD_TOOLS enabled
323     
324     This commit mainly reverts parts of following commits:
325         0eebc21db831211738acc938566bbc29d68d45db
326         d8109b7a4fede1660e0dbd73735f1a9e3fd79eec
327         e59595806c045916ab4ef15ef7047c1a728b2da9
328         2d6cd58ee1cd7c5073980f358c71b2898ad16b4c
329     
330     They declared  lots of stuff deprecated, but in
331     fact it's not deprecated just a bit different
332     usage pipeline. Anyway, deprecation shall not
333     happen spontaneously as a part of other changes.
334     And for sure shall not break anything.
335
336 commit 7a9c83d3ccaa2f0015f88b9156d7662c46244b4a
337 Author: Sergey Sharybin <sergey.vfx@gmail.com>
338 Date:   Sat Apr 6 20:49:05 2013 +0600
339
340     Revert "Change libmv's bilinear sampling to assume the same"
341     
342     Revert changes to bilinear sampler which were originally
343     aimed to match blender's pixel center (where integer coord
344     is a left-bottom corner, x.5 coords are centers.
345     
346     The reason of revert is changing this assumption in only
347     sampler didn't work well and lead to wrong results of
348     BlurredImageAndDerivativesChannels for example.
349     
350     Discovered when was doing unit-tests for brute region tracker.
351     
352     This reverts commit daa354c0735b954b0cd7725626e9a3d67416d46b.
353
354 commit 15f3bb00340933ce753a1a55e9cde9383352e259
355 Author: Sergey Sharybin <sergey.vfx@gmail.com>
356 Date:   Sat Apr 6 18:37:37 2013 +0600
357
358     Added basic test for brute region tracker
359     
360     It is failing at this moment and this is caused because
361     of how SampleLinear works - seems it's assumption about
362     pixel center is not correct for internal sampling.
363
364 commit 1146602972c07e99a9e4ab37d35ac83aec490e60
365 Author: Sergey Sharybin <sergey.vfx@gmail.com>
366 Date:   Sat Apr 6 16:54:08 2013 +0600
367
368     Tweak to KLT region tracker test
369     
370     KLT is usually used to track relatively small
371     motions, and in this case motion almost equals
372     to half window size. This confuses math and
373     leads to not so much expected result.
374     
375     Further, not actually sure this is nice idea
376     to use KLT in such synthetic case.
377
378 commit 1e22cbcac480863b6b5abc5c85f23dc70748933a
379 Author: Sergey Sharybin <sergey.vfx@gmail.com>
380 Date:   Sat Apr 6 16:40:59 2013 +0600
381
382     Pyramid tracker unit test fix
383     
384     Issue was caused by trackers modifying guessed
385     point location even in case of failure. So made
386     id so both level 0 and level 3 of pyramid are
387     starting from the same initial guessed location.
388     
389     Modifying locations in case tracker returns false
390     is not actually a bug - someone could still want
391     to use that location. False in this case  means
392     more like "returned location is not so much
393     accurate".
394
395 commit 3ad5e0efa071f202ee7c2034d70dd97aa62b13aa
396 Author: Sergey Sharybin <sergey.vfx@gmail.com>
397 Date:   Sat Apr 6 00:38:40 2013 +0600
398
399     Intersect unit test fix
400     
401     EuclideanIntersect is not aware of camera calibration
402     matrix yet and always assumes it to be an identity.
403     
404     So using non-identity matrix to construct sample case
405     leads to wrong projection results.
406     
407     For now made it so test case uses identity matrix for
408     calibration.
409     
410     Also fixed variable shadowing which lead to wrong
411     markers positions (were either zero or undefined).
412
413 commit 3a153c2b65f38653a36c36975018f68d42d60670
414 Author: Sergey Sharybin <sergey.vfx@gmail.com>
415 Date:   Sat Apr 6 00:12:12 2013 +0600
416
417     Camera intrinsics unit tests fixes
418     
419     - Existing test ApplyIsInvertibleSimple was not
420       doing right thing - distortion model used there
421       was ininvertible.
422     
423       Tweaked parameters in a way model is invertible now.
424     
425     - Added some own tests which tests;
426     
427       * Principal point always maps from pixel space to
428         zero normalized position.
429     
430       * Some basic tests to check whether individual
431         apply/invert works correct.
432
433 commit e3b2bccba6145290738a6677c14f7369ec7a38cd
434 Author: Sergey Sharybin <sergey.vfx@gmail.com>
435 Date:   Thu Apr 4 02:59:58 2013 +0600
436
437     Suppress strict compiler warnings in glags/glog libraries
438
439 commit 5fca459adcf0a3419fa9cd8d983dc2c952d02647
440 Author: Sergey Sharybin <sergey.vfx@gmail.com>
441 Date:   Thu Apr 4 01:20:18 2013 +0600
442
443     Lint cleanup, mostly white space and line width.
444     
445     Also moved own includes to the top of files.
446     
447     Should be no functional changes :)
448
449 commit 9a9dd458a622928b91dbd3c79900577923283838
450 Author: Sergey Sharybin <sergey.vfx@gmail.com>
451 Date:   Fri Mar 29 00:20:29 2013 +0600
452
453     Fix for TransformTracks in uncalibrated pipeline
454     
455     Transformation matrix was completely ignored by
456     TransformTracks() and final marker coordinate
457     exactly matched it's source coordinates.
458     
459     Seems to be just a typo in vector usage: need to
460     use "b" (which is transformed one) instead of "a"
461     when converting projective coordinate to 2D space.
462
463 commit d35766cc9901609e32f4d80faba715695bea3c40
464 Author: Sergey Sharybin <sergey.vfx@gmail.com>
465 Date:   Fri Mar 29 00:19:11 2013 +0600
466
467     Revert part of e2eb58c4230f94ef0c72fb4005e5434088d52e80
468     
469     That commit included one change which shall have been
470     go as separate commit with more detailed description.
471
472 commit e8d71b4e96fd78eb60773b6557d66da672e65753
473 Author: Sergey Sharybin <sergey.vfx@gmail.com>
474 Date:   Wed Mar 27 20:37:05 2013 +0600
475
476     Silenced more warnings
477     
478     - Added includes of own header to fast implementation files.
479     
480     - Camera intrinsics wouldn't complain about unknown pragma when
481       building without OpenMP support.
482     
483     TODO: Make it a CMake option to build libmv with OpenMP support.
484           Currently multi-threaded intrinsics only available when
485           using custom CMake rules for bundled libmv version
486           (as it's done in Blender).
487
488 commit ad442812654f270dc088394410fda1b81b8dc450
489 Author: Sergey Sharybin <sergey.vfx@gmail.com>
490 Date:   Wed Mar 27 20:18:51 2013 +0600
491
492     Multithreaded camera intrinsics
493     
494     Implemented multithreaded buffer (un)distortion
495     for camera intrinsics using OpenMP.
496     
497     By default, (un)distortion is single-threaded,
498     but it is possible to as CameraIntrinsics to
499     use more threads by calling SetThreads method.
500
501 commit c88b4881096174a16a9f9e6fc2c9dcad3e255b25
502 Author: Sergey Sharybin <sergey.vfx@gmail.com>
503 Date:   Wed Mar 27 18:45:09 2013 +0600
504
505     Movie functions implementation from panography header
506     into own CC implementation file.
507     
508     Before this all panography functions were declared as
509     static, which is not so much useful from re-useability
510     point of view.
511
512 commit 2d2faf9104bc035722cff6775e1b8e7c93143aba
513 Author: Sergey Sharybin <sergey.vfx@gmail.com>
514 Date:   Wed Mar 27 18:37:36 2013 +0600
515
516     Build shared Ceres library only if BUILD_SHARED_LIBS is enabled
517
518 commit daa3ddd3260ccaf2bf9c72eadb89213d91e549ec
519 Author: Sergey Sharybin <sergey.vfx@gmail.com>
520 Date:   Wed Mar 27 18:21:52 2013 +0600
521
522     Update Ceres to upstream version 1.5.0
523
524 commit cf5dc678878345ea3f221ce50cb2b9e539c2ab38
525 Author: Sergey Sharybin <sergey.vfx@gmail.com>
526 Date:   Wed Mar 27 15:06:24 2013 +0600
527
528     Code cleanup: removed more deprecated FFmpeg API usage
529     
530     This time in qt-tracker application.
531
532 commit e2eb58c4230f94ef0c72fb4005e5434088d52e80
533 Author: Sergey Sharybin <sergey.vfx@gmail.com>
534 Date:   Tue Mar 26 17:19:51 2013 +0600
535
536     Code cleanup: silent unused variables warnings
537
538 commit af89bb24667e39b7e655173ea807fdcfbeef4422
539 Author: Sergey Sharybin <sergey.vfx@gmail.com>
540 Date:   Tue Mar 26 16:54:14 2013 +0600
541
542     Code cleanup: no need to declare empty body for ProgressUpdateCallback:invoke
543     
544     Make force this method to be overridden by derivative classes.
545     Also removed currently unneeded callbacks.cc.
546
547 commit 0441d4ee06fad0219256a5704f931eec916a3868
548 Author: Sergey Sharybin <sergey.vfx@gmail.com>
549 Date:   Tue Mar 26 16:37:27 2013 +0600
550
551     Code cleanup: silent type narrowing in qt-tracker
552
553 commit cd4b61c976448d0fdedefb3ed4b21d70e078f94b
554 Author: Sergey Sharybin <sergey.vfx@gmail.com>
555 Date:   Tue Mar 26 16:26:39 2013 +0600
556
557     Changes to unit testing
558     
559     - Move ceres test binaries to ${LIBMV_TESTS_OUTPUT_DIR}/ceres,
560       so they don't mess with libmv's application binaries and
561       tests.
562     
563     - Removed ceres_ prefix from ceres unit tests, only use this
564       prefix for targets (targets need to be unique name).
565     
566     - Added unit tests data for ceres, otherwise system_test fails.
567     
568     - Restored "test" makefile target.
569
570 commit cf704ada08acc8b26167e7bfb3e1e88fd278de23
571 Author: Sergey Sharybin <sergey.vfx@gmail.com>
572 Date:   Tue Mar 26 15:01:15 2013 +0600
573
574     Code cleanup: use rw-rw-r-- mode for source files
575
576 commit 64b31e3e43acb52aaf6f591b9d1c2449bf6ef3bd
577 Author: Sergey Sharybin <sergey.vfx@gmail.com>
578 Date:   Tue Mar 26 14:57:46 2013 +0600
579
580     Code cleanup: don't use deprecated FFmpeg API functions
581
582 commit 2a3676499548ad5dba5a5c5eadf3bb71e640b612
583 Author: Sergey Sharybin <sergey.vfx@gmail.com>
584 Date:   Tue Mar 5 17:40:52 2013 +0600
585
586     Switch from DENSE_NORMAL_CHOLESKY to DENSE_QR
587     
588     DENSE_QR is better behaved numerically and after recent
589     changes from Sameer there's no big difference in speed.
590
591 commit bcb920df02133da5b7e55fbc74edb9222004eecc
592 Author: Sergey Sharybin <sergey.vfx@gmail.com>
593 Date:   Tue Mar 5 17:15:43 2013 +0600
594
595     Update Ceres to 1.5RC3
596     
597     It brings optimization of DENSE_QR and DENSE_SCHUR solvers.
598
599 commit 473996468a4e67e7c860169181a4ff31ce9b8c80
600 Author: Sergey Sharybin <sergey.vfx@gmail.com>
601 Date:   Fri Mar 1 17:44:54 2013 +0600
602
603     Fixed incorrect order of arguments passing
604     to EXPECT_EQ in keyframe selection tests.