diff options
author | Ivan Perevala <ivpe> | 2020-09-30 16:12:14 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey@blender.org> | 2020-09-30 16:54:24 +0300 |
commit | 3a7d62cd1f5e06e22af1642fc5f4aab59bace585 (patch) | |
tree | d2832d6dacf16938c709e395a3220f2c64ee18e7 /source/blender/blenkernel/intern/tracking_util.c | |
parent | 5ac477805637f20b8ac5e742457fa8f304066d83 (diff) |
Tracking: Implement Brown-Conrady distortion model
Implemented Brown-Conrady lens distortion model with 4 radial and
2 tangential coefficients to improve compatibility with other software,
such as Agisoft Photoscan/Metashapes, 3DF Zephir, RealityCapture,
Bentley ContextCapture, Alisevision Meshroom(opensource).
Also older programs: Bundler, CPMVS.
In general terms, most photogrammetric software.
The new model is available under the distortion model menu in Lens
settings.
For tests and demos check the original patch.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D9037
Diffstat (limited to 'source/blender/blenkernel/intern/tracking_util.c')
-rw-r--r-- | source/blender/blenkernel/intern/tracking_util.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/tracking_util.c b/source/blender/blenkernel/intern/tracking_util.c index dcaa9082026..bc6c94343b5 100644 --- a/source/blender/blenkernel/intern/tracking_util.c +++ b/source/blender/blenkernel/intern/tracking_util.c @@ -457,6 +457,15 @@ static void distortion_model_parameters_from_tracking( camera_intrinsics_options->nuke_k1 = camera->nuke_k1; camera_intrinsics_options->nuke_k2 = camera->nuke_k2; return; + case TRACKING_DISTORTION_MODEL_BROWN: + camera_intrinsics_options->distortion_model = LIBMV_DISTORTION_MODEL_BROWN; + camera_intrinsics_options->brown_k1 = camera->brown_k1; + camera_intrinsics_options->brown_k2 = camera->brown_k2; + camera_intrinsics_options->brown_k3 = camera->brown_k3; + camera_intrinsics_options->brown_k4 = camera->brown_k4; + camera_intrinsics_options->brown_p1 = camera->brown_p1; + camera_intrinsics_options->brown_p2 = camera->brown_p2; + return; } /* Unknown distortion model, which might be due to opening newer file in older Blender. @@ -491,6 +500,15 @@ static void distortion_model_parameters_from_options( camera->nuke_k1 = camera_intrinsics_options->nuke_k1; camera->nuke_k2 = camera_intrinsics_options->nuke_k2; return; + case LIBMV_DISTORTION_MODEL_BROWN: + camera->distortion_model = TRACKING_DISTORTION_MODEL_BROWN; + camera->brown_k1 = camera_intrinsics_options->brown_k1; + camera->brown_k2 = camera_intrinsics_options->brown_k2; + camera->brown_k3 = camera_intrinsics_options->brown_k3; + camera->brown_k4 = camera_intrinsics_options->brown_k4; + camera->brown_p1 = camera_intrinsics_options->brown_p1; + camera->brown_p2 = camera_intrinsics_options->brown_p2; + return; } /* Libmv returned distortion model which is not known to Blender. This is a logical error in code |