[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59439] branches/soc-2013-motion_track: Fix invalid returned camera intrinsics
Joseph Mansfield
sftrabbit at gmail.com
Fri Aug 23 22:11:11 CEST 2013
Revision: 59439
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59439
Author: sftrabbit
Date: 2013-08-23 20:11:11 +0000 (Fri, 23 Aug 2013)
Log Message:
-----------
Fix invalid returned camera intrinsics
libmv provides a way to get the camera intrinsics from a reconstruction, which may be different to the intrinsics passed to the solver if refinement has taken place. My multicamera changes introduced a bug caused by a pointer cast between incompatible types causing the returned intrinsics to have screwed up values. This patch fixes that cast.
Modified Paths:
--------------
branches/soc-2013-motion_track/extern/libmv/libmv-capi.cc
branches/soc-2013-motion_track/extern/libmv/libmv-capi.h
branches/soc-2013-motion_track/source/blender/blenkernel/intern/tracking.c
Modified: branches/soc-2013-motion_track/extern/libmv/libmv-capi.cc
===================================================================
--- branches/soc-2013-motion_track/extern/libmv/libmv-capi.cc 2013-08-23 19:13:32 UTC (rev 59438)
+++ branches/soc-2013-motion_track/extern/libmv/libmv-capi.cc 2013-08-23 20:11:11 UTC (rev 59439)
@@ -831,9 +831,10 @@
return libmv_reconstruction->error;
}
-struct libmv_CameraIntrinsics *libmv_reconstructionExtractIntrinsics(struct libmv_Reconstruction *libmv_reconstruction)
+struct libmv_CameraIntrinsics *libmv_reconstructionExtractIntrinsics(struct libmv_Reconstruction *libmv_reconstruction,
+ int camera)
{
- return (struct libmv_CameraIntrinsics *)&libmv_reconstruction->intrinsics;
+ return (struct libmv_CameraIntrinsics *)&libmv_reconstruction->intrinsics[camera];
}
/* ************ Feature detector ************ */
Modified: branches/soc-2013-motion_track/extern/libmv/libmv-capi.h
===================================================================
--- branches/soc-2013-motion_track/extern/libmv/libmv-capi.h 2013-08-23 19:13:32 UTC (rev 59438)
+++ branches/soc-2013-motion_track/extern/libmv/libmv-capi.h 2013-08-23 20:11:11 UTC (rev 59439)
@@ -121,7 +121,8 @@
int libmv_reprojectionCameraForImage(const struct libmv_Reconstruction *libmv_reconstruction,
int camera, int image, double mat[4][4]);
double libmv_reprojectionError(const struct libmv_Reconstruction *libmv_reconstruction);
-struct libmv_CameraIntrinsics *libmv_reconstructionExtractIntrinsics(struct libmv_Reconstruction *libmv_Reconstruction);
+struct libmv_CameraIntrinsics *libmv_reconstructionExtractIntrinsics(struct libmv_Reconstruction *libmv_Reconstruction,
+ int camera);
/* Feature detector */
struct libmv_Features *libmv_detectFeaturesFAST(const unsigned char *data, int width, int height, int stride,
Modified: branches/soc-2013-motion_track/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2013-motion_track/source/blender/blenkernel/intern/tracking.c 2013-08-23 19:13:32 UTC (rev 59438)
+++ branches/soc-2013-motion_track/source/blender/blenkernel/intern/tracking.c 2013-08-23 20:11:11 UTC (rev 59439)
@@ -2935,7 +2935,7 @@
static void reconstruct_retrieve_libmv_intrinsics(MovieReconstructContext *context, MovieTracking *tracking)
{
struct libmv_Reconstruction *libmv_reconstruction = context->reconstruction;
- struct libmv_CameraIntrinsics *libmv_intrinsics = libmv_reconstructionExtractIntrinsics(libmv_reconstruction);
+ struct libmv_CameraIntrinsics *libmv_intrinsics = libmv_reconstructionExtractIntrinsics(libmv_reconstruction, 0);
float aspy = 1.0f / tracking->camera.pixel_aspect;
More information about the Bf-blender-cvs
mailing list