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
2013-06-28fix for crash when setting the cursor in background mode.Campbell Barton
2013-06-25style cleanupCampbell Barton
2013-06-12Cleaned code a bit around 2D stabilizationSergey Sharybin
Hopefully it's more readable now. Took me a while to remmeber all the stuff going on here while was looking into possibility of implementing some feature here.
2013-05-31Fix #35581: Crash when using Track RefineSergey Sharybin
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-26BLI_math rename functions:Campbell Barton
- mult_m4_m4m4 -> mul_m4_m4m4 - mult_m3_m3m4 -> mul_m3_m3m4 these temporary names were used to avoid problems when argument order was switched.
2013-05-14style cleanupCampbell Barton
2013-05-13Cleanup and small improvements to libmvSergey Sharybin
- 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.
2013-05-13Apply scale on scene reconstruction when applying scale on cameraSergey Sharybin
This means when you've got reconstructed scene assigned to a 3d camera (via camera solver constraint) and applies scale on this camera from Ctrl-A menu, scale will be applied on the reconstructed scene and reset camera size to identity. This is very useful feature for scene orientation, when you'll just scale camera by S in the viewport to match bundles some points in the space, and then you'll easiy make camera have identity scale (which is needed for nice working moblur and other things mentioning by Sebastian :) without loosing scale of bundles themselves. Behavior of apply scale for cameras without clip assigned to them does not change at all.
2013-05-13add missing STACK_INIT, also quiet float <> double conversion warnings.Campbell Barton
2013-05-13Remplace bunch of annoying ifdefs in tracking.c with a libmv-capi_stub.ccSergey Sharybin
Makes code in tracking.cc much easier to understand and modify, without worring to breck compulation with Libmv disabled. It is still possible compilation will break due to libmv-capi changes, but that's not happening so much often.
2013-05-13Fix for keyed marker search not happening correct in some casesSergey Sharybin
Was an heuristic failure writen for cases when there's no keyframe in desired direction. Shall all be fine now.
2013-05-12Fix for "no functional changes" commitSergey Sharybin
Apparently eitehr merge conflict happened, or i had too much depression in blood, but first camera was just wrong after reconstruction.
2013-05-12Refine markers position operatorSergey Sharybin
This operator will run a tracker from previous keyframe to current frame for all selected markers. Current markers positions are considering initial position guess which could be updated by a tracker for better match. Useful in cases when feature disappears from the frame and then appears again. Usage in this case is the following: - When feature point re-appeared on frame, manully place marker on it. - Use Refine Markers operation (which is in Track panel) to allow tracker to find a better match. Depending on direction of tracking use either Forwards or Backwards refining. It's easy: if trackign happens forwards, use Refine Frowards, otherwise use Refine Backwards :)
2013-05-12Documentation for functions inside tracking.cSergey Sharybin
Additional changes: - Cleaned up sources to reduce mess in some big functions. - Removed unused function from libmv c-api. - Made functions naming more consistent. - Use bool for internal stuff in tracking.c. Shall be no functional changes :)
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-05-06Fix for crash when using 2D stabilization for float movie clipsSergey Sharybin
Also removed unneeded image buffer scaling, it was only needed for "early output" if there was no rotation. That is no longer supported since it used to pixelate result a lot and interpolation is always used now. Saves quite a few of memory and CPU cycles.
2013-05-06Fix missing angle zerolization when 2d stabilization is disabled.Sergey Sharybin
Not sure how it wasn't noticed for so long, probably check happens in callee as well, but better be safe than sorry here.
2013-04-082D stabilization default filter to bilinearSergey Sharybin
2013-04-08Camera stabilization fixes and improvementsSergey Sharybin
- Nearest interpolation was always used when there's no rotation for stabilization. Was a failure of optimization heuristic. - Made 2d stabilization frame acquiring threaded. This function is only used for display and sequencer which will only benefit of threads here. - Fixed bug introduced in r48749 which lead to re-making stable frame on every redraw.
2013-04-06Revert change made to bilinear sampler in libmvSergey Sharybin
This made preview working but that broke internals of tracking. Namely, BlurredImageAndDerivativesChannels is giving much more blurred image because it was assuming pixel center is an integer position. Guess other parts of libmv used to suffer because of this issue. Now pixel centering happens in blender side, and libmv assumes integer position is a pixel center.
2013-03-25More new data names translation (most cases should be covered now).Bastien Montagne
Also done a few cleanup here and there...
2013-03-15add in ifdef for WITH_LIBMV, correct own error passing float[2] as float[3]Campbell Barton
2013-03-15Multi-threaded frame calculation for movie clip proxiesSergey Sharybin
This commit implements multi-threaded calculation of frames when building proxies. Both scaling and undistortion steps are now threaded. Frames and proxy resolution are still handled one-by-one, saving files after every single step. So if HDD is not so fast, this commit could have not so much benefit. Internal changes: - Added IMB_scaleImBuf_threaded which scales given image buffer in multiple threads and uses bilinear filtering. - libmv's camera intrinsics now have SetThreads() method which is used to specify how many OpenMP threads to use for buffer distortion/undistortion. And yeah, this code is using OpenMP for threading. - Reshuffled a bit libmv-capi calls and added function BKE_tracking_distortion_set_threads to specify number of threads used by intrinscis.
2013-03-09code cleanup: favor braces when blocks have mixed brace use.Campbell Barton
2013-03-06Tracking dopesheet fixes:Sergey Sharybin
- Dopesheet need to be updated when adding or switching between objects. - After removing object it shall also be tagged for update, otherwise crash will likely happen.
2013-03-06code cleanup: quiet float/double conversion warnings.Campbell Barton
2013-03-05patch [#34103]Campbell Barton
from Lawrence D'Oliveiro (ldo) More use of bool type, necessitating adding inclusion of BLI_utildefines.h, or moving it up in the inclusion order if it was already included, in various places - storage.c: make some variables only used in bli_builddir local to that - storage.c: BLI_file_descriptor_size should allow 0 as a valid file descriptor - path_util.c: make pointers to non-reentrant storage returned from folder routines const, necessitating making variables holding these returned pointers const elsewhere as well - path_util.c: BLI_string_to_utf8 closes iconv context in case of conversion error - blf_lang.c: fill_locales routine now has its own "languages" local variable to construct paths (was stealing internal storage belonging to BLI_get_folder before)
2013-03-04Fix for incorrect subpixel precision of marker when using track offsetSergey Sharybin
Issue was caused by the way how pattern sampling happens in case of anchored display: track offset is applying on search buffer which means offset is rounding to an integer. Fractional pat of offset was completely ignoring which lead to jumps in pattern buffer. This was only a visualization issue in track preview widget.
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.
2013-02-26Camera tracking: support refining radial K1, K2 onlySergey Sharybin
This commits adds extra refirenment entry in the menu which is "K1, K2" and which will apparently refine only this distortion coefficients. This would be useful in cases when you know for sure focal length (which could be obtained from lens, EXIF and so) but not sure about how good you manual calibration is. Be careful tho, there're no internal constraints on this coefficients so distortion model could just screw up into insane values.
2013-02-25Fix compilation error with libmv disabledSergey Sharybin
2013-02-25Camera tracking, minor changes:Sergey Sharybin
- Fill in image dimension for camera intrinsics used for solution refirement. - Retrieve K3 from camera intrinsics after refining. Shall be no functional changes, just makes things clear and robust for further improvements.
2013-02-25Camera tracking: libmv distortion API now also uses camera intrinsicsSergey Sharybin
structure instead of passing all the parameters to every function. Makes it much easier to tweak distortion model. --- svn merge -r52854:52855 ^/branches/soc-2011-tomato
2013-02-25code cleanup: camera trackingSergey Sharybin
- Moved keyframes and refirement flags into reconstruction options structure - Moved distortion coefficients and other camera intrinsics into own structure - Cleaned up reconstruction functions in libmv c-api --- svn merge -r52853:52854 ^/branches/soc-2011-tomato
2013-02-22Motion tracking dopesheetSergey Sharybin
Highlight background depending on number of tracks existing on frame. This is not so much mathematically accurate displaying where things shall be improved, but it's nice feedback about which frames better be reviewed. Bad frames are tracks < 8, highlighted with red. OK-ish frame are 8 <= tracks < 16, highlighted with yellow. Could be some artifacts with color region start/end, this is a bit unclear what exactly expected to be highlighted -- frames are displayed as dots, but in fact they're quite noticeable segments. --- svn merge -r54572:54573 ^/branches/soc-2011-tomato
2013-02-18Correction to r54600Sergey Sharybin
Calculate dependent area based on distortion model rather than using 15% of image resolution for this. Some assumptions here: - We're assuming real-life camera calibration is used here - Maximal undistortion delta would be achieved on frame boundary - Distortion fully goes inside frame This makes it possible to approximate margin for distortion by checking undistortion delta across frame boundary and use it for dependent area of interest. We do not use any formula-based equation here because we're likely support other distortion models and in that case it'll be stupid to try detecting formula here.
2013-02-05Tracking settings for new clip didn't match default resetSergey Sharybin
2013-01-12code cleanup: style and replace (float)sin, (float)cos with sinf, cosfCampbell Barton
2012-12-11code cleanup: neareast -> nearestCampbell Barton
2012-12-10Camera tracking: libmv distortion API now also uses camera intrinsics structureSergey Sharybin
instead of passing all the parameters to every function. Makes it much easier to tweak distortion model.
2012-12-10code cleanup: camera trackingSergey Sharybin
- Moved keyframes and refirement flags into reconstruction options structure - Moved distortion coefficients and other camera intrinsics into own structure - Cleaned up reconstruction functions in libmv c-api
2012-12-10Merging r51923 through r52851 from trunk into soc-2011-tomatoSergey Sharybin
2012-11-16code cleanup: replace most DO_MINMAX2 -> minmax_v2v2_v2Campbell Barton
also add UNPACK macros's. handy for printing vectors for eg.
2012-11-07Fixed crashes when motion tracks are zero-sizedSergey Sharybin
This is probably versioning issue happened when both trunk and tomato were mixed to work on the same file. Anyway, there're few files here locally and it's probably other users do have the same files, so lets keep things safe here :)
2012-11-05Merging r50625 through r51896 from trunk into soc-2011-tomatoSergey Sharybin
Merging just in case we'll want to develop some experimental stuff
2012-11-05Camera Tracking: allow fallback to reprojection resection by user demandSergey Sharybin
This fixes some "regressions" introduced in rev50781 which lead to much worse solution in some cases. Now it's possible to bring old behavior back. Perhaps it's more like temporal solution for time being smarter solution is found. But finding such a solution isn't so fast, so let's bring manual control over reprojection usage. But anyway, imo it's now nice to have a structure which could be used to pass different settings to the solver.
2012-11-02all remove functions now invalidate the RNA objects passed, to help script ↵Campbell Barton
authors to avoid bugs with accessing removed data.
2012-10-26Big i18n commit: add "reports" from bmesh/readfile/tracking/dynapaint (and a ↵Bastien Montagne
few others), and another bunch of UI messages tweaks/fixes, as well as some BKE_report()<->BKE_reportf()...
2012-10-26Camera tracking fixesSergey Sharybin
- Dopesheet should be invalidated after solution - Prevent crash when non-camera object is set as scene camera