diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-02-26 15:46:38 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-02-26 15:46:38 +0400 |
commit | 0ec75be1c6c166d97dfb713169e381977df1da21 (patch) | |
tree | a76f6dfd57dc5a2e6390a9a2b98eb916d3fc93f1 | |
parent | 05a5cbbda2287ce89bbd3ce370008aabb319913f (diff) |
Camera tracking: support refining radial K1, K2 only
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.
-rw-r--r-- | extern/libmv/libmv-capi.cpp | 4 | ||||
-rw-r--r-- | extern/libmv/libmv/simple_pipeline/bundle.cc | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/tracking.c | 4 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_tracking.c | 3 |
4 files changed, 11 insertions, 3 deletions
diff --git a/extern/libmv/libmv-capi.cpp b/extern/libmv/libmv-capi.cpp index 945bc0c879e..4d6b35b91f8 100644 --- a/extern/libmv/libmv-capi.cpp +++ b/extern/libmv/libmv-capi.cpp @@ -437,7 +437,9 @@ int libmv_refineParametersAreValid(int parameters) { LIBMV_REFINE_RADIAL_DISTORTION_K1 | LIBMV_REFINE_RADIAL_DISTORTION_K2)) || (parameters == (LIBMV_REFINE_FOCAL_LENGTH | - LIBMV_REFINE_RADIAL_DISTORTION_K1)); + LIBMV_REFINE_RADIAL_DISTORTION_K1)) || + (parameters == (LIBMV_REFINE_RADIAL_DISTORTION_K1 | + LIBMV_REFINE_RADIAL_DISTORTION_K2)); } static void libmv_solveRefineIntrinsics(libmv::Tracks *tracks, libmv::CameraIntrinsics *intrinsics, diff --git a/extern/libmv/libmv/simple_pipeline/bundle.cc b/extern/libmv/libmv/simple_pipeline/bundle.cc index 0dd930a5ceb..7502ca389c4 100644 --- a/extern/libmv/libmv/simple_pipeline/bundle.cc +++ b/extern/libmv/libmv/simple_pipeline/bundle.cc @@ -208,6 +208,9 @@ void BundleIntrinsicsLogMessage(int bundle_intrinsics) { } else if (bundle_intrinsics == (BUNDLE_FOCAL_LENGTH | BUNDLE_RADIAL_K1)) { LG << "Bundling f, k1."; + } else if (bundle_intrinsics == (BUNDLE_RADIAL_K1 | + BUNDLE_RADIAL_K2)) { + LG << "Bundling k1, k2."; } else { LOG(FATAL) << "Unsupported bundle combination."; } diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c index 1e0f8c4f8a8..d88ecab74dc 100644 --- a/source/blender/blenkernel/intern/tracking.c +++ b/source/blender/blenkernel/intern/tracking.c @@ -2864,10 +2864,10 @@ static int reconstruct_refine_intrinsics_get_flags(MovieTracking *tracking, Movi flags |= LIBMV_REFINE_PRINCIPAL_POINT; if (refine & REFINE_RADIAL_DISTORTION_K1) - flags |= REFINE_RADIAL_DISTORTION_K1; + flags |= LIBMV_REFINE_RADIAL_DISTORTION_K1; if (refine & REFINE_RADIAL_DISTORTION_K2) - flags |= REFINE_RADIAL_DISTORTION_K2; + flags |= LIBMV_REFINE_RADIAL_DISTORTION_K2; return flags; } diff --git a/source/blender/makesrna/intern/rna_tracking.c b/source/blender/makesrna/intern/rna_tracking.c index cd646f4849c..798395b9fef 100644 --- a/source/blender/makesrna/intern/rna_tracking.c +++ b/source/blender/makesrna/intern/rna_tracking.c @@ -579,6 +579,9 @@ static void rna_def_trackingSettings(BlenderRNA *brna) {REFINE_FOCAL_LENGTH | REFINE_PRINCIPAL_POINT, "FOCAL_LENGTH_PRINCIPAL_POINT", 0, "Focal Length, Optical Center", "Refine focal length and optical center"}, + {REFINE_RADIAL_DISTORTION_K1 | + REFINE_RADIAL_DISTORTION_K2, "RADIAL_K1_K2", 0, "K1, K2", + "Refine radial distortion K1 and K2"}, {0, NULL, 0, NULL, NULL} }; |