Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-12-31Hopefully fix compilation error after recent updateSergey Sharybin
2014-12-31Libmv: Update to latest upstream versionSergey Sharybin
Main purpose of this is to bring new gflags library which is more likely to have a fix for undefined order of static variables initialization and also to bring new glog where some compilation error are fixed (which are only visible with more strict checks with clang and c++11 enabled).
2014-10-30Libmv: Initial commit of unfinished AutoTrack APIKeir Mierle
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.
2014-06-18GTest unit testing frameworkSergey Sharybin
Currently covers only small set of functionality.
2014-04-23Libmv cleanup: move aligned malloc implementation into own fileSergey Sharybin
It was rather stupid having it in brute region tracker, now it is in own file in base library.
2014-04-17Support multiple distortion models, including a new division modelSergey Sharybin
This commit makes it so CameraIntrinsics is no longer hardcoded to use the traditional polynomial radial distortion model. Currently the distortion code has generic logic which is shared between different distortion models, but had no other models until now. This moves everything specific to the polynomial radial distortion to a subclass PolynomialDistortionCameraIntrinsics(), and adds a new division distortion model suitable for cameras such as the GoPro which have much stronger distortion due to their fisheye lens. This also cleans up the internal API of CameraIntrinsics to make it easier to understand and reduces old C-style code. New distortion model is available in the Lens panel of MCE. - Polynomial is the old well-known model - Division is the new one which s intended to deal better with huge distortion. Coefficients of this model works independent from each other and for division model one probably want to have positive values to have a barrel distortion.
2014-02-06Bye-bye FAST!Sergey Sharybin
FAST detector has been replaced with fancier Harris, so no need to keep FAST library in the sources now.
2014-01-28Rework detector API and implement Harris detectorSergey Sharybin
Switch the detector API to a single function which accepts a float image and detector options. This makes usage of feature detection more unified across different algorithms. Options structure is pretty much straightforward and contains detector to be used and all the detector-specific settings. Also implemented Harris feature detection algorithm which is not as fast as FAST one but is expected to detect more robust feature points. It is also likely that less features are detected, but better quality than quantity. Blender will now use Harris detector by default, later we'll remove FAST detector.
2013-05-30Remove files unused by blender's trackerSergey Sharybin
They were giving compilation error with msvc2012, and instead of having workaround in them let's drop them away form blender (they're not used even).
2013-05-30Motion tracking: automatic keyframe selectionSergey Sharybin
Implements an automatic keyframe selection algorithm which uses couple of approaches to find out best keyframes candidates: - First, slightly modifier Pollefeys's criteria is used, which limits correspondence ration from 80% to 100%. This allows to reject keyframe candidate early without doing heavy math in cases there're not much common features with first keyframe. - Second step is based on Geometric Robust Information Criteria (aka GRIC), which checks whether features motion between candidate keyframes is better defined by homography or fundamental matrices. To be a good keyframe candidate, fundamental matrix need to define motion better than homography (in this case F-GRIC will be smaller than H-GRIC). This two criteria are well described in this paper: http://www.cs.ait.ac.th/~mdailey/papers/Tahir-KeyFrame.pdf - Final step is based on estimating reconstruction error of a full-scene solution using candidate keyframes. This part is based on the following paper: ftp://ftp.tnt.uni-hannover.de/pub/papers/2004/ECCV2004-TTHBAW.pdf This step requires reconstruction using candidate keyframes and obtaining covariance matrix of 3D points positions. Reconstruction was done pretty much straightforward using other simple pipeline routines, and for covariance estimation pseudo-inverse of Hessian is used, which is in this case (J^T * J)+, where + denotes pseudo-inverse. Jacobian matrix is estimating using Ceres evaluate API. This is also crucial to get rid of possible gauge ambiguity, which is in our case made by zero-ing 7 (by gauge freedoms number) eigen values in pseudo-inverse. There're still room for improving and optimizing the code, but we need some point to start with anyway :) Thanks to Keir Mierle and Sameer Agarwal who assisted a lot to make this feature working.
2013-05-09Reconstructed scene scale ambiguity improvementSergey Sharybin
Made it so reconstructed scene always scaled in a way that variance of camera centers is unity. This solves "issues" when different keyframes will give the same reprojection error but will give scenes with different.scale, which could easily have been considered as a bad keyframe combination. This change is essential for automatic keyframe selection algorithm to work reliable for user.
2013-04-05Update libmv to current upstream versionSergey Sharybin
- Solves some strict compilation warning - Style/code cleanup
2013-02-28Remove unused rigid registration codeSergey Sharybin
There're some features planned which would require rigid registration, but this code would need to be re-done anyway to use new minimizer and solving some issues with ICP algorithm there.
2013-02-28Modal (aka tripod) solver reworkSergey Sharybin
Several major things are done in this commit: - First of all, logic of modal solver was changed. We do not rely on only minimizer to take care of guessing rotation for frame, but we're using analytical rotation computation for point clouds to obtain initial rotation. Then this rotation is being refined using Ceres minimizer and now instead of minimizing average distance between points of point of two clouds, minimization of reprojection error of point cloud onto frame happens. This gives quite a bit of precision improvement. - Second bigger improvement here is using bundle adjustment for a result of first step when we're only estimating rotation between neighbor images and reprojecting markers. This averages error across the image sequence avoiding error accumulation. Also, this will tweak bundles themselves a bit for better match. - And last bigger improvement here is support of camera intrinsics refirenment. This allowed to significantly improve solution for real-life footage and results after such refining are much more usable than it were before. Thanks to Keir for the help and code review.
2012-12-20Camera tracking: synchronize changes with own branchSergey Sharybin
Should be no functional changes.
2012-04-14libmv: bundle new upstream version of libmv from own branchSergey Sharybin
Added modal solver module which is needed for tripod solving. For details of this solver read changelog of libmv.
2012-04-12libmv: bundle new upstream version from own branch with rigid registration ↵Sergey Sharybin
implementation Currently not used in blender code but is needed for some current work.
2012-04-11libmv: bundle new upstream version from own branch which should supportSergey Sharybin
compilation of glog on hurd platform.
2012-03-11Bundle new upstream version of libmv from own branchSergey Sharybin
This version of libmv includes new gflags and glog libraries which makes it possible to compile libmv with clang compiler. Also remove code from CMakeLists which was disabling libmv if using clang. Tested on linux with gcc-4.6 and clang-3.0, windows cmake+msvc and scons+mingw. Could be some issues with other platforms/build system which shall be simple to resolve.
2011-12-15Added note that cmake/scons rules are automatically generated for extern/libmvSergey Sharybin
Also updated generation scripts and templates
2011-11-07Camera tracking integrationSergey Sharybin
=========================== Commiting camera tracking integration gsoc project into trunk. This commit includes: - Bundled version of libmv library (with some changes against official repo, re-sync with libmv repo a bit later) - New datatype ID called MovieClip which is optimized to work with movie clips (both of movie files and image sequences) and doing camera/motion tracking operations. - New editor called Clip Editor which is currently used for motion/tracking stuff only, but which can be easily extended to work with masks too. This editor supports: * Loading movie files/image sequences * Build proxies with different size for loaded movie clip, also supports building undistorted proxies to increase speed of playback in undistorted mode. * Manual lens distortion mode calibration using grid and grease pencil * Supervised 2D tracking using two different algorithms KLT and SAD. * Basic algorithm for feature detection * Camera motion solving. scene orientation - New constraints to "link" scene objects with solved motions from clip: * Follow Track (make object follow 2D motion of track with given name or parent object to reconstructed 3D position of track) * Camera Solver to make camera moving in the same way as reconstructed camera This commit NOT includes changes from tomato branch: - New nodes (they'll be commited as separated patch) - Automatic image offset guessing for image input node and image editor (need to do more tests and gather more feedback) - Code cleanup in libmv-capi. It's not so critical cleanup, just increasing readability and understanadability of code. Better to make this chaneg when Keir will finish his current patch. More details about this project can be found on this page: http://wiki.blender.org/index.php/User:Nazg-gul/GSoC-2011 Further development of small features would be done in trunk, bigger/experimental features would first be implemented in tomato branch.