[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