Selaa lähdekoodia

added more constraints, updated the documentation

Helge Wrede 8 vuotta sitten
vanhempi
commit
4c4e8a1143
100 muutettua tiedostoa jossa 1883 lisäystä ja 369 poistoa
  1. 0 0
      Documentation/html/Berclaz_8h_source.html
  2. 0 0
      Documentation/html/DetectionSequence_8h_source.html
  3. 0 0
      Documentation/html/FileIO_8h_source.html
  4. 90 0
      Documentation/html/Filter2D_8h_source.html
  5. 0 0
      Documentation/html/Grid_8h_source.html
  6. 0 0
      Documentation/html/KShortestPaths_8h_source.html
  7. 0 0
      Documentation/html/Logger_8h_source.html
  8. 0 0
      Documentation/html/NStage_8h_source.html
  9. 0 0
      Documentation/html/ObjectData2D_8h_source.html
  10. 0 0
      Documentation/html/ObjectDataAngular_8h_source.html
  11. 0 0
      Documentation/html/ObjectDataBox_8h_source.html
  12. 0 0
      Documentation/html/ObjectData_8h_source.html
  13. 0 0
      Documentation/html/Parser_8h_source.html
  14. 0 0
      Documentation/html/Tracklet_8h_source.html
  15. 0 0
      Documentation/html/Visualizer_8h_source.html
  16. 6 5
      Documentation/html/annotated.html
  17. 1 1
      Documentation/html/classalgo_1_1Berclaz-members.html
  18. 11 4
      Documentation/html/classalgo_1_1Berclaz.html
  19. 2 2
      Documentation/html/classalgo_1_1NStage-members.html
  20. 24 9
      Documentation/html/classalgo_1_1NStage.html
  21. 6 5
      Documentation/html/classcore_1_1DetectionSequence-members.html
  22. 49 23
      Documentation/html/classcore_1_1DetectionSequence.html
  23. 7 5
      Documentation/html/classcore_1_1ObjectData-members.html
  24. 82 0
      Documentation/html/classcore_1_1ObjectData.html
  25. 9 7
      Documentation/html/classcore_1_1ObjectData2D-members.html
  26. 86 0
      Documentation/html/classcore_1_1ObjectData2D.html
  27. 12 10
      Documentation/html/classcore_1_1ObjectDataAngular-members.html
  28. 82 0
      Documentation/html/classcore_1_1ObjectDataAngular.html
  29. 10 8
      Documentation/html/classcore_1_1ObjectDataBox-members.html
  30. 87 5
      Documentation/html/classcore_1_1ObjectDataBox.html
  31. 8 6
      Documentation/html/classcore_1_1Tracklet-members.html
  32. 47 43
      Documentation/html/classcore_1_1Tracklet.html
  33. 13 12
      Documentation/html/classes.html
  34. 2 2
      Documentation/html/classutil_1_1FileIO-members.html
  35. 8 8
      Documentation/html/classutil_1_1FileIO.html
  36. 114 0
      Documentation/html/classutil_1_1Filter2D-members.html
  37. 347 0
      Documentation/html/classutil_1_1Filter2D.html
  38. 15 14
      Documentation/html/classutil_1_1Grid-members.html
  39. 25 0
      Documentation/html/classutil_1_1Grid.html
  40. 3 3
      Documentation/html/classutil_1_1Logger-members.html
  41. 12 12
      Documentation/html/classutil_1_1Logger.html
  42. 4 4
      Documentation/html/classutil_1_1Parser.html
  43. 1 1
      Documentation/html/classutil_1_1Visualizer-members.html
  44. 18 4
      Documentation/html/classutil_1_1Visualizer.html
  45. 6 5
      Documentation/html/files.html
  46. 49 16
      Documentation/html/functions.html
  47. 48 15
      Documentation/html/functions_func.html
  48. 1 1
      Documentation/html/functions_rela.html
  49. 13 12
      Documentation/html/hierarchy.html
  50. 3 2
      Documentation/html/search/all_10.js
  51. 1 1
      Documentation/html/search/all_11.js
  52. 1 1
      Documentation/html/search/all_2.js
  53. 2 2
      Documentation/html/search/all_3.js
  54. 2 0
      Documentation/html/search/all_5.js
  55. 7 2
      Documentation/html/search/all_6.js
  56. 2 1
      Documentation/html/search/all_7.js
  57. 3 3
      Documentation/html/search/all_9.js
  58. 3 2
      Documentation/html/search/all_b.js
  59. 2 2
      Documentation/html/search/all_c.js
  60. 2 2
      Documentation/html/search/all_e.js
  61. 1 1
      Documentation/html/search/all_f.js
  62. 2 1
      Documentation/html/search/classes_2.js
  63. 1 1
      Documentation/html/search/functions_10.js
  64. 1 1
      Documentation/html/search/functions_2.js
  65. 2 2
      Documentation/html/search/functions_3.js
  66. 1 0
      Documentation/html/search/functions_5.js
  67. 7 2
      Documentation/html/search/functions_6.js
  68. 2 1
      Documentation/html/search/functions_7.js
  69. 3 3
      Documentation/html/search/functions_9.js
  70. 2 1
      Documentation/html/search/functions_a.js
  71. 1 1
      Documentation/html/search/functions_b.js
  72. 2 2
      Documentation/html/search/functions_d.js
  73. 1 1
      Documentation/html/search/functions_e.js
  74. 1 0
      Documentation/html/search/functions_f.js
  75. 1 1
      Documentation/html/search/related_0.js
  76. 1 0
      Documentation/latex/annotated.tex
  77. 7 4
      Documentation/latex/classalgo_1_1Berclaz.tex
  78. 17 9
      Documentation/latex/classalgo_1_1NStage.tex
  79. 48 20
      Documentation/latex/classcore_1_1DetectionSequence.tex
  80. BIN
      Documentation/latex/classcore_1_1ObjectData.pdf
  81. 46 0
      Documentation/latex/classcore_1_1ObjectData.tex
  82. BIN
      Documentation/latex/classcore_1_1ObjectData2D.pdf
  83. 54 0
      Documentation/latex/classcore_1_1ObjectData2D.tex
  84. BIN
      Documentation/latex/classcore_1_1ObjectDataAngular.pdf
  85. 46 0
      Documentation/latex/classcore_1_1ObjectDataAngular.tex
  86. BIN
      Documentation/latex/classcore_1_1ObjectDataBox.pdf
  87. 51 5
      Documentation/latex/classcore_1_1ObjectDataBox.tex
  88. BIN
      Documentation/latex/classcore_1_1Tracklet.pdf
  89. 25 25
      Documentation/latex/classcore_1_1Tracklet.tex
  90. 8 8
      Documentation/latex/classutil_1_1FileIO.tex
  91. 163 0
      Documentation/latex/classutil_1_1Filter2D.tex
  92. 16 0
      Documentation/latex/classutil_1_1Grid.tex
  93. 12 12
      Documentation/latex/classutil_1_1Logger.tex
  94. 4 4
      Documentation/latex/classutil_1_1Parser.tex
  95. 10 4
      Documentation/latex/classutil_1_1Visualizer.tex
  96. 1 0
      Documentation/latex/hierarchy.tex
  97. 1 0
      Documentation/latex/refman.tex
  98. 1 0
      algo/Berclaz.h
  99. 16 0
      core/ObjectData2D.cpp
  100. 2 0
      core/ObjectData2D.h

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/Berclaz_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/DetectionSequence_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/FileIO_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 90 - 0
Documentation/html/Filter2D_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/Grid_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/KShortestPaths_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/Logger_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/NStage_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/ObjectData2D_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/ObjectDataAngular_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/ObjectDataBox_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/ObjectData_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/Parser_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/Tracklet_8h_source.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
Documentation/html/Visualizer_8h_source.html


+ 6 - 5
Documentation/html/annotated.html

@@ -102,11 +102,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <tr id="row_1_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcore_1_1Tracklet.html" target="_self">Tracklet</a></td><td class="desc"></td></tr>
 <tr id="row_2_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>util</b></td><td class="desc"></td></tr>
 <tr id="row_2_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1FileIO.html" target="_self">FileIO</a></td><td class="desc"></td></tr>
-<tr id="row_2_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Grid.html" target="_self">Grid</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Logger.html" target="_self">Logger</a></td><td class="desc"></td></tr>
-<tr id="row_2_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1MyMath.html" target="_self">MyMath</a></td><td class="desc"></td></tr>
-<tr id="row_2_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Parser.html" target="_self">Parser</a></td><td class="desc"></td></tr>
-<tr id="row_2_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Visualizer.html" target="_self">Visualizer</a></td><td class="desc"></td></tr>
+<tr id="row_2_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Filter2D.html" target="_self">Filter2D</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Grid.html" target="_self">Grid</a></td><td class="desc"></td></tr>
+<tr id="row_2_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Logger.html" target="_self">Logger</a></td><td class="desc"></td></tr>
+<tr id="row_2_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1MyMath.html" target="_self">MyMath</a></td><td class="desc"></td></tr>
+<tr id="row_2_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Parser.html" target="_self">Parser</a></td><td class="desc"></td></tr>
+<tr id="row_2_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Visualizer.html" target="_self">Visualizer</a></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->

+ 1 - 1
Documentation/html/classalgo_1_1Berclaz-members.html

@@ -95,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <p>This is the complete list of members for <a class="el" href="classalgo_1_1Berclaz.html">algo::Berclaz</a>, including all inherited members.</p>
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classalgo_1_1Berclaz.html#a62a8d6165ca156a4099d6d181f1557af">Berclaz</a>(int h_res, int v_res, int vicinity_size)</td><td class="entry"><a class="el" href="classalgo_1_1Berclaz.html">algo::Berclaz</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classalgo_1_1Berclaz.html#a918f30c2f67eac9d5f9bc07ceeb0880e">Run</a>(core::DetectionSequence &amp;sequence, size_t batch_size, size_t max_track_count, std::vector&lt; core::TrackletPtr &gt; &amp;tracks)</td><td class="entry"><a class="el" href="classalgo_1_1Berclaz.html">algo::Berclaz</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classalgo_1_1Berclaz.html#a00a0d5e52112a8f9dc188757f2a8af11">Run</a>(core::DetectionSequence &amp;sequence, size_t batch_size, size_t max_track_count, std::vector&lt; core::TrackletPtr &gt; &amp;tracks, util::Filter2D &amp;filter)</td><td class="entry"><a class="el" href="classalgo_1_1Berclaz.html">algo::Berclaz</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

+ 11 - 4
Documentation/html/classalgo_1_1Berclaz.html

@@ -101,8 +101,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a62a8d6165ca156a4099d6d181f1557af"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classalgo_1_1Berclaz.html#a62a8d6165ca156a4099d6d181f1557af">Berclaz</a> (int h_res, int v_res, int vicinity_size)</td></tr>
 <tr class="separator:a62a8d6165ca156a4099d6d181f1557af"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a918f30c2f67eac9d5f9bc07ceeb0880e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classalgo_1_1Berclaz.html#a918f30c2f67eac9d5f9bc07ceeb0880e">Run</a> (<a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a> &amp;sequence, size_t batch_size, size_t max_track_count, std::vector&lt; core::TrackletPtr &gt; &amp;tracks)</td></tr>
-<tr class="separator:a918f30c2f67eac9d5f9bc07ceeb0880e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a00a0d5e52112a8f9dc188757f2a8af11"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classalgo_1_1Berclaz.html#a00a0d5e52112a8f9dc188757f2a8af11">Run</a> (<a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a> &amp;sequence, size_t batch_size, size_t max_track_count, std::vector&lt; core::TrackletPtr &gt; &amp;tracks, <a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a> &amp;filter)</td></tr>
+<tr class="separator:a00a0d5e52112a8f9dc188757f2a8af11"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Algorithm for tracking multiple object in a frame sequence. The algorithm needs the location of detections. </p>
@@ -149,7 +149,7 @@ Public Member Functions</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a918f30c2f67eac9d5f9bc07ceeb0880e"></a>
+<a class="anchor" id="a00a0d5e52112a8f9dc188757f2a8af11"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -175,7 +175,13 @@ Public Member Functions</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">std::vector&lt; core::TrackletPtr &gt; &amp;&#160;</td>
-          <td class="paramname"><em>tracks</em>&#160;</td>
+          <td class="paramname"><em>tracks</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a> &amp;&#160;</td>
+          <td class="paramname"><em>filter</em>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -191,6 +197,7 @@ Public Member Functions</h2></td></tr>
     <tr><td class="paramname">batch_size</td><td>The number of frames one batch will have at maximum </td></tr>
     <tr><td class="paramname">max_track_count</td><td>The maximum number of tracks to extract </td></tr>
     <tr><td class="paramname">tracks</td><td>The vector to store the found tracks into </td></tr>
+    <tr><td class="paramname">filter</td><td>The filter used to convolve the detections in the grid </td></tr>
   </table>
   </dd>
 </dl>

+ 2 - 2
Documentation/html/classalgo_1_1NStage-members.html

@@ -94,8 +94,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <p>This is the complete list of members for <a class="el" href="classalgo_1_1NStage.html">algo::NStage</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classalgo_1_1NStage.html#a9706139a9ccfab10ab6458e06e42d7a5">NStage</a>(std::vector&lt; size_t &gt; max_frame_skip, std::vector&lt; double &gt; penalty_value, std::vector&lt; size_t &gt; max_tracklet_count)</td><td class="entry"><a class="el" href="classalgo_1_1NStage.html">algo::NStage</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classalgo_1_1NStage.html#a4e4e881b9c6f65d9e86449c71ab6d778">Run</a>(const core::DetectionSequence &amp;sequence, std::vector&lt; core::TrackletPtr &gt; &amp;tracks)</td><td class="entry"><a class="el" href="classalgo_1_1NStage.html">algo::NStage</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classalgo_1_1NStage.html#a65baad453fa371f18be02fd19e695ea1">NStage</a>(std::vector&lt; size_t &gt; max_frame_skip, std::vector&lt; double &gt; penalty_value, std::vector&lt; size_t &gt; max_tracklet_count, double edge_weight_threshold, std::unordered_map&lt; std::string, double &gt; constraints)</td><td class="entry"><a class="el" href="classalgo_1_1NStage.html">algo::NStage</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classalgo_1_1NStage.html#a8c25c9c9796db048bb4b55d7a603b00b">Run</a>(core::DetectionSequence &amp;sequence, std::vector&lt; core::TrackletPtr &gt; &amp;tracks)</td><td class="entry"><a class="el" href="classalgo_1_1NStage.html">algo::NStage</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

+ 24 - 9
Documentation/html/classalgo_1_1NStage.html

@@ -99,15 +99,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a9706139a9ccfab10ab6458e06e42d7a5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classalgo_1_1NStage.html#a9706139a9ccfab10ab6458e06e42d7a5">NStage</a> (std::vector&lt; size_t &gt; max_frame_skip, std::vector&lt; double &gt; penalty_value, std::vector&lt; size_t &gt; max_tracklet_count)</td></tr>
-<tr class="separator:a9706139a9ccfab10ab6458e06e42d7a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4e4e881b9c6f65d9e86449c71ab6d778"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classalgo_1_1NStage.html#a4e4e881b9c6f65d9e86449c71ab6d778">Run</a> (const <a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a> &amp;sequence, std::vector&lt; core::TrackletPtr &gt; &amp;tracks)</td></tr>
-<tr class="separator:a4e4e881b9c6f65d9e86449c71ab6d778"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a65baad453fa371f18be02fd19e695ea1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classalgo_1_1NStage.html#a65baad453fa371f18be02fd19e695ea1">NStage</a> (std::vector&lt; size_t &gt; max_frame_skip, std::vector&lt; double &gt; penalty_value, std::vector&lt; size_t &gt; max_tracklet_count, double edge_weight_threshold, std::unordered_map&lt; std::string, double &gt; constraints)</td></tr>
+<tr class="separator:a65baad453fa371f18be02fd19e695ea1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8c25c9c9796db048bb4b55d7a603b00b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classalgo_1_1NStage.html#a8c25c9c9796db048bb4b55d7a603b00b">Run</a> (<a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a> &amp;sequence, std::vector&lt; core::TrackletPtr &gt; &amp;tracks)</td></tr>
+<tr class="separator:a8c25c9c9796db048bb4b55d7a603b00b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Implementation of the two-staged graph-based multi-object tracker. Extended to allow N stages. </p>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="a9706139a9ccfab10ab6458e06e42d7a5"></a>
+<a class="anchor" id="a65baad453fa371f18be02fd19e695ea1"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -127,7 +127,19 @@ Public Member Functions</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">std::vector&lt; size_t &gt;&#160;</td>
-          <td class="paramname"><em>max_tracklet_count</em>&#160;</td>
+          <td class="paramname"><em>max_tracklet_count</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double&#160;</td>
+          <td class="paramname"><em>edge_weight_threshold</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">std::unordered_map&lt; std::string, double &gt;&#160;</td>
+          <td class="paramname"><em>constraints</em>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -136,11 +148,14 @@ Public Member Functions</h2></td></tr>
         </tr>
       </table>
 </div><div class="memdoc">
-<p>Initializes the algorithm wih the given values. The number of stages is determined by the size of the given vectors. </p><dl class="params"><dt>Parameters</dt><dd>
+<p>Initializes the algorithm wih the given values. The number of stages is determined by the size of the given vectors.</p>
+<dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
     <tr><td class="paramname">max_frame_skip</td><td>The maximum edge length to link objects </td></tr>
     <tr><td class="paramname">penalty_value</td><td>The edge value to link to source and sink </td></tr>
     <tr><td class="paramname">max_tracklet_count</td><td>The maximum number of tracklets to create </td></tr>
+    <tr><td class="paramname">edge_weight_threshold</td><td>The maximum weight an edge can have in the initial graph, edges with higher weights are discarded </td></tr>
+    <tr><td class="paramname">constraints</td><td>The constraints to ensure when creating edges </td></tr>
   </table>
   </dd>
 </dl>
@@ -148,14 +163,14 @@ Public Member Functions</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a4e4e881b9c6f65d9e86449c71ab6d778"></a>
+<a class="anchor" id="a8c25c9c9796db048bb4b55d7a603b00b"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
           <td class="memname">void algo::NStage::Run </td>
           <td>(</td>
-          <td class="paramtype">const <a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a> &amp;&#160;</td>
+          <td class="paramtype"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a> &amp;&#160;</td>
           <td class="paramname"><em>sequence</em>, </td>
         </tr>
         <tr>

+ 6 - 5
Documentation/html/classcore_1_1DetectionSequence-members.html

@@ -96,12 +96,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#a3cc0fdf3281f34985f4762086293db72">AddObject</a>(ObjectDataPtr object_data)</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#ab62569a3e51d58457057deba12ef6892">Clear</a>()</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#a2cbdc8db34fe87932653826fc8a3c1f7">DetectionSequence</a>(const std::string &amp;name=&quot;DetectionSequence&quot;)</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#aed2967a51334c7b3e9053f2ab0f9990e">DetectionSequence</a>(std::string const &amp;name=&quot;DetectionSequence&quot;)</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#a2417e4f2652a39245d6f2faa0ce19571">GetFrameCount</a>() const</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#a8a1af3dee89766d06f4a4f74044082ad">GetName</a>() const</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#aab2b72c6e0a9ee14dba99d07116c1d86">GetObject</a>(size_t frame_index, size_t object_index) const</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#a99a1b693215c386c4716df12f6040100">GetObjectCount</a>(size_t frame_index) const</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#a557132cfbb170daf47f5a890a0c5bac0">operator&lt;&lt;</a>(std::ostream &amp;os, const DetectionSequence &amp;obj)</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#a2c469219ac4f55aa9deacb5f63195de1">GetFrameOffset</a>() const</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#a8a1af3dee89766d06f4a4f74044082ad">GetName</a>() const</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#a1faac919948e8b10d9112916f3a19bd0">GetObject</a>(size_t frame_index, size_t object_index)</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#ad6c77b1224bf5b149b78b60cc62d5564">GetObjectCount</a>(size_t frame_index)</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html#abc61c6378276573bcb84464d9f0b9e24">operator&lt;&lt;</a>(std::ostream &amp;os, DetectionSequence const &amp;obj)</td><td class="entry"><a class="el" href="classcore_1_1DetectionSequence.html">core::DetectionSequence</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

+ 49 - 23
Documentation/html/classcore_1_1DetectionSequence.html

@@ -100,43 +100,46 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a2cbdc8db34fe87932653826fc8a3c1f7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1DetectionSequence.html#a2cbdc8db34fe87932653826fc8a3c1f7">DetectionSequence</a> (const std::string &amp;name=&quot;DetectionSequence&quot;)</td></tr>
-<tr class="separator:a2cbdc8db34fe87932653826fc8a3c1f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aed2967a51334c7b3e9053f2ab0f9990e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1DetectionSequence.html#aed2967a51334c7b3e9053f2ab0f9990e">DetectionSequence</a> (std::string const &amp;name=&quot;DetectionSequence&quot;)</td></tr>
+<tr class="separator:aed2967a51334c7b3e9053f2ab0f9990e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3cc0fdf3281f34985f4762086293db72"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1DetectionSequence.html#a3cc0fdf3281f34985f4762086293db72">AddObject</a> (ObjectDataPtr object_data)</td></tr>
 <tr class="separator:a3cc0fdf3281f34985f4762086293db72"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ab62569a3e51d58457057deba12ef6892"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1DetectionSequence.html#ab62569a3e51d58457057deba12ef6892">Clear</a> ()</td></tr>
 <tr class="separator:ab62569a3e51d58457057deba12ef6892"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a8a1af3dee89766d06f4a4f74044082ad"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1DetectionSequence.html#a8a1af3dee89766d06f4a4f74044082ad">GetName</a> () const</td></tr>
 <tr class="separator:a8a1af3dee89766d06f4a4f74044082ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aab2b72c6e0a9ee14dba99d07116c1d86"><td class="memItemLeft" align="right" valign="top">ObjectDataPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1DetectionSequence.html#aab2b72c6e0a9ee14dba99d07116c1d86">GetObject</a> (size_t frame_index, size_t object_index) const</td></tr>
-<tr class="separator:aab2b72c6e0a9ee14dba99d07116c1d86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1faac919948e8b10d9112916f3a19bd0"><td class="memItemLeft" align="right" valign="top">ObjectDataPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1DetectionSequence.html#a1faac919948e8b10d9112916f3a19bd0">GetObject</a> (size_t frame_index, size_t object_index)</td></tr>
+<tr class="separator:a1faac919948e8b10d9112916f3a19bd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2417e4f2652a39245d6f2faa0ce19571"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1DetectionSequence.html#a2417e4f2652a39245d6f2faa0ce19571">GetFrameCount</a> () const</td></tr>
 <tr class="separator:a2417e4f2652a39245d6f2faa0ce19571"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a99a1b693215c386c4716df12f6040100"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1DetectionSequence.html#a99a1b693215c386c4716df12f6040100">GetObjectCount</a> (size_t frame_index) const</td></tr>
-<tr class="separator:a99a1b693215c386c4716df12f6040100"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2c469219ac4f55aa9deacb5f63195de1"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1DetectionSequence.html#a2c469219ac4f55aa9deacb5f63195de1">GetFrameOffset</a> () const</td></tr>
+<tr class="separator:a2c469219ac4f55aa9deacb5f63195de1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad6c77b1224bf5b149b78b60cc62d5564"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1DetectionSequence.html#ad6c77b1224bf5b149b78b60cc62d5564">GetObjectCount</a> (size_t frame_index)</td></tr>
+<tr class="separator:ad6c77b1224bf5b149b78b60cc62d5564"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
-<tr class="memitem:a557132cfbb170daf47f5a890a0c5bac0"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1DetectionSequence.html#a557132cfbb170daf47f5a890a0c5bac0">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classcore_1_1DetectionSequence.html">DetectionSequence</a> &amp;obj)</td></tr>
-<tr class="separator:a557132cfbb170daf47f5a890a0c5bac0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abc61c6378276573bcb84464d9f0b9e24"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1DetectionSequence.html#abc61c6378276573bcb84464d9f0b9e24">operator&lt;&lt;</a> (std::ostream &amp;os, <a class="el" href="classcore_1_1DetectionSequence.html">DetectionSequence</a> const &amp;obj)</td></tr>
+<tr class="separator:abc61c6378276573bcb84464d9f0b9e24"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Class for storing a full sequence of frame, each with multiple detected objects. </p>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="a2cbdc8db34fe87932653826fc8a3c1f7"></a>
+<a class="anchor" id="aed2967a51334c7b3e9053f2ab0f9990e"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
           <td class="memname">core::DetectionSequence::DetectionSequence </td>
           <td>(</td>
-          <td class="paramtype">const std::string &amp;&#160;</td>
+          <td class="paramtype">std::string const &amp;&#160;</td>
           <td class="paramname"><em>name</em> = <code>&quot;DetectionSequence&quot;</code></td><td>)</td>
           <td></td>
         </tr>
       </table>
 </div><div class="memdoc">
-<p>Creates a detection sequence with the given name. </p><dl class="params"><dt>Parameters</dt><dd>
+<p>Creates a detection sequence with the given name.</p>
+<dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
     <tr><td class="paramname">name</td><td>The name of this sequence </td></tr>
   </table>
@@ -159,7 +162,8 @@ Friends</h2></td></tr>
         </tr>
       </table>
 </div><div class="memdoc">
-<p>Adds a new object, creates a new frame vector if the given objects frame index is greater than the current frame vector size. </p><dl class="params"><dt>Parameters</dt><dd>
+<p>Adds a new object, creates a new frame vector if the given objects frame index is greater than the current frame vector size.</p>
+<dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
     <tr><td class="paramname">object_data</td><td>The object to add </td></tr>
   </table>
@@ -196,7 +200,25 @@ Friends</h2></td></tr>
         </tr>
       </table>
 </div><div class="memdoc">
-<p>Gets the frame count. </p><dl class="section return"><dt>Returns</dt><dd>The frame count </dd></dl>
+<p>Gets the frame count.</p>
+<dl class="section return"><dt>Returns</dt><dd>The frame count </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a2c469219ac4f55aa9deacb5f63195de1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">size_t core::DetectionSequence::GetFrameOffset </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Gets the frame offset.</p>
+<dl class="section return"><dt>Returns</dt><dd>The Frame offset </dd></dl>
 
 </div>
 </div>
@@ -212,11 +234,12 @@ Friends</h2></td></tr>
         </tr>
       </table>
 </div><div class="memdoc">
-<p>Gets the name of this sequence. </p><dl class="section return"><dt>Returns</dt><dd>The name </dd></dl>
+<p>Gets the name of this sequence.</p>
+<dl class="section return"><dt>Returns</dt><dd>The name </dd></dl>
 
 </div>
 </div>
-<a class="anchor" id="aab2b72c6e0a9ee14dba99d07116c1d86"></a>
+<a class="anchor" id="a1faac919948e8b10d9112916f3a19bd0"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -235,11 +258,12 @@ Friends</h2></td></tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td> const</td>
+          <td></td><td></td>
         </tr>
       </table>
 </div><div class="memdoc">
-<p>Gets a pointer to the object in the given frame with the given index. </p><dl class="params"><dt>Parameters</dt><dd>
+<p>Gets a pointer to the object in the given frame with the given index.</p>
+<dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
     <tr><td class="paramname">frame_index</td><td>The frame to get the object from </td></tr>
     <tr><td class="paramname">object_index</td><td>The objects index in the corresponding frame </td></tr>
@@ -250,7 +274,7 @@ Friends</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a99a1b693215c386c4716df12f6040100"></a>
+<a class="anchor" id="ad6c77b1224bf5b149b78b60cc62d5564"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -259,11 +283,12 @@ Friends</h2></td></tr>
           <td>(</td>
           <td class="paramtype">size_t&#160;</td>
           <td class="paramname"><em>frame_index</em></td><td>)</td>
-          <td> const</td>
+          <td></td>
         </tr>
       </table>
 </div><div class="memdoc">
-<p>Gets the object count in the given frame. </p><dl class="params"><dt>Parameters</dt><dd>
+<p>Gets the object count in the given frame.</p>
+<dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
     <tr><td class="paramname">frame_index</td><td>The frame to get the object count of </td></tr>
   </table>
@@ -274,7 +299,7 @@ Friends</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Friends And Related Function Documentation</h2>
-<a class="anchor" id="a557132cfbb170daf47f5a890a0c5bac0"></a>
+<a class="anchor" id="abc61c6378276573bcb84464d9f0b9e24"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -290,7 +315,7 @@ Friends</h2></td></tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const <a class="el" href="classcore_1_1DetectionSequence.html">DetectionSequence</a> &amp;&#160;</td>
+          <td class="paramtype"><a class="el" href="classcore_1_1DetectionSequence.html">DetectionSequence</a> const &amp;&#160;</td>
           <td class="paramname"><em>obj</em>&#160;</td>
         </tr>
         <tr>
@@ -305,7 +330,8 @@ Friends</h2></td></tr>
   </tr>
 </table>
 </div><div class="memdoc">
-<p>Overrides the &lt;&lt; operator for easy output. </p><dl class="params"><dt>Parameters</dt><dd>
+<p>Overrides the &lt;&lt; operator for easy output.</p>
+<dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
     <tr><td class="paramname">os</td><td>The stream to write to </td></tr>
     <tr><td class="paramname">obj</td><td>The object to write into the stream </td></tr>

+ 7 - 5
Documentation/html/classcore_1_1ObjectData-members.html

@@ -99,11 +99,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
   <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a1151e9215baf315f4b98f696f4271162">GetFrameIndex</a>() const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#ad681915317decab76c384a635fc8444e">Interpolate</a>(ObjectDataPtr obj, double fraction) const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a2880d710cfa520e9c0453e2a6729c0e2">IsVirtual</a>() const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a7f47a396a3b9e8c12a1557c8156b8ff9">ObjectData</a>()</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#af4333a52b012841a6ba73b25aeaae71b">ObjectData</a>(std::size_t frame_index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a56fc9b6184428bf4d80826bbb9fe4c6f">operator&lt;&lt;</a>(std::ostream &amp;os, const ObjectData &amp;obj)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a737216c2689aefa216c1c842922d7dd8">SetDetectionScore</a>(double score)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#aedfe00fa37d5ac7ef554bda746931148">SetFrameIndex</a>(size_t index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#affa5d25fa3d2c04a571a7e095f62bacb">IsWithinConstraints</a>(ObjectDataPtr obj, std::unordered_map&lt; std::string, double &gt; &amp;constraints) const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a7f47a396a3b9e8c12a1557c8156b8ff9">ObjectData</a>()</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#af4333a52b012841a6ba73b25aeaae71b">ObjectData</a>(std::size_t frame_index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a56fc9b6184428bf4d80826bbb9fe4c6f">operator&lt;&lt;</a>(std::ostream &amp;os, const ObjectData &amp;obj)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a737216c2689aefa216c1c842922d7dd8">SetDetectionScore</a>(double score)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#aedfe00fa37d5ac7ef554bda746931148">SetFrameIndex</a>(size_t index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a1d864ed88355e636c5783c18c9ab0555">ToString</a>(char delimiter) const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#aae2c4fceddc529570dbe8909309f9961">Visualize</a>(cv::Mat &amp;image, cv::Scalar &amp;color) const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->

+ 82 - 0
Documentation/html/classcore_1_1ObjectData.html

@@ -128,10 +128,14 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a2880d710cfa520e9c0453e2a6729c0e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afbf7a1e87235f1b204d4d2eb8a37a9a6"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData.html#afbf7a1e87235f1b204d4d2eb8a37a9a6">CompareTo</a> (ObjectDataPtr obj) const</td></tr>
 <tr class="separator:afbf7a1e87235f1b204d4d2eb8a37a9a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:affa5d25fa3d2c04a571a7e095f62bacb"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData.html#affa5d25fa3d2c04a571a7e095f62bacb">IsWithinConstraints</a> (ObjectDataPtr obj, std::unordered_map&lt; std::string, double &gt; &amp;constraints) const</td></tr>
+<tr class="separator:affa5d25fa3d2c04a571a7e095f62bacb"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad681915317decab76c384a635fc8444e"><td class="memItemLeft" align="right" valign="top">virtual ObjectDataPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData.html#ad681915317decab76c384a635fc8444e">Interpolate</a> (ObjectDataPtr obj, double fraction) const</td></tr>
 <tr class="separator:ad681915317decab76c384a635fc8444e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aae2c4fceddc529570dbe8909309f9961"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData.html#aae2c4fceddc529570dbe8909309f9961">Visualize</a> (cv::Mat &amp;image, cv::Scalar &amp;color) const</td></tr>
 <tr class="separator:aae2c4fceddc529570dbe8909309f9961"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1d864ed88355e636c5783c18c9ab0555"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData.html#a1d864ed88355e636c5783c18c9ab0555">ToString</a> (char delimiter) const</td></tr>
+<tr class="separator:a1d864ed88355e636c5783c18c9ab0555"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
@@ -303,6 +307,50 @@ Friends</h2></td></tr>
 </div><div class="memdoc">
 <p>Is this node considered a virtual node </p><dl class="section return"><dt>Returns</dt><dd>True, if this node is virtual </dd></dl>
 
+</div>
+</div>
+<a class="anchor" id="affa5d25fa3d2c04a571a7e095f62bacb"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool core::ObjectData::IsWithinConstraints </td>
+          <td>(</td>
+          <td class="paramtype">ObjectDataPtr&#160;</td>
+          <td class="paramname"><em>obj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">std::unordered_map&lt; std::string, double &gt; &amp;&#160;</td>
+          <td class="paramname"><em>constraints</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Checks if the difference between this object and the specified object is within the constraints specified. The difference is calculated for each constraint separately.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">obj</td><td>The object to get the difference to </td></tr>
+    <tr><td class="paramname">constraints</td><td>The constraints to assure </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Reimplemented in <a class="el" href="classcore_1_1ObjectData2D.html#a63e855919a72462225a8e69140f1389b">core::ObjectData2D</a>, <a class="el" href="classcore_1_1ObjectDataAngular.html#a1ef9168c2384d2038a1dd6e85d0b932f">core::ObjectDataAngular</a>, and <a class="el" href="classcore_1_1ObjectDataBox.html#a04f4b780b79491270e4838f7504c1917">core::ObjectDataBox</a>.</p>
+
 </div>
 </div>
 <a class="anchor" id="a737216c2689aefa216c1c842922d7dd8"></a>
@@ -347,6 +395,40 @@ Friends</h2></td></tr>
   </dd>
 </dl>
 
+</div>
+</div>
+<a class="anchor" id="a1d864ed88355e636c5783c18c9ab0555"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">std::string core::ObjectData::ToString </td>
+          <td>(</td>
+          <td class="paramtype">char&#160;</td>
+          <td class="paramname"><em>delimiter</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns a string representing the values of this object data.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">delimiter</td><td>The delimiter used to separate values </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The string containing the values </dd></dl>
+
+<p>Reimplemented in <a class="el" href="classcore_1_1ObjectData2D.html#a72b2f50ca82ebd9269e1c29cdac6d92a">core::ObjectData2D</a>, <a class="el" href="classcore_1_1ObjectDataAngular.html#a3b419c1d4be886f094b9af94cd839bd4">core::ObjectDataAngular</a>, and <a class="el" href="classcore_1_1ObjectDataBox.html#a0af10953ccecb7089a3a2841ec7419b9">core::ObjectDataBox</a>.</p>
+
 </div>
 </div>
 <a class="anchor" id="aae2c4fceddc529570dbe8909309f9961"></a>

+ 9 - 7
Documentation/html/classcore_1_1ObjectData2D-members.html

@@ -102,13 +102,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
   <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#a35381efb292d20f2b181558c129269f3">GetTemporalWeight</a>() const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#a59b974e09f74f0a2640e3152893fe79f">Interpolate</a>(ObjectDataPtr obj, double fraction) const override</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a2880d710cfa520e9c0453e2a6729c0e2">IsVirtual</a>() const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a7f47a396a3b9e8c12a1557c8156b8ff9">ObjectData</a>()</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#af4333a52b012841a6ba73b25aeaae71b">ObjectData</a>(std::size_t frame_index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#adc35e5b8597ea47ad3568259c2e800c6">ObjectData2D</a>(size_t frame_index, cv::Point2d position)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a737216c2689aefa216c1c842922d7dd8">SetDetectionScore</a>(double score)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#aedfe00fa37d5ac7ef554bda746931148">SetFrameIndex</a>(size_t index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#ad62bf8b2362e8f3547f8040a144fa346">SetSpatialWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#a2850785393bc7a5250427bbda84c1b58">SetTemporalWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#a63e855919a72462225a8e69140f1389b">IsWithinConstraints</a>(ObjectDataPtr obj, std::unordered_map&lt; std::string, double &gt; &amp;constraints) const override</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a7f47a396a3b9e8c12a1557c8156b8ff9">ObjectData</a>()</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#af4333a52b012841a6ba73b25aeaae71b">ObjectData</a>(std::size_t frame_index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#adc35e5b8597ea47ad3568259c2e800c6">ObjectData2D</a>(size_t frame_index, cv::Point2d position)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a737216c2689aefa216c1c842922d7dd8">SetDetectionScore</a>(double score)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#aedfe00fa37d5ac7ef554bda746931148">SetFrameIndex</a>(size_t index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#ad62bf8b2362e8f3547f8040a144fa346">SetSpatialWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#a2850785393bc7a5250427bbda84c1b58">SetTemporalWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#a72b2f50ca82ebd9269e1c29cdac6d92a">ToString</a>(char delimiter) const override</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#aff4e8539559f4ce50a7f43b733d6c512">Visualize</a>(cv::Mat &amp;image, cv::Scalar &amp;color) const override</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->

+ 86 - 0
Documentation/html/classcore_1_1ObjectData2D.html

@@ -124,10 +124,14 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a688087ccdd999d7e16f5c68cc460209d"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a68d56bd5f26a41830a87ae32eabf9126"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData2D.html#a68d56bd5f26a41830a87ae32eabf9126">CompareTo</a> (ObjectDataPtr obj) const override</td></tr>
 <tr class="separator:a68d56bd5f26a41830a87ae32eabf9126"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a63e855919a72462225a8e69140f1389b"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData2D.html#a63e855919a72462225a8e69140f1389b">IsWithinConstraints</a> (ObjectDataPtr obj, std::unordered_map&lt; std::string, double &gt; &amp;constraints) const override</td></tr>
+<tr class="separator:a63e855919a72462225a8e69140f1389b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a59b974e09f74f0a2640e3152893fe79f"><td class="memItemLeft" align="right" valign="top">virtual ObjectDataPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData2D.html#a59b974e09f74f0a2640e3152893fe79f">Interpolate</a> (ObjectDataPtr obj, double fraction) const override</td></tr>
 <tr class="separator:a59b974e09f74f0a2640e3152893fe79f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aff4e8539559f4ce50a7f43b733d6c512"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData2D.html#aff4e8539559f4ce50a7f43b733d6c512">Visualize</a> (cv::Mat &amp;image, cv::Scalar &amp;color) const override</td></tr>
 <tr class="separator:aff4e8539559f4ce50a7f43b733d6c512"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a72b2f50ca82ebd9269e1c29cdac6d92a"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData2D.html#a72b2f50ca82ebd9269e1c29cdac6d92a">ToString</a> (char delimiter) const override</td></tr>
+<tr class="separator:a72b2f50ca82ebd9269e1c29cdac6d92a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classcore_1_1ObjectData"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classcore_1_1ObjectData')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td></tr>
 <tr class="memitem:a7f47a396a3b9e8c12a1557c8156b8ff9 inherit pub_methods_classcore_1_1ObjectData"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData.html#a7f47a396a3b9e8c12a1557c8156b8ff9">ObjectData</a> ()</td></tr>
 <tr class="separator:a7f47a396a3b9e8c12a1557c8156b8ff9 inherit pub_methods_classcore_1_1ObjectData"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -308,6 +312,52 @@ Public Member Functions</h2></td></tr>
 
 <p>Reimplemented in <a class="el" href="classcore_1_1ObjectDataAngular.html#a42962dd1f994b2577133450e755d586e">core::ObjectDataAngular</a>, and <a class="el" href="classcore_1_1ObjectDataBox.html#ab2816bceb771dd7442e6c29193dfe267">core::ObjectDataBox</a>.</p>
 
+</div>
+</div>
+<a class="anchor" id="a63e855919a72462225a8e69140f1389b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool core::ObjectData2D::IsWithinConstraints </td>
+          <td>(</td>
+          <td class="paramtype">ObjectDataPtr&#160;</td>
+          <td class="paramname"><em>obj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">std::unordered_map&lt; std::string, double &gt; &amp;&#160;</td>
+          <td class="paramname"><em>constraints</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Checks if the difference between this object and the specified object is within the constraints specified. The difference is calculated for each constraint separately.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">obj</td><td>The object to get the difference to </td></tr>
+    <tr><td class="paramname">constraints</td><td>The constraints to assure </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcore_1_1ObjectData.html#affa5d25fa3d2c04a571a7e095f62bacb">core::ObjectData</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcore_1_1ObjectDataAngular.html#a1ef9168c2384d2038a1dd6e85d0b932f">core::ObjectDataAngular</a>, and <a class="el" href="classcore_1_1ObjectDataBox.html#a04f4b780b79491270e4838f7504c1917">core::ObjectDataBox</a>.</p>
+
 </div>
 </div>
 <a class="anchor" id="ad62bf8b2362e8f3547f8040a144fa346"></a>
@@ -352,6 +402,42 @@ Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
+</div>
+</div>
+<a class="anchor" id="a72b2f50ca82ebd9269e1c29cdac6d92a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">std::string core::ObjectData2D::ToString </td>
+          <td>(</td>
+          <td class="paramtype">char&#160;</td>
+          <td class="paramname"><em>delimiter</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns a string representing the values of this object data.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">delimiter</td><td>The delimiter used to separate values </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The string containing the values </dd></dl>
+
+<p>Reimplemented from <a class="el" href="classcore_1_1ObjectData.html#a1d864ed88355e636c5783c18c9ab0555">core::ObjectData</a>.</p>
+
+<p>Reimplemented in <a class="el" href="classcore_1_1ObjectDataAngular.html#a3b419c1d4be886f094b9af94cd839bd4">core::ObjectDataAngular</a>, and <a class="el" href="classcore_1_1ObjectDataBox.html#a0af10953ccecb7089a3a2841ec7419b9">core::ObjectDataBox</a>.</p>
+
 </div>
 </div>
 <a class="anchor" id="aff4e8539559f4ce50a7f43b733d6c512"></a>

+ 12 - 10
Documentation/html/classcore_1_1ObjectDataAngular-members.html

@@ -104,16 +104,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
   <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#a35381efb292d20f2b181558c129269f3">GetTemporalWeight</a>() const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html#a42962dd1f994b2577133450e755d586e">Interpolate</a>(ObjectDataPtr obj, double fraction) const override</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html">core::ObjectDataAngular</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a2880d710cfa520e9c0453e2a6729c0e2">IsVirtual</a>() const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a7f47a396a3b9e8c12a1557c8156b8ff9">ObjectData</a>()</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#af4333a52b012841a6ba73b25aeaae71b">ObjectData</a>(std::size_t frame_index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#adc35e5b8597ea47ad3568259c2e800c6">ObjectData2D</a>(size_t frame_index, cv::Point2d position)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html#a276b02fc7646e3275f1cb81fca7e9a47">ObjectDataAngular</a>(size_t frame_index, const cv::Point2d &amp;position, double angle)</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html">core::ObjectDataAngular</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html#aae3a8f335e26771d06c8940931d5d654">ObjectDataAngular</a>(size_t frame_index, const cv::Point2d &amp;position, double angle, double temporal_weight, double spatial_weight, double angular_weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html">core::ObjectDataAngular</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html#af6772caef2337f3c12a3f52049c4d853">SetAngularWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html">core::ObjectDataAngular</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a737216c2689aefa216c1c842922d7dd8">SetDetectionScore</a>(double score)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#aedfe00fa37d5ac7ef554bda746931148">SetFrameIndex</a>(size_t index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#ad62bf8b2362e8f3547f8040a144fa346">SetSpatialWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#a2850785393bc7a5250427bbda84c1b58">SetTemporalWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html#a1ef9168c2384d2038a1dd6e85d0b932f">IsWithinConstraints</a>(ObjectDataPtr obj, std::unordered_map&lt; std::string, double &gt; &amp;constraints) const override</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html">core::ObjectDataAngular</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a7f47a396a3b9e8c12a1557c8156b8ff9">ObjectData</a>()</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#af4333a52b012841a6ba73b25aeaae71b">ObjectData</a>(std::size_t frame_index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#adc35e5b8597ea47ad3568259c2e800c6">ObjectData2D</a>(size_t frame_index, cv::Point2d position)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html#a276b02fc7646e3275f1cb81fca7e9a47">ObjectDataAngular</a>(size_t frame_index, const cv::Point2d &amp;position, double angle)</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html">core::ObjectDataAngular</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html#aae3a8f335e26771d06c8940931d5d654">ObjectDataAngular</a>(size_t frame_index, const cv::Point2d &amp;position, double angle, double temporal_weight, double spatial_weight, double angular_weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html">core::ObjectDataAngular</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html#af6772caef2337f3c12a3f52049c4d853">SetAngularWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html">core::ObjectDataAngular</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a737216c2689aefa216c1c842922d7dd8">SetDetectionScore</a>(double score)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#aedfe00fa37d5ac7ef554bda746931148">SetFrameIndex</a>(size_t index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#ad62bf8b2362e8f3547f8040a144fa346">SetSpatialWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#a2850785393bc7a5250427bbda84c1b58">SetTemporalWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html#a3b419c1d4be886f094b9af94cd839bd4">ToString</a>(char delimiter) const override</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html">core::ObjectDataAngular</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html#acb4265f6de511238460df118148bc85c">Visualize</a>(cv::Mat &amp;image, cv::Scalar &amp;color) const override</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataAngular.html">core::ObjectDataAngular</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->

+ 82 - 0
Documentation/html/classcore_1_1ObjectDataAngular.html

@@ -121,10 +121,14 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:ae1c5db7b9fc06e648450d9388c93a1aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2932240c6c082b76f2c04723cdf3e4f9"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectDataAngular.html#a2932240c6c082b76f2c04723cdf3e4f9">CompareTo</a> (ObjectDataPtr obj) const override</td></tr>
 <tr class="separator:a2932240c6c082b76f2c04723cdf3e4f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1ef9168c2384d2038a1dd6e85d0b932f"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectDataAngular.html#a1ef9168c2384d2038a1dd6e85d0b932f">IsWithinConstraints</a> (ObjectDataPtr obj, std::unordered_map&lt; std::string, double &gt; &amp;constraints) const override</td></tr>
+<tr class="separator:a1ef9168c2384d2038a1dd6e85d0b932f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a42962dd1f994b2577133450e755d586e"><td class="memItemLeft" align="right" valign="top">virtual ObjectDataPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectDataAngular.html#a42962dd1f994b2577133450e755d586e">Interpolate</a> (ObjectDataPtr obj, double fraction) const override</td></tr>
 <tr class="separator:a42962dd1f994b2577133450e755d586e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:acb4265f6de511238460df118148bc85c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectDataAngular.html#acb4265f6de511238460df118148bc85c">Visualize</a> (cv::Mat &amp;image, cv::Scalar &amp;color) const override</td></tr>
 <tr class="separator:acb4265f6de511238460df118148bc85c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b419c1d4be886f094b9af94cd839bd4"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectDataAngular.html#a3b419c1d4be886f094b9af94cd839bd4">ToString</a> (char delimiter) const override</td></tr>
+<tr class="separator:a3b419c1d4be886f094b9af94cd839bd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classcore_1_1ObjectData2D"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classcore_1_1ObjectData2D')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td></tr>
 <tr class="memitem:adc35e5b8597ea47ad3568259c2e800c6 inherit pub_methods_classcore_1_1ObjectData2D"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData2D.html#adc35e5b8597ea47ad3568259c2e800c6">ObjectData2D</a> (size_t frame_index, cv::Point2d position)</td></tr>
 <tr class="separator:adc35e5b8597ea47ad3568259c2e800c6 inherit pub_methods_classcore_1_1ObjectData2D"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -366,6 +370,50 @@ Public Member Functions</h2></td></tr>
 
 <p>Reimplemented from <a class="el" href="classcore_1_1ObjectData2D.html#a59b974e09f74f0a2640e3152893fe79f">core::ObjectData2D</a>.</p>
 
+</div>
+</div>
+<a class="anchor" id="a1ef9168c2384d2038a1dd6e85d0b932f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool core::ObjectDataAngular::IsWithinConstraints </td>
+          <td>(</td>
+          <td class="paramtype">ObjectDataPtr&#160;</td>
+          <td class="paramname"><em>obj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">std::unordered_map&lt; std::string, double &gt; &amp;&#160;</td>
+          <td class="paramname"><em>constraints</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Checks if the difference between this object and the specified object is within the constraints specified. The difference is calculated for each constraint separately.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">obj</td><td>The object to get the difference to </td></tr>
+    <tr><td class="paramname">constraints</td><td>The constraints to assure </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcore_1_1ObjectData2D.html#a63e855919a72462225a8e69140f1389b">core::ObjectData2D</a>.</p>
+
 </div>
 </div>
 <a class="anchor" id="af6772caef2337f3c12a3f52049c4d853"></a>
@@ -388,6 +436,40 @@ Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
+</div>
+</div>
+<a class="anchor" id="a3b419c1d4be886f094b9af94cd839bd4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">std::string core::ObjectDataAngular::ToString </td>
+          <td>(</td>
+          <td class="paramtype">char&#160;</td>
+          <td class="paramname"><em>delimiter</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns a string representing the values of this object data.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">delimiter</td><td>The delimiter used to separate values </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The string containing the values </dd></dl>
+
+<p>Reimplemented from <a class="el" href="classcore_1_1ObjectData2D.html#a72b2f50ca82ebd9269e1c29cdac6d92a">core::ObjectData2D</a>.</p>
+
 </div>
 </div>
 <a class="anchor" id="acb4265f6de511238460df118148bc85c"></a>

+ 10 - 8
Documentation/html/classcore_1_1ObjectDataBox-members.html

@@ -103,14 +103,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
   <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#a35381efb292d20f2b181558c129269f3">GetTemporalWeight</a>() const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classcore_1_1ObjectDataBox.html#ab2816bceb771dd7442e6c29193dfe267">Interpolate</a>(ObjectDataPtr obj, double fraction) const override</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataBox.html">core::ObjectDataBox</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a2880d710cfa520e9c0453e2a6729c0e2">IsVirtual</a>() const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a7f47a396a3b9e8c12a1557c8156b8ff9">ObjectData</a>()</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#af4333a52b012841a6ba73b25aeaae71b">ObjectData</a>(std::size_t frame_index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#adc35e5b8597ea47ad3568259c2e800c6">ObjectData2D</a>(size_t frame_index, cv::Point2d position)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectDataBox.html#a9a1ee3e1e603c1e55adc58a1a58efad2">ObjectDataBox</a>(size_t frame_index, cv::Point2d anchor, cv::Point2d size)</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataBox.html">core::ObjectDataBox</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a737216c2689aefa216c1c842922d7dd8">SetDetectionScore</a>(double score)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#aedfe00fa37d5ac7ef554bda746931148">SetFrameIndex</a>(size_t index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#ad62bf8b2362e8f3547f8040a144fa346">SetSpatialWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#a2850785393bc7a5250427bbda84c1b58">SetTemporalWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectDataBox.html#a04f4b780b79491270e4838f7504c1917">IsWithinConstraints</a>(ObjectDataPtr obj, std::unordered_map&lt; std::string, double &gt; &amp;constraints) const override</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataBox.html">core::ObjectDataBox</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a7f47a396a3b9e8c12a1557c8156b8ff9">ObjectData</a>()</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#af4333a52b012841a6ba73b25aeaae71b">ObjectData</a>(std::size_t frame_index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#adc35e5b8597ea47ad3568259c2e800c6">ObjectData2D</a>(size_t frame_index, cv::Point2d position)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectDataBox.html#a4e331870ed012d9bc44bc769aee86362">ObjectDataBox</a>(size_t frame_index, cv::Point2d center, cv::Point2d size)</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataBox.html">core::ObjectDataBox</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a737216c2689aefa216c1c842922d7dd8">SetDetectionScore</a>(double score)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#aedfe00fa37d5ac7ef554bda746931148">SetFrameIndex</a>(size_t index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#ad62bf8b2362e8f3547f8040a144fa346">SetSpatialWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html#a2850785393bc7a5250427bbda84c1b58">SetTemporalWeight</a>(double weight)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectDataBox.html#a0af10953ccecb7089a3a2841ec7419b9">ToString</a>(char delimiter) const override</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataBox.html">core::ObjectDataBox</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr><td class="entry"><a class="el" href="classcore_1_1ObjectDataBox.html#ab29bacb20c258ba572d0372469ec5523">Visualize</a>(cv::Mat &amp;image, cv::Scalar &amp;color) const override</td><td class="entry"><a class="el" href="classcore_1_1ObjectDataBox.html">core::ObjectDataBox</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->

+ 87 - 5
Documentation/html/classcore_1_1ObjectDataBox.html

@@ -109,16 +109,20 @@ Inheritance diagram for core::ObjectDataBox:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a9a1ee3e1e603c1e55adc58a1a58efad2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectDataBox.html#a9a1ee3e1e603c1e55adc58a1a58efad2">ObjectDataBox</a> (size_t frame_index, cv::Point2d anchor, cv::Point2d size)</td></tr>
-<tr class="separator:a9a1ee3e1e603c1e55adc58a1a58efad2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4e331870ed012d9bc44bc769aee86362"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectDataBox.html#a4e331870ed012d9bc44bc769aee86362">ObjectDataBox</a> (size_t frame_index, cv::Point2d center, cv::Point2d size)</td></tr>
+<tr class="separator:a4e331870ed012d9bc44bc769aee86362"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a76e9f48dfb685d16de868a129c1f3918"><td class="memItemLeft" align="right" valign="top">cv::Point2d&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectDataBox.html#a76e9f48dfb685d16de868a129c1f3918">GetSize</a> () const</td></tr>
 <tr class="separator:a76e9f48dfb685d16de868a129c1f3918"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a163c57338778f957ce514611c509558a"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectDataBox.html#a163c57338778f957ce514611c509558a">CompareTo</a> (ObjectDataPtr obj) const override</td></tr>
 <tr class="separator:a163c57338778f957ce514611c509558a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a04f4b780b79491270e4838f7504c1917"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectDataBox.html#a04f4b780b79491270e4838f7504c1917">IsWithinConstraints</a> (ObjectDataPtr obj, std::unordered_map&lt; std::string, double &gt; &amp;constraints) const override</td></tr>
+<tr class="separator:a04f4b780b79491270e4838f7504c1917"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ab2816bceb771dd7442e6c29193dfe267"><td class="memItemLeft" align="right" valign="top">virtual ObjectDataPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectDataBox.html#ab2816bceb771dd7442e6c29193dfe267">Interpolate</a> (ObjectDataPtr obj, double fraction) const override</td></tr>
 <tr class="separator:ab2816bceb771dd7442e6c29193dfe267"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ab29bacb20c258ba572d0372469ec5523"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectDataBox.html#ab29bacb20c258ba572d0372469ec5523">Visualize</a> (cv::Mat &amp;image, cv::Scalar &amp;color) const override</td></tr>
 <tr class="separator:ab29bacb20c258ba572d0372469ec5523"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0af10953ccecb7089a3a2841ec7419b9"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectDataBox.html#a0af10953ccecb7089a3a2841ec7419b9">ToString</a> (char delimiter) const override</td></tr>
+<tr class="separator:a0af10953ccecb7089a3a2841ec7419b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classcore_1_1ObjectData2D"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classcore_1_1ObjectData2D')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classcore_1_1ObjectData2D.html">core::ObjectData2D</a></td></tr>
 <tr class="memitem:adc35e5b8597ea47ad3568259c2e800c6 inherit pub_methods_classcore_1_1ObjectData2D"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData2D.html#adc35e5b8597ea47ad3568259c2e800c6">ObjectData2D</a> (size_t frame_index, cv::Point2d position)</td></tr>
 <tr class="separator:adc35e5b8597ea47ad3568259c2e800c6 inherit pub_methods_classcore_1_1ObjectData2D"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -151,7 +155,7 @@ Public Member Functions</h2></td></tr>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Class for storing an object detection with an bounding box. </p>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="a9a1ee3e1e603c1e55adc58a1a58efad2"></a>
+<a class="anchor" id="a4e331870ed012d9bc44bc769aee86362"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -165,7 +169,7 @@ Public Member Functions</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">cv::Point2d&#160;</td>
-          <td class="paramname"><em>anchor</em>, </td>
+          <td class="paramname"><em>center</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
@@ -184,7 +188,7 @@ Public Member Functions</h2></td></tr>
 <dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
     <tr><td class="paramname">frame_index</td><td>The frame index of the detection </td></tr>
-    <tr><td class="paramname">anchor</td><td>The top left corner of the bounding box </td></tr>
+    <tr><td class="paramname">center</td><td>The center of the bounding box </td></tr>
     <tr><td class="paramname">size</td><td>The size of the bounding box </td></tr>
   </table>
   </dd>
@@ -285,6 +289,84 @@ Public Member Functions</h2></td></tr>
 
 <p>Reimplemented from <a class="el" href="classcore_1_1ObjectData2D.html#a59b974e09f74f0a2640e3152893fe79f">core::ObjectData2D</a>.</p>
 
+</div>
+</div>
+<a class="anchor" id="a04f4b780b79491270e4838f7504c1917"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool core::ObjectDataBox::IsWithinConstraints </td>
+          <td>(</td>
+          <td class="paramtype">ObjectDataPtr&#160;</td>
+          <td class="paramname"><em>obj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">std::unordered_map&lt; std::string, double &gt; &amp;&#160;</td>
+          <td class="paramname"><em>constraints</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Checks if the difference between this object and the specified object is within the constraints specified. The difference is calculated for each constraint separately.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">obj</td><td>The object to get the difference to </td></tr>
+    <tr><td class="paramname">constraints</td><td>The constraints to assure </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classcore_1_1ObjectData2D.html#a63e855919a72462225a8e69140f1389b">core::ObjectData2D</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0af10953ccecb7089a3a2841ec7419b9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">std::string core::ObjectDataBox::ToString </td>
+          <td>(</td>
+          <td class="paramtype">char&#160;</td>
+          <td class="paramname"><em>delimiter</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns a string representing the values of this object data.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">delimiter</td><td>The delimiter used to separate values </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The string containing the values </dd></dl>
+
+<p>Reimplemented from <a class="el" href="classcore_1_1ObjectData2D.html#a72b2f50ca82ebd9269e1c29cdac6d92a">core::ObjectData2D</a>.</p>
+
 </div>
 </div>
 <a class="anchor" id="ab29bacb20c258ba572d0372469ec5523"></a>

+ 8 - 6
Documentation/html/classcore_1_1Tracklet-members.html

@@ -108,13 +108,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
   <tr><td class="entry"><a class="el" href="classcore_1_1Tracklet.html#a5fb5e6ab9df668c3477e8b52f115b188">Interpolate</a>(ObjectDataPtr obj, double fraction) const override</td><td class="entry"><a class="el" href="classcore_1_1Tracklet.html">core::Tracklet</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classcore_1_1Tracklet.html#a10b56b608b24ef547550540e5a755bce">InterpolateMissingFrames</a>()</td><td class="entry"><a class="el" href="classcore_1_1Tracklet.html">core::Tracklet</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a2880d710cfa520e9c0453e2a6729c0e2">IsVirtual</a>() const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a7f47a396a3b9e8c12a1557c8156b8ff9">ObjectData</a>()</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#af4333a52b012841a6ba73b25aeaae71b">ObjectData</a>(std::size_t frame_index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a737216c2689aefa216c1c842922d7dd8">SetDetectionScore</a>(double score)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#aedfe00fa37d5ac7ef554bda746931148">SetFrameIndex</a>(size_t index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#affa5d25fa3d2c04a571a7e095f62bacb">IsWithinConstraints</a>(ObjectDataPtr obj, std::unordered_map&lt; std::string, double &gt; &amp;constraints) const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a7f47a396a3b9e8c12a1557c8156b8ff9">ObjectData</a>()</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#af4333a52b012841a6ba73b25aeaae71b">ObjectData</a>(std::size_t frame_index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a737216c2689aefa216c1c842922d7dd8">SetDetectionScore</a>(double score)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#aedfe00fa37d5ac7ef554bda746931148">SetFrameIndex</a>(size_t index)</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1ObjectData.html#a1d864ed88355e636c5783c18c9ab0555">ToString</a>(char delimiter) const</td><td class="entry"><a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classcore_1_1Tracklet.html#aedf59b5a9a068a28bb7570f2a031d4e7">Tracklet</a>()</td><td class="entry"><a class="el" href="classcore_1_1Tracklet.html">core::Tracklet</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classcore_1_1Tracklet.html#a85f92a4059bf89f24a83f28935675181">Visualize</a>(cv::Mat &amp;image, cv::Scalar &amp;color) const override</td><td class="entry"><a class="el" href="classcore_1_1Tracklet.html">core::Tracklet</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1Tracklet.html#a3a2b241939559e47aef701d2e2c4d4bd">Visualize</a>(cv::Mat &amp;image, cv::Scalar &amp;color, size_t frame, size_t predecessor_count, size_t successor_count) const</td><td class="entry"><a class="el" href="classcore_1_1Tracklet.html">core::Tracklet</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classcore_1_1Tracklet.html#a3a2b241939559e47aef701d2e2c4d4bd">Visualize</a>(cv::Mat &amp;image, cv::Scalar &amp;color, size_t frame, size_t predecessor_count, size_t successor_count) const</td><td class="entry"><a class="el" href="classcore_1_1Tracklet.html">core::Tracklet</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcore_1_1Tracklet.html#a85f92a4059bf89f24a83f28935675181">Visualize</a>(cv::Mat &amp;image, cv::Scalar &amp;color) const override</td><td class="entry"><a class="el" href="classcore_1_1Tracklet.html">core::Tracklet</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

+ 47 - 43
Documentation/html/classcore_1_1Tracklet.html

@@ -122,12 +122,6 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:aee4298a7b734b2b7533d4536006a8aa8"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a10b56b608b24ef547550540e5a755bce"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Tracklet.html#a10b56b608b24ef547550540e5a755bce">InterpolateMissingFrames</a> ()</td></tr>
 <tr class="separator:a10b56b608b24ef547550540e5a755bce"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0357f2fa173941800571432dcbc96dc2"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Tracklet.html#a0357f2fa173941800571432dcbc96dc2">CompareTo</a> (ObjectDataPtr obj) const override</td></tr>
-<tr class="separator:a0357f2fa173941800571432dcbc96dc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5fb5e6ab9df668c3477e8b52f115b188"><td class="memItemLeft" align="right" valign="top">virtual ObjectDataPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Tracklet.html#a5fb5e6ab9df668c3477e8b52f115b188">Interpolate</a> (ObjectDataPtr obj, double fraction) const override</td></tr>
-<tr class="separator:a5fb5e6ab9df668c3477e8b52f115b188"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a85f92a4059bf89f24a83f28935675181"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Tracklet.html#a85f92a4059bf89f24a83f28935675181">Visualize</a> (cv::Mat &amp;image, cv::Scalar &amp;color) const override</td></tr>
-<tr class="separator:a85f92a4059bf89f24a83f28935675181"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3a2b241939559e47aef701d2e2c4d4bd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Tracklet.html#a3a2b241939559e47aef701d2e2c4d4bd">Visualize</a> (cv::Mat &amp;image, cv::Scalar &amp;color, size_t frame, size_t predecessor_count, size_t successor_count) const</td></tr>
 <tr class="separator:a3a2b241939559e47aef701d2e2c4d4bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2bdb2f2c8249145808e7029dde6e7df0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Tracklet.html#a2bdb2f2c8249145808e7029dde6e7df0">Flatten</a> ()</td></tr>
@@ -136,6 +130,12 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a5bbbf1e2858edaad93c04cc663afeeff"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a5a0e56045f8c1868b46db87700658260"><td class="memItemLeft" align="right" valign="top">ObjectDataPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Tracklet.html#a5a0e56045f8c1868b46db87700658260">GetFrameObject</a> (size_t frame_index)</td></tr>
 <tr class="separator:a5a0e56045f8c1868b46db87700658260"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0357f2fa173941800571432dcbc96dc2"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Tracklet.html#a0357f2fa173941800571432dcbc96dc2">CompareTo</a> (ObjectDataPtr obj) const override</td></tr>
+<tr class="separator:a0357f2fa173941800571432dcbc96dc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5fb5e6ab9df668c3477e8b52f115b188"><td class="memItemLeft" align="right" valign="top">virtual ObjectDataPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Tracklet.html#a5fb5e6ab9df668c3477e8b52f115b188">Interpolate</a> (ObjectDataPtr obj, double fraction) const override</td></tr>
+<tr class="separator:a5fb5e6ab9df668c3477e8b52f115b188"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a85f92a4059bf89f24a83f28935675181"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1Tracklet.html#a85f92a4059bf89f24a83f28935675181">Visualize</a> (cv::Mat &amp;image, cv::Scalar &amp;color) const override</td></tr>
+<tr class="separator:a85f92a4059bf89f24a83f28935675181"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classcore_1_1ObjectData"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classcore_1_1ObjectData')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classcore_1_1ObjectData.html">core::ObjectData</a></td></tr>
 <tr class="memitem:a7f47a396a3b9e8c12a1557c8156b8ff9 inherit pub_methods_classcore_1_1ObjectData"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData.html#a7f47a396a3b9e8c12a1557c8156b8ff9">ObjectData</a> ()</td></tr>
 <tr class="separator:a7f47a396a3b9e8c12a1557c8156b8ff9 inherit pub_methods_classcore_1_1ObjectData"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -151,6 +151,10 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a227a11377867105d5fcbe9efc3faed45 inherit pub_methods_classcore_1_1ObjectData"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2880d710cfa520e9c0453e2a6729c0e2 inherit pub_methods_classcore_1_1ObjectData"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData.html#a2880d710cfa520e9c0453e2a6729c0e2">IsVirtual</a> () const</td></tr>
 <tr class="separator:a2880d710cfa520e9c0453e2a6729c0e2 inherit pub_methods_classcore_1_1ObjectData"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:affa5d25fa3d2c04a571a7e095f62bacb inherit pub_methods_classcore_1_1ObjectData"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData.html#affa5d25fa3d2c04a571a7e095f62bacb">IsWithinConstraints</a> (ObjectDataPtr obj, std::unordered_map&lt; std::string, double &gt; &amp;constraints) const</td></tr>
+<tr class="separator:affa5d25fa3d2c04a571a7e095f62bacb inherit pub_methods_classcore_1_1ObjectData"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1d864ed88355e636c5783c18c9ab0555 inherit pub_methods_classcore_1_1ObjectData"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcore_1_1ObjectData.html#a1d864ed88355e636c5783c18c9ab0555">ToString</a> (char delimiter) const</td></tr>
+<tr class="separator:a1d864ed88355e636c5783c18c9ab0555 inherit pub_methods_classcore_1_1ObjectData"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>A class for storing multiple object data objects. The object data objects are handled as a path. All objects are stored sorted ascending by their frame index. </p>
@@ -426,12 +430,9 @@ Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a85f92a4059bf89f24a83f28935675181"></a>
+<a class="anchor" id="a3a2b241939559e47aef701d2e2c4d4bd"></a>
 <div class="memitem">
 <div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
       <table class="memname">
         <tr>
           <td class="memname">void core::Tracklet::Visualize </td>
@@ -443,7 +444,25 @@ Public Member Functions</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">cv::Scalar &amp;&#160;</td>
-          <td class="paramname"><em>color</em>&#160;</td>
+          <td class="paramname"><em>color</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>frame</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>predecessor_count</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>successor_count</em>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -451,27 +470,26 @@ Public Member Functions</h2></td></tr>
           <td></td><td> const</td>
         </tr>
       </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
 </div><div class="memdoc">
-<p>Visualizes the object in the given image with the given color. This method does nothing, it needs to be overwritten to visualize something. </p><dl class="params"><dt>Parameters</dt><dd>
+<p>Visualizes the tracklet by visualizing the path object in the given frame and the number of path objects in the given range before and after the given frame. </p><dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
     <tr><td class="paramname">image</td><td>The image to write into </td></tr>
     <tr><td class="paramname">color</td><td>The color to use </td></tr>
+    <tr><td class="paramname">frame</td><td>The frame index to visualize the path objects from </td></tr>
+    <tr><td class="paramname">predecessor_count</td><td>The number of path objects to visualize before the given frame </td></tr>
+    <tr><td class="paramname">successor_count</td><td>The number of path objects to visualize after the given frame </td></tr>
   </table>
   </dd>
 </dl>
 
-<p>Reimplemented from <a class="el" href="classcore_1_1ObjectData.html#aae2c4fceddc529570dbe8909309f9961">core::ObjectData</a>.</p>
-
 </div>
 </div>
-<a class="anchor" id="a3a2b241939559e47aef701d2e2c4d4bd"></a>
+<a class="anchor" id="a85f92a4059bf89f24a83f28935675181"></a>
 <div class="memitem">
 <div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
       <table class="memname">
         <tr>
           <td class="memname">void core::Tracklet::Visualize </td>
@@ -483,25 +501,7 @@ Public Member Functions</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">cv::Scalar &amp;&#160;</td>
-          <td class="paramname"><em>color</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t&#160;</td>
-          <td class="paramname"><em>frame</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t&#160;</td>
-          <td class="paramname"><em>predecessor_count</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t&#160;</td>
-          <td class="paramname"><em>successor_count</em>&#160;</td>
+          <td class="paramname"><em>color</em>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -509,18 +509,22 @@ Public Member Functions</h2></td></tr>
           <td></td><td> const</td>
         </tr>
       </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
 </div><div class="memdoc">
-<p>Visualizes the tracklet by visualizing the path object in the given frame and the number of path objects in the given range before and after the given frame. </p><dl class="params"><dt>Parameters</dt><dd>
+<p>Visualizes the object in the given image with the given color. This method does nothing, it needs to be overwritten to visualize something. </p><dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
     <tr><td class="paramname">image</td><td>The image to write into </td></tr>
     <tr><td class="paramname">color</td><td>The color to use </td></tr>
-    <tr><td class="paramname">frame</td><td>The frame index to visualize the path objects from </td></tr>
-    <tr><td class="paramname">predecessor_count</td><td>The number of path objects to visualize before the given frame </td></tr>
-    <tr><td class="paramname">successor_count</td><td>The number of path objects to visualize after the given frame </td></tr>
   </table>
   </dd>
 </dl>
 
+<p>Reimplemented from <a class="el" href="classcore_1_1ObjectData.html#aae2c4fceddc529570dbe8909309f9961">core::ObjectData</a>.</p>
+
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following files:<ul>

+ 13 - 12
Documentation/html/classes.html

@@ -90,26 +90,27 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="qindex"><a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_K">K</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_O">O</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a></div>
 <table class="classindex">
 <tr><td rowspan="2" valign="bottom"><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;B&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;G&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;M&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classutil_1_1Filter2D.html">Filter2D</a> (util)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;M&#160;&#160;</div></td></tr></table>
 </td><td valign="top"><a class="el" href="classcore_1_1ObjectData2D.html">ObjectData2D</a> (core)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;V&#160;&#160;</div></td></tr></table>
 </td></tr>
-<tr><td valign="top"><a class="el" href="classcore_1_1ObjectDataAngular.html">ObjectDataAngular</a> (core)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classalgo_1_1Berclaz.html">Berclaz</a> (algo)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classutil_1_1Grid.html">Grid</a> (util)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classutil_1_1MyMath.html">MyMath</a> (util)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classcore_1_1ObjectDataBox.html">ObjectDataBox</a> (core)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classutil_1_1Visualizer.html">Visualizer</a> (util)&#160;&#160;&#160;</td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;G&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classcore_1_1ObjectDataAngular.html">ObjectDataAngular</a> (core)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classalgo_1_1Berclaz.html">Berclaz</a> (algo)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classutil_1_1MyMath.html">MyMath</a> (util)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classcore_1_1ObjectDataBox.html">ObjectDataBox</a> (core)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classutil_1_1Visualizer.html">Visualizer</a> (util)&#160;&#160;&#160;</td></tr>
 <tr><td rowspan="2" valign="bottom"><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;D&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_K"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;K&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;N&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classutil_1_1Grid.html">Grid</a> (util)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;N&#160;&#160;</div></td></tr></table>
 </td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;P&#160;&#160;</div></td></tr></table>
 </td><td></td></tr>
-<tr><td></td></tr>
-<tr><td valign="top"><a class="el" href="classcore_1_1DetectionSequence.html">DetectionSequence</a> (core)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classalgo_1_1KShortestPaths.html">KShortestPaths</a> (algo)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classalgo_1_1NStage.html">NStage</a> (algo)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classutil_1_1Parser.html">Parser</a> (util)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_K"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;K&#160;&#160;</div></td></tr></table>
+</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classcore_1_1DetectionSequence.html">DetectionSequence</a> (core)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classalgo_1_1NStage.html">NStage</a> (algo)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classutil_1_1Parser.html">Parser</a> (util)&#160;&#160;&#160;</td><td></td></tr>
 <tr><td rowspan="2" valign="bottom"><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;F&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;L&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;O&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classalgo_1_1KShortestPaths.html">KShortestPaths</a> (algo)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;O&#160;&#160;</div></td></tr></table>
 </td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;T&#160;&#160;</div></td></tr></table>
 </td><td></td></tr>
-<tr><td></td></tr>
-<tr><td valign="top"><a class="el" href="classutil_1_1FileIO.html">FileIO</a> (util)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classutil_1_1Logger.html">Logger</a> (util)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classcore_1_1ObjectData.html">ObjectData</a> (core)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classcore_1_1Tracklet.html">Tracklet</a> (core)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;L&#160;&#160;</div></td></tr></table>
+</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classutil_1_1FileIO.html">FileIO</a> (util)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classcore_1_1ObjectData.html">ObjectData</a> (core)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classcore_1_1Tracklet.html">Tracklet</a> (core)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td></td><td valign="top"><a class="el" href="classutil_1_1Logger.html">Logger</a> (util)&#160;&#160;&#160;</td><td></td><td></td><td></td></tr>
 <tr><td></td><td></td><td></td><td></td><td></td></tr>
 </table>
 <div class="qindex"><a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_K">K</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_O">O</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a></div>

+ 2 - 2
Documentation/html/classutil_1_1FileIO-members.html

@@ -99,8 +99,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
   <tr class="even"><td class="entry"><a class="el" href="classutil_1_1FileIO.html#a49f014af1e0f03d290f00049e082d9c6">ReadCSV</a>(Vector2d &amp;values, const std::string &amp;file_name, char delimiter)</td><td class="entry"><a class="el" href="classutil_1_1FileIO.html">util::FileIO</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classutil_1_1FileIO.html#a642616eb6f07c71bd8dcb1585a532d92">ReadCSV</a>(ValueMapVector &amp;values, const std::string &amp;file_name, char delimiter)</td><td class="entry"><a class="el" href="classutil_1_1FileIO.html">util::FileIO</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classutil_1_1FileIO.html#a59b96733490d7b60e4f107da84efb245">ReadCSV</a>(ValueMapVector &amp;values, const std::string &amp;header, const std::string &amp;file_name, char delimiter)</td><td class="entry"><a class="el" href="classutil_1_1FileIO.html">util::FileIO</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classutil_1_1FileIO.html#aa6294f669bdb86510c8b6cefed9ac44b">ReadTracks</a>(std::vector&lt; core::TrackletPtr &gt; &amp;tracks, const std::string &amp;file_name, char delimiter)</td><td class="entry"><a class="el" href="classutil_1_1FileIO.html">util::FileIO</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1FileIO.html#aa79e018874aa1da4d0b2cd1e5b7d2e01">split</a>(const std::string &amp;input, char delimiter)</td><td class="entry"><a class="el" href="classutil_1_1FileIO.html">util::FileIO</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1FileIO.html#a82be787051876b0e3d3c4f887c3c27ce">ReadTracks</a>(std::vector&lt; core::TrackletPtr &gt; &amp;tracks, const std::string &amp;file_name, char delimiter)</td><td class="entry"><a class="el" href="classutil_1_1FileIO.html">util::FileIO</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1FileIO.html#a925a74ff26782b8f64106579c9d54b47">Split</a>(const std::string &amp;input, char delimiter)</td><td class="entry"><a class="el" href="classutil_1_1FileIO.html">util::FileIO</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classutil_1_1FileIO.html#a5f2730a95e0801faa32e49dae9b86544">WriteCSVMatlab</a>(DirectedGraph &amp;graph, const std::string &amp;file_name)</td><td class="entry"><a class="el" href="classutil_1_1FileIO.html">util::FileIO</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classutil_1_1FileIO.html#a2833554dcdf4a04f9fe67a324b5815ff">WriteCSVMatlab</a>(MultiPredecessorMap &amp;map, Vertex &amp;source, Vertex &amp;sink, const std::string &amp;file_name)</td><td class="entry"><a class="el" href="classutil_1_1FileIO.html">util::FileIO</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classutil_1_1FileIO.html#a57059c9b52e86c753db5da6281cf23c6">WriteTracks</a>(std::vector&lt; core::TrackletPtr &gt; &amp;tracks, const std::string &amp;file_name, char delimiter)</td><td class="entry"><a class="el" href="classutil_1_1FileIO.html">util::FileIO</a></td><td class="entry"><span class="mlabel">static</span></td></tr>

+ 8 - 8
Documentation/html/classutil_1_1FileIO.html

@@ -115,10 +115,10 @@ Static Public Member Functions</h2></td></tr>
 <tr class="separator:a59b96733490d7b60e4f107da84efb245"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a57059c9b52e86c753db5da6281cf23c6"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1FileIO.html#a57059c9b52e86c753db5da6281cf23c6">WriteTracks</a> (std::vector&lt; core::TrackletPtr &gt; &amp;tracks, const std::string &amp;file_name, char delimiter)</td></tr>
 <tr class="separator:a57059c9b52e86c753db5da6281cf23c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa6294f669bdb86510c8b6cefed9ac44b"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1FileIO.html#aa6294f669bdb86510c8b6cefed9ac44b">ReadTracks</a> (std::vector&lt; core::TrackletPtr &gt; &amp;tracks, const std::string &amp;file_name, char delimiter)</td></tr>
-<tr class="separator:aa6294f669bdb86510c8b6cefed9ac44b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa79e018874aa1da4d0b2cd1e5b7d2e01"><td class="memItemLeft" align="right" valign="top">static std::vector&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1FileIO.html#aa79e018874aa1da4d0b2cd1e5b7d2e01">split</a> (const std::string &amp;input, char delimiter)</td></tr>
-<tr class="separator:aa79e018874aa1da4d0b2cd1e5b7d2e01"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a82be787051876b0e3d3c4f887c3c27ce"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1FileIO.html#a82be787051876b0e3d3c4f887c3c27ce">ReadTracks</a> (std::vector&lt; core::TrackletPtr &gt; &amp;tracks, const std::string &amp;file_name, char delimiter)</td></tr>
+<tr class="separator:a82be787051876b0e3d3c4f887c3c27ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a925a74ff26782b8f64106579c9d54b47"><td class="memItemLeft" align="right" valign="top">static std::vector&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1FileIO.html#a925a74ff26782b8f64106579c9d54b47">Split</a> (const std::string &amp;input, char delimiter)</td></tr>
+<tr class="separator:a925a74ff26782b8f64106579c9d54b47"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Utility class for file in- and output. </p>
@@ -375,7 +375,7 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="aa6294f669bdb86510c8b6cefed9ac44b"></a>
+<a class="anchor" id="a82be787051876b0e3d3c4f887c3c27ce"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -383,7 +383,7 @@ Static Public Member Functions</h2></td></tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">void util::FileIO::ReadTracks </td>
+          <td class="memname">static void util::FileIO::ReadTracks </td>
           <td>(</td>
           <td class="paramtype">std::vector&lt; core::TrackletPtr &gt; &amp;&#160;</td>
           <td class="paramname"><em>tracks</em>, </td>
@@ -424,7 +424,7 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="aa79e018874aa1da4d0b2cd1e5b7d2e01"></a>
+<a class="anchor" id="a925a74ff26782b8f64106579c9d54b47"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -432,7 +432,7 @@ Static Public Member Functions</h2></td></tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">std::vector&lt; std::string &gt; util::FileIO::split </td>
+          <td class="memname">std::vector&lt; std::string &gt; util::FileIO::Split </td>
           <td>(</td>
           <td class="paramtype">const std::string &amp;&#160;</td>
           <td class="paramname"><em>input</em>, </td>

+ 114 - 0
Documentation/html/classutil_1_1Filter2D-members.html

@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.12"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Tracore: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Tracore
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.12 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><b>util</b></li><li class="navelem"><a class="el" href="classutil_1_1Filter2D.html">Filter2D</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">util::Filter2D Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Filter2D.html#a56cbb0d40a118f98c5a21d1b0a9e1953">Filter2D</a>()</td><td class="entry"><a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1Filter2D.html#a83896f35678afd4a024b2ae0255b3e38">Filter2D</a>(double multiplier, std::vector&lt; double &gt; mask)</td><td class="entry"><a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Filter2D.html#a1d14212292766b1372b190842d8330e8">Filter2D</a>(std::string const &amp;mask_string, char delimiter)</td><td class="entry"><a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1Filter2D.html#ab59311cc1727f5285a56c050ede7b14a">Get</a>(int x, int y) const</td><td class="entry"><a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Filter2D.html#ad6866d21e5b1d3d6863d859f1b7fa288">Get</a>(int i) const</td><td class="entry"><a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1Filter2D.html#a4151856406f7a794cd724ce4a7e347eb">GetDimension</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Filter2D.html#a2b61ed6deaebb2e97fda04cadd43459c">GetMultiplier</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1Filter2D.html#af273117c197dc90208167cd873fe0097">GetVicinity</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Filter2D.html#a242138102e2e30f4fe9cccf76f817e09">Normalize</a>()</td><td class="entry"><a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.12
+</small></address>
+</body>
+</html>

+ 347 - 0
Documentation/html/classutil_1_1Filter2D.html

@@ -0,0 +1,347 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.12"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Tracore: util::Filter2D Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Tracore
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.12 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><b>util</b></li><li class="navelem"><a class="el" href="classutil_1_1Filter2D.html">Filter2D</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classutil_1_1Filter2D-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">util::Filter2D Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="Filter2D_8h_source.html">Filter2D.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a56cbb0d40a118f98c5a21d1b0a9e1953"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Filter2D.html#a56cbb0d40a118f98c5a21d1b0a9e1953">Filter2D</a> ()</td></tr>
+<tr class="separator:a56cbb0d40a118f98c5a21d1b0a9e1953"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a83896f35678afd4a024b2ae0255b3e38"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Filter2D.html#a83896f35678afd4a024b2ae0255b3e38">Filter2D</a> (double multiplier, std::vector&lt; double &gt; mask)</td></tr>
+<tr class="separator:a83896f35678afd4a024b2ae0255b3e38"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1d14212292766b1372b190842d8330e8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Filter2D.html#a1d14212292766b1372b190842d8330e8">Filter2D</a> (std::string const &amp;mask_string, char delimiter)</td></tr>
+<tr class="separator:a1d14212292766b1372b190842d8330e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab59311cc1727f5285a56c050ede7b14a"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Filter2D.html#ab59311cc1727f5285a56c050ede7b14a">Get</a> (int x, int y) const</td></tr>
+<tr class="separator:ab59311cc1727f5285a56c050ede7b14a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad6866d21e5b1d3d6863d859f1b7fa288"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Filter2D.html#ad6866d21e5b1d3d6863d859f1b7fa288">Get</a> (int i) const</td></tr>
+<tr class="separator:ad6866d21e5b1d3d6863d859f1b7fa288"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2b61ed6deaebb2e97fda04cadd43459c"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Filter2D.html#a2b61ed6deaebb2e97fda04cadd43459c">GetMultiplier</a> () const</td></tr>
+<tr class="separator:a2b61ed6deaebb2e97fda04cadd43459c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af273117c197dc90208167cd873fe0097"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Filter2D.html#af273117c197dc90208167cd873fe0097">GetVicinity</a> () const</td></tr>
+<tr class="separator:af273117c197dc90208167cd873fe0097"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4151856406f7a794cd724ce4a7e347eb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Filter2D.html#a4151856406f7a794cd724ce4a7e347eb">GetDimension</a> () const</td></tr>
+<tr class="separator:a4151856406f7a794cd724ce4a7e347eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a242138102e2e30f4fe9cccf76f817e09"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Filter2D.html#a242138102e2e30f4fe9cccf76f817e09">Normalize</a> ()</td></tr>
+<tr class="separator:a242138102e2e30f4fe9cccf76f817e09"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Utility class for a two-dimensional filter. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a56cbb0d40a118f98c5a21d1b0a9e1953"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">util::Filter2D::Filter2D </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Creates a new instance with an identity filter. </p>
+
+</div>
+</div>
+<a class="anchor" id="a83896f35678afd4a024b2ae0255b3e38"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">util::Filter2D::Filter2D </td>
+          <td>(</td>
+          <td class="paramtype">double&#160;</td>
+          <td class="paramname"><em>multiplier</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">std::vector&lt; double &gt;&#160;</td>
+          <td class="paramname"><em>mask</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Creates a new instance with the given multiplier and mask values. To calculate the value all values are added with their weights from the mask and then the value is multiplied by the multiplier. The multiplier may be used to ensure the overall filter sum is equals one.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">multiplier</td><td>The multiplier </td></tr>
+    <tr><td class="paramname">mask</td><td>The mask values </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1d14212292766b1372b190842d8330e8"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">util::Filter2D::Filter2D </td>
+          <td>(</td>
+          <td class="paramtype">std::string const &amp;&#160;</td>
+          <td class="paramname"><em>mask_string</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char&#160;</td>
+          <td class="paramname"><em>delimiter</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Creates a new instance by parsing the specified mask string. Values are separated by the specified delimiter. Example: 'multiplier, m00, m01, m02, ..., m10, m11, m12, ..., mnn' as the mask string and ',' as the delimiter.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">mask_string</td><td>The string with the multiplier and the mask values to parse </td></tr>
+    <tr><td class="paramname">delimiter</td><td>The delimiter used for the parsing </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="ab59311cc1727f5285a56c050ede7b14a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">double util::Filter2D::Get </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Gets the value in the mask at the specified position.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td>The horizontal position </td></tr>
+    <tr><td class="paramname">y</td><td>The vertical position </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The value </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ad6866d21e5b1d3d6863d859f1b7fa288"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">double util::Filter2D::Get </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>i</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Gets the value in the mask at the specified position.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">i</td><td>The index (row-major) </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The value </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a4151856406f7a794cd724ce4a7e347eb"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int util::Filter2D::GetDimension </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Gets the dimension of the mask.</p>
+<dl class="section return"><dt>Returns</dt><dd>The dimension </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a2b61ed6deaebb2e97fda04cadd43459c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">double util::Filter2D::GetMultiplier </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Gets the multiplier.</p>
+<dl class="section return"><dt>Returns</dt><dd>The multiplier </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="af273117c197dc90208167cd873fe0097"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int util::Filter2D::GetVicinity </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Gets the vicinity of the mask. The vicinity is the based on the center and describes the maximum range of values around it in manhattan distance.</p>
+<dl class="section return"><dt>Returns</dt><dd>The vicinity </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a242138102e2e30f4fe9cccf76f817e09"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void util::Filter2D::Normalize </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Normalizes the mask values. The multiplier is equals one afterwards. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li>util/<a class="el" href="Filter2D_8h_source.html">Filter2D.h</a></li>
+<li>util/Filter2D.cpp</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.12
+</small></address>
+</body>
+</html>

+ 15 - 14
Documentation/html/classutil_1_1Grid-members.html

@@ -95,20 +95,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <p>This is the complete list of members for <a class="el" href="classutil_1_1Grid.html">util::Grid</a>, including all inherited members.</p>
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#a6597c4f785a764c0b291b8135863fe67">Convolve2D</a>(int vicinity, double *mask, double multiplier)</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#ac161adb14df09651a6b33f855d887bfa">Convolve3D</a>(int vicinity, double *mask, double multiplier)</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#afe6698a6766a43082ceea2d4bf27619e">GetDepth</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#a04f1c2fe745d469e49cf2523fe0f34fd">GetDepthCount</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#a2d02a1eafe76faaa7e0f63ce406d782f">GetHeight</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#a0c63eb86e4be8c63e996ff61c3ef8b7f">GetHeightCount</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#a6658334ae9b505c56b75f6f15434832e">GetValue</a>(int x, int y, int z=0) const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#a6cc6449dfe16dde11035fe2d16a321cd">GetValue</a>(double x, double y, double z=0.0) const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#a8b4dc63bee5859cae315969e039b4cac">GetWidth</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#a3f5cdd325b3e3eb30ca5d38bd31d005e">GetWidthCount</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#a0b2bfd0044eb5633a3f1121e5e70709e">Grid</a>(int width_count, int height_count, double width, double height)</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#ad6457dda588e20ccd503e363e96dd57e">Grid</a>(int width_count, int height_count, int depth_count, double width, double height, double depth)</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#a775e2a7574c81dd7acd1d185b2e72ed5">PositionToIndex</a>(double x, double y, double z, int &amp;xi, int &amp;yi, int &amp;zi) const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#a0e93bd63922e7cbe405176a1ae21877e">SetValue</a>(core::ObjectDataPtr value, int x, int y, int z=0)</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#ad7dbf79146d9f5ae1662910b82fd25ea">SetValue</a>(core::ObjectDataPtr value, double x, double y, double z=0)</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#ab8e9f6c804b0eab1f5666a039130b8ed">Convolve2D</a>(util::Filter2D &amp;filter)</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#ac161adb14df09651a6b33f855d887bfa">Convolve3D</a>(int vicinity, double *mask, double multiplier)</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#afe6698a6766a43082ceea2d4bf27619e">GetDepth</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#a04f1c2fe745d469e49cf2523fe0f34fd">GetDepthCount</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#a2d02a1eafe76faaa7e0f63ce406d782f">GetHeight</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#a0c63eb86e4be8c63e996ff61c3ef8b7f">GetHeightCount</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#a6658334ae9b505c56b75f6f15434832e">GetValue</a>(int x, int y, int z=0) const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#a6cc6449dfe16dde11035fe2d16a321cd">GetValue</a>(double x, double y, double z=0.0) const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#a8b4dc63bee5859cae315969e039b4cac">GetWidth</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#a3f5cdd325b3e3eb30ca5d38bd31d005e">GetWidthCount</a>() const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#a0b2bfd0044eb5633a3f1121e5e70709e">Grid</a>(int width_count, int height_count, double width, double height)</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#ad6457dda588e20ccd503e363e96dd57e">Grid</a>(int width_count, int height_count, int depth_count, double width, double height, double depth)</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#a775e2a7574c81dd7acd1d185b2e72ed5">PositionToIndex</a>(double x, double y, double z, int &amp;xi, int &amp;yi, int &amp;zi) const</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Grid.html#a0e93bd63922e7cbe405176a1ae21877e">SetValue</a>(core::ObjectDataPtr value, int x, int y, int z=0)</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1Grid.html#ad7dbf79146d9f5ae1662910b82fd25ea">SetValue</a>(core::ObjectDataPtr value, double x, double y, double z=0)</td><td class="entry"><a class="el" href="classutil_1_1Grid.html">util::Grid</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

+ 25 - 0
Documentation/html/classutil_1_1Grid.html

@@ -127,6 +127,8 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a775e2a7574c81dd7acd1d185b2e72ed5"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a6597c4f785a764c0b291b8135863fe67"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Grid.html#a6597c4f785a764c0b291b8135863fe67">Convolve2D</a> (int vicinity, double *mask, double multiplier)</td></tr>
 <tr class="separator:a6597c4f785a764c0b291b8135863fe67"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab8e9f6c804b0eab1f5666a039130b8ed"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Grid.html#ab8e9f6c804b0eab1f5666a039130b8ed">Convolve2D</a> (<a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a> &amp;filter)</td></tr>
+<tr class="separator:ab8e9f6c804b0eab1f5666a039130b8ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac161adb14df09651a6b33f855d887bfa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Grid.html#ac161adb14df09651a6b33f855d887bfa">Convolve3D</a> (int vicinity, double *mask, double multiplier)</td></tr>
 <tr class="separator:ac161adb14df09651a6b33f855d887bfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
@@ -281,6 +283,29 @@ Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
+</div>
+</div>
+<a class="anchor" id="ab8e9f6c804b0eab1f5666a039130b8ed"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void util::Grid::Convolve2D </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classutil_1_1Filter2D.html">util::Filter2D</a> &amp;&#160;</td>
+          <td class="paramname"><em>filter</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Performs a 2D convolution.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">filter</td><td>The 2D filter to use </td></tr>
+  </table>
+  </dd>
+</dl>
+
 </div>
 </div>
 <a class="anchor" id="ac161adb14df09651a6b33f855d887bfa"></a>

+ 3 - 3
Documentation/html/classutil_1_1Logger-members.html

@@ -97,10 +97,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
   <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Logger.html#a734bbf94e1232706f7c0bf52745cc876">Instance</a>()</td><td class="entry"><a class="el" href="classutil_1_1Logger.html">util::Logger</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classutil_1_1Logger.html#a6ee9298451936b98815e20ba7f5d7275">IsDebugEnabled</a>()</td><td class="entry"><a class="el" href="classutil_1_1Logger.html">util::Logger</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Logger.html#a194b338af92760d0f7d15b607cad5429">IsInfoEnabled</a>()</td><td class="entry"><a class="el" href="classutil_1_1Logger.html">util::Logger</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classutil_1_1Logger.html#a9c6a0ebe97ecf3ca24aff8a908a491ee">LogDebug</a>(const std::string &amp;message)</td><td class="entry"><a class="el" href="classutil_1_1Logger.html">util::Logger</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Logger.html#a01ad6e5349f51964724f96a598c6d2a8">LogError</a>(const std::string &amp;message)</td><td class="entry"><a class="el" href="classutil_1_1Logger.html">util::Logger</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classutil_1_1Logger.html#a89b67d19ea6650ed313dffc0a599385a">LogDebug</a>(std::string const &amp;message)</td><td class="entry"><a class="el" href="classutil_1_1Logger.html">util::Logger</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Logger.html#a5a49cf31bcd5a0ccbfe11667b37f338a">LogError</a>(std::string const &amp;message)</td><td class="entry"><a class="el" href="classutil_1_1Logger.html">util::Logger</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classutil_1_1Logger.html#a83d4f38e648b39fa61a2b9b3172bda12">Logger</a>(Logger const &amp;)=delete</td><td class="entry"><a class="el" href="classutil_1_1Logger.html">util::Logger</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Logger.html#a37504d39ec90bebffc3d02d61d47afea">LogInfo</a>(const std::string &amp;message)</td><td class="entry"><a class="el" href="classutil_1_1Logger.html">util::Logger</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Logger.html#a65ac30aaefded61036771197f1364bb8">LogInfo</a>(std::string const &amp;message)</td><td class="entry"><a class="el" href="classutil_1_1Logger.html">util::Logger</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classutil_1_1Logger.html#a4e9e8b8d0e75058265037976d9b256de">operator=</a>(Logger const &amp;)=delete</td><td class="entry"><a class="el" href="classutil_1_1Logger.html">util::Logger</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Logger.html#ac7b9bc580a6d459c212c46b137742869">SetDebug</a>(bool debug)</td><td class="entry"><a class="el" href="classutil_1_1Logger.html">util::Logger</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classutil_1_1Logger.html#a3965358e412007989f90798e295d4b41">SetInfo</a>(bool info)</td><td class="entry"><a class="el" href="classutil_1_1Logger.html">util::Logger</a></td><td class="entry"><span class="mlabel">static</span></td></tr>

+ 12 - 12
Documentation/html/classutil_1_1Logger.html

@@ -117,12 +117,12 @@ Static Public Member Functions</h2></td></tr>
 <tr class="separator:a6ee9298451936b98815e20ba7f5d7275"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a194b338af92760d0f7d15b607cad5429"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Logger.html#a194b338af92760d0f7d15b607cad5429">IsInfoEnabled</a> ()</td></tr>
 <tr class="separator:a194b338af92760d0f7d15b607cad5429"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a37504d39ec90bebffc3d02d61d47afea"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Logger.html#a37504d39ec90bebffc3d02d61d47afea">LogInfo</a> (const std::string &amp;message)</td></tr>
-<tr class="separator:a37504d39ec90bebffc3d02d61d47afea"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a01ad6e5349f51964724f96a598c6d2a8"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Logger.html#a01ad6e5349f51964724f96a598c6d2a8">LogError</a> (const std::string &amp;message)</td></tr>
-<tr class="separator:a01ad6e5349f51964724f96a598c6d2a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9c6a0ebe97ecf3ca24aff8a908a491ee"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Logger.html#a9c6a0ebe97ecf3ca24aff8a908a491ee">LogDebug</a> (const std::string &amp;message)</td></tr>
-<tr class="separator:a9c6a0ebe97ecf3ca24aff8a908a491ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a65ac30aaefded61036771197f1364bb8"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Logger.html#a65ac30aaefded61036771197f1364bb8">LogInfo</a> (std::string const &amp;message)</td></tr>
+<tr class="separator:a65ac30aaefded61036771197f1364bb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5a49cf31bcd5a0ccbfe11667b37f338a"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Logger.html#a5a49cf31bcd5a0ccbfe11667b37f338a">LogError</a> (std::string const &amp;message)</td></tr>
+<tr class="separator:a5a49cf31bcd5a0ccbfe11667b37f338a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a89b67d19ea6650ed313dffc0a599385a"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Logger.html#a89b67d19ea6650ed313dffc0a599385a">LogDebug</a> (std::string const &amp;message)</td></tr>
+<tr class="separator:a89b67d19ea6650ed313dffc0a599385a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Utility class for logging. Is a singleton. Provides three different types of messages. </p>
@@ -225,7 +225,7 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a9c6a0ebe97ecf3ca24aff8a908a491ee"></a>
+<a class="anchor" id="a89b67d19ea6650ed313dffc0a599385a"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -235,7 +235,7 @@ Static Public Member Functions</h2></td></tr>
         <tr>
           <td class="memname">void util::Logger::LogDebug </td>
           <td>(</td>
-          <td class="paramtype">const std::string &amp;&#160;</td>
+          <td class="paramtype">std::string const &amp;&#160;</td>
           <td class="paramname"><em>message</em></td><td>)</td>
           <td></td>
         </tr>
@@ -255,7 +255,7 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a01ad6e5349f51964724f96a598c6d2a8"></a>
+<a class="anchor" id="a5a49cf31bcd5a0ccbfe11667b37f338a"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -265,7 +265,7 @@ Static Public Member Functions</h2></td></tr>
         <tr>
           <td class="memname">void util::Logger::LogError </td>
           <td>(</td>
-          <td class="paramtype">const std::string &amp;&#160;</td>
+          <td class="paramtype">std::string const &amp;&#160;</td>
           <td class="paramname"><em>message</em></td><td>)</td>
           <td></td>
         </tr>
@@ -285,7 +285,7 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a37504d39ec90bebffc3d02d61d47afea"></a>
+<a class="anchor" id="a65ac30aaefded61036771197f1364bb8"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -295,7 +295,7 @@ Static Public Member Functions</h2></td></tr>
         <tr>
           <td class="memname">void util::Logger::LogInfo </td>
           <td>(</td>
-          <td class="paramtype">const std::string &amp;&#160;</td>
+          <td class="paramtype">std::string const &amp;&#160;</td>
           <td class="paramname"><em>message</em></td><td>)</td>
           <td></td>
         </tr>

+ 4 - 4
Documentation/html/classutil_1_1Parser.html

@@ -121,13 +121,13 @@ static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>K
 static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_SCORE</b> = &quot;score&quot;</td></tr>
 <tr class="separator:aea01dc9348cb59860fb279b716d3cf72"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a67cac8af9b52947d6984d64a56ac4ad3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67cac8af9b52947d6984d64a56ac4ad3"></a>
-static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_X</b> = &quot;x&quot;</td></tr>
+static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_X</b> = &quot;xc&quot;</td></tr>
 <tr class="separator:a67cac8af9b52947d6984d64a56ac4ad3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aa13293b6680f1bec5532247c14acf85f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa13293b6680f1bec5532247c14acf85f"></a>
-static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_Y</b> = &quot;y&quot;</td></tr>
+static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_Y</b> = &quot;yc&quot;</td></tr>
 <tr class="separator:aa13293b6680f1bec5532247c14acf85f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a33c7c6efa60e5881ebf497851b56b493"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33c7c6efa60e5881ebf497851b56b493"></a>
-static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_Z</b></td></tr>
+static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_Z</b> = &quot;zc&quot;</td></tr>
 <tr class="separator:a33c7c6efa60e5881ebf497851b56b493"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af460fb066f6dede3b0e3aa0ea97ac115"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af460fb066f6dede3b0e3aa0ea97ac115"></a>
 static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_WIDTH</b> = &quot;width&quot;</td></tr>
@@ -136,7 +136,7 @@ static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>K
 static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_HEIGHT</b> = &quot;height&quot;</td></tr>
 <tr class="separator:a819fb19f3d743320864fcc125b9c40eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4add600ddc8287c10285bbae8ccd4ef1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4add600ddc8287c10285bbae8ccd4ef1"></a>
-static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_DEPTH</b></td></tr>
+static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_DEPTH</b> = &quot;depth&quot;</td></tr>
 <tr class="separator:a4add600ddc8287c10285bbae8ccd4ef1"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a03362a18612fcb3ca7c01cfcb6652521"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03362a18612fcb3ca7c01cfcb6652521"></a>
 static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_ANGLE</b> = &quot;angle&quot;</td></tr>

+ 1 - 1
Documentation/html/classutil_1_1Visualizer-members.html

@@ -94,7 +94,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <p>This is the complete list of members for <a class="el" href="classutil_1_1Visualizer.html">util::Visualizer</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Visualizer.html#a545d2f4aae7c3c54ecaee51461980036">Display</a>(std::vector&lt; core::TrackletPtr &gt; &amp;tracks, std::string image_folder, bool output, std::string output_path, std::string title=&quot;Visualizer&quot;, size_t first_frame=0, int play_fps=24, int grid_width=0, int grid_height=0)</td><td class="entry"><a class="el" href="classutil_1_1Visualizer.html">util::Visualizer</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classutil_1_1Visualizer.html#a5168d3347dd28217a0e9bb6541fa38f3">Display</a>(std::vector&lt; core::TrackletPtr &gt; &amp;tracks, size_t frame_offset, std::string image_folder, bool output, std::string output_path, std::string title=&quot;Visualizer&quot;, size_t first_frame=0, int play_fps=24, bool show_grid=false, int grid_width=0, int grid_height=0)</td><td class="entry"><a class="el" href="classutil_1_1Visualizer.html">util::Visualizer</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

+ 18 - 4
Documentation/html/classutil_1_1Visualizer.html

@@ -99,13 +99,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a545d2f4aae7c3c54ecaee51461980036"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Visualizer.html#a545d2f4aae7c3c54ecaee51461980036">Display</a> (std::vector&lt; core::TrackletPtr &gt; &amp;tracks, std::string image_folder, bool output, std::string output_path, std::string title=&quot;Visualizer&quot;, size_t first_frame=0, int play_fps=24, int grid_width=0, int grid_height=0)</td></tr>
-<tr class="separator:a545d2f4aae7c3c54ecaee51461980036"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5168d3347dd28217a0e9bb6541fa38f3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1Visualizer.html#a5168d3347dd28217a0e9bb6541fa38f3">Display</a> (std::vector&lt; core::TrackletPtr &gt; &amp;tracks, size_t frame_offset, std::string image_folder, bool output, std::string output_path, std::string title=&quot;Visualizer&quot;, size_t first_frame=0, int play_fps=24, bool show_grid=false, int grid_width=0, int grid_height=0)</td></tr>
+<tr class="separator:a5168d3347dd28217a0e9bb6541fa38f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Utility class for visualizing detection sequences or tracks. </p>
 </div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a545d2f4aae7c3c54ecaee51461980036"></a>
+<a class="anchor" id="a5168d3347dd28217a0e9bb6541fa38f3"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -115,6 +115,12 @@ Public Member Functions</h2></td></tr>
           <td class="paramtype">std::vector&lt; core::TrackletPtr &gt; &amp;&#160;</td>
           <td class="paramname"><em>tracks</em>, </td>
         </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>frame_offset</em>, </td>
+        </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
@@ -151,6 +157,12 @@ Public Member Functions</h2></td></tr>
           <td class="paramtype">int&#160;</td>
           <td class="paramname"><em>play_fps</em> = <code>24</code>, </td>
         </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>show_grid</em> = <code>false</code>, </td>
+        </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
@@ -170,16 +182,18 @@ Public Member Functions</h2></td></tr>
         </tr>
       </table>
 </div><div class="memdoc">
-<p>Displays the given tracks in an window. Use D for next frame, A for previous frame, F to toggle auto play and ESC to exit. If a grid size greater zero is specified a grid will be overlayed.</p>
+<p>Displays the given tracks in an window. Use D for next frame, A for previous frame, F to toggle auto play and ESC to exit. If a grid size greater zero is specified a grid will be drawn.</p>
 <dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
     <tr><td class="paramname">tracks</td><td>The tracks to display </td></tr>
+    <tr><td class="paramname">frame_offset</td><td>The offset of the first frame </td></tr>
     <tr><td class="paramname">image_folder</td><td>The images to use </td></tr>
     <tr><td class="paramname">output</td><td>If the frames with the visualized tracks should be stored </td></tr>
     <tr><td class="paramname">output_path</td><td>The path to store the images into (will need an images folder) </td></tr>
     <tr><td class="paramname">title</td><td>The window title </td></tr>
     <tr><td class="paramname">first_frame</td><td>The frame to start at </td></tr>
     <tr><td class="paramname">play_fps</td><td>The FPS to use when auto play is activated </td></tr>
+    <tr><td class="paramname">show_grid</td><td>If a grid should be shown </td></tr>
     <tr><td class="paramname">grid_width</td><td>The number of cells in a row </td></tr>
     <tr><td class="paramname">grid_height</td><td>The number of cells in a column </td></tr>
   </table>

+ 6 - 5
Documentation/html/files.html

@@ -99,11 +99,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <tr id="row_1_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="Tracklet_8h_source.html"><span class="icondoc"></span></a><b>Tracklet.h</b></td><td class="desc"></td></tr>
 <tr id="row_2_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><span id="img_2_" class="iconfopen" onclick="toggleFolder('2_')">&#160;</span><a class="el" href="dir_23ec12649285f9fabf3a6b7380226c28.html" target="_self">util</a></td><td class="desc"></td></tr>
 <tr id="row_2_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="FileIO_8h_source.html"><span class="icondoc"></span></a><b>FileIO.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="Grid_8h_source.html"><span class="icondoc"></span></a><b>Grid.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="Logger_8h_source.html"><span class="icondoc"></span></a><b>Logger.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="MyMath_8h_source.html"><span class="icondoc"></span></a><b>MyMath.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="Parser_8h_source.html"><span class="icondoc"></span></a><b>Parser.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="Visualizer_8h_source.html"><span class="icondoc"></span></a><b>Visualizer.h</b></td><td class="desc"></td></tr>
+<tr id="row_2_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="Filter2D_8h_source.html"><span class="icondoc"></span></a><b>Filter2D.h</b></td><td class="desc"></td></tr>
+<tr id="row_2_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="Grid_8h_source.html"><span class="icondoc"></span></a><b>Grid.h</b></td><td class="desc"></td></tr>
+<tr id="row_2_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="Logger_8h_source.html"><span class="icondoc"></span></a><b>Logger.h</b></td><td class="desc"></td></tr>
+<tr id="row_2_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="MyMath_8h_source.html"><span class="icondoc"></span></a><b>MyMath.h</b></td><td class="desc"></td></tr>
+<tr id="row_2_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="Parser_8h_source.html"><span class="icondoc"></span></a><b>Parser.h</b></td><td class="desc"></td></tr>
+<tr id="row_2_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="Visualizer_8h_source.html"><span class="icondoc"></span></a><b>Visualizer.h</b></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->

+ 49 - 16
Documentation/html/functions.html

@@ -159,10 +159,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
 <li>DetectionSequence()
-: <a class="el" href="classcore_1_1DetectionSequence.html#a2cbdc8db34fe87932653826fc8a3c1f7">core::DetectionSequence</a>
+: <a class="el" href="classcore_1_1DetectionSequence.html#aed2967a51334c7b3e9053f2ab0f9990e">core::DetectionSequence</a>
 </li>
 <li>Display()
-: <a class="el" href="classutil_1_1Visualizer.html#a545d2f4aae7c3c54ecaee51461980036">util::Visualizer</a>
+: <a class="el" href="classutil_1_1Visualizer.html#a5168d3347dd28217a0e9bb6541fa38f3">util::Visualizer</a>
 </li>
 </ul>
 
@@ -175,6 +175,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 
 <h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<li>Filter2D()
+: <a class="el" href="classutil_1_1Filter2D.html#a56cbb0d40a118f98c5a21d1b0a9e1953">util::Filter2D</a>
+</li>
 <li>Flatten()
 : <a class="el" href="classcore_1_1Tracklet.html#a2bdb2f2c8249145808e7029dde6e7df0">core::Tracklet</a>
 </li>
@@ -182,6 +185,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 
 <h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
+<li>Get()
+: <a class="el" href="classutil_1_1Filter2D.html#ab59311cc1727f5285a56c050ede7b14a">util::Filter2D</a>
+</li>
 <li>GetAngle()
 : <a class="el" href="classcore_1_1ObjectDataAngular.html#a6c2da5010cd919af3b0f156579d04ef8">core::ObjectDataAngular</a>
 </li>
@@ -197,6 +203,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>GetDetectionScore()
 : <a class="el" href="classcore_1_1ObjectData.html#a227a11377867105d5fcbe9efc3faed45">core::ObjectData</a>
 </li>
+<li>GetDimension()
+: <a class="el" href="classutil_1_1Filter2D.html#a4151856406f7a794cd724ce4a7e347eb">util::Filter2D</a>
+</li>
 <li>GetFirstFrameIndex()
 : <a class="el" href="classcore_1_1Tracklet.html#a1b963319d6c65614baec02a925f31691">core::Tracklet</a>
 </li>
@@ -209,6 +218,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>GetFrameObject()
 : <a class="el" href="classcore_1_1Tracklet.html#a5a0e56045f8c1868b46db87700658260">core::Tracklet</a>
 </li>
+<li>GetFrameOffset()
+: <a class="el" href="classcore_1_1DetectionSequence.html#a2c469219ac4f55aa9deacb5f63195de1">core::DetectionSequence</a>
+</li>
 <li>GetHeight()
 : <a class="el" href="classutil_1_1Grid.html#a2d02a1eafe76faaa7e0f63ce406d782f">util::Grid</a>
 </li>
@@ -218,14 +230,17 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>GetLastFrameIndex()
 : <a class="el" href="classcore_1_1Tracklet.html#ad8e195b523cf2021394455cc21867d96">core::Tracklet</a>
 </li>
+<li>GetMultiplier()
+: <a class="el" href="classutil_1_1Filter2D.html#a2b61ed6deaebb2e97fda04cadd43459c">util::Filter2D</a>
+</li>
 <li>GetName()
 : <a class="el" href="classcore_1_1DetectionSequence.html#a8a1af3dee89766d06f4a4f74044082ad">core::DetectionSequence</a>
 </li>
 <li>GetObject()
-: <a class="el" href="classcore_1_1DetectionSequence.html#aab2b72c6e0a9ee14dba99d07116c1d86">core::DetectionSequence</a>
+: <a class="el" href="classcore_1_1DetectionSequence.html#a1faac919948e8b10d9112916f3a19bd0">core::DetectionSequence</a>
 </li>
 <li>GetObjectCount()
-: <a class="el" href="classcore_1_1DetectionSequence.html#a99a1b693215c386c4716df12f6040100">core::DetectionSequence</a>
+: <a class="el" href="classcore_1_1DetectionSequence.html#ad6c77b1224bf5b149b78b60cc62d5564">core::DetectionSequence</a>
 </li>
 <li>GetPathObject()
 : <a class="el" href="classcore_1_1Tracklet.html#a9758349e8f25c479ffc4b21a90149a81">core::Tracklet</a>
@@ -251,6 +266,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>GetValue()
 : <a class="el" href="classutil_1_1Grid.html#a6658334ae9b505c56b75f6f15434832e">util::Grid</a>
 </li>
+<li>GetVicinity()
+: <a class="el" href="classutil_1_1Filter2D.html#af273117c197dc90208167cd873fe0097">util::Filter2D</a>
+</li>
 <li>GetWidth()
 : <a class="el" href="classutil_1_1Grid.html#a8b4dc63bee5859cae315969e039b4cac">util::Grid</a>
 </li>
@@ -289,6 +307,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>IsVirtual()
 : <a class="el" href="classcore_1_1ObjectData.html#a2880d710cfa520e9c0453e2a6729c0e2">core::ObjectData</a>
 </li>
+<li>IsWithinConstraints()
+: <a class="el" href="classcore_1_1ObjectData2D.html#a63e855919a72462225a8e69140f1389b">core::ObjectData2D</a>
+, <a class="el" href="classcore_1_1ObjectData.html#affa5d25fa3d2c04a571a7e095f62bacb">core::ObjectData</a>
+, <a class="el" href="classcore_1_1ObjectDataAngular.html#a1ef9168c2384d2038a1dd6e85d0b932f">core::ObjectDataAngular</a>
+, <a class="el" href="classcore_1_1ObjectDataBox.html#a04f4b780b79491270e4838f7504c1917">core::ObjectDataBox</a>
+</li>
 </ul>
 
 
@@ -307,23 +331,26 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classutil_1_1FileIO.html#a6e290e22083d49619b757bfca96a51fa">util::FileIO</a>
 </li>
 <li>LogDebug()
-: <a class="el" href="classutil_1_1Logger.html#a9c6a0ebe97ecf3ca24aff8a908a491ee">util::Logger</a>
+: <a class="el" href="classutil_1_1Logger.html#a89b67d19ea6650ed313dffc0a599385a">util::Logger</a>
 </li>
 <li>LogError()
-: <a class="el" href="classutil_1_1Logger.html#a01ad6e5349f51964724f96a598c6d2a8">util::Logger</a>
+: <a class="el" href="classutil_1_1Logger.html#a5a49cf31bcd5a0ccbfe11667b37f338a">util::Logger</a>
 </li>
 <li>Logger()
 : <a class="el" href="classutil_1_1Logger.html#a83d4f38e648b39fa61a2b9b3172bda12">util::Logger</a>
 </li>
 <li>LogInfo()
-: <a class="el" href="classutil_1_1Logger.html#a37504d39ec90bebffc3d02d61d47afea">util::Logger</a>
+: <a class="el" href="classutil_1_1Logger.html#a65ac30aaefded61036771197f1364bb8">util::Logger</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>Normalize()
+: <a class="el" href="classutil_1_1Filter2D.html#a242138102e2e30f4fe9cccf76f817e09">util::Filter2D</a>
+</li>
 <li>NStage()
-: <a class="el" href="classalgo_1_1NStage.html#a9706139a9ccfab10ab6458e06e42d7a5">algo::NStage</a>
+: <a class="el" href="classalgo_1_1NStage.html#a65baad453fa371f18be02fd19e695ea1">algo::NStage</a>
 </li>
 </ul>
 
@@ -339,10 +366,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classcore_1_1ObjectDataAngular.html#a276b02fc7646e3275f1cb81fca7e9a47">core::ObjectDataAngular</a>
 </li>
 <li>ObjectDataBox()
-: <a class="el" href="classcore_1_1ObjectDataBox.html#a9a1ee3e1e603c1e55adc58a1a58efad2">core::ObjectDataBox</a>
+: <a class="el" href="classcore_1_1ObjectDataBox.html#a4e331870ed012d9bc44bc769aee86362">core::ObjectDataBox</a>
 </li>
 <li>operator&lt;&lt;
-: <a class="el" href="classcore_1_1DetectionSequence.html#a557132cfbb170daf47f5a890a0c5bac0">core::DetectionSequence</a>
+: <a class="el" href="classcore_1_1DetectionSequence.html#abc61c6378276573bcb84464d9f0b9e24">core::DetectionSequence</a>
 , <a class="el" href="classcore_1_1ObjectData.html#a56fc9b6184428bf4d80826bbb9fe4c6f">core::ObjectData</a>
 </li>
 <li>operator=()
@@ -378,12 +405,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classutil_1_1FileIO.html#ae31b9e693316483eda89df8463ea0d0a">util::FileIO</a>
 </li>
 <li>ReadTracks()
-: <a class="el" href="classutil_1_1FileIO.html#aa6294f669bdb86510c8b6cefed9ac44b">util::FileIO</a>
+: <a class="el" href="classutil_1_1FileIO.html#a82be787051876b0e3d3c4f887c3c27ce">util::FileIO</a>
 </li>
 <li>Run()
-: <a class="el" href="classalgo_1_1Berclaz.html#a918f30c2f67eac9d5f9bc07ceeb0880e">algo::Berclaz</a>
+: <a class="el" href="classalgo_1_1Berclaz.html#a00a0d5e52112a8f9dc188757f2a8af11">algo::Berclaz</a>
 , <a class="el" href="classalgo_1_1KShortestPaths.html#a4ad79f2618bf3fc36b591ff69efd3c76">algo::KShortestPaths</a>
-, <a class="el" href="classalgo_1_1NStage.html#a4e4e881b9c6f65d9e86449c71ab6d778">algo::NStage</a>
+, <a class="el" href="classalgo_1_1NStage.html#a8c25c9c9796db048bb4b55d7a603b00b">algo::NStage</a>
 </li>
 </ul>
 
@@ -413,13 +440,19 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>SetValue()
 : <a class="el" href="classutil_1_1Grid.html#a0e93bd63922e7cbe405176a1ae21877e">util::Grid</a>
 </li>
-<li>split()
-: <a class="el" href="classutil_1_1FileIO.html#aa79e018874aa1da4d0b2cd1e5b7d2e01">util::FileIO</a>
+<li>Split()
+: <a class="el" href="classutil_1_1FileIO.html#a925a74ff26782b8f64106579c9d54b47">util::FileIO</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
+<li>ToString()
+: <a class="el" href="classcore_1_1ObjectData2D.html#a72b2f50ca82ebd9269e1c29cdac6d92a">core::ObjectData2D</a>
+, <a class="el" href="classcore_1_1ObjectData.html#a1d864ed88355e636c5783c18c9ab0555">core::ObjectData</a>
+, <a class="el" href="classcore_1_1ObjectDataAngular.html#a3b419c1d4be886f094b9af94cd839bd4">core::ObjectDataAngular</a>
+, <a class="el" href="classcore_1_1ObjectDataBox.html#a0af10953ccecb7089a3a2841ec7419b9">core::ObjectDataBox</a>
+</li>
 <li>Tracklet()
 : <a class="el" href="classcore_1_1Tracklet.html#aedf59b5a9a068a28bb7570f2a031d4e7">core::Tracklet</a>
 </li>
@@ -432,7 +465,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 , <a class="el" href="classcore_1_1ObjectData.html#aae2c4fceddc529570dbe8909309f9961">core::ObjectData</a>
 , <a class="el" href="classcore_1_1ObjectDataAngular.html#acb4265f6de511238460df118148bc85c">core::ObjectDataAngular</a>
 , <a class="el" href="classcore_1_1ObjectDataBox.html#ab29bacb20c258ba572d0372469ec5523">core::ObjectDataBox</a>
-, <a class="el" href="classcore_1_1Tracklet.html#a85f92a4059bf89f24a83f28935675181">core::Tracklet</a>
+, <a class="el" href="classcore_1_1Tracklet.html#a3a2b241939559e47aef701d2e2c4d4bd">core::Tracklet</a>
 </li>
 </ul>
 

+ 48 - 15
Documentation/html/functions_func.html

@@ -159,10 +159,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
 <li>DetectionSequence()
-: <a class="el" href="classcore_1_1DetectionSequence.html#a2cbdc8db34fe87932653826fc8a3c1f7">core::DetectionSequence</a>
+: <a class="el" href="classcore_1_1DetectionSequence.html#aed2967a51334c7b3e9053f2ab0f9990e">core::DetectionSequence</a>
 </li>
 <li>Display()
-: <a class="el" href="classutil_1_1Visualizer.html#a545d2f4aae7c3c54ecaee51461980036">util::Visualizer</a>
+: <a class="el" href="classutil_1_1Visualizer.html#a5168d3347dd28217a0e9bb6541fa38f3">util::Visualizer</a>
 </li>
 </ul>
 
@@ -175,6 +175,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 
 <h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<li>Filter2D()
+: <a class="el" href="classutil_1_1Filter2D.html#a56cbb0d40a118f98c5a21d1b0a9e1953">util::Filter2D</a>
+</li>
 <li>Flatten()
 : <a class="el" href="classcore_1_1Tracklet.html#a2bdb2f2c8249145808e7029dde6e7df0">core::Tracklet</a>
 </li>
@@ -182,6 +185,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 
 <h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
+<li>Get()
+: <a class="el" href="classutil_1_1Filter2D.html#ab59311cc1727f5285a56c050ede7b14a">util::Filter2D</a>
+</li>
 <li>GetAngle()
 : <a class="el" href="classcore_1_1ObjectDataAngular.html#a6c2da5010cd919af3b0f156579d04ef8">core::ObjectDataAngular</a>
 </li>
@@ -197,6 +203,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>GetDetectionScore()
 : <a class="el" href="classcore_1_1ObjectData.html#a227a11377867105d5fcbe9efc3faed45">core::ObjectData</a>
 </li>
+<li>GetDimension()
+: <a class="el" href="classutil_1_1Filter2D.html#a4151856406f7a794cd724ce4a7e347eb">util::Filter2D</a>
+</li>
 <li>GetFirstFrameIndex()
 : <a class="el" href="classcore_1_1Tracklet.html#a1b963319d6c65614baec02a925f31691">core::Tracklet</a>
 </li>
@@ -209,6 +218,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>GetFrameObject()
 : <a class="el" href="classcore_1_1Tracklet.html#a5a0e56045f8c1868b46db87700658260">core::Tracklet</a>
 </li>
+<li>GetFrameOffset()
+: <a class="el" href="classcore_1_1DetectionSequence.html#a2c469219ac4f55aa9deacb5f63195de1">core::DetectionSequence</a>
+</li>
 <li>GetHeight()
 : <a class="el" href="classutil_1_1Grid.html#a2d02a1eafe76faaa7e0f63ce406d782f">util::Grid</a>
 </li>
@@ -218,14 +230,17 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>GetLastFrameIndex()
 : <a class="el" href="classcore_1_1Tracklet.html#ad8e195b523cf2021394455cc21867d96">core::Tracklet</a>
 </li>
+<li>GetMultiplier()
+: <a class="el" href="classutil_1_1Filter2D.html#a2b61ed6deaebb2e97fda04cadd43459c">util::Filter2D</a>
+</li>
 <li>GetName()
 : <a class="el" href="classcore_1_1DetectionSequence.html#a8a1af3dee89766d06f4a4f74044082ad">core::DetectionSequence</a>
 </li>
 <li>GetObject()
-: <a class="el" href="classcore_1_1DetectionSequence.html#aab2b72c6e0a9ee14dba99d07116c1d86">core::DetectionSequence</a>
+: <a class="el" href="classcore_1_1DetectionSequence.html#a1faac919948e8b10d9112916f3a19bd0">core::DetectionSequence</a>
 </li>
 <li>GetObjectCount()
-: <a class="el" href="classcore_1_1DetectionSequence.html#a99a1b693215c386c4716df12f6040100">core::DetectionSequence</a>
+: <a class="el" href="classcore_1_1DetectionSequence.html#ad6c77b1224bf5b149b78b60cc62d5564">core::DetectionSequence</a>
 </li>
 <li>GetPathObject()
 : <a class="el" href="classcore_1_1Tracklet.html#a9758349e8f25c479ffc4b21a90149a81">core::Tracklet</a>
@@ -251,6 +266,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>GetValue()
 : <a class="el" href="classutil_1_1Grid.html#a6658334ae9b505c56b75f6f15434832e">util::Grid</a>
 </li>
+<li>GetVicinity()
+: <a class="el" href="classutil_1_1Filter2D.html#af273117c197dc90208167cd873fe0097">util::Filter2D</a>
+</li>
 <li>GetWidth()
 : <a class="el" href="classutil_1_1Grid.html#a8b4dc63bee5859cae315969e039b4cac">util::Grid</a>
 </li>
@@ -289,6 +307,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>IsVirtual()
 : <a class="el" href="classcore_1_1ObjectData.html#a2880d710cfa520e9c0453e2a6729c0e2">core::ObjectData</a>
 </li>
+<li>IsWithinConstraints()
+: <a class="el" href="classcore_1_1ObjectData2D.html#a63e855919a72462225a8e69140f1389b">core::ObjectData2D</a>
+, <a class="el" href="classcore_1_1ObjectData.html#affa5d25fa3d2c04a571a7e095f62bacb">core::ObjectData</a>
+, <a class="el" href="classcore_1_1ObjectDataAngular.html#a1ef9168c2384d2038a1dd6e85d0b932f">core::ObjectDataAngular</a>
+, <a class="el" href="classcore_1_1ObjectDataBox.html#a04f4b780b79491270e4838f7504c1917">core::ObjectDataBox</a>
+</li>
 </ul>
 
 
@@ -307,23 +331,26 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classutil_1_1FileIO.html#a6e290e22083d49619b757bfca96a51fa">util::FileIO</a>
 </li>
 <li>LogDebug()
-: <a class="el" href="classutil_1_1Logger.html#a9c6a0ebe97ecf3ca24aff8a908a491ee">util::Logger</a>
+: <a class="el" href="classutil_1_1Logger.html#a89b67d19ea6650ed313dffc0a599385a">util::Logger</a>
 </li>
 <li>LogError()
-: <a class="el" href="classutil_1_1Logger.html#a01ad6e5349f51964724f96a598c6d2a8">util::Logger</a>
+: <a class="el" href="classutil_1_1Logger.html#a5a49cf31bcd5a0ccbfe11667b37f338a">util::Logger</a>
 </li>
 <li>Logger()
 : <a class="el" href="classutil_1_1Logger.html#a83d4f38e648b39fa61a2b9b3172bda12">util::Logger</a>
 </li>
 <li>LogInfo()
-: <a class="el" href="classutil_1_1Logger.html#a37504d39ec90bebffc3d02d61d47afea">util::Logger</a>
+: <a class="el" href="classutil_1_1Logger.html#a65ac30aaefded61036771197f1364bb8">util::Logger</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>Normalize()
+: <a class="el" href="classutil_1_1Filter2D.html#a242138102e2e30f4fe9cccf76f817e09">util::Filter2D</a>
+</li>
 <li>NStage()
-: <a class="el" href="classalgo_1_1NStage.html#a9706139a9ccfab10ab6458e06e42d7a5">algo::NStage</a>
+: <a class="el" href="classalgo_1_1NStage.html#a65baad453fa371f18be02fd19e695ea1">algo::NStage</a>
 </li>
 </ul>
 
@@ -339,7 +366,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classcore_1_1ObjectDataAngular.html#a276b02fc7646e3275f1cb81fca7e9a47">core::ObjectDataAngular</a>
 </li>
 <li>ObjectDataBox()
-: <a class="el" href="classcore_1_1ObjectDataBox.html#a9a1ee3e1e603c1e55adc58a1a58efad2">core::ObjectDataBox</a>
+: <a class="el" href="classcore_1_1ObjectDataBox.html#a4e331870ed012d9bc44bc769aee86362">core::ObjectDataBox</a>
 </li>
 <li>operator=()
 : <a class="el" href="classutil_1_1Logger.html#a4e9e8b8d0e75058265037976d9b256de">util::Logger</a>
@@ -374,12 +401,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classutil_1_1FileIO.html#ae31b9e693316483eda89df8463ea0d0a">util::FileIO</a>
 </li>
 <li>ReadTracks()
-: <a class="el" href="classutil_1_1FileIO.html#aa6294f669bdb86510c8b6cefed9ac44b">util::FileIO</a>
+: <a class="el" href="classutil_1_1FileIO.html#a82be787051876b0e3d3c4f887c3c27ce">util::FileIO</a>
 </li>
 <li>Run()
-: <a class="el" href="classalgo_1_1Berclaz.html#a918f30c2f67eac9d5f9bc07ceeb0880e">algo::Berclaz</a>
+: <a class="el" href="classalgo_1_1Berclaz.html#a00a0d5e52112a8f9dc188757f2a8af11">algo::Berclaz</a>
 , <a class="el" href="classalgo_1_1KShortestPaths.html#a4ad79f2618bf3fc36b591ff69efd3c76">algo::KShortestPaths</a>
-, <a class="el" href="classalgo_1_1NStage.html#a4e4e881b9c6f65d9e86449c71ab6d778">algo::NStage</a>
+, <a class="el" href="classalgo_1_1NStage.html#a8c25c9c9796db048bb4b55d7a603b00b">algo::NStage</a>
 </li>
 </ul>
 
@@ -409,13 +436,19 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>SetValue()
 : <a class="el" href="classutil_1_1Grid.html#a0e93bd63922e7cbe405176a1ae21877e">util::Grid</a>
 </li>
-<li>split()
-: <a class="el" href="classutil_1_1FileIO.html#aa79e018874aa1da4d0b2cd1e5b7d2e01">util::FileIO</a>
+<li>Split()
+: <a class="el" href="classutil_1_1FileIO.html#a925a74ff26782b8f64106579c9d54b47">util::FileIO</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
+<li>ToString()
+: <a class="el" href="classcore_1_1ObjectData2D.html#a72b2f50ca82ebd9269e1c29cdac6d92a">core::ObjectData2D</a>
+, <a class="el" href="classcore_1_1ObjectData.html#a1d864ed88355e636c5783c18c9ab0555">core::ObjectData</a>
+, <a class="el" href="classcore_1_1ObjectDataAngular.html#a3b419c1d4be886f094b9af94cd839bd4">core::ObjectDataAngular</a>
+, <a class="el" href="classcore_1_1ObjectDataBox.html#a0af10953ccecb7089a3a2841ec7419b9">core::ObjectDataBox</a>
+</li>
 <li>Tracklet()
 : <a class="el" href="classcore_1_1Tracklet.html#aedf59b5a9a068a28bb7570f2a031d4e7">core::Tracklet</a>
 </li>
@@ -428,7 +461,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 , <a class="el" href="classcore_1_1ObjectData.html#aae2c4fceddc529570dbe8909309f9961">core::ObjectData</a>
 , <a class="el" href="classcore_1_1ObjectDataAngular.html#acb4265f6de511238460df118148bc85c">core::ObjectDataAngular</a>
 , <a class="el" href="classcore_1_1ObjectDataBox.html#ab29bacb20c258ba572d0372469ec5523">core::ObjectDataBox</a>
-, <a class="el" href="classcore_1_1Tracklet.html#a85f92a4059bf89f24a83f28935675181">core::Tracklet</a>
+, <a class="el" href="classcore_1_1Tracklet.html#a3a2b241939559e47aef701d2e2c4d4bd">core::Tracklet</a>
 </li>
 </ul>
 

+ 1 - 1
Documentation/html/functions_rela.html

@@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="contents">
 &#160;<ul>
 <li>operator&lt;&lt;
-: <a class="el" href="classcore_1_1DetectionSequence.html#a557132cfbb170daf47f5a890a0c5bac0">core::DetectionSequence</a>
+: <a class="el" href="classcore_1_1DetectionSequence.html#abc61c6378276573bcb84464d9f0b9e24">core::DetectionSequence</a>
 , <a class="el" href="classcore_1_1ObjectData.html#a56fc9b6184428bf4d80826bbb9fe4c6f">core::ObjectData</a>
 </li>
 </ul>

+ 13 - 12
Documentation/html/hierarchy.html

@@ -92,18 +92,19 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classalgo_1_1Berclaz.html" target="_self">algo::Berclaz</a></td><td class="desc"></td></tr>
 <tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcore_1_1DetectionSequence.html" target="_self">core::DetectionSequence</a></td><td class="desc"></td></tr>
 <tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1FileIO.html" target="_self">util::FileIO</a></td><td class="desc"></td></tr>
-<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Grid.html" target="_self">util::Grid</a></td><td class="desc"></td></tr>
-<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classalgo_1_1KShortestPaths.html" target="_self">algo::KShortestPaths</a></td><td class="desc"></td></tr>
-<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Logger.html" target="_self">util::Logger</a></td><td class="desc"></td></tr>
-<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1MyMath.html" target="_self">util::MyMath</a></td><td class="desc"></td></tr>
-<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classalgo_1_1NStage.html" target="_self">algo::NStage</a></td><td class="desc"></td></tr>
-<tr id="row_8_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_8_" class="arrow" onclick="toggleFolder('8_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcore_1_1ObjectData.html" target="_self">core::ObjectData</a></td><td class="desc"></td></tr>
-<tr id="row_8_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_8_0_" class="arrow" onclick="toggleFolder('8_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcore_1_1ObjectData2D.html" target="_self">core::ObjectData2D</a></td><td class="desc"></td></tr>
-<tr id="row_8_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcore_1_1ObjectDataAngular.html" target="_self">core::ObjectDataAngular</a></td><td class="desc"></td></tr>
-<tr id="row_8_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcore_1_1ObjectDataBox.html" target="_self">core::ObjectDataBox</a></td><td class="desc"></td></tr>
-<tr id="row_8_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcore_1_1Tracklet.html" target="_self">core::Tracklet</a></td><td class="desc"></td></tr>
-<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Parser.html" target="_self">util::Parser</a></td><td class="desc"></td></tr>
-<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Visualizer.html" target="_self">util::Visualizer</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Filter2D.html" target="_self">util::Filter2D</a></td><td class="desc"></td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Grid.html" target="_self">util::Grid</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classalgo_1_1KShortestPaths.html" target="_self">algo::KShortestPaths</a></td><td class="desc"></td></tr>
+<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Logger.html" target="_self">util::Logger</a></td><td class="desc"></td></tr>
+<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1MyMath.html" target="_self">util::MyMath</a></td><td class="desc"></td></tr>
+<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classalgo_1_1NStage.html" target="_self">algo::NStage</a></td><td class="desc"></td></tr>
+<tr id="row_9_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_9_" class="arrow" onclick="toggleFolder('9_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcore_1_1ObjectData.html" target="_self">core::ObjectData</a></td><td class="desc"></td></tr>
+<tr id="row_9_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_9_0_" class="arrow" onclick="toggleFolder('9_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcore_1_1ObjectData2D.html" target="_self">core::ObjectData2D</a></td><td class="desc"></td></tr>
+<tr id="row_9_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcore_1_1ObjectDataAngular.html" target="_self">core::ObjectDataAngular</a></td><td class="desc"></td></tr>
+<tr id="row_9_0_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcore_1_1ObjectDataBox.html" target="_self">core::ObjectDataBox</a></td><td class="desc"></td></tr>
+<tr id="row_9_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcore_1_1Tracklet.html" target="_self">core::Tracklet</a></td><td class="desc"></td></tr>
+<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Parser.html" target="_self">util::Parser</a></td><td class="desc"></td></tr>
+<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutil_1_1Visualizer.html" target="_self">util::Visualizer</a></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->

+ 3 - 2
Documentation/html/search/all_10.js

@@ -1,5 +1,6 @@
 var searchData=
 [
-  ['tracklet',['Tracklet',['../classcore_1_1Tracklet.html',1,'core']]],
-  ['tracklet',['Tracklet',['../classcore_1_1Tracklet.html#aedf59b5a9a068a28bb7570f2a031d4e7',1,'core::Tracklet']]]
+  ['tostring',['ToString',['../classcore_1_1ObjectData.html#a1d864ed88355e636c5783c18c9ab0555',1,'core::ObjectData::ToString()'],['../classcore_1_1ObjectData2D.html#a72b2f50ca82ebd9269e1c29cdac6d92a',1,'core::ObjectData2D::ToString()'],['../classcore_1_1ObjectDataAngular.html#a3b419c1d4be886f094b9af94cd839bd4',1,'core::ObjectDataAngular::ToString()'],['../classcore_1_1ObjectDataBox.html#a0af10953ccecb7089a3a2841ec7419b9',1,'core::ObjectDataBox::ToString()']]],
+  ['tracklet',['Tracklet',['../classcore_1_1Tracklet.html#aedf59b5a9a068a28bb7570f2a031d4e7',1,'core::Tracklet']]],
+  ['tracklet',['Tracklet',['../classcore_1_1Tracklet.html',1,'core']]]
 ];

+ 1 - 1
Documentation/html/search/all_11.js

@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['visualize',['Visualize',['../classcore_1_1ObjectData.html#aae2c4fceddc529570dbe8909309f9961',1,'core::ObjectData::Visualize()'],['../classcore_1_1ObjectData2D.html#aff4e8539559f4ce50a7f43b733d6c512',1,'core::ObjectData2D::Visualize()'],['../classcore_1_1ObjectDataAngular.html#acb4265f6de511238460df118148bc85c',1,'core::ObjectDataAngular::Visualize()'],['../classcore_1_1ObjectDataBox.html#ab29bacb20c258ba572d0372469ec5523',1,'core::ObjectDataBox::Visualize()'],['../classcore_1_1Tracklet.html#a85f92a4059bf89f24a83f28935675181',1,'core::Tracklet::Visualize(cv::Mat &amp;image, cv::Scalar &amp;color) const override'],['../classcore_1_1Tracklet.html#a3a2b241939559e47aef701d2e2c4d4bd',1,'core::Tracklet::Visualize(cv::Mat &amp;image, cv::Scalar &amp;color, size_t frame, size_t predecessor_count, size_t successor_count) const']]],
+  ['visualize',['Visualize',['../classcore_1_1ObjectData.html#aae2c4fceddc529570dbe8909309f9961',1,'core::ObjectData::Visualize()'],['../classcore_1_1ObjectData2D.html#aff4e8539559f4ce50a7f43b733d6c512',1,'core::ObjectData2D::Visualize()'],['../classcore_1_1ObjectDataAngular.html#acb4265f6de511238460df118148bc85c',1,'core::ObjectDataAngular::Visualize()'],['../classcore_1_1ObjectDataBox.html#ab29bacb20c258ba572d0372469ec5523',1,'core::ObjectDataBox::Visualize()'],['../classcore_1_1Tracklet.html#a3a2b241939559e47aef701d2e2c4d4bd',1,'core::Tracklet::Visualize(cv::Mat &amp;image, cv::Scalar &amp;color, size_t frame, size_t predecessor_count, size_t successor_count) const'],['../classcore_1_1Tracklet.html#a85f92a4059bf89f24a83f28935675181',1,'core::Tracklet::Visualize(cv::Mat &amp;image, cv::Scalar &amp;color) const override']]],
   ['visualizer',['Visualizer',['../classutil_1_1Visualizer.html',1,'util']]]
 ];

+ 1 - 1
Documentation/html/search/all_2.js

@@ -4,6 +4,6 @@ var searchData=
   ['clear',['Clear',['../classcore_1_1DetectionSequence.html#ab62569a3e51d58457057deba12ef6892',1,'core::DetectionSequence']]],
   ['combine',['Combine',['../classcore_1_1Tracklet.html#a5bbbf1e2858edaad93c04cc663afeeff',1,'core::Tracklet']]],
   ['compareto',['CompareTo',['../classcore_1_1ObjectData.html#afbf7a1e87235f1b204d4d2eb8a37a9a6',1,'core::ObjectData::CompareTo()'],['../classcore_1_1ObjectData2D.html#a68d56bd5f26a41830a87ae32eabf9126',1,'core::ObjectData2D::CompareTo()'],['../classcore_1_1ObjectDataAngular.html#a2932240c6c082b76f2c04723cdf3e4f9',1,'core::ObjectDataAngular::CompareTo()'],['../classcore_1_1ObjectDataBox.html#a163c57338778f957ce514611c509558a',1,'core::ObjectDataBox::CompareTo()'],['../classcore_1_1Tracklet.html#a0357f2fa173941800571432dcbc96dc2',1,'core::Tracklet::CompareTo()']]],
-  ['convolve2d',['Convolve2D',['../classutil_1_1Grid.html#a6597c4f785a764c0b291b8135863fe67',1,'util::Grid']]],
+  ['convolve2d',['Convolve2D',['../classutil_1_1Grid.html#a6597c4f785a764c0b291b8135863fe67',1,'util::Grid::Convolve2D(int vicinity, double *mask, double multiplier)'],['../classutil_1_1Grid.html#ab8e9f6c804b0eab1f5666a039130b8ed',1,'util::Grid::Convolve2D(util::Filter2D &amp;filter)']]],
   ['convolve3d',['Convolve3D',['../classutil_1_1Grid.html#ac161adb14df09651a6b33f855d887bfa',1,'util::Grid']]]
 ];

+ 2 - 2
Documentation/html/search/all_3.js

@@ -1,6 +1,6 @@
 var searchData=
 [
   ['detectionsequence',['DetectionSequence',['../classcore_1_1DetectionSequence.html',1,'core']]],
-  ['detectionsequence',['DetectionSequence',['../classcore_1_1DetectionSequence.html#a2cbdc8db34fe87932653826fc8a3c1f7',1,'core::DetectionSequence']]],
-  ['display',['Display',['../classutil_1_1Visualizer.html#a545d2f4aae7c3c54ecaee51461980036',1,'util::Visualizer']]]
+  ['detectionsequence',['DetectionSequence',['../classcore_1_1DetectionSequence.html#aed2967a51334c7b3e9053f2ab0f9990e',1,'core::DetectionSequence']]],
+  ['display',['Display',['../classutil_1_1Visualizer.html#a5168d3347dd28217a0e9bb6541fa38f3',1,'util::Visualizer']]]
 ];

+ 2 - 0
Documentation/html/search/all_5.js

@@ -1,5 +1,7 @@
 var searchData=
 [
   ['fileio',['FileIO',['../classutil_1_1FileIO.html',1,'util']]],
+  ['filter2d',['Filter2D',['../classutil_1_1Filter2D.html',1,'util']]],
+  ['filter2d',['Filter2D',['../classutil_1_1Filter2D.html#a56cbb0d40a118f98c5a21d1b0a9e1953',1,'util::Filter2D::Filter2D()'],['../classutil_1_1Filter2D.html#a83896f35678afd4a024b2ae0255b3e38',1,'util::Filter2D::Filter2D(double multiplier, std::vector&lt; double &gt; mask)'],['../classutil_1_1Filter2D.html#a1d14212292766b1372b190842d8330e8',1,'util::Filter2D::Filter2D(std::string const &amp;mask_string, char delimiter)']]],
   ['flatten',['Flatten',['../classcore_1_1Tracklet.html#a2bdb2f2c8249145808e7029dde6e7df0',1,'core::Tracklet']]]
 ];

+ 7 - 2
Documentation/html/search/all_6.js

@@ -1,20 +1,24 @@
 var searchData=
 [
+  ['get',['Get',['../classutil_1_1Filter2D.html#ab59311cc1727f5285a56c050ede7b14a',1,'util::Filter2D::Get(int x, int y) const'],['../classutil_1_1Filter2D.html#ad6866d21e5b1d3d6863d859f1b7fa288',1,'util::Filter2D::Get(int i) const']]],
   ['getangle',['GetAngle',['../classcore_1_1ObjectDataAngular.html#a6c2da5010cd919af3b0f156579d04ef8',1,'core::ObjectDataAngular']]],
   ['getangularweight',['GetAngularWeight',['../classcore_1_1ObjectDataAngular.html#ae1c5db7b9fc06e648450d9388c93a1aa',1,'core::ObjectDataAngular']]],
   ['getdepth',['GetDepth',['../classutil_1_1Grid.html#afe6698a6766a43082ceea2d4bf27619e',1,'util::Grid']]],
   ['getdepthcount',['GetDepthCount',['../classutil_1_1Grid.html#a04f1c2fe745d469e49cf2523fe0f34fd',1,'util::Grid']]],
   ['getdetectionscore',['GetDetectionScore',['../classcore_1_1ObjectData.html#a227a11377867105d5fcbe9efc3faed45',1,'core::ObjectData']]],
+  ['getdimension',['GetDimension',['../classutil_1_1Filter2D.html#a4151856406f7a794cd724ce4a7e347eb',1,'util::Filter2D']]],
   ['getfirstframeindex',['GetFirstFrameIndex',['../classcore_1_1Tracklet.html#a1b963319d6c65614baec02a925f31691',1,'core::Tracklet']]],
   ['getframecount',['GetFrameCount',['../classcore_1_1DetectionSequence.html#a2417e4f2652a39245d6f2faa0ce19571',1,'core::DetectionSequence']]],
   ['getframeindex',['GetFrameIndex',['../classcore_1_1ObjectData.html#a1151e9215baf315f4b98f696f4271162',1,'core::ObjectData']]],
   ['getframeobject',['GetFrameObject',['../classcore_1_1Tracklet.html#a5a0e56045f8c1868b46db87700658260',1,'core::Tracklet']]],
+  ['getframeoffset',['GetFrameOffset',['../classcore_1_1DetectionSequence.html#a2c469219ac4f55aa9deacb5f63195de1',1,'core::DetectionSequence']]],
   ['getheight',['GetHeight',['../classutil_1_1Grid.html#a2d02a1eafe76faaa7e0f63ce406d782f',1,'util::Grid']]],
   ['getheightcount',['GetHeightCount',['../classutil_1_1Grid.html#a0c63eb86e4be8c63e996ff61c3ef8b7f',1,'util::Grid']]],
   ['getlastframeindex',['GetLastFrameIndex',['../classcore_1_1Tracklet.html#ad8e195b523cf2021394455cc21867d96',1,'core::Tracklet']]],
+  ['getmultiplier',['GetMultiplier',['../classutil_1_1Filter2D.html#a2b61ed6deaebb2e97fda04cadd43459c',1,'util::Filter2D']]],
   ['getname',['GetName',['../classcore_1_1DetectionSequence.html#a8a1af3dee89766d06f4a4f74044082ad',1,'core::DetectionSequence']]],
-  ['getobject',['GetObject',['../classcore_1_1DetectionSequence.html#aab2b72c6e0a9ee14dba99d07116c1d86',1,'core::DetectionSequence']]],
-  ['getobjectcount',['GetObjectCount',['../classcore_1_1DetectionSequence.html#a99a1b693215c386c4716df12f6040100',1,'core::DetectionSequence']]],
+  ['getobject',['GetObject',['../classcore_1_1DetectionSequence.html#a1faac919948e8b10d9112916f3a19bd0',1,'core::DetectionSequence']]],
+  ['getobjectcount',['GetObjectCount',['../classcore_1_1DetectionSequence.html#ad6c77b1224bf5b149b78b60cc62d5564',1,'core::DetectionSequence']]],
   ['getpathobject',['GetPathObject',['../classcore_1_1Tracklet.html#a9758349e8f25c479ffc4b21a90149a81',1,'core::Tracklet']]],
   ['getpathobjectcount',['GetPathObjectCount',['../classcore_1_1Tracklet.html#aee4298a7b734b2b7533d4536006a8aa8',1,'core::Tracklet']]],
   ['getpaths',['GetPaths',['../classalgo_1_1KShortestPaths.html#a6af47b5af40e75786924941b3472ada2',1,'algo::KShortestPaths']]],
@@ -23,6 +27,7 @@ var searchData=
   ['getspatialweight',['GetSpatialWeight',['../classcore_1_1ObjectData2D.html#a688087ccdd999d7e16f5c68cc460209d',1,'core::ObjectData2D']]],
   ['gettemporalweight',['GetTemporalWeight',['../classcore_1_1ObjectData2D.html#a35381efb292d20f2b181558c129269f3',1,'core::ObjectData2D']]],
   ['getvalue',['GetValue',['../classutil_1_1Grid.html#a6658334ae9b505c56b75f6f15434832e',1,'util::Grid::GetValue(int x, int y, int z=0) const'],['../classutil_1_1Grid.html#a6cc6449dfe16dde11035fe2d16a321cd',1,'util::Grid::GetValue(double x, double y, double z=0.0) const']]],
+  ['getvicinity',['GetVicinity',['../classutil_1_1Filter2D.html#af273117c197dc90208167cd873fe0097',1,'util::Filter2D']]],
   ['getwidth',['GetWidth',['../classutil_1_1Grid.html#a8b4dc63bee5859cae315969e039b4cac',1,'util::Grid']]],
   ['getwidthcount',['GetWidthCount',['../classutil_1_1Grid.html#a3f5cdd325b3e3eb30ca5d38bd31d005e',1,'util::Grid']]],
   ['grid',['Grid',['../classutil_1_1Grid.html',1,'util']]],

+ 2 - 1
Documentation/html/search/all_7.js

@@ -6,5 +6,6 @@ var searchData=
   ['inverselerp',['InverseLerp',['../classutil_1_1MyMath.html#a789c283b324494ab50955af1e35178d5',1,'util::MyMath']]],
   ['isdebugenabled',['IsDebugEnabled',['../classutil_1_1Logger.html#a6ee9298451936b98815e20ba7f5d7275',1,'util::Logger']]],
   ['isinfoenabled',['IsInfoEnabled',['../classutil_1_1Logger.html#a194b338af92760d0f7d15b607cad5429',1,'util::Logger']]],
-  ['isvirtual',['IsVirtual',['../classcore_1_1ObjectData.html#a2880d710cfa520e9c0453e2a6729c0e2',1,'core::ObjectData']]]
+  ['isvirtual',['IsVirtual',['../classcore_1_1ObjectData.html#a2880d710cfa520e9c0453e2a6729c0e2',1,'core::ObjectData']]],
+  ['iswithinconstraints',['IsWithinConstraints',['../classcore_1_1ObjectData.html#affa5d25fa3d2c04a571a7e095f62bacb',1,'core::ObjectData::IsWithinConstraints()'],['../classcore_1_1ObjectData2D.html#a63e855919a72462225a8e69140f1389b',1,'core::ObjectData2D::IsWithinConstraints()'],['../classcore_1_1ObjectDataAngular.html#a1ef9168c2384d2038a1dd6e85d0b932f',1,'core::ObjectDataAngular::IsWithinConstraints()'],['../classcore_1_1ObjectDataBox.html#a04f4b780b79491270e4838f7504c1917',1,'core::ObjectDataBox::IsWithinConstraints()']]]
 ];

+ 3 - 3
Documentation/html/search/all_9.js

@@ -2,9 +2,9 @@ var searchData=
 [
   ['lerp',['Lerp',['../classutil_1_1MyMath.html#ae68f361889a9929767b0c85ad7a010f1',1,'util::MyMath']]],
   ['listfiles',['ListFiles',['../classutil_1_1FileIO.html#a6e290e22083d49619b757bfca96a51fa',1,'util::FileIO']]],
-  ['logdebug',['LogDebug',['../classutil_1_1Logger.html#a9c6a0ebe97ecf3ca24aff8a908a491ee',1,'util::Logger']]],
-  ['logerror',['LogError',['../classutil_1_1Logger.html#a01ad6e5349f51964724f96a598c6d2a8',1,'util::Logger']]],
+  ['logdebug',['LogDebug',['../classutil_1_1Logger.html#a89b67d19ea6650ed313dffc0a599385a',1,'util::Logger']]],
+  ['logerror',['LogError',['../classutil_1_1Logger.html#a5a49cf31bcd5a0ccbfe11667b37f338a',1,'util::Logger']]],
   ['logger',['Logger',['../classutil_1_1Logger.html',1,'util']]],
   ['logger',['Logger',['../classutil_1_1Logger.html#a83d4f38e648b39fa61a2b9b3172bda12',1,'util::Logger']]],
-  ['loginfo',['LogInfo',['../classutil_1_1Logger.html#a37504d39ec90bebffc3d02d61d47afea',1,'util::Logger']]]
+  ['loginfo',['LogInfo',['../classutil_1_1Logger.html#a65ac30aaefded61036771197f1364bb8',1,'util::Logger']]]
 ];

+ 3 - 2
Documentation/html/search/all_b.js

@@ -1,5 +1,6 @@
 var searchData=
 [
-  ['nstage',['NStage',['../classalgo_1_1NStage.html',1,'algo']]],
-  ['nstage',['NStage',['../classalgo_1_1NStage.html#a9706139a9ccfab10ab6458e06e42d7a5',1,'algo::NStage']]]
+  ['normalize',['Normalize',['../classutil_1_1Filter2D.html#a242138102e2e30f4fe9cccf76f817e09',1,'util::Filter2D']]],
+  ['nstage',['NStage',['../classalgo_1_1NStage.html#a65baad453fa371f18be02fd19e695ea1',1,'algo::NStage']]],
+  ['nstage',['NStage',['../classalgo_1_1NStage.html',1,'algo']]]
 ];

+ 2 - 2
Documentation/html/search/all_c.js

@@ -7,7 +7,7 @@ var searchData=
   ['objectdataangular',['ObjectDataAngular',['../classcore_1_1ObjectDataAngular.html#a276b02fc7646e3275f1cb81fca7e9a47',1,'core::ObjectDataAngular::ObjectDataAngular(size_t frame_index, const cv::Point2d &amp;position, double angle)'],['../classcore_1_1ObjectDataAngular.html#aae3a8f335e26771d06c8940931d5d654',1,'core::ObjectDataAngular::ObjectDataAngular(size_t frame_index, const cv::Point2d &amp;position, double angle, double temporal_weight, double spatial_weight, double angular_weight)']]],
   ['objectdataangular',['ObjectDataAngular',['../classcore_1_1ObjectDataAngular.html',1,'core']]],
   ['objectdatabox',['ObjectDataBox',['../classcore_1_1ObjectDataBox.html',1,'core']]],
-  ['objectdatabox',['ObjectDataBox',['../classcore_1_1ObjectDataBox.html#a9a1ee3e1e603c1e55adc58a1a58efad2',1,'core::ObjectDataBox']]],
-  ['operator_3c_3c',['operator&lt;&lt;',['../classcore_1_1DetectionSequence.html#a557132cfbb170daf47f5a890a0c5bac0',1,'core::DetectionSequence::operator&lt;&lt;()'],['../classcore_1_1ObjectData.html#a56fc9b6184428bf4d80826bbb9fe4c6f',1,'core::ObjectData::operator&lt;&lt;()']]],
+  ['objectdatabox',['ObjectDataBox',['../classcore_1_1ObjectDataBox.html#a4e331870ed012d9bc44bc769aee86362',1,'core::ObjectDataBox']]],
+  ['operator_3c_3c',['operator&lt;&lt;',['../classcore_1_1DetectionSequence.html#abc61c6378276573bcb84464d9f0b9e24',1,'core::DetectionSequence::operator&lt;&lt;()'],['../classcore_1_1ObjectData.html#a56fc9b6184428bf4d80826bbb9fe4c6f',1,'core::ObjectData::operator&lt;&lt;()']]],
   ['operator_3d',['operator=',['../classutil_1_1Logger.html#a4e9e8b8d0e75058265037976d9b256de',1,'util::Logger']]]
 ];

+ 2 - 2
Documentation/html/search/all_e.js

@@ -2,6 +2,6 @@ var searchData=
 [
   ['radian',['Radian',['../classutil_1_1MyMath.html#aab093b6bf8f989a0d1879ce382e762af',1,'util::MyMath']]],
   ['readcsv',['ReadCSV',['../classutil_1_1FileIO.html#ae31b9e693316483eda89df8463ea0d0a',1,'util::FileIO::ReadCSV(Vector3d &amp;values, const std::string &amp;file_name, char delimiter)'],['../classutil_1_1FileIO.html#a49f014af1e0f03d290f00049e082d9c6',1,'util::FileIO::ReadCSV(Vector2d &amp;values, const std::string &amp;file_name, char delimiter)'],['../classutil_1_1FileIO.html#a642616eb6f07c71bd8dcb1585a532d92',1,'util::FileIO::ReadCSV(ValueMapVector &amp;values, const std::string &amp;file_name, char delimiter)'],['../classutil_1_1FileIO.html#a59b96733490d7b60e4f107da84efb245',1,'util::FileIO::ReadCSV(ValueMapVector &amp;values, const std::string &amp;header, const std::string &amp;file_name, char delimiter)']]],
-  ['readtracks',['ReadTracks',['../classutil_1_1FileIO.html#aa6294f669bdb86510c8b6cefed9ac44b',1,'util::FileIO']]],
-  ['run',['Run',['../classalgo_1_1Berclaz.html#a918f30c2f67eac9d5f9bc07ceeb0880e',1,'algo::Berclaz::Run()'],['../classalgo_1_1KShortestPaths.html#a4ad79f2618bf3fc36b591ff69efd3c76',1,'algo::KShortestPaths::Run()'],['../classalgo_1_1NStage.html#a4e4e881b9c6f65d9e86449c71ab6d778',1,'algo::NStage::Run()']]]
+  ['readtracks',['ReadTracks',['../classutil_1_1FileIO.html#a82be787051876b0e3d3c4f887c3c27ce',1,'util::FileIO']]],
+  ['run',['Run',['../classalgo_1_1Berclaz.html#a00a0d5e52112a8f9dc188757f2a8af11',1,'algo::Berclaz::Run()'],['../classalgo_1_1KShortestPaths.html#a4ad79f2618bf3fc36b591ff69efd3c76',1,'algo::KShortestPaths::Run()'],['../classalgo_1_1NStage.html#a8c25c9c9796db048bb4b55d7a603b00b',1,'algo::NStage::Run()']]]
 ];

+ 1 - 1
Documentation/html/search/all_f.js

@@ -8,5 +8,5 @@ var searchData=
   ['setspatialweight',['SetSpatialWeight',['../classcore_1_1ObjectData2D.html#ad62bf8b2362e8f3547f8040a144fa346',1,'core::ObjectData2D']]],
   ['settemporalweight',['SetTemporalWeight',['../classcore_1_1ObjectData2D.html#a2850785393bc7a5250427bbda84c1b58',1,'core::ObjectData2D']]],
   ['setvalue',['SetValue',['../classutil_1_1Grid.html#a0e93bd63922e7cbe405176a1ae21877e',1,'util::Grid::SetValue(core::ObjectDataPtr value, int x, int y, int z=0)'],['../classutil_1_1Grid.html#ad7dbf79146d9f5ae1662910b82fd25ea',1,'util::Grid::SetValue(core::ObjectDataPtr value, double x, double y, double z=0)']]],
-  ['split',['split',['../classutil_1_1FileIO.html#aa79e018874aa1da4d0b2cd1e5b7d2e01',1,'util::FileIO']]]
+  ['split',['Split',['../classutil_1_1FileIO.html#a925a74ff26782b8f64106579c9d54b47',1,'util::FileIO']]]
 ];

+ 2 - 1
Documentation/html/search/classes_2.js

@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['fileio',['FileIO',['../classutil_1_1FileIO.html',1,'util']]]
+  ['fileio',['FileIO',['../classutil_1_1FileIO.html',1,'util']]],
+  ['filter2d',['Filter2D',['../classutil_1_1Filter2D.html',1,'util']]]
 ];

+ 1 - 1
Documentation/html/search/functions_10.js

@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['visualize',['Visualize',['../classcore_1_1ObjectData.html#aae2c4fceddc529570dbe8909309f9961',1,'core::ObjectData::Visualize()'],['../classcore_1_1ObjectData2D.html#aff4e8539559f4ce50a7f43b733d6c512',1,'core::ObjectData2D::Visualize()'],['../classcore_1_1ObjectDataAngular.html#acb4265f6de511238460df118148bc85c',1,'core::ObjectDataAngular::Visualize()'],['../classcore_1_1ObjectDataBox.html#ab29bacb20c258ba572d0372469ec5523',1,'core::ObjectDataBox::Visualize()'],['../classcore_1_1Tracklet.html#a85f92a4059bf89f24a83f28935675181',1,'core::Tracklet::Visualize(cv::Mat &amp;image, cv::Scalar &amp;color) const override'],['../classcore_1_1Tracklet.html#a3a2b241939559e47aef701d2e2c4d4bd',1,'core::Tracklet::Visualize(cv::Mat &amp;image, cv::Scalar &amp;color, size_t frame, size_t predecessor_count, size_t successor_count) const']]]
+  ['visualize',['Visualize',['../classcore_1_1ObjectData.html#aae2c4fceddc529570dbe8909309f9961',1,'core::ObjectData::Visualize()'],['../classcore_1_1ObjectData2D.html#aff4e8539559f4ce50a7f43b733d6c512',1,'core::ObjectData2D::Visualize()'],['../classcore_1_1ObjectDataAngular.html#acb4265f6de511238460df118148bc85c',1,'core::ObjectDataAngular::Visualize()'],['../classcore_1_1ObjectDataBox.html#ab29bacb20c258ba572d0372469ec5523',1,'core::ObjectDataBox::Visualize()'],['../classcore_1_1Tracklet.html#a3a2b241939559e47aef701d2e2c4d4bd',1,'core::Tracklet::Visualize(cv::Mat &amp;image, cv::Scalar &amp;color, size_t frame, size_t predecessor_count, size_t successor_count) const'],['../classcore_1_1Tracklet.html#a85f92a4059bf89f24a83f28935675181',1,'core::Tracklet::Visualize(cv::Mat &amp;image, cv::Scalar &amp;color) const override']]]
 ];

+ 1 - 1
Documentation/html/search/functions_2.js

@@ -4,6 +4,6 @@ var searchData=
   ['clear',['Clear',['../classcore_1_1DetectionSequence.html#ab62569a3e51d58457057deba12ef6892',1,'core::DetectionSequence']]],
   ['combine',['Combine',['../classcore_1_1Tracklet.html#a5bbbf1e2858edaad93c04cc663afeeff',1,'core::Tracklet']]],
   ['compareto',['CompareTo',['../classcore_1_1ObjectData.html#afbf7a1e87235f1b204d4d2eb8a37a9a6',1,'core::ObjectData::CompareTo()'],['../classcore_1_1ObjectData2D.html#a68d56bd5f26a41830a87ae32eabf9126',1,'core::ObjectData2D::CompareTo()'],['../classcore_1_1ObjectDataAngular.html#a2932240c6c082b76f2c04723cdf3e4f9',1,'core::ObjectDataAngular::CompareTo()'],['../classcore_1_1ObjectDataBox.html#a163c57338778f957ce514611c509558a',1,'core::ObjectDataBox::CompareTo()'],['../classcore_1_1Tracklet.html#a0357f2fa173941800571432dcbc96dc2',1,'core::Tracklet::CompareTo()']]],
-  ['convolve2d',['Convolve2D',['../classutil_1_1Grid.html#a6597c4f785a764c0b291b8135863fe67',1,'util::Grid']]],
+  ['convolve2d',['Convolve2D',['../classutil_1_1Grid.html#a6597c4f785a764c0b291b8135863fe67',1,'util::Grid::Convolve2D(int vicinity, double *mask, double multiplier)'],['../classutil_1_1Grid.html#ab8e9f6c804b0eab1f5666a039130b8ed',1,'util::Grid::Convolve2D(util::Filter2D &amp;filter)']]],
   ['convolve3d',['Convolve3D',['../classutil_1_1Grid.html#ac161adb14df09651a6b33f855d887bfa',1,'util::Grid']]]
 ];

+ 2 - 2
Documentation/html/search/functions_3.js

@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['detectionsequence',['DetectionSequence',['../classcore_1_1DetectionSequence.html#a2cbdc8db34fe87932653826fc8a3c1f7',1,'core::DetectionSequence']]],
-  ['display',['Display',['../classutil_1_1Visualizer.html#a545d2f4aae7c3c54ecaee51461980036',1,'util::Visualizer']]]
+  ['detectionsequence',['DetectionSequence',['../classcore_1_1DetectionSequence.html#aed2967a51334c7b3e9053f2ab0f9990e',1,'core::DetectionSequence']]],
+  ['display',['Display',['../classutil_1_1Visualizer.html#a5168d3347dd28217a0e9bb6541fa38f3',1,'util::Visualizer']]]
 ];

+ 1 - 0
Documentation/html/search/functions_5.js

@@ -1,4 +1,5 @@
 var searchData=
 [
+  ['filter2d',['Filter2D',['../classutil_1_1Filter2D.html#a56cbb0d40a118f98c5a21d1b0a9e1953',1,'util::Filter2D::Filter2D()'],['../classutil_1_1Filter2D.html#a83896f35678afd4a024b2ae0255b3e38',1,'util::Filter2D::Filter2D(double multiplier, std::vector&lt; double &gt; mask)'],['../classutil_1_1Filter2D.html#a1d14212292766b1372b190842d8330e8',1,'util::Filter2D::Filter2D(std::string const &amp;mask_string, char delimiter)']]],
   ['flatten',['Flatten',['../classcore_1_1Tracklet.html#a2bdb2f2c8249145808e7029dde6e7df0',1,'core::Tracklet']]]
 ];

+ 7 - 2
Documentation/html/search/functions_6.js

@@ -1,20 +1,24 @@
 var searchData=
 [
+  ['get',['Get',['../classutil_1_1Filter2D.html#ab59311cc1727f5285a56c050ede7b14a',1,'util::Filter2D::Get(int x, int y) const'],['../classutil_1_1Filter2D.html#ad6866d21e5b1d3d6863d859f1b7fa288',1,'util::Filter2D::Get(int i) const']]],
   ['getangle',['GetAngle',['../classcore_1_1ObjectDataAngular.html#a6c2da5010cd919af3b0f156579d04ef8',1,'core::ObjectDataAngular']]],
   ['getangularweight',['GetAngularWeight',['../classcore_1_1ObjectDataAngular.html#ae1c5db7b9fc06e648450d9388c93a1aa',1,'core::ObjectDataAngular']]],
   ['getdepth',['GetDepth',['../classutil_1_1Grid.html#afe6698a6766a43082ceea2d4bf27619e',1,'util::Grid']]],
   ['getdepthcount',['GetDepthCount',['../classutil_1_1Grid.html#a04f1c2fe745d469e49cf2523fe0f34fd',1,'util::Grid']]],
   ['getdetectionscore',['GetDetectionScore',['../classcore_1_1ObjectData.html#a227a11377867105d5fcbe9efc3faed45',1,'core::ObjectData']]],
+  ['getdimension',['GetDimension',['../classutil_1_1Filter2D.html#a4151856406f7a794cd724ce4a7e347eb',1,'util::Filter2D']]],
   ['getfirstframeindex',['GetFirstFrameIndex',['../classcore_1_1Tracklet.html#a1b963319d6c65614baec02a925f31691',1,'core::Tracklet']]],
   ['getframecount',['GetFrameCount',['../classcore_1_1DetectionSequence.html#a2417e4f2652a39245d6f2faa0ce19571',1,'core::DetectionSequence']]],
   ['getframeindex',['GetFrameIndex',['../classcore_1_1ObjectData.html#a1151e9215baf315f4b98f696f4271162',1,'core::ObjectData']]],
   ['getframeobject',['GetFrameObject',['../classcore_1_1Tracklet.html#a5a0e56045f8c1868b46db87700658260',1,'core::Tracklet']]],
+  ['getframeoffset',['GetFrameOffset',['../classcore_1_1DetectionSequence.html#a2c469219ac4f55aa9deacb5f63195de1',1,'core::DetectionSequence']]],
   ['getheight',['GetHeight',['../classutil_1_1Grid.html#a2d02a1eafe76faaa7e0f63ce406d782f',1,'util::Grid']]],
   ['getheightcount',['GetHeightCount',['../classutil_1_1Grid.html#a0c63eb86e4be8c63e996ff61c3ef8b7f',1,'util::Grid']]],
   ['getlastframeindex',['GetLastFrameIndex',['../classcore_1_1Tracklet.html#ad8e195b523cf2021394455cc21867d96',1,'core::Tracklet']]],
+  ['getmultiplier',['GetMultiplier',['../classutil_1_1Filter2D.html#a2b61ed6deaebb2e97fda04cadd43459c',1,'util::Filter2D']]],
   ['getname',['GetName',['../classcore_1_1DetectionSequence.html#a8a1af3dee89766d06f4a4f74044082ad',1,'core::DetectionSequence']]],
-  ['getobject',['GetObject',['../classcore_1_1DetectionSequence.html#aab2b72c6e0a9ee14dba99d07116c1d86',1,'core::DetectionSequence']]],
-  ['getobjectcount',['GetObjectCount',['../classcore_1_1DetectionSequence.html#a99a1b693215c386c4716df12f6040100',1,'core::DetectionSequence']]],
+  ['getobject',['GetObject',['../classcore_1_1DetectionSequence.html#a1faac919948e8b10d9112916f3a19bd0',1,'core::DetectionSequence']]],
+  ['getobjectcount',['GetObjectCount',['../classcore_1_1DetectionSequence.html#ad6c77b1224bf5b149b78b60cc62d5564',1,'core::DetectionSequence']]],
   ['getpathobject',['GetPathObject',['../classcore_1_1Tracklet.html#a9758349e8f25c479ffc4b21a90149a81',1,'core::Tracklet']]],
   ['getpathobjectcount',['GetPathObjectCount',['../classcore_1_1Tracklet.html#aee4298a7b734b2b7533d4536006a8aa8',1,'core::Tracklet']]],
   ['getpaths',['GetPaths',['../classalgo_1_1KShortestPaths.html#a6af47b5af40e75786924941b3472ada2',1,'algo::KShortestPaths']]],
@@ -23,6 +27,7 @@ var searchData=
   ['getspatialweight',['GetSpatialWeight',['../classcore_1_1ObjectData2D.html#a688087ccdd999d7e16f5c68cc460209d',1,'core::ObjectData2D']]],
   ['gettemporalweight',['GetTemporalWeight',['../classcore_1_1ObjectData2D.html#a35381efb292d20f2b181558c129269f3',1,'core::ObjectData2D']]],
   ['getvalue',['GetValue',['../classutil_1_1Grid.html#a6658334ae9b505c56b75f6f15434832e',1,'util::Grid::GetValue(int x, int y, int z=0) const'],['../classutil_1_1Grid.html#a6cc6449dfe16dde11035fe2d16a321cd',1,'util::Grid::GetValue(double x, double y, double z=0.0) const']]],
+  ['getvicinity',['GetVicinity',['../classutil_1_1Filter2D.html#af273117c197dc90208167cd873fe0097',1,'util::Filter2D']]],
   ['getwidth',['GetWidth',['../classutil_1_1Grid.html#a8b4dc63bee5859cae315969e039b4cac',1,'util::Grid']]],
   ['getwidthcount',['GetWidthCount',['../classutil_1_1Grid.html#a3f5cdd325b3e3eb30ca5d38bd31d005e',1,'util::Grid']]],
   ['grid',['Grid',['../classutil_1_1Grid.html#a0b2bfd0044eb5633a3f1121e5e70709e',1,'util::Grid::Grid(int width_count, int height_count, double width, double height)'],['../classutil_1_1Grid.html#ad6457dda588e20ccd503e363e96dd57e',1,'util::Grid::Grid(int width_count, int height_count, int depth_count, double width, double height, double depth)']]]

+ 2 - 1
Documentation/html/search/functions_7.js

@@ -6,5 +6,6 @@ var searchData=
   ['inverselerp',['InverseLerp',['../classutil_1_1MyMath.html#a789c283b324494ab50955af1e35178d5',1,'util::MyMath']]],
   ['isdebugenabled',['IsDebugEnabled',['../classutil_1_1Logger.html#a6ee9298451936b98815e20ba7f5d7275',1,'util::Logger']]],
   ['isinfoenabled',['IsInfoEnabled',['../classutil_1_1Logger.html#a194b338af92760d0f7d15b607cad5429',1,'util::Logger']]],
-  ['isvirtual',['IsVirtual',['../classcore_1_1ObjectData.html#a2880d710cfa520e9c0453e2a6729c0e2',1,'core::ObjectData']]]
+  ['isvirtual',['IsVirtual',['../classcore_1_1ObjectData.html#a2880d710cfa520e9c0453e2a6729c0e2',1,'core::ObjectData']]],
+  ['iswithinconstraints',['IsWithinConstraints',['../classcore_1_1ObjectData.html#affa5d25fa3d2c04a571a7e095f62bacb',1,'core::ObjectData::IsWithinConstraints()'],['../classcore_1_1ObjectData2D.html#a63e855919a72462225a8e69140f1389b',1,'core::ObjectData2D::IsWithinConstraints()'],['../classcore_1_1ObjectDataAngular.html#a1ef9168c2384d2038a1dd6e85d0b932f',1,'core::ObjectDataAngular::IsWithinConstraints()'],['../classcore_1_1ObjectDataBox.html#a04f4b780b79491270e4838f7504c1917',1,'core::ObjectDataBox::IsWithinConstraints()']]]
 ];

+ 3 - 3
Documentation/html/search/functions_9.js

@@ -2,8 +2,8 @@ var searchData=
 [
   ['lerp',['Lerp',['../classutil_1_1MyMath.html#ae68f361889a9929767b0c85ad7a010f1',1,'util::MyMath']]],
   ['listfiles',['ListFiles',['../classutil_1_1FileIO.html#a6e290e22083d49619b757bfca96a51fa',1,'util::FileIO']]],
-  ['logdebug',['LogDebug',['../classutil_1_1Logger.html#a9c6a0ebe97ecf3ca24aff8a908a491ee',1,'util::Logger']]],
-  ['logerror',['LogError',['../classutil_1_1Logger.html#a01ad6e5349f51964724f96a598c6d2a8',1,'util::Logger']]],
+  ['logdebug',['LogDebug',['../classutil_1_1Logger.html#a89b67d19ea6650ed313dffc0a599385a',1,'util::Logger']]],
+  ['logerror',['LogError',['../classutil_1_1Logger.html#a5a49cf31bcd5a0ccbfe11667b37f338a',1,'util::Logger']]],
   ['logger',['Logger',['../classutil_1_1Logger.html#a83d4f38e648b39fa61a2b9b3172bda12',1,'util::Logger']]],
-  ['loginfo',['LogInfo',['../classutil_1_1Logger.html#a37504d39ec90bebffc3d02d61d47afea',1,'util::Logger']]]
+  ['loginfo',['LogInfo',['../classutil_1_1Logger.html#a65ac30aaefded61036771197f1364bb8',1,'util::Logger']]]
 ];

+ 2 - 1
Documentation/html/search/functions_a.js

@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['nstage',['NStage',['../classalgo_1_1NStage.html#a9706139a9ccfab10ab6458e06e42d7a5',1,'algo::NStage']]]
+  ['normalize',['Normalize',['../classutil_1_1Filter2D.html#a242138102e2e30f4fe9cccf76f817e09',1,'util::Filter2D']]],
+  ['nstage',['NStage',['../classalgo_1_1NStage.html#a65baad453fa371f18be02fd19e695ea1',1,'algo::NStage']]]
 ];

+ 1 - 1
Documentation/html/search/functions_b.js

@@ -3,6 +3,6 @@ var searchData=
   ['objectdata',['ObjectData',['../classcore_1_1ObjectData.html#a7f47a396a3b9e8c12a1557c8156b8ff9',1,'core::ObjectData::ObjectData()'],['../classcore_1_1ObjectData.html#af4333a52b012841a6ba73b25aeaae71b',1,'core::ObjectData::ObjectData(std::size_t frame_index)']]],
   ['objectdata2d',['ObjectData2D',['../classcore_1_1ObjectData2D.html#adc35e5b8597ea47ad3568259c2e800c6',1,'core::ObjectData2D']]],
   ['objectdataangular',['ObjectDataAngular',['../classcore_1_1ObjectDataAngular.html#a276b02fc7646e3275f1cb81fca7e9a47',1,'core::ObjectDataAngular::ObjectDataAngular(size_t frame_index, const cv::Point2d &amp;position, double angle)'],['../classcore_1_1ObjectDataAngular.html#aae3a8f335e26771d06c8940931d5d654',1,'core::ObjectDataAngular::ObjectDataAngular(size_t frame_index, const cv::Point2d &amp;position, double angle, double temporal_weight, double spatial_weight, double angular_weight)']]],
-  ['objectdatabox',['ObjectDataBox',['../classcore_1_1ObjectDataBox.html#a9a1ee3e1e603c1e55adc58a1a58efad2',1,'core::ObjectDataBox']]],
+  ['objectdatabox',['ObjectDataBox',['../classcore_1_1ObjectDataBox.html#a4e331870ed012d9bc44bc769aee86362',1,'core::ObjectDataBox']]],
   ['operator_3d',['operator=',['../classutil_1_1Logger.html#a4e9e8b8d0e75058265037976d9b256de',1,'util::Logger']]]
 ];

+ 2 - 2
Documentation/html/search/functions_d.js

@@ -2,6 +2,6 @@ var searchData=
 [
   ['radian',['Radian',['../classutil_1_1MyMath.html#aab093b6bf8f989a0d1879ce382e762af',1,'util::MyMath']]],
   ['readcsv',['ReadCSV',['../classutil_1_1FileIO.html#ae31b9e693316483eda89df8463ea0d0a',1,'util::FileIO::ReadCSV(Vector3d &amp;values, const std::string &amp;file_name, char delimiter)'],['../classutil_1_1FileIO.html#a49f014af1e0f03d290f00049e082d9c6',1,'util::FileIO::ReadCSV(Vector2d &amp;values, const std::string &amp;file_name, char delimiter)'],['../classutil_1_1FileIO.html#a642616eb6f07c71bd8dcb1585a532d92',1,'util::FileIO::ReadCSV(ValueMapVector &amp;values, const std::string &amp;file_name, char delimiter)'],['../classutil_1_1FileIO.html#a59b96733490d7b60e4f107da84efb245',1,'util::FileIO::ReadCSV(ValueMapVector &amp;values, const std::string &amp;header, const std::string &amp;file_name, char delimiter)']]],
-  ['readtracks',['ReadTracks',['../classutil_1_1FileIO.html#aa6294f669bdb86510c8b6cefed9ac44b',1,'util::FileIO']]],
-  ['run',['Run',['../classalgo_1_1Berclaz.html#a918f30c2f67eac9d5f9bc07ceeb0880e',1,'algo::Berclaz::Run()'],['../classalgo_1_1KShortestPaths.html#a4ad79f2618bf3fc36b591ff69efd3c76',1,'algo::KShortestPaths::Run()'],['../classalgo_1_1NStage.html#a4e4e881b9c6f65d9e86449c71ab6d778',1,'algo::NStage::Run()']]]
+  ['readtracks',['ReadTracks',['../classutil_1_1FileIO.html#a82be787051876b0e3d3c4f887c3c27ce',1,'util::FileIO']]],
+  ['run',['Run',['../classalgo_1_1Berclaz.html#a00a0d5e52112a8f9dc188757f2a8af11',1,'algo::Berclaz::Run()'],['../classalgo_1_1KShortestPaths.html#a4ad79f2618bf3fc36b591ff69efd3c76',1,'algo::KShortestPaths::Run()'],['../classalgo_1_1NStage.html#a8c25c9c9796db048bb4b55d7a603b00b',1,'algo::NStage::Run()']]]
 ];

+ 1 - 1
Documentation/html/search/functions_e.js

@@ -8,5 +8,5 @@ var searchData=
   ['setspatialweight',['SetSpatialWeight',['../classcore_1_1ObjectData2D.html#ad62bf8b2362e8f3547f8040a144fa346',1,'core::ObjectData2D']]],
   ['settemporalweight',['SetTemporalWeight',['../classcore_1_1ObjectData2D.html#a2850785393bc7a5250427bbda84c1b58',1,'core::ObjectData2D']]],
   ['setvalue',['SetValue',['../classutil_1_1Grid.html#a0e93bd63922e7cbe405176a1ae21877e',1,'util::Grid::SetValue(core::ObjectDataPtr value, int x, int y, int z=0)'],['../classutil_1_1Grid.html#ad7dbf79146d9f5ae1662910b82fd25ea',1,'util::Grid::SetValue(core::ObjectDataPtr value, double x, double y, double z=0)']]],
-  ['split',['split',['../classutil_1_1FileIO.html#aa79e018874aa1da4d0b2cd1e5b7d2e01',1,'util::FileIO']]]
+  ['split',['Split',['../classutil_1_1FileIO.html#a925a74ff26782b8f64106579c9d54b47',1,'util::FileIO']]]
 ];

+ 1 - 0
Documentation/html/search/functions_f.js

@@ -1,4 +1,5 @@
 var searchData=
 [
+  ['tostring',['ToString',['../classcore_1_1ObjectData.html#a1d864ed88355e636c5783c18c9ab0555',1,'core::ObjectData::ToString()'],['../classcore_1_1ObjectData2D.html#a72b2f50ca82ebd9269e1c29cdac6d92a',1,'core::ObjectData2D::ToString()'],['../classcore_1_1ObjectDataAngular.html#a3b419c1d4be886f094b9af94cd839bd4',1,'core::ObjectDataAngular::ToString()'],['../classcore_1_1ObjectDataBox.html#a0af10953ccecb7089a3a2841ec7419b9',1,'core::ObjectDataBox::ToString()']]],
   ['tracklet',['Tracklet',['../classcore_1_1Tracklet.html#aedf59b5a9a068a28bb7570f2a031d4e7',1,'core::Tracklet']]]
 ];

+ 1 - 1
Documentation/html/search/related_0.js

@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['operator_3c_3c',['operator&lt;&lt;',['../classcore_1_1DetectionSequence.html#a557132cfbb170daf47f5a890a0c5bac0',1,'core::DetectionSequence::operator&lt;&lt;()'],['../classcore_1_1ObjectData.html#a56fc9b6184428bf4d80826bbb9fe4c6f',1,'core::ObjectData::operator&lt;&lt;()']]]
+  ['operator_3c_3c',['operator&lt;&lt;',['../classcore_1_1DetectionSequence.html#abc61c6378276573bcb84464d9f0b9e24',1,'core::DetectionSequence::operator&lt;&lt;()'],['../classcore_1_1ObjectData.html#a56fc9b6184428bf4d80826bbb9fe4c6f',1,'core::ObjectData::operator&lt;&lt;()']]]
 ];

+ 1 - 0
Documentation/latex/annotated.tex

@@ -3,6 +3,7 @@ Here are the classes, structs, unions and interfaces with brief descriptions\+:\
 \item\contentsline{section}{\hyperlink{classalgo_1_1Berclaz}{algo\+::\+Berclaz} }{\pageref{classalgo_1_1Berclaz}}{}
 \item\contentsline{section}{\hyperlink{classcore_1_1DetectionSequence}{core\+::\+Detection\+Sequence} }{\pageref{classcore_1_1DetectionSequence}}{}
 \item\contentsline{section}{\hyperlink{classutil_1_1FileIO}{util\+::\+File\+IO} }{\pageref{classutil_1_1FileIO}}{}
+\item\contentsline{section}{\hyperlink{classutil_1_1Filter2D}{util\+::\+Filter2D} }{\pageref{classutil_1_1Filter2D}}{}
 \item\contentsline{section}{\hyperlink{classutil_1_1Grid}{util\+::\+Grid} }{\pageref{classutil_1_1Grid}}{}
 \item\contentsline{section}{\hyperlink{classalgo_1_1KShortestPaths}{algo\+::\+K\+Shortest\+Paths} }{\pageref{classalgo_1_1KShortestPaths}}{}
 \item\contentsline{section}{\hyperlink{classutil_1_1Logger}{util\+::\+Logger} }{\pageref{classutil_1_1Logger}}{}

+ 7 - 4
Documentation/latex/classalgo_1_1Berclaz.tex

@@ -9,7 +9,7 @@
 \item 
 \hyperlink{classalgo_1_1Berclaz_a62a8d6165ca156a4099d6d181f1557af}{Berclaz} (int h\+\_\+res, int v\+\_\+res, int vicinity\+\_\+size)
 \item 
-void \hyperlink{classalgo_1_1Berclaz_a918f30c2f67eac9d5f9bc07ceeb0880e}{Run} (\hyperlink{classcore_1_1DetectionSequence}{core\+::\+Detection\+Sequence} \&sequence, size\+\_\+t batch\+\_\+size, size\+\_\+t max\+\_\+track\+\_\+count, std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks)
+void \hyperlink{classalgo_1_1Berclaz_a00a0d5e52112a8f9dc188757f2a8af11}{Run} (\hyperlink{classcore_1_1DetectionSequence}{core\+::\+Detection\+Sequence} \&sequence, size\+\_\+t batch\+\_\+size, size\+\_\+t max\+\_\+track\+\_\+count, std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks, \hyperlink{classutil_1_1Filter2D}{util\+::\+Filter2D} \&filter)
 \end{DoxyCompactItemize}
 
 
@@ -42,14 +42,15 @@ Instantiate with the given parameters.
 \subsection{Member Function Documentation}
 \index{algo\+::\+Berclaz@{algo\+::\+Berclaz}!Run@{Run}}
 \index{Run@{Run}!algo\+::\+Berclaz@{algo\+::\+Berclaz}}
-\subsubsection[{\texorpdfstring{Run(core\+::\+Detection\+Sequence \&sequence, size\+\_\+t batch\+\_\+size, size\+\_\+t max\+\_\+track\+\_\+count, std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks)}{Run(core::DetectionSequence \&sequence, size\_t batch\_size, size\_t max\_track\_count, std::vector< core::TrackletPtr > \&tracks)}}]{\setlength{\rightskip}{0pt plus 5cm}void algo\+::\+Berclaz\+::\+Run (
+\subsubsection[{\texorpdfstring{Run(core\+::\+Detection\+Sequence \&sequence, size\+\_\+t batch\+\_\+size, size\+\_\+t max\+\_\+track\+\_\+count, std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks, util\+::\+Filter2\+D \&filter)}{Run(core::DetectionSequence \&sequence, size\_t batch\_size, size\_t max\_track\_count, std::vector< core::TrackletPtr > \&tracks, util::Filter2D \&filter)}}]{\setlength{\rightskip}{0pt plus 5cm}void algo\+::\+Berclaz\+::\+Run (
 \begin{DoxyParamCaption}
 \item[{{\bf core\+::\+Detection\+Sequence} \&}]{sequence, }
 \item[{size\+\_\+t}]{batch\+\_\+size, }
 \item[{size\+\_\+t}]{max\+\_\+track\+\_\+count, }
-\item[{std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&}]{tracks}
+\item[{std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&}]{tracks, }
+\item[{{\bf util\+::\+Filter2D} \&}]{filter}
 \end{DoxyParamCaption}
-)}\hypertarget{classalgo_1_1Berclaz_a918f30c2f67eac9d5f9bc07ceeb0880e}{}\label{classalgo_1_1Berclaz_a918f30c2f67eac9d5f9bc07ceeb0880e}
+)}\hypertarget{classalgo_1_1Berclaz_a00a0d5e52112a8f9dc188757f2a8af11}{}\label{classalgo_1_1Berclaz_a00a0d5e52112a8f9dc188757f2a8af11}
 Runs the algorithm on the given sequence. Splits the sequence into batches to allow faster processing.
 
 
@@ -62,6 +63,8 @@ Runs the algorithm on the given sequence. Splits the sequence into batches to al
 \hline
 {\em tracks} & The vector to store the found tracks into \\
 \hline
+{\em filter} & The filter used to convolve the detections in the grid \\
+\hline
 \end{DoxyParams}
 
 

+ 17 - 9
Documentation/latex/classalgo_1_1NStage.tex

@@ -7,9 +7,9 @@
 \subsection*{Public Member Functions}
 \begin{DoxyCompactItemize}
 \item 
-\hyperlink{classalgo_1_1NStage_a9706139a9ccfab10ab6458e06e42d7a5}{N\+Stage} (std\+::vector$<$ size\+\_\+t $>$ max\+\_\+frame\+\_\+skip, std\+::vector$<$ double $>$ penalty\+\_\+value, std\+::vector$<$ size\+\_\+t $>$ max\+\_\+tracklet\+\_\+count)
+\hyperlink{classalgo_1_1NStage_a65baad453fa371f18be02fd19e695ea1}{N\+Stage} (std\+::vector$<$ size\+\_\+t $>$ max\+\_\+frame\+\_\+skip, std\+::vector$<$ double $>$ penalty\+\_\+value, std\+::vector$<$ size\+\_\+t $>$ max\+\_\+tracklet\+\_\+count, double edge\+\_\+weight\+\_\+threshold, std\+::unordered\+\_\+map$<$ std\+::string, double $>$ constraints)
 \item 
-void \hyperlink{classalgo_1_1NStage_a4e4e881b9c6f65d9e86449c71ab6d778}{Run} (const \hyperlink{classcore_1_1DetectionSequence}{core\+::\+Detection\+Sequence} \&sequence, std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks)
+void \hyperlink{classalgo_1_1NStage_a8c25c9c9796db048bb4b55d7a603b00b}{Run} (\hyperlink{classcore_1_1DetectionSequence}{core\+::\+Detection\+Sequence} \&sequence, std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks)
 \end{DoxyCompactItemize}
 
 
@@ -19,14 +19,18 @@ Implementation of the two-\/staged graph-\/based multi-\/object tracker. Extende
 \subsection{Constructor \& Destructor Documentation}
 \index{algo\+::\+N\+Stage@{algo\+::\+N\+Stage}!N\+Stage@{N\+Stage}}
 \index{N\+Stage@{N\+Stage}!algo\+::\+N\+Stage@{algo\+::\+N\+Stage}}
-\subsubsection[{\texorpdfstring{N\+Stage(std\+::vector$<$ size\+\_\+t $>$ max\+\_\+frame\+\_\+skip, std\+::vector$<$ double $>$ penalty\+\_\+value, std\+::vector$<$ size\+\_\+t $>$ max\+\_\+tracklet\+\_\+count)}{NStage(std::vector< size\_t > max\_frame\_skip, std::vector< double > penalty\_value, std::vector< size\_t > max\_tracklet\_count)}}]{\setlength{\rightskip}{0pt plus 5cm}algo\+::\+N\+Stage\+::\+N\+Stage (
+\subsubsection[{\texorpdfstring{N\+Stage(std\+::vector$<$ size\+\_\+t $>$ max\+\_\+frame\+\_\+skip, std\+::vector$<$ double $>$ penalty\+\_\+value, std\+::vector$<$ size\+\_\+t $>$ max\+\_\+tracklet\+\_\+count, double edge\+\_\+weight\+\_\+threshold, std\+::unordered\+\_\+map$<$ std\+::string, double $>$ constraints)}{NStage(std::vector< size\_t > max\_frame\_skip, std::vector< double > penalty\_value, std::vector< size\_t > max\_tracklet\_count, double edge\_weight\_threshold, std::unordered\_map< std::string, double > constraints)}}]{\setlength{\rightskip}{0pt plus 5cm}algo\+::\+N\+Stage\+::\+N\+Stage (
 \begin{DoxyParamCaption}
 \item[{std\+::vector$<$ size\+\_\+t $>$}]{max\+\_\+frame\+\_\+skip, }
 \item[{std\+::vector$<$ double $>$}]{penalty\+\_\+value, }
-\item[{std\+::vector$<$ size\+\_\+t $>$}]{max\+\_\+tracklet\+\_\+count}
+\item[{std\+::vector$<$ size\+\_\+t $>$}]{max\+\_\+tracklet\+\_\+count, }
+\item[{double}]{edge\+\_\+weight\+\_\+threshold, }
+\item[{std\+::unordered\+\_\+map$<$ std\+::string, double $>$}]{constraints}
 \end{DoxyParamCaption}
-)}\hypertarget{classalgo_1_1NStage_a9706139a9ccfab10ab6458e06e42d7a5}{}\label{classalgo_1_1NStage_a9706139a9ccfab10ab6458e06e42d7a5}
-Initializes the algorithm wih the given values. The number of stages is determined by the size of the given vectors. 
+)}\hypertarget{classalgo_1_1NStage_a65baad453fa371f18be02fd19e695ea1}{}\label{classalgo_1_1NStage_a65baad453fa371f18be02fd19e695ea1}
+Initializes the algorithm wih the given values. The number of stages is determined by the size of the given vectors.
+
+
 \begin{DoxyParams}{Parameters}
 {\em max\+\_\+frame\+\_\+skip} & The maximum edge length to link objects \\
 \hline
@@ -34,18 +38,22 @@ Initializes the algorithm wih the given values. The number of stages is determin
 \hline
 {\em max\+\_\+tracklet\+\_\+count} & The maximum number of tracklets to create \\
 \hline
+{\em edge\+\_\+weight\+\_\+threshold} & The maximum weight an edge can have in the initial graph, edges with higher weights are discarded \\
+\hline
+{\em constraints} & The constraints to ensure when creating edges \\
+\hline
 \end{DoxyParams}
 
 
 \subsection{Member Function Documentation}
 \index{algo\+::\+N\+Stage@{algo\+::\+N\+Stage}!Run@{Run}}
 \index{Run@{Run}!algo\+::\+N\+Stage@{algo\+::\+N\+Stage}}
-\subsubsection[{\texorpdfstring{Run(const core\+::\+Detection\+Sequence \&sequence, std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks)}{Run(const core::DetectionSequence \&sequence, std::vector< core::TrackletPtr > \&tracks)}}]{\setlength{\rightskip}{0pt plus 5cm}void algo\+::\+N\+Stage\+::\+Run (
+\subsubsection[{\texorpdfstring{Run(core\+::\+Detection\+Sequence \&sequence, std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks)}{Run(core::DetectionSequence \&sequence, std::vector< core::TrackletPtr > \&tracks)}}]{\setlength{\rightskip}{0pt plus 5cm}void algo\+::\+N\+Stage\+::\+Run (
 \begin{DoxyParamCaption}
-\item[{const {\bf core\+::\+Detection\+Sequence} \&}]{sequence, }
+\item[{{\bf core\+::\+Detection\+Sequence} \&}]{sequence, }
 \item[{std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&}]{tracks}
 \end{DoxyParamCaption}
-)}\hypertarget{classalgo_1_1NStage_a4e4e881b9c6f65d9e86449c71ab6d778}{}\label{classalgo_1_1NStage_a4e4e881b9c6f65d9e86449c71ab6d778}
+)}\hypertarget{classalgo_1_1NStage_a8c25c9c9796db048bb4b55d7a603b00b}{}\label{classalgo_1_1NStage_a8c25c9c9796db048bb4b55d7a603b00b}
 Runs the algorithm on the specified sequence and stores the found tracks into the specified tracks vector.
 
 

+ 48 - 20
Documentation/latex/classcore_1_1DetectionSequence.tex

@@ -7,7 +7,7 @@
 \subsection*{Public Member Functions}
 \begin{DoxyCompactItemize}
 \item 
-\hyperlink{classcore_1_1DetectionSequence_a2cbdc8db34fe87932653826fc8a3c1f7}{Detection\+Sequence} (const std\+::string \&name=\char`\"{}Detection\+Sequence\char`\"{})
+\hyperlink{classcore_1_1DetectionSequence_aed2967a51334c7b3e9053f2ab0f9990e}{Detection\+Sequence} (std\+::string const \&name=\char`\"{}Detection\+Sequence\char`\"{})
 \item 
 void \hyperlink{classcore_1_1DetectionSequence_a3cc0fdf3281f34985f4762086293db72}{Add\+Object} (Object\+Data\+Ptr object\+\_\+data)
 \item 
@@ -15,16 +15,18 @@ void \hyperlink{classcore_1_1DetectionSequence_ab62569a3e51d58457057deba12ef6892
 \item 
 std\+::string \hyperlink{classcore_1_1DetectionSequence_a8a1af3dee89766d06f4a4f74044082ad}{Get\+Name} () const
 \item 
-Object\+Data\+Ptr \hyperlink{classcore_1_1DetectionSequence_aab2b72c6e0a9ee14dba99d07116c1d86}{Get\+Object} (size\+\_\+t frame\+\_\+index, size\+\_\+t object\+\_\+index) const
+Object\+Data\+Ptr \hyperlink{classcore_1_1DetectionSequence_a1faac919948e8b10d9112916f3a19bd0}{Get\+Object} (size\+\_\+t frame\+\_\+index, size\+\_\+t object\+\_\+index)
 \item 
 size\+\_\+t \hyperlink{classcore_1_1DetectionSequence_a2417e4f2652a39245d6f2faa0ce19571}{Get\+Frame\+Count} () const
 \item 
-size\+\_\+t \hyperlink{classcore_1_1DetectionSequence_a99a1b693215c386c4716df12f6040100}{Get\+Object\+Count} (size\+\_\+t frame\+\_\+index) const
+size\+\_\+t \hyperlink{classcore_1_1DetectionSequence_a2c469219ac4f55aa9deacb5f63195de1}{Get\+Frame\+Offset} () const
+\item 
+size\+\_\+t \hyperlink{classcore_1_1DetectionSequence_ad6c77b1224bf5b149b78b60cc62d5564}{Get\+Object\+Count} (size\+\_\+t frame\+\_\+index)
 \end{DoxyCompactItemize}
 \subsection*{Friends}
 \begin{DoxyCompactItemize}
 \item 
-std\+::ostream \& \hyperlink{classcore_1_1DetectionSequence_a557132cfbb170daf47f5a890a0c5bac0}{operator$<$$<$} (std\+::ostream \&os, const \hyperlink{classcore_1_1DetectionSequence}{Detection\+Sequence} \&obj)
+std\+::ostream \& \hyperlink{classcore_1_1DetectionSequence_abc61c6378276573bcb84464d9f0b9e24}{operator$<$$<$} (std\+::ostream \&os, \hyperlink{classcore_1_1DetectionSequence}{Detection\+Sequence} const \&obj)
 \end{DoxyCompactItemize}
 
 
@@ -34,12 +36,14 @@ Class for storing a full sequence of frame, each with multiple detected objects.
 \subsection{Constructor \& Destructor Documentation}
 \index{core\+::\+Detection\+Sequence@{core\+::\+Detection\+Sequence}!Detection\+Sequence@{Detection\+Sequence}}
 \index{Detection\+Sequence@{Detection\+Sequence}!core\+::\+Detection\+Sequence@{core\+::\+Detection\+Sequence}}
-\subsubsection[{\texorpdfstring{Detection\+Sequence(const std\+::string \&name=""Detection\+Sequence"")}{DetectionSequence(const std::string \&name="DetectionSequence")}}]{\setlength{\rightskip}{0pt plus 5cm}core\+::\+Detection\+Sequence\+::\+Detection\+Sequence (
+\subsubsection[{\texorpdfstring{Detection\+Sequence(std\+::string const \&name=""Detection\+Sequence"")}{DetectionSequence(std::string const \&name="DetectionSequence")}}]{\setlength{\rightskip}{0pt plus 5cm}core\+::\+Detection\+Sequence\+::\+Detection\+Sequence (
 \begin{DoxyParamCaption}
-\item[{const std\+::string \&}]{name = {\ttfamily \char`\"{}DetectionSequence\char`\"{}}}
+\item[{std\+::string const \&}]{name = {\ttfamily \char`\"{}DetectionSequence\char`\"{}}}
 \end{DoxyParamCaption}
-)}\hypertarget{classcore_1_1DetectionSequence_a2cbdc8db34fe87932653826fc8a3c1f7}{}\label{classcore_1_1DetectionSequence_a2cbdc8db34fe87932653826fc8a3c1f7}
-Creates a detection sequence with the given name. 
+)}\hypertarget{classcore_1_1DetectionSequence_aed2967a51334c7b3e9053f2ab0f9990e}{}\label{classcore_1_1DetectionSequence_aed2967a51334c7b3e9053f2ab0f9990e}
+Creates a detection sequence with the given name.
+
+
 \begin{DoxyParams}{Parameters}
 {\em name} & The name of this sequence \\
 \hline
@@ -54,7 +58,9 @@ Creates a detection sequence with the given name.
 \item[{Object\+Data\+Ptr}]{object\+\_\+data}
 \end{DoxyParamCaption}
 )}\hypertarget{classcore_1_1DetectionSequence_a3cc0fdf3281f34985f4762086293db72}{}\label{classcore_1_1DetectionSequence_a3cc0fdf3281f34985f4762086293db72}
-Adds a new object, creates a new frame vector if the given objects frame index is greater than the current frame vector size. 
+Adds a new object, creates a new frame vector if the given objects frame index is greater than the current frame vector size.
+
+
 \begin{DoxyParams}{Parameters}
 {\em object\+\_\+data} & The object to add \\
 \hline
@@ -73,9 +79,23 @@ Removes all objects. \index{core\+::\+Detection\+Sequence@{core\+::\+Detection\+
 {}
 \end{DoxyParamCaption}
 ) const}\hypertarget{classcore_1_1DetectionSequence_a2417e4f2652a39245d6f2faa0ce19571}{}\label{classcore_1_1DetectionSequence_a2417e4f2652a39245d6f2faa0ce19571}
-Gets the frame count. \begin{DoxyReturn}{Returns}
+Gets the frame count.
+
+\begin{DoxyReturn}{Returns}
 The frame count 
 \end{DoxyReturn}
+\index{core\+::\+Detection\+Sequence@{core\+::\+Detection\+Sequence}!Get\+Frame\+Offset@{Get\+Frame\+Offset}}
+\index{Get\+Frame\+Offset@{Get\+Frame\+Offset}!core\+::\+Detection\+Sequence@{core\+::\+Detection\+Sequence}}
+\subsubsection[{\texorpdfstring{Get\+Frame\+Offset() const}{GetFrameOffset() const}}]{\setlength{\rightskip}{0pt plus 5cm}size\+\_\+t core\+::\+Detection\+Sequence\+::\+Get\+Frame\+Offset (
+\begin{DoxyParamCaption}
+{}
+\end{DoxyParamCaption}
+) const}\hypertarget{classcore_1_1DetectionSequence_a2c469219ac4f55aa9deacb5f63195de1}{}\label{classcore_1_1DetectionSequence_a2c469219ac4f55aa9deacb5f63195de1}
+Gets the frame offset.
+
+\begin{DoxyReturn}{Returns}
+The Frame offset 
+\end{DoxyReturn}
 \index{core\+::\+Detection\+Sequence@{core\+::\+Detection\+Sequence}!Get\+Name@{Get\+Name}}
 \index{Get\+Name@{Get\+Name}!core\+::\+Detection\+Sequence@{core\+::\+Detection\+Sequence}}
 \subsubsection[{\texorpdfstring{Get\+Name() const}{GetName() const}}]{\setlength{\rightskip}{0pt plus 5cm}std\+::string core\+::\+Detection\+Sequence\+::\+Get\+Name (
@@ -83,18 +103,22 @@ The frame count
 {}
 \end{DoxyParamCaption}
 ) const}\hypertarget{classcore_1_1DetectionSequence_a8a1af3dee89766d06f4a4f74044082ad}{}\label{classcore_1_1DetectionSequence_a8a1af3dee89766d06f4a4f74044082ad}
-Gets the name of this sequence. \begin{DoxyReturn}{Returns}
+Gets the name of this sequence.
+
+\begin{DoxyReturn}{Returns}
 The name 
 \end{DoxyReturn}
 \index{core\+::\+Detection\+Sequence@{core\+::\+Detection\+Sequence}!Get\+Object@{Get\+Object}}
 \index{Get\+Object@{Get\+Object}!core\+::\+Detection\+Sequence@{core\+::\+Detection\+Sequence}}
-\subsubsection[{\texorpdfstring{Get\+Object(size\+\_\+t frame\+\_\+index, size\+\_\+t object\+\_\+index) const}{GetObject(size\_t frame\_index, size\_t object\_index) const}}]{\setlength{\rightskip}{0pt plus 5cm}Object\+Data\+Ptr core\+::\+Detection\+Sequence\+::\+Get\+Object (
+\subsubsection[{\texorpdfstring{Get\+Object(size\+\_\+t frame\+\_\+index, size\+\_\+t object\+\_\+index)}{GetObject(size\_t frame\_index, size\_t object\_index)}}]{\setlength{\rightskip}{0pt plus 5cm}Object\+Data\+Ptr core\+::\+Detection\+Sequence\+::\+Get\+Object (
 \begin{DoxyParamCaption}
 \item[{size\+\_\+t}]{frame\+\_\+index, }
 \item[{size\+\_\+t}]{object\+\_\+index}
 \end{DoxyParamCaption}
-) const}\hypertarget{classcore_1_1DetectionSequence_aab2b72c6e0a9ee14dba99d07116c1d86}{}\label{classcore_1_1DetectionSequence_aab2b72c6e0a9ee14dba99d07116c1d86}
-Gets a pointer to the object in the given frame with the given index. 
+)}\hypertarget{classcore_1_1DetectionSequence_a1faac919948e8b10d9112916f3a19bd0}{}\label{classcore_1_1DetectionSequence_a1faac919948e8b10d9112916f3a19bd0}
+Gets a pointer to the object in the given frame with the given index.
+
+
 \begin{DoxyParams}{Parameters}
 {\em frame\+\_\+index} & The frame to get the object from \\
 \hline
@@ -106,12 +130,14 @@ A pointer to the stored object data
 \end{DoxyReturn}
 \index{core\+::\+Detection\+Sequence@{core\+::\+Detection\+Sequence}!Get\+Object\+Count@{Get\+Object\+Count}}
 \index{Get\+Object\+Count@{Get\+Object\+Count}!core\+::\+Detection\+Sequence@{core\+::\+Detection\+Sequence}}
-\subsubsection[{\texorpdfstring{Get\+Object\+Count(size\+\_\+t frame\+\_\+index) const}{GetObjectCount(size\_t frame\_index) const}}]{\setlength{\rightskip}{0pt plus 5cm}size\+\_\+t core\+::\+Detection\+Sequence\+::\+Get\+Object\+Count (
+\subsubsection[{\texorpdfstring{Get\+Object\+Count(size\+\_\+t frame\+\_\+index)}{GetObjectCount(size\_t frame\_index)}}]{\setlength{\rightskip}{0pt plus 5cm}size\+\_\+t core\+::\+Detection\+Sequence\+::\+Get\+Object\+Count (
 \begin{DoxyParamCaption}
 \item[{size\+\_\+t}]{frame\+\_\+index}
 \end{DoxyParamCaption}
-) const}\hypertarget{classcore_1_1DetectionSequence_a99a1b693215c386c4716df12f6040100}{}\label{classcore_1_1DetectionSequence_a99a1b693215c386c4716df12f6040100}
-Gets the object count in the given frame. 
+)}\hypertarget{classcore_1_1DetectionSequence_ad6c77b1224bf5b149b78b60cc62d5564}{}\label{classcore_1_1DetectionSequence_ad6c77b1224bf5b149b78b60cc62d5564}
+Gets the object count in the given frame.
+
+
 \begin{DoxyParams}{Parameters}
 {\em frame\+\_\+index} & The frame to get the object count of \\
 \hline
@@ -127,10 +153,12 @@ The number of objects in this frame
 \subsubsection[{\texorpdfstring{operator$<$$<$}{operator<<}}]{\setlength{\rightskip}{0pt plus 5cm}std\+::ostream\& operator$<$$<$ (
 \begin{DoxyParamCaption}
 \item[{std\+::ostream \&}]{os, }
-\item[{const {\bf Detection\+Sequence} \&}]{obj}
+\item[{{\bf Detection\+Sequence} const \&}]{obj}
 \end{DoxyParamCaption}
-)\hspace{0.3cm}{\ttfamily [friend]}}\hypertarget{classcore_1_1DetectionSequence_a557132cfbb170daf47f5a890a0c5bac0}{}\label{classcore_1_1DetectionSequence_a557132cfbb170daf47f5a890a0c5bac0}
-Overrides the $<$$<$ operator for easy output. 
+)\hspace{0.3cm}{\ttfamily [friend]}}\hypertarget{classcore_1_1DetectionSequence_abc61c6378276573bcb84464d9f0b9e24}{}\label{classcore_1_1DetectionSequence_abc61c6378276573bcb84464d9f0b9e24}
+Overrides the $<$$<$ operator for easy output.
+
+
 \begin{DoxyParams}{Parameters}
 {\em os} & The stream to write to \\
 \hline

BIN
Documentation/latex/classcore_1_1ObjectData.pdf


+ 46 - 0
Documentation/latex/classcore_1_1ObjectData.tex

@@ -29,9 +29,13 @@ bool \hyperlink{classcore_1_1ObjectData_a2880d710cfa520e9c0453e2a6729c0e2}{Is\+V
 \item 
 virtual double \hyperlink{classcore_1_1ObjectData_afbf7a1e87235f1b204d4d2eb8a37a9a6}{Compare\+To} (Object\+Data\+Ptr obj) const
 \item 
+virtual bool \hyperlink{classcore_1_1ObjectData_affa5d25fa3d2c04a571a7e095f62bacb}{Is\+Within\+Constraints} (Object\+Data\+Ptr obj, std\+::unordered\+\_\+map$<$ std\+::string, double $>$ \&constraints) const
+\item 
 virtual Object\+Data\+Ptr \hyperlink{classcore_1_1ObjectData_ad681915317decab76c384a635fc8444e}{Interpolate} (Object\+Data\+Ptr obj, double fraction) const
 \item 
 virtual void \hyperlink{classcore_1_1ObjectData_aae2c4fceddc529570dbe8909309f9961}{Visualize} (cv\+::\+Mat \&image, cv\+::\+Scalar \&color) const
+\item 
+virtual std\+::string \hyperlink{classcore_1_1ObjectData_a1d864ed88355e636c5783c18c9ab0555}{To\+String} (char delimiter) const
 \end{DoxyCompactItemize}
 \subsection*{Friends}
 \begin{DoxyCompactItemize}
@@ -137,6 +141,27 @@ Reimplemented in \hyperlink{classcore_1_1Tracklet_a5fb5e6ab9df668c3477e8b52f115b
 Is this node considered a virtual node \begin{DoxyReturn}{Returns}
 True, if this node is virtual 
 \end{DoxyReturn}
+\index{core\+::\+Object\+Data@{core\+::\+Object\+Data}!Is\+Within\+Constraints@{Is\+Within\+Constraints}}
+\index{Is\+Within\+Constraints@{Is\+Within\+Constraints}!core\+::\+Object\+Data@{core\+::\+Object\+Data}}
+\subsubsection[{\texorpdfstring{Is\+Within\+Constraints(\+Object\+Data\+Ptr obj, std\+::unordered\+\_\+map$<$ std\+::string, double $>$ \&constraints) const}{IsWithinConstraints(ObjectDataPtr obj, std::unordered\_map< std::string, double > \&constraints) const}}]{\setlength{\rightskip}{0pt plus 5cm}bool core\+::\+Object\+Data\+::\+Is\+Within\+Constraints (
+\begin{DoxyParamCaption}
+\item[{Object\+Data\+Ptr}]{obj, }
+\item[{std\+::unordered\+\_\+map$<$ std\+::string, double $>$ \&}]{constraints}
+\end{DoxyParamCaption}
+) const\hspace{0.3cm}{\ttfamily [virtual]}}\hypertarget{classcore_1_1ObjectData_affa5d25fa3d2c04a571a7e095f62bacb}{}\label{classcore_1_1ObjectData_affa5d25fa3d2c04a571a7e095f62bacb}
+Checks if the difference between this object and the specified object is within the constraints specified. The difference is calculated for each constraint separately.
+
+
+\begin{DoxyParams}{Parameters}
+{\em obj} & The object to get the difference to \\
+\hline
+{\em constraints} & The constraints to assure \\
+\hline
+\end{DoxyParams}
+
+
+Reimplemented in \hyperlink{classcore_1_1ObjectData2D_a63e855919a72462225a8e69140f1389b}{core\+::\+Object\+Data2D}, \hyperlink{classcore_1_1ObjectDataAngular_a1ef9168c2384d2038a1dd6e85d0b932f}{core\+::\+Object\+Data\+Angular}, and \hyperlink{classcore_1_1ObjectDataBox_a04f4b780b79491270e4838f7504c1917}{core\+::\+Object\+Data\+Box}.
+
 \index{core\+::\+Object\+Data@{core\+::\+Object\+Data}!Set\+Detection\+Score@{Set\+Detection\+Score}}
 \index{Set\+Detection\+Score@{Set\+Detection\+Score}!core\+::\+Object\+Data@{core\+::\+Object\+Data}}
 \subsubsection[{\texorpdfstring{Set\+Detection\+Score(double score)}{SetDetectionScore(double score)}}]{\setlength{\rightskip}{0pt plus 5cm}void core\+::\+Object\+Data\+::\+Set\+Detection\+Score (
@@ -161,6 +186,27 @@ Sets the frame index
 {\em index} & The new frame index \\
 \hline
 \end{DoxyParams}
+\index{core\+::\+Object\+Data@{core\+::\+Object\+Data}!To\+String@{To\+String}}
+\index{To\+String@{To\+String}!core\+::\+Object\+Data@{core\+::\+Object\+Data}}
+\subsubsection[{\texorpdfstring{To\+String(char delimiter) const}{ToString(char delimiter) const}}]{\setlength{\rightskip}{0pt plus 5cm}std\+::string core\+::\+Object\+Data\+::\+To\+String (
+\begin{DoxyParamCaption}
+\item[{char}]{delimiter}
+\end{DoxyParamCaption}
+) const\hspace{0.3cm}{\ttfamily [virtual]}}\hypertarget{classcore_1_1ObjectData_a1d864ed88355e636c5783c18c9ab0555}{}\label{classcore_1_1ObjectData_a1d864ed88355e636c5783c18c9ab0555}
+Returns a string representing the values of this object data.
+
+
+\begin{DoxyParams}{Parameters}
+{\em delimiter} & The delimiter used to separate values \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The string containing the values 
+\end{DoxyReturn}
+
+
+Reimplemented in \hyperlink{classcore_1_1ObjectData2D_a72b2f50ca82ebd9269e1c29cdac6d92a}{core\+::\+Object\+Data2D}, \hyperlink{classcore_1_1ObjectDataAngular_a3b419c1d4be886f094b9af94cd839bd4}{core\+::\+Object\+Data\+Angular}, and \hyperlink{classcore_1_1ObjectDataBox_a0af10953ccecb7089a3a2841ec7419b9}{core\+::\+Object\+Data\+Box}.
+
 \index{core\+::\+Object\+Data@{core\+::\+Object\+Data}!Visualize@{Visualize}}
 \index{Visualize@{Visualize}!core\+::\+Object\+Data@{core\+::\+Object\+Data}}
 \subsubsection[{\texorpdfstring{Visualize(cv\+::\+Mat \&image, cv\+::\+Scalar \&color) const}{Visualize(cv::Mat \&image, cv::Scalar \&color) const}}]{\setlength{\rightskip}{0pt plus 5cm}void core\+::\+Object\+Data\+::\+Visualize (

BIN
Documentation/latex/classcore_1_1ObjectData2D.pdf


+ 54 - 0
Documentation/latex/classcore_1_1ObjectData2D.tex

@@ -27,9 +27,13 @@ double \hyperlink{classcore_1_1ObjectData2D_a688087ccdd999d7e16f5c68cc460209d}{G
 \item 
 virtual double \hyperlink{classcore_1_1ObjectData2D_a68d56bd5f26a41830a87ae32eabf9126}{Compare\+To} (Object\+Data\+Ptr obj) const override
 \item 
+virtual bool \hyperlink{classcore_1_1ObjectData2D_a63e855919a72462225a8e69140f1389b}{Is\+Within\+Constraints} (Object\+Data\+Ptr obj, std\+::unordered\+\_\+map$<$ std\+::string, double $>$ \&constraints) const override
+\item 
 virtual Object\+Data\+Ptr \hyperlink{classcore_1_1ObjectData2D_a59b974e09f74f0a2640e3152893fe79f}{Interpolate} (Object\+Data\+Ptr obj, double fraction) const override
 \item 
 virtual void \hyperlink{classcore_1_1ObjectData2D_aff4e8539559f4ce50a7f43b733d6c512}{Visualize} (cv\+::\+Mat \&image, cv\+::\+Scalar \&color) const override
+\item 
+virtual std\+::string \hyperlink{classcore_1_1ObjectData2D_a72b2f50ca82ebd9269e1c29cdac6d92a}{To\+String} (char delimiter) const override
 \end{DoxyCompactItemize}
 
 
@@ -134,6 +138,31 @@ Reimplemented from \hyperlink{classcore_1_1ObjectData_ad681915317decab76c384a635
 
 Reimplemented in \hyperlink{classcore_1_1ObjectDataAngular_a42962dd1f994b2577133450e755d586e}{core\+::\+Object\+Data\+Angular}, and \hyperlink{classcore_1_1ObjectDataBox_ab2816bceb771dd7442e6c29193dfe267}{core\+::\+Object\+Data\+Box}.
 
+\index{core\+::\+Object\+Data2D@{core\+::\+Object\+Data2D}!Is\+Within\+Constraints@{Is\+Within\+Constraints}}
+\index{Is\+Within\+Constraints@{Is\+Within\+Constraints}!core\+::\+Object\+Data2D@{core\+::\+Object\+Data2D}}
+\subsubsection[{\texorpdfstring{Is\+Within\+Constraints(\+Object\+Data\+Ptr obj, std\+::unordered\+\_\+map$<$ std\+::string, double $>$ \&constraints) const override}{IsWithinConstraints(ObjectDataPtr obj, std::unordered\_map< std::string, double > \&constraints) const override}}]{\setlength{\rightskip}{0pt plus 5cm}bool core\+::\+Object\+Data2\+D\+::\+Is\+Within\+Constraints (
+\begin{DoxyParamCaption}
+\item[{Object\+Data\+Ptr}]{obj, }
+\item[{std\+::unordered\+\_\+map$<$ std\+::string, double $>$ \&}]{constraints}
+\end{DoxyParamCaption}
+) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}\hypertarget{classcore_1_1ObjectData2D_a63e855919a72462225a8e69140f1389b}{}\label{classcore_1_1ObjectData2D_a63e855919a72462225a8e69140f1389b}
+Checks if the difference between this object and the specified object is within the constraints specified. The difference is calculated for each constraint separately.
+
+
+\begin{DoxyParams}{Parameters}
+{\em obj} & The object to get the difference to \\
+\hline
+{\em constraints} & The constraints to assure \\
+\hline
+\end{DoxyParams}
+
+
+Reimplemented from \hyperlink{classcore_1_1ObjectData_affa5d25fa3d2c04a571a7e095f62bacb}{core\+::\+Object\+Data}.
+
+
+
+Reimplemented in \hyperlink{classcore_1_1ObjectDataAngular_a1ef9168c2384d2038a1dd6e85d0b932f}{core\+::\+Object\+Data\+Angular}, and \hyperlink{classcore_1_1ObjectDataBox_a04f4b780b79491270e4838f7504c1917}{core\+::\+Object\+Data\+Box}.
+
 \index{core\+::\+Object\+Data2D@{core\+::\+Object\+Data2D}!Set\+Spatial\+Weight@{Set\+Spatial\+Weight}}
 \index{Set\+Spatial\+Weight@{Set\+Spatial\+Weight}!core\+::\+Object\+Data2D@{core\+::\+Object\+Data2D}}
 \subsubsection[{\texorpdfstring{Set\+Spatial\+Weight(double weight)}{SetSpatialWeight(double weight)}}]{\setlength{\rightskip}{0pt plus 5cm}void core\+::\+Object\+Data2\+D\+::\+Set\+Spatial\+Weight (
@@ -158,6 +187,31 @@ Sets the temporal weight.
 {\em weight} & The temporal weight \\
 \hline
 \end{DoxyParams}
+\index{core\+::\+Object\+Data2D@{core\+::\+Object\+Data2D}!To\+String@{To\+String}}
+\index{To\+String@{To\+String}!core\+::\+Object\+Data2D@{core\+::\+Object\+Data2D}}
+\subsubsection[{\texorpdfstring{To\+String(char delimiter) const override}{ToString(char delimiter) const override}}]{\setlength{\rightskip}{0pt plus 5cm}std\+::string core\+::\+Object\+Data2\+D\+::\+To\+String (
+\begin{DoxyParamCaption}
+\item[{char}]{delimiter}
+\end{DoxyParamCaption}
+) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}\hypertarget{classcore_1_1ObjectData2D_a72b2f50ca82ebd9269e1c29cdac6d92a}{}\label{classcore_1_1ObjectData2D_a72b2f50ca82ebd9269e1c29cdac6d92a}
+Returns a string representing the values of this object data.
+
+
+\begin{DoxyParams}{Parameters}
+{\em delimiter} & The delimiter used to separate values \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The string containing the values 
+\end{DoxyReturn}
+
+
+Reimplemented from \hyperlink{classcore_1_1ObjectData_a1d864ed88355e636c5783c18c9ab0555}{core\+::\+Object\+Data}.
+
+
+
+Reimplemented in \hyperlink{classcore_1_1ObjectDataAngular_a3b419c1d4be886f094b9af94cd839bd4}{core\+::\+Object\+Data\+Angular}, and \hyperlink{classcore_1_1ObjectDataBox_a0af10953ccecb7089a3a2841ec7419b9}{core\+::\+Object\+Data\+Box}.
+
 \index{core\+::\+Object\+Data2D@{core\+::\+Object\+Data2D}!Visualize@{Visualize}}
 \index{Visualize@{Visualize}!core\+::\+Object\+Data2D@{core\+::\+Object\+Data2D}}
 \subsubsection[{\texorpdfstring{Visualize(cv\+::\+Mat \&image, cv\+::\+Scalar \&color) const override}{Visualize(cv::Mat \&image, cv::Scalar \&color) const override}}]{\setlength{\rightskip}{0pt plus 5cm}void core\+::\+Object\+Data2\+D\+::\+Visualize (

BIN
Documentation/latex/classcore_1_1ObjectDataAngular.pdf


+ 46 - 0
Documentation/latex/classcore_1_1ObjectDataAngular.tex

@@ -25,9 +25,13 @@ double \hyperlink{classcore_1_1ObjectDataAngular_ae1c5db7b9fc06e648450d9388c93a1
 \item 
 virtual double \hyperlink{classcore_1_1ObjectDataAngular_a2932240c6c082b76f2c04723cdf3e4f9}{Compare\+To} (Object\+Data\+Ptr obj) const override
 \item 
+virtual bool \hyperlink{classcore_1_1ObjectDataAngular_a1ef9168c2384d2038a1dd6e85d0b932f}{Is\+Within\+Constraints} (Object\+Data\+Ptr obj, std\+::unordered\+\_\+map$<$ std\+::string, double $>$ \&constraints) const override
+\item 
 virtual Object\+Data\+Ptr \hyperlink{classcore_1_1ObjectDataAngular_a42962dd1f994b2577133450e755d586e}{Interpolate} (Object\+Data\+Ptr obj, double fraction) const override
 \item 
 virtual void \hyperlink{classcore_1_1ObjectDataAngular_acb4265f6de511238460df118148bc85c}{Visualize} (cv\+::\+Mat \&image, cv\+::\+Scalar \&color) const override
+\item 
+virtual std\+::string \hyperlink{classcore_1_1ObjectDataAngular_a3b419c1d4be886f094b9af94cd839bd4}{To\+String} (char delimiter) const override
 \end{DoxyCompactItemize}
 
 
@@ -144,6 +148,27 @@ The interpolated object
 
 Reimplemented from \hyperlink{classcore_1_1ObjectData2D_a59b974e09f74f0a2640e3152893fe79f}{core\+::\+Object\+Data2D}.
 
+\index{core\+::\+Object\+Data\+Angular@{core\+::\+Object\+Data\+Angular}!Is\+Within\+Constraints@{Is\+Within\+Constraints}}
+\index{Is\+Within\+Constraints@{Is\+Within\+Constraints}!core\+::\+Object\+Data\+Angular@{core\+::\+Object\+Data\+Angular}}
+\subsubsection[{\texorpdfstring{Is\+Within\+Constraints(\+Object\+Data\+Ptr obj, std\+::unordered\+\_\+map$<$ std\+::string, double $>$ \&constraints) const override}{IsWithinConstraints(ObjectDataPtr obj, std::unordered\_map< std::string, double > \&constraints) const override}}]{\setlength{\rightskip}{0pt plus 5cm}bool core\+::\+Object\+Data\+Angular\+::\+Is\+Within\+Constraints (
+\begin{DoxyParamCaption}
+\item[{Object\+Data\+Ptr}]{obj, }
+\item[{std\+::unordered\+\_\+map$<$ std\+::string, double $>$ \&}]{constraints}
+\end{DoxyParamCaption}
+) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}\hypertarget{classcore_1_1ObjectDataAngular_a1ef9168c2384d2038a1dd6e85d0b932f}{}\label{classcore_1_1ObjectDataAngular_a1ef9168c2384d2038a1dd6e85d0b932f}
+Checks if the difference between this object and the specified object is within the constraints specified. The difference is calculated for each constraint separately.
+
+
+\begin{DoxyParams}{Parameters}
+{\em obj} & The object to get the difference to \\
+\hline
+{\em constraints} & The constraints to assure \\
+\hline
+\end{DoxyParams}
+
+
+Reimplemented from \hyperlink{classcore_1_1ObjectData2D_a63e855919a72462225a8e69140f1389b}{core\+::\+Object\+Data2D}.
+
 \index{core\+::\+Object\+Data\+Angular@{core\+::\+Object\+Data\+Angular}!Set\+Angular\+Weight@{Set\+Angular\+Weight}}
 \index{Set\+Angular\+Weight@{Set\+Angular\+Weight}!core\+::\+Object\+Data\+Angular@{core\+::\+Object\+Data\+Angular}}
 \subsubsection[{\texorpdfstring{Set\+Angular\+Weight(double weight)}{SetAngularWeight(double weight)}}]{\setlength{\rightskip}{0pt plus 5cm}void core\+::\+Object\+Data\+Angular\+::\+Set\+Angular\+Weight (
@@ -156,6 +181,27 @@ Sets the angular weight.
 {\em weight} & The angular weight \\
 \hline
 \end{DoxyParams}
+\index{core\+::\+Object\+Data\+Angular@{core\+::\+Object\+Data\+Angular}!To\+String@{To\+String}}
+\index{To\+String@{To\+String}!core\+::\+Object\+Data\+Angular@{core\+::\+Object\+Data\+Angular}}
+\subsubsection[{\texorpdfstring{To\+String(char delimiter) const override}{ToString(char delimiter) const override}}]{\setlength{\rightskip}{0pt plus 5cm}std\+::string core\+::\+Object\+Data\+Angular\+::\+To\+String (
+\begin{DoxyParamCaption}
+\item[{char}]{delimiter}
+\end{DoxyParamCaption}
+) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}\hypertarget{classcore_1_1ObjectDataAngular_a3b419c1d4be886f094b9af94cd839bd4}{}\label{classcore_1_1ObjectDataAngular_a3b419c1d4be886f094b9af94cd839bd4}
+Returns a string representing the values of this object data.
+
+
+\begin{DoxyParams}{Parameters}
+{\em delimiter} & The delimiter used to separate values \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The string containing the values 
+\end{DoxyReturn}
+
+
+Reimplemented from \hyperlink{classcore_1_1ObjectData2D_a72b2f50ca82ebd9269e1c29cdac6d92a}{core\+::\+Object\+Data2D}.
+
 \index{core\+::\+Object\+Data\+Angular@{core\+::\+Object\+Data\+Angular}!Visualize@{Visualize}}
 \index{Visualize@{Visualize}!core\+::\+Object\+Data\+Angular@{core\+::\+Object\+Data\+Angular}}
 \subsubsection[{\texorpdfstring{Visualize(cv\+::\+Mat \&image, cv\+::\+Scalar \&color) const override}{Visualize(cv::Mat \&image, cv::Scalar \&color) const override}}]{\setlength{\rightskip}{0pt plus 5cm}void core\+::\+Object\+Data\+Angular\+::\+Visualize (

BIN
Documentation/latex/classcore_1_1ObjectDataBox.pdf


+ 51 - 5
Documentation/latex/classcore_1_1ObjectDataBox.tex

@@ -13,15 +13,19 @@ Inheritance diagram for core\+:\+:Object\+Data\+Box\+:\begin{figure}[H]
 \subsection*{Public Member Functions}
 \begin{DoxyCompactItemize}
 \item 
-\hyperlink{classcore_1_1ObjectDataBox_a9a1ee3e1e603c1e55adc58a1a58efad2}{Object\+Data\+Box} (size\+\_\+t frame\+\_\+index, cv\+::\+Point2d anchor, cv\+::\+Point2d size)
+\hyperlink{classcore_1_1ObjectDataBox_a4e331870ed012d9bc44bc769aee86362}{Object\+Data\+Box} (size\+\_\+t frame\+\_\+index, cv\+::\+Point2d center, cv\+::\+Point2d size)
 \item 
 cv\+::\+Point2d \hyperlink{classcore_1_1ObjectDataBox_a76e9f48dfb685d16de868a129c1f3918}{Get\+Size} () const
 \item 
 virtual double \hyperlink{classcore_1_1ObjectDataBox_a163c57338778f957ce514611c509558a}{Compare\+To} (Object\+Data\+Ptr obj) const override
 \item 
+virtual bool \hyperlink{classcore_1_1ObjectDataBox_a04f4b780b79491270e4838f7504c1917}{Is\+Within\+Constraints} (Object\+Data\+Ptr obj, std\+::unordered\+\_\+map$<$ std\+::string, double $>$ \&constraints) const override
+\item 
 virtual Object\+Data\+Ptr \hyperlink{classcore_1_1ObjectDataBox_ab2816bceb771dd7442e6c29193dfe267}{Interpolate} (Object\+Data\+Ptr obj, double fraction) const override
 \item 
 virtual void \hyperlink{classcore_1_1ObjectDataBox_ab29bacb20c258ba572d0372469ec5523}{Visualize} (cv\+::\+Mat \&image, cv\+::\+Scalar \&color) const override
+\item 
+virtual std\+::string \hyperlink{classcore_1_1ObjectDataBox_a0af10953ccecb7089a3a2841ec7419b9}{To\+String} (char delimiter) const override
 \end{DoxyCompactItemize}
 
 
@@ -31,20 +35,20 @@ Class for storing an object detection with an bounding box.
 \subsection{Constructor \& Destructor Documentation}
 \index{core\+::\+Object\+Data\+Box@{core\+::\+Object\+Data\+Box}!Object\+Data\+Box@{Object\+Data\+Box}}
 \index{Object\+Data\+Box@{Object\+Data\+Box}!core\+::\+Object\+Data\+Box@{core\+::\+Object\+Data\+Box}}
-\subsubsection[{\texorpdfstring{Object\+Data\+Box(size\+\_\+t frame\+\_\+index, cv\+::\+Point2d anchor, cv\+::\+Point2d size)}{ObjectDataBox(size\_t frame\_index, cv::Point2d anchor, cv::Point2d size)}}]{\setlength{\rightskip}{0pt plus 5cm}core\+::\+Object\+Data\+Box\+::\+Object\+Data\+Box (
+\subsubsection[{\texorpdfstring{Object\+Data\+Box(size\+\_\+t frame\+\_\+index, cv\+::\+Point2d center, cv\+::\+Point2d size)}{ObjectDataBox(size\_t frame\_index, cv::Point2d center, cv::Point2d size)}}]{\setlength{\rightskip}{0pt plus 5cm}core\+::\+Object\+Data\+Box\+::\+Object\+Data\+Box (
 \begin{DoxyParamCaption}
 \item[{size\+\_\+t}]{frame\+\_\+index, }
-\item[{cv\+::\+Point2d}]{anchor, }
+\item[{cv\+::\+Point2d}]{center, }
 \item[{cv\+::\+Point2d}]{size}
 \end{DoxyParamCaption}
-)}\hypertarget{classcore_1_1ObjectDataBox_a9a1ee3e1e603c1e55adc58a1a58efad2}{}\label{classcore_1_1ObjectDataBox_a9a1ee3e1e603c1e55adc58a1a58efad2}
+)}\hypertarget{classcore_1_1ObjectDataBox_a4e331870ed012d9bc44bc769aee86362}{}\label{classcore_1_1ObjectDataBox_a4e331870ed012d9bc44bc769aee86362}
 Creates a new detection with an bounding box of the given size.
 
 
 \begin{DoxyParams}{Parameters}
 {\em frame\+\_\+index} & The frame index of the detection \\
 \hline
-{\em anchor} & The top left corner of the bounding box \\
+{\em center} & The center of the bounding box \\
 \hline
 {\em size} & The size of the bounding box \\
 \hline
@@ -105,6 +109,48 @@ The interpolated object
 
 Reimplemented from \hyperlink{classcore_1_1ObjectData2D_a59b974e09f74f0a2640e3152893fe79f}{core\+::\+Object\+Data2D}.
 
+\index{core\+::\+Object\+Data\+Box@{core\+::\+Object\+Data\+Box}!Is\+Within\+Constraints@{Is\+Within\+Constraints}}
+\index{Is\+Within\+Constraints@{Is\+Within\+Constraints}!core\+::\+Object\+Data\+Box@{core\+::\+Object\+Data\+Box}}
+\subsubsection[{\texorpdfstring{Is\+Within\+Constraints(\+Object\+Data\+Ptr obj, std\+::unordered\+\_\+map$<$ std\+::string, double $>$ \&constraints) const override}{IsWithinConstraints(ObjectDataPtr obj, std::unordered\_map< std::string, double > \&constraints) const override}}]{\setlength{\rightskip}{0pt plus 5cm}bool core\+::\+Object\+Data\+Box\+::\+Is\+Within\+Constraints (
+\begin{DoxyParamCaption}
+\item[{Object\+Data\+Ptr}]{obj, }
+\item[{std\+::unordered\+\_\+map$<$ std\+::string, double $>$ \&}]{constraints}
+\end{DoxyParamCaption}
+) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}\hypertarget{classcore_1_1ObjectDataBox_a04f4b780b79491270e4838f7504c1917}{}\label{classcore_1_1ObjectDataBox_a04f4b780b79491270e4838f7504c1917}
+Checks if the difference between this object and the specified object is within the constraints specified. The difference is calculated for each constraint separately.
+
+
+\begin{DoxyParams}{Parameters}
+{\em obj} & The object to get the difference to \\
+\hline
+{\em constraints} & The constraints to assure \\
+\hline
+\end{DoxyParams}
+
+
+Reimplemented from \hyperlink{classcore_1_1ObjectData2D_a63e855919a72462225a8e69140f1389b}{core\+::\+Object\+Data2D}.
+
+\index{core\+::\+Object\+Data\+Box@{core\+::\+Object\+Data\+Box}!To\+String@{To\+String}}
+\index{To\+String@{To\+String}!core\+::\+Object\+Data\+Box@{core\+::\+Object\+Data\+Box}}
+\subsubsection[{\texorpdfstring{To\+String(char delimiter) const override}{ToString(char delimiter) const override}}]{\setlength{\rightskip}{0pt plus 5cm}std\+::string core\+::\+Object\+Data\+Box\+::\+To\+String (
+\begin{DoxyParamCaption}
+\item[{char}]{delimiter}
+\end{DoxyParamCaption}
+) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}\hypertarget{classcore_1_1ObjectDataBox_a0af10953ccecb7089a3a2841ec7419b9}{}\label{classcore_1_1ObjectDataBox_a0af10953ccecb7089a3a2841ec7419b9}
+Returns a string representing the values of this object data.
+
+
+\begin{DoxyParams}{Parameters}
+{\em delimiter} & The delimiter used to separate values \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The string containing the values 
+\end{DoxyReturn}
+
+
+Reimplemented from \hyperlink{classcore_1_1ObjectData2D_a72b2f50ca82ebd9269e1c29cdac6d92a}{core\+::\+Object\+Data2D}.
+
 \index{core\+::\+Object\+Data\+Box@{core\+::\+Object\+Data\+Box}!Visualize@{Visualize}}
 \index{Visualize@{Visualize}!core\+::\+Object\+Data\+Box@{core\+::\+Object\+Data\+Box}}
 \subsubsection[{\texorpdfstring{Visualize(cv\+::\+Mat \&image, cv\+::\+Scalar \&color) const override}{Visualize(cv::Mat \&image, cv::Scalar \&color) const override}}]{\setlength{\rightskip}{0pt plus 5cm}void core\+::\+Object\+Data\+Box\+::\+Visualize (

BIN
Documentation/latex/classcore_1_1Tracklet.pdf


+ 25 - 25
Documentation/latex/classcore_1_1Tracklet.tex

@@ -27,12 +27,6 @@ size\+\_\+t \hyperlink{classcore_1_1Tracklet_aee4298a7b734b2b7533d4536006a8aa8}{
 \item 
 void \hyperlink{classcore_1_1Tracklet_a10b56b608b24ef547550540e5a755bce}{Interpolate\+Missing\+Frames} ()
 \item 
-virtual double \hyperlink{classcore_1_1Tracklet_a0357f2fa173941800571432dcbc96dc2}{Compare\+To} (Object\+Data\+Ptr obj) const override
-\item 
-virtual Object\+Data\+Ptr \hyperlink{classcore_1_1Tracklet_a5fb5e6ab9df668c3477e8b52f115b188}{Interpolate} (Object\+Data\+Ptr obj, double fraction) const override
-\item 
-virtual void \hyperlink{classcore_1_1Tracklet_a85f92a4059bf89f24a83f28935675181}{Visualize} (cv\+::\+Mat \&image, cv\+::\+Scalar \&color) const override
-\item 
 void \hyperlink{classcore_1_1Tracklet_a3a2b241939559e47aef701d2e2c4d4bd}{Visualize} (cv\+::\+Mat \&image, cv\+::\+Scalar \&color, size\+\_\+t frame, size\+\_\+t predecessor\+\_\+count, size\+\_\+t successor\+\_\+count) const
 \item 
 void \hyperlink{classcore_1_1Tracklet_a2bdb2f2c8249145808e7029dde6e7df0}{Flatten} ()
@@ -40,6 +34,12 @@ void \hyperlink{classcore_1_1Tracklet_a2bdb2f2c8249145808e7029dde6e7df0}{Flatten
 void \hyperlink{classcore_1_1Tracklet_a5bbbf1e2858edaad93c04cc663afeeff}{Combine} (Tracklet\+Ptr other)
 \item 
 Object\+Data\+Ptr \hyperlink{classcore_1_1Tracklet_a5a0e56045f8c1868b46db87700658260}{Get\+Frame\+Object} (size\+\_\+t frame\+\_\+index)
+\item 
+virtual double \hyperlink{classcore_1_1Tracklet_a0357f2fa173941800571432dcbc96dc2}{Compare\+To} (Object\+Data\+Ptr obj) const override
+\item 
+virtual Object\+Data\+Ptr \hyperlink{classcore_1_1Tracklet_a5fb5e6ab9df668c3477e8b52f115b188}{Interpolate} (Object\+Data\+Ptr obj, double fraction) const override
+\item 
+virtual void \hyperlink{classcore_1_1Tracklet_a85f92a4059bf89f24a83f28935675181}{Visualize} (cv\+::\+Mat \&image, cv\+::\+Scalar \&color) const override
 \end{DoxyCompactItemize}
 
 
@@ -200,25 +200,6 @@ Reimplemented from \hyperlink{classcore_1_1ObjectData_ad681915317decab76c384a635
 )}\hypertarget{classcore_1_1Tracklet_a10b56b608b24ef547550540e5a755bce}{}\label{classcore_1_1Tracklet_a10b56b608b24ef547550540e5a755bce}
 Interpolates between the current path objects until every missing frame has an object. Only frames between the first frame index and the last frame index are interpolated. \index{core\+::\+Tracklet@{core\+::\+Tracklet}!Visualize@{Visualize}}
 \index{Visualize@{Visualize}!core\+::\+Tracklet@{core\+::\+Tracklet}}
-\subsubsection[{\texorpdfstring{Visualize(cv\+::\+Mat \&image, cv\+::\+Scalar \&color) const override}{Visualize(cv::Mat \&image, cv::Scalar \&color) const override}}]{\setlength{\rightskip}{0pt plus 5cm}void core\+::\+Tracklet\+::\+Visualize (
-\begin{DoxyParamCaption}
-\item[{cv\+::\+Mat \&}]{image, }
-\item[{cv\+::\+Scalar \&}]{color}
-\end{DoxyParamCaption}
-) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}\hypertarget{classcore_1_1Tracklet_a85f92a4059bf89f24a83f28935675181}{}\label{classcore_1_1Tracklet_a85f92a4059bf89f24a83f28935675181}
-Visualizes the object in the given image with the given color. This method does nothing, it needs to be overwritten to visualize something. 
-\begin{DoxyParams}{Parameters}
-{\em image} & The image to write into \\
-\hline
-{\em color} & The color to use \\
-\hline
-\end{DoxyParams}
-
-
-Reimplemented from \hyperlink{classcore_1_1ObjectData_aae2c4fceddc529570dbe8909309f9961}{core\+::\+Object\+Data}.
-
-\index{core\+::\+Tracklet@{core\+::\+Tracklet}!Visualize@{Visualize}}
-\index{Visualize@{Visualize}!core\+::\+Tracklet@{core\+::\+Tracklet}}
 \subsubsection[{\texorpdfstring{Visualize(cv\+::\+Mat \&image, cv\+::\+Scalar \&color, size\+\_\+t frame, size\+\_\+t predecessor\+\_\+count, size\+\_\+t successor\+\_\+count) const}{Visualize(cv::Mat \&image, cv::Scalar \&color, size\_t frame, size\_t predecessor\_count, size\_t successor\_count) const}}]{\setlength{\rightskip}{0pt plus 5cm}void core\+::\+Tracklet\+::\+Visualize (
 \begin{DoxyParamCaption}
 \item[{cv\+::\+Mat \&}]{image, }
@@ -241,6 +222,25 @@ Visualizes the tracklet by visualizing the path object in the given frame and th
 {\em successor\+\_\+count} & The number of path objects to visualize after the given frame \\
 \hline
 \end{DoxyParams}
+\index{core\+::\+Tracklet@{core\+::\+Tracklet}!Visualize@{Visualize}}
+\index{Visualize@{Visualize}!core\+::\+Tracklet@{core\+::\+Tracklet}}
+\subsubsection[{\texorpdfstring{Visualize(cv\+::\+Mat \&image, cv\+::\+Scalar \&color) const override}{Visualize(cv::Mat \&image, cv::Scalar \&color) const override}}]{\setlength{\rightskip}{0pt plus 5cm}void core\+::\+Tracklet\+::\+Visualize (
+\begin{DoxyParamCaption}
+\item[{cv\+::\+Mat \&}]{image, }
+\item[{cv\+::\+Scalar \&}]{color}
+\end{DoxyParamCaption}
+) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}\hypertarget{classcore_1_1Tracklet_a85f92a4059bf89f24a83f28935675181}{}\label{classcore_1_1Tracklet_a85f92a4059bf89f24a83f28935675181}
+Visualizes the object in the given image with the given color. This method does nothing, it needs to be overwritten to visualize something. 
+\begin{DoxyParams}{Parameters}
+{\em image} & The image to write into \\
+\hline
+{\em color} & The color to use \\
+\hline
+\end{DoxyParams}
+
+
+Reimplemented from \hyperlink{classcore_1_1ObjectData_aae2c4fceddc529570dbe8909309f9961}{core\+::\+Object\+Data}.
+
 
 
 The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}

+ 8 - 8
Documentation/latex/classutil_1_1FileIO.tex

@@ -23,9 +23,9 @@ static void \hyperlink{classutil_1_1FileIO_a59b96733490d7b60e4f107da84efb245}{Re
 \item 
 static void \hyperlink{classutil_1_1FileIO_a57059c9b52e86c753db5da6281cf23c6}{Write\+Tracks} (std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks, const std\+::string \&file\+\_\+name, char delimiter)
 \item 
-static void \hyperlink{classutil_1_1FileIO_aa6294f669bdb86510c8b6cefed9ac44b}{Read\+Tracks} (std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks, const std\+::string \&file\+\_\+name, char delimiter)
+static void \hyperlink{classutil_1_1FileIO_a82be787051876b0e3d3c4f887c3c27ce}{Read\+Tracks} (std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks, const std\+::string \&file\+\_\+name, char delimiter)
 \item 
-static std\+::vector$<$ std\+::string $>$ \hyperlink{classutil_1_1FileIO_aa79e018874aa1da4d0b2cd1e5b7d2e01}{split} (const std\+::string \&input, char delimiter)
+static std\+::vector$<$ std\+::string $>$ \hyperlink{classutil_1_1FileIO_a925a74ff26782b8f64106579c9d54b47}{Split} (const std\+::string \&input, char delimiter)
 \end{DoxyCompactItemize}
 
 
@@ -138,13 +138,13 @@ Reads a C\+SV file. The header specifies the keys. The values are stored with th
 \end{DoxyParams}
 \index{util\+::\+File\+IO@{util\+::\+File\+IO}!Read\+Tracks@{Read\+Tracks}}
 \index{Read\+Tracks@{Read\+Tracks}!util\+::\+File\+IO@{util\+::\+File\+IO}}
-\subsubsection[{\texorpdfstring{Read\+Tracks(std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks, const std\+::string \&file\+\_\+name, char delimiter)}{ReadTracks(std::vector< core::TrackletPtr > \&tracks, const std::string \&file\_name, char delimiter)}}]{\setlength{\rightskip}{0pt plus 5cm}void util\+::\+File\+I\+O\+::\+Read\+Tracks (
+\subsubsection[{\texorpdfstring{Read\+Tracks(std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks, const std\+::string \&file\+\_\+name, char delimiter)}{ReadTracks(std::vector< core::TrackletPtr > \&tracks, const std::string \&file\_name, char delimiter)}}]{\setlength{\rightskip}{0pt plus 5cm}static void util\+::\+File\+I\+O\+::\+Read\+Tracks (
 \begin{DoxyParamCaption}
 \item[{std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&}]{tracks, }
 \item[{const std\+::string \&}]{file\+\_\+name, }
 \item[{char}]{delimiter}
 \end{DoxyParamCaption}
-)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{classutil_1_1FileIO_aa6294f669bdb86510c8b6cefed9ac44b}{}\label{classutil_1_1FileIO_aa6294f669bdb86510c8b6cefed9ac44b}
+)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{classutil_1_1FileIO_a82be787051876b0e3d3c4f887c3c27ce}{}\label{classutil_1_1FileIO_a82be787051876b0e3d3c4f887c3c27ce}
 Reads the tracks from the specified file.
 
 
@@ -156,14 +156,14 @@ Reads the tracks from the specified file.
 {\em delimiter} & The delimiter used to separate values \\
 \hline
 \end{DoxyParams}
-\index{util\+::\+File\+IO@{util\+::\+File\+IO}!split@{split}}
-\index{split@{split}!util\+::\+File\+IO@{util\+::\+File\+IO}}
-\subsubsection[{\texorpdfstring{split(const std\+::string \&input, char delimiter)}{split(const std::string \&input, char delimiter)}}]{\setlength{\rightskip}{0pt plus 5cm}std\+::vector$<$ std\+::string $>$ util\+::\+File\+I\+O\+::split (
+\index{util\+::\+File\+IO@{util\+::\+File\+IO}!Split@{Split}}
+\index{Split@{Split}!util\+::\+File\+IO@{util\+::\+File\+IO}}
+\subsubsection[{\texorpdfstring{Split(const std\+::string \&input, char delimiter)}{Split(const std::string \&input, char delimiter)}}]{\setlength{\rightskip}{0pt plus 5cm}std\+::vector$<$ std\+::string $>$ util\+::\+File\+I\+O\+::\+Split (
 \begin{DoxyParamCaption}
 \item[{const std\+::string \&}]{input, }
 \item[{char}]{delimiter}
 \end{DoxyParamCaption}
-)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{classutil_1_1FileIO_aa79e018874aa1da4d0b2cd1e5b7d2e01}{}\label{classutil_1_1FileIO_aa79e018874aa1da4d0b2cd1e5b7d2e01}
+)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{classutil_1_1FileIO_a925a74ff26782b8f64106579c9d54b47}{}\label{classutil_1_1FileIO_a925a74ff26782b8f64106579c9d54b47}
 Splits the input string at the delimiter and store each part into the return vector. If there is nothing between two delimiters the part will be an empty string.
 
 

+ 163 - 0
Documentation/latex/classutil_1_1Filter2D.tex

@@ -0,0 +1,163 @@
+\hypertarget{classutil_1_1Filter2D}{}\section{util\+:\+:Filter2D Class Reference}
+\label{classutil_1_1Filter2D}\index{util\+::\+Filter2D@{util\+::\+Filter2D}}
+
+
+{\ttfamily \#include $<$Filter2\+D.\+h$>$}
+
+\subsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+\hyperlink{classutil_1_1Filter2D_a56cbb0d40a118f98c5a21d1b0a9e1953}{Filter2D} ()
+\item 
+\hyperlink{classutil_1_1Filter2D_a83896f35678afd4a024b2ae0255b3e38}{Filter2D} (double multiplier, std\+::vector$<$ double $>$ mask)
+\item 
+\hyperlink{classutil_1_1Filter2D_a1d14212292766b1372b190842d8330e8}{Filter2D} (std\+::string const \&mask\+\_\+string, char delimiter)
+\item 
+double \hyperlink{classutil_1_1Filter2D_ab59311cc1727f5285a56c050ede7b14a}{Get} (int x, int y) const
+\item 
+double \hyperlink{classutil_1_1Filter2D_ad6866d21e5b1d3d6863d859f1b7fa288}{Get} (int i) const
+\item 
+double \hyperlink{classutil_1_1Filter2D_a2b61ed6deaebb2e97fda04cadd43459c}{Get\+Multiplier} () const
+\item 
+int \hyperlink{classutil_1_1Filter2D_af273117c197dc90208167cd873fe0097}{Get\+Vicinity} () const
+\item 
+int \hyperlink{classutil_1_1Filter2D_a4151856406f7a794cd724ce4a7e347eb}{Get\+Dimension} () const
+\item 
+void \hyperlink{classutil_1_1Filter2D_a242138102e2e30f4fe9cccf76f817e09}{Normalize} ()
+\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+Utility class for a two-\/dimensional filter. 
+
+\subsection{Constructor \& Destructor Documentation}
+\index{util\+::\+Filter2D@{util\+::\+Filter2D}!Filter2D@{Filter2D}}
+\index{Filter2D@{Filter2D}!util\+::\+Filter2D@{util\+::\+Filter2D}}
+\subsubsection[{\texorpdfstring{Filter2\+D()}{Filter2D()}}]{\setlength{\rightskip}{0pt plus 5cm}util\+::\+Filter2\+D\+::\+Filter2D (
+\begin{DoxyParamCaption}
+{}
+\end{DoxyParamCaption}
+)}\hypertarget{classutil_1_1Filter2D_a56cbb0d40a118f98c5a21d1b0a9e1953}{}\label{classutil_1_1Filter2D_a56cbb0d40a118f98c5a21d1b0a9e1953}
+Creates a new instance with an identity filter. \index{util\+::\+Filter2D@{util\+::\+Filter2D}!Filter2D@{Filter2D}}
+\index{Filter2D@{Filter2D}!util\+::\+Filter2D@{util\+::\+Filter2D}}
+\subsubsection[{\texorpdfstring{Filter2\+D(double multiplier, std\+::vector$<$ double $>$ mask)}{Filter2D(double multiplier, std::vector< double > mask)}}]{\setlength{\rightskip}{0pt plus 5cm}util\+::\+Filter2\+D\+::\+Filter2D (
+\begin{DoxyParamCaption}
+\item[{double}]{multiplier, }
+\item[{std\+::vector$<$ double $>$}]{mask}
+\end{DoxyParamCaption}
+)}\hypertarget{classutil_1_1Filter2D_a83896f35678afd4a024b2ae0255b3e38}{}\label{classutil_1_1Filter2D_a83896f35678afd4a024b2ae0255b3e38}
+Creates a new instance with the given multiplier and mask values. To calculate the value all values are added with their weights from the mask and then the value is multiplied by the multiplier. The multiplier may be used to ensure the overall filter sum is equals one.
+
+
+\begin{DoxyParams}{Parameters}
+{\em multiplier} & The multiplier \\
+\hline
+{\em mask} & The mask values \\
+\hline
+\end{DoxyParams}
+\index{util\+::\+Filter2D@{util\+::\+Filter2D}!Filter2D@{Filter2D}}
+\index{Filter2D@{Filter2D}!util\+::\+Filter2D@{util\+::\+Filter2D}}
+\subsubsection[{\texorpdfstring{Filter2\+D(std\+::string const \&mask\+\_\+string, char delimiter)}{Filter2D(std::string const \&mask\_string, char delimiter)}}]{\setlength{\rightskip}{0pt plus 5cm}util\+::\+Filter2\+D\+::\+Filter2D (
+\begin{DoxyParamCaption}
+\item[{std\+::string const \&}]{mask\+\_\+string, }
+\item[{char}]{delimiter}
+\end{DoxyParamCaption}
+)}\hypertarget{classutil_1_1Filter2D_a1d14212292766b1372b190842d8330e8}{}\label{classutil_1_1Filter2D_a1d14212292766b1372b190842d8330e8}
+Creates a new instance by parsing the specified mask string. Values are separated by the specified delimiter. Example\+: \textquotesingle{}multiplier, m00, m01, m02, ..., m10, m11, m12, ..., mnn\textquotesingle{} as the mask string and \textquotesingle{},\textquotesingle{} as the delimiter.
+
+
+\begin{DoxyParams}{Parameters}
+{\em mask\+\_\+string} & The string with the multiplier and the mask values to parse \\
+\hline
+{\em delimiter} & The delimiter used for the parsing \\
+\hline
+\end{DoxyParams}
+
+
+\subsection{Member Function Documentation}
+\index{util\+::\+Filter2D@{util\+::\+Filter2D}!Get@{Get}}
+\index{Get@{Get}!util\+::\+Filter2D@{util\+::\+Filter2D}}
+\subsubsection[{\texorpdfstring{Get(int x, int y) const}{Get(int x, int y) const}}]{\setlength{\rightskip}{0pt plus 5cm}double util\+::\+Filter2\+D\+::\+Get (
+\begin{DoxyParamCaption}
+\item[{int}]{x, }
+\item[{int}]{y}
+\end{DoxyParamCaption}
+) const}\hypertarget{classutil_1_1Filter2D_ab59311cc1727f5285a56c050ede7b14a}{}\label{classutil_1_1Filter2D_ab59311cc1727f5285a56c050ede7b14a}
+Gets the value in the mask at the specified position.
+
+
+\begin{DoxyParams}{Parameters}
+{\em x} & The horizontal position \\
+\hline
+{\em y} & The vertical position \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The value 
+\end{DoxyReturn}
+\index{util\+::\+Filter2D@{util\+::\+Filter2D}!Get@{Get}}
+\index{Get@{Get}!util\+::\+Filter2D@{util\+::\+Filter2D}}
+\subsubsection[{\texorpdfstring{Get(int i) const}{Get(int i) const}}]{\setlength{\rightskip}{0pt plus 5cm}double util\+::\+Filter2\+D\+::\+Get (
+\begin{DoxyParamCaption}
+\item[{int}]{i}
+\end{DoxyParamCaption}
+) const}\hypertarget{classutil_1_1Filter2D_ad6866d21e5b1d3d6863d859f1b7fa288}{}\label{classutil_1_1Filter2D_ad6866d21e5b1d3d6863d859f1b7fa288}
+Gets the value in the mask at the specified position.
+
+
+\begin{DoxyParams}{Parameters}
+{\em i} & The index (row-\/major) \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The value 
+\end{DoxyReturn}
+\index{util\+::\+Filter2D@{util\+::\+Filter2D}!Get\+Dimension@{Get\+Dimension}}
+\index{Get\+Dimension@{Get\+Dimension}!util\+::\+Filter2D@{util\+::\+Filter2D}}
+\subsubsection[{\texorpdfstring{Get\+Dimension() const}{GetDimension() const}}]{\setlength{\rightskip}{0pt plus 5cm}int util\+::\+Filter2\+D\+::\+Get\+Dimension (
+\begin{DoxyParamCaption}
+{}
+\end{DoxyParamCaption}
+) const}\hypertarget{classutil_1_1Filter2D_a4151856406f7a794cd724ce4a7e347eb}{}\label{classutil_1_1Filter2D_a4151856406f7a794cd724ce4a7e347eb}
+Gets the dimension of the mask.
+
+\begin{DoxyReturn}{Returns}
+The dimension 
+\end{DoxyReturn}
+\index{util\+::\+Filter2D@{util\+::\+Filter2D}!Get\+Multiplier@{Get\+Multiplier}}
+\index{Get\+Multiplier@{Get\+Multiplier}!util\+::\+Filter2D@{util\+::\+Filter2D}}
+\subsubsection[{\texorpdfstring{Get\+Multiplier() const}{GetMultiplier() const}}]{\setlength{\rightskip}{0pt plus 5cm}double util\+::\+Filter2\+D\+::\+Get\+Multiplier (
+\begin{DoxyParamCaption}
+{}
+\end{DoxyParamCaption}
+) const}\hypertarget{classutil_1_1Filter2D_a2b61ed6deaebb2e97fda04cadd43459c}{}\label{classutil_1_1Filter2D_a2b61ed6deaebb2e97fda04cadd43459c}
+Gets the multiplier.
+
+\begin{DoxyReturn}{Returns}
+The multiplier 
+\end{DoxyReturn}
+\index{util\+::\+Filter2D@{util\+::\+Filter2D}!Get\+Vicinity@{Get\+Vicinity}}
+\index{Get\+Vicinity@{Get\+Vicinity}!util\+::\+Filter2D@{util\+::\+Filter2D}}
+\subsubsection[{\texorpdfstring{Get\+Vicinity() const}{GetVicinity() const}}]{\setlength{\rightskip}{0pt plus 5cm}int util\+::\+Filter2\+D\+::\+Get\+Vicinity (
+\begin{DoxyParamCaption}
+{}
+\end{DoxyParamCaption}
+) const}\hypertarget{classutil_1_1Filter2D_af273117c197dc90208167cd873fe0097}{}\label{classutil_1_1Filter2D_af273117c197dc90208167cd873fe0097}
+Gets the vicinity of the mask. The vicinity is the based on the center and describes the maximum range of values around it in manhattan distance.
+
+\begin{DoxyReturn}{Returns}
+The vicinity 
+\end{DoxyReturn}
+\index{util\+::\+Filter2D@{util\+::\+Filter2D}!Normalize@{Normalize}}
+\index{Normalize@{Normalize}!util\+::\+Filter2D@{util\+::\+Filter2D}}
+\subsubsection[{\texorpdfstring{Normalize()}{Normalize()}}]{\setlength{\rightskip}{0pt plus 5cm}void util\+::\+Filter2\+D\+::\+Normalize (
+\begin{DoxyParamCaption}
+{}
+\end{DoxyParamCaption}
+)}\hypertarget{classutil_1_1Filter2D_a242138102e2e30f4fe9cccf76f817e09}{}\label{classutil_1_1Filter2D_a242138102e2e30f4fe9cccf76f817e09}
+Normalizes the mask values. The multiplier is equals one afterwards. 
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item 
+util/Filter2\+D.\+h\item 
+util/Filter2\+D.\+cpp\end{DoxyCompactItemize}

+ 16 - 0
Documentation/latex/classutil_1_1Grid.tex

@@ -35,6 +35,8 @@ void \hyperlink{classutil_1_1Grid_a775e2a7574c81dd7acd1d185b2e72ed5}{Position\+T
 \item 
 void \hyperlink{classutil_1_1Grid_a6597c4f785a764c0b291b8135863fe67}{Convolve2D} (int vicinity, double $\ast$mask, double multiplier)
 \item 
+void \hyperlink{classutil_1_1Grid_ab8e9f6c804b0eab1f5666a039130b8ed}{Convolve2D} (\hyperlink{classutil_1_1Filter2D}{util\+::\+Filter2D} \&filter)
+\item 
 void \hyperlink{classutil_1_1Grid_ac161adb14df09651a6b33f855d887bfa}{Convolve3D} (int vicinity, double $\ast$mask, double multiplier)
 \end{DoxyCompactItemize}
 
@@ -114,6 +116,20 @@ Performs a 2D convolution.
 {\em multiplier} & The value is multiplied with the result at the end of the convolution \\
 \hline
 \end{DoxyParams}
+\index{util\+::\+Grid@{util\+::\+Grid}!Convolve2D@{Convolve2D}}
+\index{Convolve2D@{Convolve2D}!util\+::\+Grid@{util\+::\+Grid}}
+\subsubsection[{\texorpdfstring{Convolve2\+D(util\+::\+Filter2\+D \&filter)}{Convolve2D(util::Filter2D \&filter)}}]{\setlength{\rightskip}{0pt plus 5cm}void util\+::\+Grid\+::\+Convolve2D (
+\begin{DoxyParamCaption}
+\item[{{\bf util\+::\+Filter2D} \&}]{filter}
+\end{DoxyParamCaption}
+)}\hypertarget{classutil_1_1Grid_ab8e9f6c804b0eab1f5666a039130b8ed}{}\label{classutil_1_1Grid_ab8e9f6c804b0eab1f5666a039130b8ed}
+Performs a 2D convolution.
+
+
+\begin{DoxyParams}{Parameters}
+{\em filter} & The 2D filter to use \\
+\hline
+\end{DoxyParams}
 \index{util\+::\+Grid@{util\+::\+Grid}!Convolve3D@{Convolve3D}}
 \index{Convolve3D@{Convolve3D}!util\+::\+Grid@{util\+::\+Grid}}
 \subsubsection[{\texorpdfstring{Convolve3\+D(int vicinity, double $\ast$mask, double multiplier)}{Convolve3D(int vicinity, double *mask, double multiplier)}}]{\setlength{\rightskip}{0pt plus 5cm}void util\+::\+Grid\+::\+Convolve3D (

+ 12 - 12
Documentation/latex/classutil_1_1Logger.tex

@@ -24,11 +24,11 @@ static bool \hyperlink{classutil_1_1Logger_a6ee9298451936b98815e20ba7f5d7275}{Is
 \item 
 static bool \hyperlink{classutil_1_1Logger_a194b338af92760d0f7d15b607cad5429}{Is\+Info\+Enabled} ()
 \item 
-static void \hyperlink{classutil_1_1Logger_a37504d39ec90bebffc3d02d61d47afea}{Log\+Info} (const std\+::string \&message)
+static void \hyperlink{classutil_1_1Logger_a65ac30aaefded61036771197f1364bb8}{Log\+Info} (std\+::string const \&message)
 \item 
-static void \hyperlink{classutil_1_1Logger_a01ad6e5349f51964724f96a598c6d2a8}{Log\+Error} (const std\+::string \&message)
+static void \hyperlink{classutil_1_1Logger_a5a49cf31bcd5a0ccbfe11667b37f338a}{Log\+Error} (std\+::string const \&message)
 \item 
-static void \hyperlink{classutil_1_1Logger_a9c6a0ebe97ecf3ca24aff8a908a491ee}{Log\+Debug} (const std\+::string \&message)
+static void \hyperlink{classutil_1_1Logger_a89b67d19ea6650ed313dffc0a599385a}{Log\+Debug} (std\+::string const \&message)
 \end{DoxyCompactItemize}
 
 
@@ -75,11 +75,11 @@ True, if the info messages are logged
 \end{DoxyReturn}
 \index{util\+::\+Logger@{util\+::\+Logger}!Log\+Debug@{Log\+Debug}}
 \index{Log\+Debug@{Log\+Debug}!util\+::\+Logger@{util\+::\+Logger}}
-\subsubsection[{\texorpdfstring{Log\+Debug(const std\+::string \&message)}{LogDebug(const std::string \&message)}}]{\setlength{\rightskip}{0pt plus 5cm}void util\+::\+Logger\+::\+Log\+Debug (
+\subsubsection[{\texorpdfstring{Log\+Debug(std\+::string const \&message)}{LogDebug(std::string const \&message)}}]{\setlength{\rightskip}{0pt plus 5cm}void util\+::\+Logger\+::\+Log\+Debug (
 \begin{DoxyParamCaption}
-\item[{const std\+::string \&}]{message}
+\item[{std\+::string const \&}]{message}
 \end{DoxyParamCaption}
-)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{classutil_1_1Logger_a9c6a0ebe97ecf3ca24aff8a908a491ee}{}\label{classutil_1_1Logger_a9c6a0ebe97ecf3ca24aff8a908a491ee}
+)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{classutil_1_1Logger_a89b67d19ea6650ed313dffc0a599385a}{}\label{classutil_1_1Logger_a89b67d19ea6650ed313dffc0a599385a}
 Logs the given message as an debug message. 
 \begin{DoxyParams}{Parameters}
 {\em message} & The debug message to log \\
@@ -87,11 +87,11 @@ Logs the given message as an debug message.
 \end{DoxyParams}
 \index{util\+::\+Logger@{util\+::\+Logger}!Log\+Error@{Log\+Error}}
 \index{Log\+Error@{Log\+Error}!util\+::\+Logger@{util\+::\+Logger}}
-\subsubsection[{\texorpdfstring{Log\+Error(const std\+::string \&message)}{LogError(const std::string \&message)}}]{\setlength{\rightskip}{0pt plus 5cm}void util\+::\+Logger\+::\+Log\+Error (
+\subsubsection[{\texorpdfstring{Log\+Error(std\+::string const \&message)}{LogError(std::string const \&message)}}]{\setlength{\rightskip}{0pt plus 5cm}void util\+::\+Logger\+::\+Log\+Error (
 \begin{DoxyParamCaption}
-\item[{const std\+::string \&}]{message}
+\item[{std\+::string const \&}]{message}
 \end{DoxyParamCaption}
-)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{classutil_1_1Logger_a01ad6e5349f51964724f96a598c6d2a8}{}\label{classutil_1_1Logger_a01ad6e5349f51964724f96a598c6d2a8}
+)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{classutil_1_1Logger_a5a49cf31bcd5a0ccbfe11667b37f338a}{}\label{classutil_1_1Logger_a5a49cf31bcd5a0ccbfe11667b37f338a}
 Logs the given message as an error message. 
 \begin{DoxyParams}{Parameters}
 {\em message} & The error message to log \\
@@ -99,11 +99,11 @@ Logs the given message as an error message.
 \end{DoxyParams}
 \index{util\+::\+Logger@{util\+::\+Logger}!Log\+Info@{Log\+Info}}
 \index{Log\+Info@{Log\+Info}!util\+::\+Logger@{util\+::\+Logger}}
-\subsubsection[{\texorpdfstring{Log\+Info(const std\+::string \&message)}{LogInfo(const std::string \&message)}}]{\setlength{\rightskip}{0pt plus 5cm}void util\+::\+Logger\+::\+Log\+Info (
+\subsubsection[{\texorpdfstring{Log\+Info(std\+::string const \&message)}{LogInfo(std::string const \&message)}}]{\setlength{\rightskip}{0pt plus 5cm}void util\+::\+Logger\+::\+Log\+Info (
 \begin{DoxyParamCaption}
-\item[{const std\+::string \&}]{message}
+\item[{std\+::string const \&}]{message}
 \end{DoxyParamCaption}
-)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{classutil_1_1Logger_a37504d39ec90bebffc3d02d61d47afea}{}\label{classutil_1_1Logger_a37504d39ec90bebffc3d02d61d47afea}
+)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{classutil_1_1Logger_a65ac30aaefded61036771197f1364bb8}{}\label{classutil_1_1Logger_a65ac30aaefded61036771197f1364bb8}
 Logs the given message as an info message. 
 \begin{DoxyParams}{Parameters}
 {\em message} & The info message to log \\

+ 4 - 4
Documentation/latex/classutil_1_1Parser.tex

@@ -27,13 +27,13 @@ static const std\+::string {\bfseries K\+E\+Y\+\_\+\+ID} = \char`\"{}id\char`\"{
 static const std\+::string {\bfseries K\+E\+Y\+\_\+\+S\+C\+O\+RE} = \char`\"{}score\char`\"{}\hypertarget{classutil_1_1Parser_aea01dc9348cb59860fb279b716d3cf72}{}\label{classutil_1_1Parser_aea01dc9348cb59860fb279b716d3cf72}
 
 \item 
-static const std\+::string {\bfseries K\+E\+Y\+\_\+X} = \char`\"{}x\char`\"{}\hypertarget{classutil_1_1Parser_a67cac8af9b52947d6984d64a56ac4ad3}{}\label{classutil_1_1Parser_a67cac8af9b52947d6984d64a56ac4ad3}
+static const std\+::string {\bfseries K\+E\+Y\+\_\+X} = \char`\"{}xc\char`\"{}\hypertarget{classutil_1_1Parser_a67cac8af9b52947d6984d64a56ac4ad3}{}\label{classutil_1_1Parser_a67cac8af9b52947d6984d64a56ac4ad3}
 
 \item 
-static const std\+::string {\bfseries K\+E\+Y\+\_\+Y} = \char`\"{}y\char`\"{}\hypertarget{classutil_1_1Parser_aa13293b6680f1bec5532247c14acf85f}{}\label{classutil_1_1Parser_aa13293b6680f1bec5532247c14acf85f}
+static const std\+::string {\bfseries K\+E\+Y\+\_\+Y} = \char`\"{}yc\char`\"{}\hypertarget{classutil_1_1Parser_aa13293b6680f1bec5532247c14acf85f}{}\label{classutil_1_1Parser_aa13293b6680f1bec5532247c14acf85f}
 
 \item 
-static const std\+::string {\bfseries K\+E\+Y\+\_\+Z}\hypertarget{classutil_1_1Parser_a33c7c6efa60e5881ebf497851b56b493}{}\label{classutil_1_1Parser_a33c7c6efa60e5881ebf497851b56b493}
+static const std\+::string {\bfseries K\+E\+Y\+\_\+Z} = \char`\"{}zc\char`\"{}\hypertarget{classutil_1_1Parser_a33c7c6efa60e5881ebf497851b56b493}{}\label{classutil_1_1Parser_a33c7c6efa60e5881ebf497851b56b493}
 
 \item 
 static const std\+::string {\bfseries K\+E\+Y\+\_\+\+W\+I\+D\+TH} = \char`\"{}width\char`\"{}\hypertarget{classutil_1_1Parser_af460fb066f6dede3b0e3aa0ea97ac115}{}\label{classutil_1_1Parser_af460fb066f6dede3b0e3aa0ea97ac115}
@@ -42,7 +42,7 @@ static const std\+::string {\bfseries K\+E\+Y\+\_\+\+W\+I\+D\+TH} = \char`\"{}wi
 static const std\+::string {\bfseries K\+E\+Y\+\_\+\+H\+E\+I\+G\+HT} = \char`\"{}height\char`\"{}\hypertarget{classutil_1_1Parser_a819fb19f3d743320864fcc125b9c40eb}{}\label{classutil_1_1Parser_a819fb19f3d743320864fcc125b9c40eb}
 
 \item 
-static const std\+::string {\bfseries K\+E\+Y\+\_\+\+D\+E\+P\+TH}\hypertarget{classutil_1_1Parser_a4add600ddc8287c10285bbae8ccd4ef1}{}\label{classutil_1_1Parser_a4add600ddc8287c10285bbae8ccd4ef1}
+static const std\+::string {\bfseries K\+E\+Y\+\_\+\+D\+E\+P\+TH} = \char`\"{}depth\char`\"{}\hypertarget{classutil_1_1Parser_a4add600ddc8287c10285bbae8ccd4ef1}{}\label{classutil_1_1Parser_a4add600ddc8287c10285bbae8ccd4ef1}
 
 \item 
 static const std\+::string {\bfseries K\+E\+Y\+\_\+\+A\+N\+G\+LE} = \char`\"{}angle\char`\"{}\hypertarget{classutil_1_1Parser_a03362a18612fcb3ca7c01cfcb6652521}{}\label{classutil_1_1Parser_a03362a18612fcb3ca7c01cfcb6652521}

+ 10 - 4
Documentation/latex/classutil_1_1Visualizer.tex

@@ -7,7 +7,7 @@
 \subsection*{Public Member Functions}
 \begin{DoxyCompactItemize}
 \item 
-void \hyperlink{classutil_1_1Visualizer_a545d2f4aae7c3c54ecaee51461980036}{Display} (std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks, std\+::string image\+\_\+folder, bool output, std\+::string output\+\_\+path, std\+::string title=\char`\"{}Visualizer\char`\"{}, size\+\_\+t first\+\_\+frame=0, int play\+\_\+fps=24, int grid\+\_\+width=0, int grid\+\_\+height=0)
+void \hyperlink{classutil_1_1Visualizer_a5168d3347dd28217a0e9bb6541fa38f3}{Display} (std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks, size\+\_\+t frame\+\_\+offset, std\+::string image\+\_\+folder, bool output, std\+::string output\+\_\+path, std\+::string title=\char`\"{}Visualizer\char`\"{}, size\+\_\+t first\+\_\+frame=0, int play\+\_\+fps=24, bool show\+\_\+grid=false, int grid\+\_\+width=0, int grid\+\_\+height=0)
 \end{DoxyCompactItemize}
 
 
@@ -17,25 +17,29 @@ Utility class for visualizing detection sequences or tracks.
 \subsection{Member Function Documentation}
 \index{util\+::\+Visualizer@{util\+::\+Visualizer}!Display@{Display}}
 \index{Display@{Display}!util\+::\+Visualizer@{util\+::\+Visualizer}}
-\subsubsection[{\texorpdfstring{Display(std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks, std\+::string image\+\_\+folder, bool output, std\+::string output\+\_\+path, std\+::string title=""Visualizer"", size\+\_\+t first\+\_\+frame=0, int play\+\_\+fps=24, int grid\+\_\+width=0, int grid\+\_\+height=0)}{Display(std::vector< core::TrackletPtr > \&tracks, std::string image\_folder, bool output, std::string output\_path, std::string title="Visualizer", size\_t first\_frame=0, int play\_fps=24, int grid\_width=0, int grid\_height=0)}}]{\setlength{\rightskip}{0pt plus 5cm}void util\+::\+Visualizer\+::\+Display (
+\subsubsection[{\texorpdfstring{Display(std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&tracks, size\+\_\+t frame\+\_\+offset, std\+::string image\+\_\+folder, bool output, std\+::string output\+\_\+path, std\+::string title=""Visualizer"", size\+\_\+t first\+\_\+frame=0, int play\+\_\+fps=24, bool show\+\_\+grid=false, int grid\+\_\+width=0, int grid\+\_\+height=0)}{Display(std::vector< core::TrackletPtr > \&tracks, size\_t frame\_offset, std::string image\_folder, bool output, std::string output\_path, std::string title="Visualizer", size\_t first\_frame=0, int play\_fps=24, bool show\_grid=false, int grid\_width=0, int grid\_height=0)}}]{\setlength{\rightskip}{0pt plus 5cm}void util\+::\+Visualizer\+::\+Display (
 \begin{DoxyParamCaption}
 \item[{std\+::vector$<$ core\+::\+Tracklet\+Ptr $>$ \&}]{tracks, }
+\item[{size\+\_\+t}]{frame\+\_\+offset, }
 \item[{std\+::string}]{image\+\_\+folder, }
 \item[{bool}]{output, }
 \item[{std\+::string}]{output\+\_\+path, }
 \item[{std\+::string}]{title = {\ttfamily \char`\"{}Visualizer\char`\"{}}, }
 \item[{size\+\_\+t}]{first\+\_\+frame = {\ttfamily 0}, }
 \item[{int}]{play\+\_\+fps = {\ttfamily 24}, }
+\item[{bool}]{show\+\_\+grid = {\ttfamily false}, }
 \item[{int}]{grid\+\_\+width = {\ttfamily 0}, }
 \item[{int}]{grid\+\_\+height = {\ttfamily 0}}
 \end{DoxyParamCaption}
-)}\hypertarget{classutil_1_1Visualizer_a545d2f4aae7c3c54ecaee51461980036}{}\label{classutil_1_1Visualizer_a545d2f4aae7c3c54ecaee51461980036}
-Displays the given tracks in an window. Use D for next frame, A for previous frame, F to toggle auto play and E\+SC to exit. If a grid size greater zero is specified a grid will be overlayed.
+)}\hypertarget{classutil_1_1Visualizer_a5168d3347dd28217a0e9bb6541fa38f3}{}\label{classutil_1_1Visualizer_a5168d3347dd28217a0e9bb6541fa38f3}
+Displays the given tracks in an window. Use D for next frame, A for previous frame, F to toggle auto play and E\+SC to exit. If a grid size greater zero is specified a grid will be drawn.
 
 
 \begin{DoxyParams}{Parameters}
 {\em tracks} & The tracks to display \\
 \hline
+{\em frame\+\_\+offset} & The offset of the first frame \\
+\hline
 {\em image\+\_\+folder} & The images to use \\
 \hline
 {\em output} & If the frames with the visualized tracks should be stored \\
@@ -48,6 +52,8 @@ Displays the given tracks in an window. Use D for next frame, A for previous fra
 \hline
 {\em play\+\_\+fps} & The F\+PS to use when auto play is activated \\
 \hline
+{\em show\+\_\+grid} & If a grid should be shown \\
+\hline
 {\em grid\+\_\+width} & The number of cells in a row \\
 \hline
 {\em grid\+\_\+height} & The number of cells in a column \\

+ 1 - 0
Documentation/latex/hierarchy.tex

@@ -3,6 +3,7 @@ This inheritance list is sorted roughly, but not completely, alphabetically\+:\b
 \item \contentsline{section}{algo\+:\+:Berclaz}{\pageref{classalgo_1_1Berclaz}}{}
 \item \contentsline{section}{core\+:\+:Detection\+Sequence}{\pageref{classcore_1_1DetectionSequence}}{}
 \item \contentsline{section}{util\+:\+:File\+IO}{\pageref{classutil_1_1FileIO}}{}
+\item \contentsline{section}{util\+:\+:Filter2D}{\pageref{classutil_1_1Filter2D}}{}
 \item \contentsline{section}{util\+:\+:Grid}{\pageref{classutil_1_1Grid}}{}
 \item \contentsline{section}{algo\+:\+:K\+Shortest\+Paths}{\pageref{classalgo_1_1KShortestPaths}}{}
 \item \contentsline{section}{util\+:\+:Logger}{\pageref{classutil_1_1Logger}}{}

+ 1 - 0
Documentation/latex/refman.tex

@@ -146,6 +146,7 @@
 \input{classalgo_1_1Berclaz}
 \input{classcore_1_1DetectionSequence}
 \input{classutil_1_1FileIO}
+\input{classutil_1_1Filter2D}
 \input{classutil_1_1Grid}
 \input{classalgo_1_1KShortestPaths}
 \input{classutil_1_1Logger}

+ 1 - 0
algo/Berclaz.h

@@ -82,6 +82,7 @@ namespace algo
          * @param batch_size The number of frames one batch will have at maximum
          * @param max_track_count The maximum number of tracks to extract
          * @param tracks The vector to store the found tracks into
+         * @param filter The filter used to convolve the detections in the grid
          */
         void Run(core::DetectionSequence & sequence, size_t batch_size,
                  size_t max_track_count, std::vector<core::TrackletPtr> & tracks,

+ 16 - 0
core/ObjectData2D.cpp

@@ -8,6 +8,8 @@
 namespace core
 {
     const std::string ObjectData2D::CONSTRAINT_DISTANCE_EUCLID = "distance_euclid";
+    const std::string ObjectData2D::CONSTRAINT_X_DIFFERENCE = "x_difference";
+    const std::string ObjectData2D::CONSTRAINT_Y_DIFFERENCE = "y_difference";
 
     ObjectData2D::ObjectData2D(size_t frame_index, cv::Point2d position)
             : ObjectData(frame_index),
@@ -61,6 +63,20 @@ namespace core
 
         ObjectData2DPtr obj_2d = std::static_pointer_cast<ObjectData2D>(obj);
 
+        if (constraints.count(CONSTRAINT_X_DIFFERENCE) > 0) {
+            double x_difference = fabs(position_.x - obj_2d->position_.x);
+
+            if (x_difference > constraints[CONSTRAINT_X_DIFFERENCE])
+                return false;
+        }
+
+        if (constraints.count(CONSTRAINT_Y_DIFFERENCE) > 0) {
+            double y_difference = fabs(position_.y - obj_2d->position_.y);
+
+            if (y_difference > constraints[CONSTRAINT_Y_DIFFERENCE])
+                return false;
+        }
+
         if (constraints.count(CONSTRAINT_DISTANCE_EUCLID) > 0) {
             double distance_euclid = util::MyMath::EuclideanDistance(position_, obj_2d->position_);
 

+ 2 - 0
core/ObjectData2D.h

@@ -19,6 +19,8 @@ namespace core
     {
     private:
         static const std::string CONSTRAINT_DISTANCE_EUCLID;
+        static const std::string CONSTRAINT_X_DIFFERENCE;
+        static const std::string CONSTRAINT_Y_DIFFERENCE;
 
         /**
          * The position in the two dimensional space

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä