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 *********************/

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to