From e83d9650cf04791b7016ddac09fbb4393aebe6bd Mon Sep 17 00:00:00 2001 From: "N.N." Date: Tue, 8 Sep 2009 20:27:20 +0000 Subject: fixed alpha parameter svn path=/trunk/externals/pdp_opencv/; revision=12257 --- pdp_opencv_athreshold-help.pd | 4 ++- pdp_opencv_bgstats-help.pd | 70 +++++++++++++++++++++---------------------- pdp_opencv_bgstats.cc | 16 +++++----- 3 files changed, 46 insertions(+), 44 deletions(-) diff --git a/pdp_opencv_athreshold-help.pd b/pdp_opencv_athreshold-help.pd index 39319ed..790c2b2 100644 --- a/pdp_opencv_athreshold-help.pd +++ b/pdp_opencv_athreshold-help.pd @@ -1,4 +1,4 @@ -#N canvas 15 96 1039 729 10; +#N canvas 20 96 1039 729 10; #X obj 11 -57 cnv 15 750 250 empty empty empty 20 12 0 14 -260097 -66577 0; #X obj 251 -17 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 @@ -60,6 +60,7 @@ the mode BINARY or BINARY:INVERTED; #X msg 185 364 dim \$1; #X floatatom 236 367 5 0 0 0 - - -; #X text 276 365 value to correct the theshold; +#X obj 70 191 pdp_xv; #X connect 1 0 2 0; #X connect 2 0 4 0; #X connect 3 0 4 0; @@ -73,6 +74,7 @@ the mode BINARY or BINARY:INVERTED; #X connect 11 0 10 0; #X connect 12 0 11 0; #X connect 13 0 38 0; +#X connect 13 0 52 0; #X connect 14 0 13 0; #X connect 15 0 14 0; #X connect 16 0 14 0; diff --git a/pdp_opencv_bgstats-help.pd b/pdp_opencv_bgstats-help.pd index 89e48b4..e7a29a9 100755 --- a/pdp_opencv_bgstats-help.pd +++ b/pdp_opencv_bgstats-help.pd @@ -1,4 +1,4 @@ -#N canvas 42 49 734 841 10; +#N canvas 446 49 734 841 10; #X obj 39 -180 cnv 15 621 223 empty empty empty 20 12 0 14 -260097 -66577 0; #X msg 146 -123 open /dev/dv1394/0; @@ -14,9 +14,8 @@ #X obj 299 -17 pdp_v4l; #X msg 356 -120 open /dev/video0; #X obj 480 -140 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 -1 1; +0 1; #X obj 480 -113 metro 40; -#X msg 572 0 close; #X msg 557 -118 open /dev/video0; #X obj 500 -15 pdp_v4l2; #X obj 39 54 cnv 15 621 200 empty empty empty 20 12 0 14 -258113 -66577 @@ -25,13 +24,9 @@ #X obj 89 -23 pdp_ieee1394; #X text 45 -326 pdp_opencv_bgstats : background and foreground extraction using a statitical method.; -#X text 43 -212 Comments and support @ ydegoyon.gmail.com; +#X text 45 -210 Comments and support @ ydegoyon.gmail.com; #X text 69 -177 Caemra input; #X obj 89 196 pdp_opencv_bgstats; -#X text 88 300 foreground; -#X obj 194 282 pdp_xv; -#X text 191 300 background; -#X msg 168 74 delta \$1; #X obj 229 74 / 100; #X floatatom 270 76 5 0 0 0 - - -; #X floatatom 234 110 5 0 0 0 - - -; @@ -40,41 +35,46 @@ using a statitical method.; #X msg 187 145 minarea \$1; #X text 301 152 ( default : 10x10 ); #X msg 224 172 reset; -#X text 43 -281 Objects disappear from the foreground after a certain -amount of time after they disappeared ( delta ) and make noise filtering -using erosion and dilation steps ( erode paramater ). It also eliminates -from the foreground object that are less than minarea parameter.; -#X text 311 68 amount of time after which an object is deleted from -the foreground ( default : 0.1 seconds ); #X text 273 101 number of iterations of the erode-dilate filter; #X text 274 111 to eliminate small forms and noise; #X text 304 141 minimum size of foreground objects; #X text 268 173 resetting the background; #X text 274 122 ( default : 2 ); -#X connect 1 0 18 0; +#X msg 168 73 alpha \$1; +#X text 312 69 amount of time after which an object is deleted from +the background ( default : 0.1 seconds ); +#X text 49 301 foreground ( binary ); +#X obj 191 281 pdp_xv; +#X text 189 300 background; +#X text 44 -299 Objects disappear from the background after a certain +amount of time of presence ( alpha ) \, they are then considered as +background.; +#X text 46 -259 This object does noise filtering using erosion and +dilation steps ( erode paramater ). It also eliminates from the foreground +object that are less than a minumum size ( minarea parameter ).; +#X connect 1 0 17 0; #X connect 2 0 3 0; -#X connect 3 0 18 0; -#X connect 4 0 18 0; -#X connect 5 0 18 0; +#X connect 3 0 17 0; +#X connect 4 0 17 0; +#X connect 5 0 17 0; #X connect 6 0 7 0; #X connect 7 0 9 0; #X connect 8 0 9 0; -#X connect 9 0 22 0; +#X connect 9 0 21 0; #X connect 10 0 9 0; #X connect 11 0 12 0; -#X connect 12 0 15 0; -#X connect 13 0 15 0; -#X connect 14 0 15 0; -#X connect 15 0 22 0; -#X connect 18 0 22 0; -#X connect 22 0 17 0; -#X connect 22 1 24 0; -#X connect 26 0 22 0; -#X connect 27 0 26 0; -#X connect 28 0 27 0; -#X connect 28 0 27 1; -#X connect 29 0 30 0; -#X connect 30 0 22 0; -#X connect 31 0 32 0; -#X connect 32 0 22 0; -#X connect 34 0 22 0; +#X connect 12 0 14 0; +#X connect 13 0 14 0; +#X connect 14 0 21 0; +#X connect 17 0 21 0; +#X connect 21 0 16 0; +#X connect 21 1 38 0; +#X connect 22 0 35 0; +#X connect 23 0 22 0; +#X connect 23 0 22 1; +#X connect 24 0 25 0; +#X connect 25 0 21 0; +#X connect 26 0 27 0; +#X connect 27 0 21 0; +#X connect 29 0 21 0; +#X connect 35 0 21 0; diff --git a/pdp_opencv_bgstats.cc b/pdp_opencv_bgstats.cc index 388367f..b6147ca 100755 --- a/pdp_opencv_bgstats.cc +++ b/pdp_opencv_bgstats.cc @@ -52,7 +52,7 @@ typedef struct pdp_opencv_bgstats_struct int x_erode; float x_minarea; - float x_delta; + float x_alpha; int x_frames; IplImage *foreground, *incoming; @@ -112,13 +112,13 @@ static void pdp_opencv_bgstats_process_rgb(t_pdp_opencv_bgstats *x) x->x_modelparams.N1cc = CV_BGFG_FGD_N1CC; x->x_modelparams.N2cc = CV_BGFG_FGD_N2CC; x->x_modelparams.is_obj_without_holes = 1; - x->x_modelparams.alpha1 = CV_BGFG_FGD_ALPHA_1; x->x_modelparams.alpha2 = CV_BGFG_FGD_ALPHA_2; x->x_modelparams.alpha3 = CV_BGFG_FGD_ALPHA_3; x->x_modelparams.T = CV_BGFG_FGD_T; x->x_modelparams.perform_morphing = x->x_erode; x->x_modelparams.minArea = x->x_minarea; - x->x_modelparams.delta = x->x_delta; + x->x_modelparams.delta = CV_BGFG_FGD_DELTA; + x->x_modelparams.alpha1 = x->x_alpha; x->x_model = cvCreateFGDStatModel( x->incoming, &x->x_modelparams ); } else if ( x->x_frames == 5 ) @@ -164,12 +164,12 @@ static void pdp_opencv_bgstats_erode(t_pdp_opencv_bgstats *x, t_floatarg f) } } -static void pdp_opencv_bgstats_delta(t_pdp_opencv_bgstats *x, t_floatarg f) +static void pdp_opencv_bgstats_alpha(t_pdp_opencv_bgstats *x, t_floatarg f) { if ( ( f>0.0 ) && ( x->x_model != NULL ) ) { - x->x_delta = f; - x->x_modelparams.delta = f; + x->x_alpha = f; + x->x_modelparams.alpha1 = f; cvReleaseBGStatModel( &x->x_model ); x->x_model = cvCreateFGDStatModel( x->incoming, &x->x_modelparams ); } @@ -281,7 +281,7 @@ void *pdp_opencv_bgstats_new(t_floatarg f) x->x_erode = 2; x->x_minarea = 10*10; - x->x_delta = 0.1; // 0.1 seconds + x->x_alpha = 0.1; x->x_frames = 0; x->foreground = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 3); @@ -309,7 +309,7 @@ void pdp_opencv_bgstats_setup(void) class_addmethod(pdp_opencv_bgstats_class, (t_method)pdp_opencv_bgstats_input_0, gensym("pdp"), A_SYMBOL, A_DEFFLOAT, A_NULL); class_addmethod(pdp_opencv_bgstats_class, (t_method)pdp_opencv_bgstats_minarea, gensym("minarea"), A_DEFFLOAT, A_NULL ); class_addmethod(pdp_opencv_bgstats_class, (t_method)pdp_opencv_bgstats_erode, gensym("erode"), A_DEFFLOAT, A_NULL ); - class_addmethod(pdp_opencv_bgstats_class, (t_method)pdp_opencv_bgstats_delta, gensym("delta"), A_DEFFLOAT, A_NULL ); + class_addmethod(pdp_opencv_bgstats_class, (t_method)pdp_opencv_bgstats_alpha, gensym("alpha"), A_DEFFLOAT, A_NULL ); class_addmethod(pdp_opencv_bgstats_class, (t_method)pdp_opencv_bgstats_reset, gensym("reset"), A_NULL ); } -- cgit v1.2.1