Blender Git Statistics -> Developers -> keir
Keir Mierle (keir)
Total Commits : 44
Master Commits : 41
Branch Commits : 3
First Commit : October 30, 2011
Latest Commit : October 30, 2014
Commits by Month
Date | Number of Commits | |
---|---|---|
October, 2014 | 1 | |
September, 2014 | 1 | |
August, 2014 | 0 | |
July, 2014 | 0 | |
June, 2014 | 0 | |
May, 2014 | 1 | |
April, 2014 | 0 | |
March, 2014 | 0 | |
February, 2014 | 0 | |
January, 2014 | 0 | |
December, 2013 | 0 | |
November, 2013 | 0 | |
October, 2013 | 2 | |
September, 2013 | 0 | |
August, 2013 | 1 | |
July, 2013 | 0 | |
June, 2013 | 0 | |
May, 2013 | 0 | |
April, 2013 | 0 | |
March, 2013 | 0 | |
February, 2013 | 1 | |
January, 2013 | 0 | |
December, 2012 | 0 | |
November, 2012 | 0 | |
October, 2012 | 0 | |
September, 2012 | 5 | |
August, 2012 | 0 | |
July, 2012 | 0 | |
June, 2012 | 5 | |
May, 2012 | 13 | |
April, 2012 | 0 | |
March, 2012 | 0 | |
February, 2012 | 0 | |
January, 2012 | 0 | |
December, 2011 | 12 | |
November, 2011 | 1 | |
October, 2011 | 1 |
Commit Distribution
Path | Number of Commits |
---|---|
master | 41 |
depsgraph_refactor | 1 |
soc-2011-tomato | 1 |
libmv_prediction | 1 |
Favourite Files
Filename | Total Edits |
---|---|
track_region.cc | 18 |
tracking.c | 14 |
track_region.h | 12 |
space_clip.py | 9 |
libmv-capi.cpp | 9 |
DNA_tracking_types.h | 9 |
libmv-capi.h | 8 |
rna_tracking.c | 7 |
esm_region_tracker.cc | 6 |
CMakeLists.txt | 5 |
File Changes
Action | Total | Per Commit |
---|---|---|
Added | 45 | 1.0 |
Modified | 162 | 3.7 |
Code Changes
Action | Total | Per Commit |
---|---|---|
Lines Added | 3 628 | 90.7 |
Lines Removed | 1 449 | 36.2 |
Latest commits
October 30, 2014, 18:03 (GMT) |
Libmv: Initial commit of unfinished AutoTrack API This starts the creating the new AutoTrack API. The new API will make it possible for libmv to do full autotracking, including predictive tracking and also support multiple motion models (3D planes etc). The first goal (not in this patch) is to convert Blender to use the new API without adding any new functionality. This API currently contanins: - Frame accessor to access frames which are stored in Blender side. - New Tracks implementation - New Reconstruction implementation Currently this API only tested on doing the same frame-to-frame tracking as the old API allowed to do. But it also supports now predictive tracking which is based on the Kalman filter. |
Revision 9b927ef by Keir Mierle / Sergey Sharybin (libmv_prediction) September 26, 2014, 18:51 (GMT) |
Initial commit of unfinished AutoTrack API This starts the creating the new AutoTrack API. The new API will make it possible for libmv to do full autotracking, including predictive tracking and also support multiple motion models (3D planes etc). The first goal (not in this patch) is to convert Blender to use the new API without adding any new functionality. This API currently contanins: - Frame accessor to access frames which are stored in Blender side. - New Tracks implementation - New Reconstruction implementation Currently this API only tested on doing the same frame-to-frame tracking as the old API allowed to do. But it also supports now predictive tracking which is based on the Kalman filter. |
Revision e13fa94 by Keir Mierle (depsgraph_refactor) May 20, 2014, 16:25 (GMT) |
Removed the IDKey for building relations, due to ambiguity and failing to add relations. To add a relations between operations we need to address a specific component or operation directly. |
October 29, 2013, 01:06 (GMT) |
Eagerly attempt to refine a track before doing a brute search Before the refinement phase of tracking, a brute force SAD search is run across the search area. This works well but is slow; especially if the guess for the track's location is accurate. This patch runs a refinement phase before running a brute force search, hoping that the guessed position (in x2, y2) is close to the best answer. If it is, then no brute search is done. If it is not, then a normal brute force search followed by refinement is done. In some cases this may produce worse tracks than before; the regressions will need investigation. The predictive motion model (to be implemented) will reduce the probability of that happening. |
October 28, 2013, 18:34 (GMT) |
Fix bug where libmv tracking incorrectly succeeds on failure Before this patch, if Ceres returned USER_SUCCESS indicating that Ceres was only changing the tracked quad slightly between iterations (indicating convergence), no final correlation check was done. This leads to incorrectly returning that the tracking was successful, when it actually failed. |
Revision e021860 by Keir Mierle (soc-2011-tomato) August 2, 2013, 07:59 (GMT) |
Add Procrustes PNP ("PPnP") resection algorithm to libmv This adds a new Euclidean resection method, used to create the initial reconstruction in the motion tracker, to libmv. The method is based on the Procrustes PNP algorithm (aka "PPnP"). Currently the algorithm is not connected with the motion tracker, but it will be eventually since it supports initialization. Having an initial guess when doing resection is important for ambiguous cases where potentially the user could offer extra guidance to the solver, in the form of "this point is in front of that point". |
February 25, 2013, 20:00 (GMT) |
Switch motion tracker bundle adjustment to Ceres. Patch originally written by me, then finished by Sergey. Big thanks to Sergey for troopering through and fixing the many issues with my original (not compilable) patch. The Ceres implementation uses 2 parameter blocks for each camera (1 for rotation and 1 for translation), 1 parameter block for common intrinsics (focal length etc) and 1 parameter block for each track (e.g. bundle or 3D point). We turn on some fancy optimizer options to get better performance, in particular: options.preconditioner_type = ceres::SCHUR_JACOBI; options.linear_solver_type = ceres::ITERATIVE_SCHUR; options.use_inner_iterations = true; options.use_nonmonotonic_steps = true; options.max_num_iterations = 100; Special thanks to Sameer Agarwal of Ceres fame for splitting out the SCHUR_JACOBI preconditioner so that it didn't depend on CHOLMOD. Previously we could not use that preconditioner in Blender because CHOLMOD is too large of a dependency for Blender. BundleIntrinsicsLogMessage: - Moved bunch of if(foo) LG << "bar" into this function, to make EuclideanBundleCommonIntrinsics a little bit easier to follow. EuclideanBundle: - Fix RMSE logging. |
September 20, 2012, 18:55 (GMT) |
Make Euclidean resection "always" succeed. The Euclidean resection code had a magical constant, 1e-3, used to compare the results of solving an equation. This failure detection was well-intended, trying to prevent poor solutions from getting made without notifying the caller. Unfortunately in practice, this threshold is too conservative. Furthermore, it is not clear the threshold should exist at all; the purpose of the Euclidean resection is to come up with the best solution it can; other methods (e.g. reprojection error) should be used to compare whether the method succeeded. This commit changes the Euclidean EPnP code to always succeed, causing the previous fallback to projective resection to never run. In most cases, this will result in better reconstructions. This should, in most cases, fix the dreaded "flipping" problem. |
September 20, 2012, 02:27 (GMT) |
Fix variable naming in the planar tracker. |
September 20, 2012, 02:10 (GMT) |
Add smarter tolerance checking in the planar tracker. The planar tracker uses Ceres for the refinement stage. During refinement, Ceres iteratively updates the parameters with the latest best guess. If the change in the parameters falls below a threshold, Ceres will abort successfully ("converged"). For the case of pure translation tracking, the parameters are exactly the two pixel shifts (dx, dy), and measuring the change in these parameters gives a meaningful termination criterion. However, for all the other parameterizations like affine, where the parameterization involves affine parameters that have no physical interpretation, Ceres is left with no way to terminate the solver early. With the existing code, often many iterations are run long after Ceres has found a solution sufficiently accurate for all tracking needs. No one needs tracking with a quadrillionth of a pixel accuracy; that time is wasted. This patch extends the existing iteration callback that is passed in to Ceres to check if the pattern has fallen out of the search window, to also check if the optimizer has made a tiny step. In particular, if the maximum shift of any patch corner between two successful optimizer steps is less than a threshold (currently 0.005 pixels), the track is declared successful and tracking is terminated. This leads to dramatic speed increases in some cases, with little to no loss in track quality. This is especially apparent when tracking patches with affine or perspective motion models. For example, on some tracking cases I tried, the iterations Ceres took went from 50 to 3. |
MiikaHweb - Blender Git Statistics v1.06