NextGenTracking

Version 1 (admin, 20/03/2012 14:40)

1 1 admin
h1. Next Generation Tracking
2 1 admin
3 1 admin
{{>toc}}
4 1 admin
5 1 admin
The current hard-coded filter graph implementation could be superseded by an xml-based implementation.
6 1 admin
7 1 admin
Enables:
8 1 admin
9 1 admin
* Multi-camera support
10 1 admin
* Better camera calibration (OpenCV)
11 1 admin
* Easier configuration 
12 1 admin
13 1 admin
Interface:
14 1 admin
15 1 admin
h1. Single camera filter graph:
16 1 admin
17 1 admin
<pre><code class="xml">
18 1 admin
<tracker>
19 1 admin
  <camera id="cam1" [...]/>
20 1 admin
  <imagine inputs="cam1">
21 1 admin
    <histogram id="hist" inputid="cam1" stride="3"/>
22 1 admin
    <mask id="mask" inputid="camera" href="camera_mask.png"/>
23 1 admin
    <distort id="distort" inputid="mask" 
24 1 admin
        distortionparams="(0.69, 0)"
25 1 admin
        trapezoid="0.151537"
26 1 admin
        angle=""
27 1 admin
        [...]/>
28 1 admin
    <crop id="crop" inputid="distort"
29 1 admin
        displaydisplacement="(-174.966, -145.974)"
30 1 admin
        displayscale="(2.52, 2.55)"/>
31 1 admin
    <historysubtract id="nohistory" inputid="crop"
32 1 admin
        updateinterval="25"
33 1 admin
        brighterregions="True"/>
34 1 admin
    <bandpass id="bandpass" inputid="nohistory"
35 1 admin
        range="(1.6, 2.4)"
36 1 admin
        postmult="30.0"/>
37 1 admin
  </imagine>
38 1 admin
  <blobs id="touchblobs" inputid="bandpass"
39 1 admin
        threshold="148"
40 1 admin
        similarity="50"
41 1 admin
        areabounds="(16, 200000)"
42 1 admin
        eccentricitybounds="(1, 80)"/>
43 1 admin
  <blobs id="trackblobs" inputid="nohistory"
44 1 admin
        threshold="16"
45 1 admin
        similarity="100"
46 1 admin
        areabounds="(700, 200000)"
47 1 admin
        eccentricitybounds="(1, 80)"/>
48 1 admin
</tracker>
49 1 admin
</code></pre>
50 1 admin
51 1 admin
* Multi-camera filter graph:
52 1 admin
** Need to refactor pos/scale logic: Use normalized intermediate coordinates (0,0)-(1,1).
53 1 admin
** Graph stays mostly the same, is executed once per camera. Per-camera data:
54 1 admin
*** camera id
55 1 admin
*** distortion, position, crop params 
56 1 admin
* Idea for graph:
57 1 admin
58 1 admin
<pre><code class="xml">
59 1 admin
<tracker>
60 1 admin
  <camera id="cam1" pos="(0,0)" size="(640, 480)" 
61 1 admin
      distortionparams="(0.69, 0)"
62 1 admin
      trapezoid="..."
63 1 admin
      [...]/>
64 1 admin
  <camera id="cam2" [...]/>
65 1 admin
  <camera id="cam3" [...]/>
66 1 admin
  <imagine>
67 1 admin
    [... as above, variable params are empty ...]
68 1 admin
  </imagine>
69 1 admin
  <blobs 
70 1 admin
   [...]
71 1 admin
    />
72 1 admin
</tracker>
73 1 admin
</code></pre>
74 1 admin
75 1 admin
Implementation:
76 1 admin
77 1 admin
* Filter graph (xml repr, but no python interface)
78 1 admin
* Seamless cpu/gpu transition or
79 1 admin
* Implementation of distort, crop, historysubtract, histogram as gpu filters.
80 1 admin
* Single camera:
81 1 admin
** Call filter graph in C++
82 1 admin
** Adapt calibration to new filter graph
83 1 admin
** Refactor [[TrackerConfig]]
84 1 admin
* Multi-camera support:
85 1 admin
** Refactor pos/scale logic
86 1 admin
** Multi-Camera calibration
87 1 admin
** Custom synchronous filter graph during calibration
88 1 admin
** Logic for per-camera data.
89 1 admin
** New blob correlation step after blob finding