[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39122] branches/soc-2011-tomato: Camera tracking integration

Sergey Sharybin g.ulairi at gmail.com
Sun Aug 7 10:58:03 CEST 2011


Revision: 39122
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39122
Author:   nazgul
Date:     2011-08-07 08:58:03 +0000 (Sun, 07 Aug 2011)
Log Message:
-----------
Camera tracking integration
===========================

Expose parameters for feature detection into redo panel.

Modified Paths:
--------------
    branches/soc-2011-tomato/extern/libmv/libmv-capi.cpp
    branches/soc-2011-tomato/extern/libmv/libmv-capi.h
    branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h
    branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c

Modified: branches/soc-2011-tomato/extern/libmv/libmv-capi.cpp
===================================================================
--- branches/soc-2011-tomato/extern/libmv/libmv-capi.cpp	2011-08-07 08:56:13 UTC (rev 39121)
+++ branches/soc-2011-tomato/extern/libmv/libmv-capi.cpp	2011-08-07 08:58:03 UTC (rev 39122)
@@ -468,11 +468,14 @@
 
 /* ************ feature detector ************ */
 
-struct libmv_Corners *libmv_detectCorners(unsigned char *data, int width, int height, int stride)
+struct libmv_Corners *libmv_detectCorners(unsigned char *data, int width, int height, int stride,
+			int margin, int min_trackness, int min_distance)
 {
-	std::vector<libmv::Corner> detect= libmv::Detect(data, width, height, stride);
+	std::vector<libmv::Corner> detect;
 	std::vector<libmv::Corner> *libmv_corners= new std::vector<libmv::Corner>();
 
+	detect= libmv::Detect(data, width, height, stride, margin, min_trackness, min_distance);
+
 	libmv_corners->insert(libmv_corners->begin(), detect.begin(), detect.end());
 
 	return (libmv_Corners *)libmv_corners;

Modified: branches/soc-2011-tomato/extern/libmv/libmv-capi.h
===================================================================
--- branches/soc-2011-tomato/extern/libmv/libmv-capi.h	2011-08-07 08:56:13 UTC (rev 39121)
+++ branches/soc-2011-tomato/extern/libmv/libmv-capi.h	2011-08-07 08:58:03 UTC (rev 39122)
@@ -65,7 +65,8 @@
 void libmv_destroyReconstruction(struct libmv_Reconstruction *libmv_reconstruction);
 
 /* feature detector */
-struct libmv_Corners *libmv_detectCorners(unsigned char *data, int width, int height, int stride);
+struct libmv_Corners *libmv_detectCorners(unsigned char *data, int width, int height, int stride,
+			int margin, int min_trackness, int min_distance);
 int libmv_countCorners(struct libmv_Corners *libmv_corners);
 void libmv_getCorner(struct libmv_Corners *libmv_corners, int number, double *x, double *y, double *score, double *size);
 void libmv_destroyCorners(struct libmv_Corners *libmv_corners);

Modified: branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h	2011-08-07 08:56:13 UTC (rev 39121)
+++ branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h	2011-08-07 08:58:03 UTC (rev 39122)
@@ -84,7 +84,7 @@
 void BKE_tracking_apply_intrinsics(struct MovieTracking *tracking, float co[2], float nco[2]);
 void BKE_tracking_invert_intrinsics(struct MovieTracking *tracking, float co[2], float nco[2]);
 
-void BKE_tracking_detect(struct MovieTracking *tracking, struct ImBuf *imbuf, int framenr);
+void BKE_tracking_detect(struct MovieTracking *tracking, struct ImBuf *imbuf, int framenr, int margin, int min_trackness, int min_distance);
 
 struct MovieTrackingTrack *BKE_tracking_indexed_bundle(struct MovieTracking *tracking, int bundlenr);
 

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-08-07 08:56:13 UTC (rev 39121)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-08-07 08:58:03 UTC (rev 39122)
@@ -1250,14 +1250,14 @@
 }
 #endif
 
-void BKE_tracking_detect(MovieTracking *tracking, ImBuf *ibuf, int framenr)
+void BKE_tracking_detect(MovieTracking *tracking, ImBuf *ibuf, int framenr, int margin, int min_trackness, int min_distance)
 {
 #ifdef WITH_LIBMV
 	struct libmv_Corners *corners;
 	unsigned char *pixels= acquire_ucharbuf(ibuf);
 	int a;
 
-	corners= libmv_detectCorners(pixels, ibuf->x, ibuf->y, ibuf->x);
+	corners= libmv_detectCorners(pixels, ibuf->x, ibuf->y, ibuf->x, margin, min_trackness, min_distance);
 	MEM_freeN(pixels);
 
 	a= libmv_countCorners(corners);

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c	2011-08-07 08:56:13 UTC (rev 39121)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c	2011-08-07 08:58:03 UTC (rev 39122)
@@ -2185,12 +2185,15 @@
 
 /********************** detect features operator *********************/
 
-static int detect_features_exec(bContext *C, wmOperator *UNUSED(op))
+static int detect_features_exec(bContext *C, wmOperator *op)
 {
 	SpaceClip *sc= CTX_wm_space_clip(C);
 	MovieClip *clip= ED_space_clip(sc);
 	ImBuf *ibuf= BKE_movieclip_acquire_ibuf(clip, &sc->user);
 	MovieTrackingTrack *track= clip->tracking.tracks.first;
+	int margin= RNA_int_get(op->ptr, "margin");
+	int min_trackness= RNA_int_get(op->ptr, "min_trackness");
+	int min_distance= RNA_int_get(op->ptr, "min_distance");
 
 	/* deselect existing tracks */
 	while(track) {
@@ -2201,7 +2204,7 @@
 		track= track->next;
 	}
 
-	BKE_tracking_detect(&clip->tracking, ibuf, sc->user.framenr);
+	BKE_tracking_detect(&clip->tracking, ibuf, sc->user.framenr, margin, min_trackness, min_distance);
 
 	IMB_freeImBuf(ibuf);
 
@@ -2224,6 +2227,11 @@
 
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+	/* properties */
+	RNA_def_int(ot->srna, "margin", 16, 0, INT_MAX, "Margin", "Only corners further than margin pixels from the image edges are considered", 0, 300);
+	RNA_def_int(ot->srna, "min_trackness", 16, 0, INT_MAX, "Trackness", "Minimum score to add a corner", 0, 300);
+	RNA_def_int(ot->srna, "min_distance", 120, 0, INT_MAX, "Distance", "Minimal distance accepted between two corners", 0, 300);
 }
 
 /********************** frame jump operator *********************/




More information about the Bf-blender-cvs mailing list