b-spline drawing in displayed image

update background with mask, on non-foreground only --> done now?  Check!  nts
29 Nov 2001

started implementing some debug movie output: motion images and difference, in
MotionDetector.cc,  la ActiveModel.cc.  Not finished.

Incorporate classification (group/individual/unknown/...)

Write/change image class methods circle() and rectangle() which use
image_class_zoom.value, replace all direct calls to recti(), circ() etc in the
code (note into which image the objects are painted).

ground_track -i file=/advisor/video/LUL/c38/01/0050.jpg -p params/LUL38-1-gt
gives strange trouble (did not use to):
#0  0x409b5981 in chunk_alloc (ar_ptr=0x40a41360, nb=136) at malloc.c:2763
2763    malloc.c: No such file or directory.
(gdb) Current language:  auto; currently c
(gdb) (gdb) #0  0x409b5981 in chunk_alloc (ar_ptr=0x40a41360, nb=136) at malloc.c:2763
#1  0x409b582c in malloc () at malloc.c:2181
#2  0x40926269 in __builtin_new () at ./cp/new1.cc:88
#3  0x80510c1 in GroundPeopleTracker::track_new_objects (this=0x8247cd8) at ../GroundPeopleTracker.cc:424
#4  0x80519d3 in GroundPeopleTracker::MainLoop (this=0x8247cd8, max_objects=8) at ../GroundPeopleTracker.cc:593
#5  0x804dfc6 in main (argc=5, argv=0xbffff024) at ../ground_track.cc:156
(gdb) nts@advisor2: /advisor/nils/tmp
421-        TrackedProfile *new_prf1 = 
422-            new TrackedProfile(start_ref_no.value+1);
423-        
424:        TrackedProfile *new_prf2 = 
425-            new TrackedProfile(start_ref_no.value+1);
426-
427-        // check original hypothesis first:
if lines 421--422 work, why don't 423--424 (sometimes!)?  Must be in other threads?




#0  0x409cab76 in memset () at ../sysdeps/i386/memset.c:80
(gdb) Current language:  auto; currently c
(gdb) (gdb) (gdb) (gdb) #0  0x409cab76 in memset () at ../sysdeps/i386/memset.c:80
#1  0x807db57 in Grey8Image::draw_rectangle (this=0x82ce970, xmin=780, xmax=767, ymin=116, ymax=119, val=0)
    at ../Grey8Image.cc:1183
#2  0x805d7db in MotionDetector::draw_old_objects (this=0x82c0e78, old_objects=0xbfffef4c) at ../MotionDetector.cc:735
#3  0x805269c in SimplePeopleTracker::MainLoop (this=0x41355008, max_objects=32) at ../SimplePeopleTracker.cc:794
#4  0x804e133 in main (argc=5, argv=0xbfffefe4) at ../multi_track.cc:139

--- that was a PAL image /advisor/video/Reading/PETS2001/DATASET1/TRAINING/CAMERA1_JPEGS/3038.jpg


compar_char is slow for neighbour_order of mostly `Grey8Image's.  Optimise,
keeping in mind we might be monochromatic (new bool parameter the_monochromatic
with default value false to Grey8Image contructor necessary).


bool Profile::is_ok() commented out!  problem: access to configuration
variables MAX_HEIGHT_TO_WIDTH, MIN_HEIGHT_TO_WIDTH, NO_BLOB_FILTER.

MotionDetector never extracts regions close to the edge, even if
RegionSet::keep_edge_regions is true.

~Profile() cannot do ``if (colour_info != NULL)  delete [] colour_info;''

MotionDetector::draw_old_objects should probably be called update_motion_mask
or something.

Rename ListMatrix to MatrixSet (ditto VectorSet)

RegionTracker::register_configuration_parameters() must replicate calls to
register configuration parameters which were already done in
BaseTracker::BaseTracker().  Is this because of the string "BaseTracker" which
might have to be unique?  Check class Configuration.


Profile::operator=():   ``filters_initialised = original.filters_initialised''
commented out, otherwise crash in ColourBlob::update (because theColour == 0xBogus) :-

#0  0x8067f1b in ColourBlob::update (this=0x828c334) at ../EdgeDetector.cc:765
#1  0x8068722 in ColouredEdgeDetector::setup_batch (this=0x82616b8, curr=0x828bc18) at ../EdgeDetector.cc:954
#2  0x80653ed in ActiveModel::track_profile (this=0x8264530) at ../ActiveModel.cc:968
#3  0x805ad37 in SimplePeopleTracker::track_old_objects (this=0x825f900) at ../SimplePeopleTracker.cc:262
#4  0x805bc79 in SimplePeopleTracker::MainLoop (this=0x825f900, max_objects=32) at ../SimplePeopleTracker.cc:581

--------->  This is probably due to Nag{Vector,Matrix}::operator= etc.  Some
fixes on 16 Nov 2001, more fixes in these classes might be necessary!!!  cf
"own_memory" variable mess -> always allocate => no problem!
look for "///FIXME:memory-problems TODO debug" and maybe merge new files
matrix/new-Nag* where I have started (not finished) some changes


void MotionDetector::process_current_frame()
{ 
    if (!do_background_updating)
	((MultiBackgroundSource*) background)->force_recalc();  // FIXME: FIX for ECCV  No check
	

Write Tracking Output according to new XML Schemas as defined in December 2001

Check bug in Calibration class (to do with Image Addressing).

put in some more calibration (3D Kalman position filter and occlusion handler  la GroundPeopleTracker) into the ActiveShapeTracker

Check and fix occlusion reasoning in ActiveShapeTracker!


ConfigurationManager needs many global variables and functions to be put into a
new class.  I suggest separating out the user interface.

Check ProfileSequence and procs/process_sequence.  Both need to be corrected
because they have stopped working.

Check all screen drawing functions and move into ScreenOutput.  Move
configuration variables about drawing there.

Check CVS's "$Id ... Exp $" feature.

HAVE_SSTREAM option not complete.  Not needed.

Check whether some destructors shouls be made virtual (check compilation
warnings when compiling with -Wall)

Our use of Xlib / Lesstif does not work with multiple threads.  It should be
not hard to change our implementation to enable the existing multi-threading
capabilities of our Lesstif version.  See http://www.lesstif.org/thread.html .

