Video-based transportation data collection : Différence entre versions

De Transport
m
Ligne 1 : Ligne 1 :
Because I am relying on OpenCV http://opencv.willowgarage.com/wiki/ for computer vision functionality, and because C++ is fast, the previous software was written in C++. For the same reasons, the core most computationally intensive functions should be written in C++ (although the python wrappers look nicer and nicer).
+
==Methods for detection and tracking of road users==
  
I have started a wiki page with some resources on the project: http://wiki.polymtl.ca/transport/index.php/FeatureBasedTracking. It was meant for a potential collaboration with Carleton and for a student I am currently working with (he finishes at the end of August and I am not sure yet that we will build upon what he did). There are resources and recommendations. If you are not familiar with any of the following topic, please read more:
+
* '''Feature-based tracking''' is the main and a relatively easy detection and tracking algorithm
 +
** my paper http://n.saunier.free.fr/saunier/stock/saunier06feature-based.pdf and the paper it is based upon http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.49.599&rep=rep1&type=pdf
 +
** Some slightly older information http://wiki.polymtl.ca/transport/index.php/FeatureBasedTracking
 +
* '''Background subtraction''': the most common method is based on a mixture of Gaussians and available in OpenCV http://www.ai.mit.edu/projects/vsam/Publications/stauffer_cvpr98_track.pdf; lit review in http://staff.it.uts.edu.au/~massimo/BackgroundSubtractionReview-Piccardi.pdf
 +
* '''Object detection/classification''': http://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf, available in OpenCV, which can be used for tracking by detection, e.g. in http://www.vision.ee.ethz.ch/showroom/tracking/
 +
 
 +
==Software Development==
 +
 
 +
Because I am relying on [http://opencv.willowgarage.com/wiki/ OpenCV]  for computer vision functionality, and because C++ is fast, the previous software was written in C++. For the same reasons, the core most computationally intensive functions should be written in C++ (although the python wrappers are more and more usable). The most up to date documentation is at http://opencv.itseez.com.
 +
 
 +
The platform of choice for development is Linux (e.g. the [http://www.ubuntu.com Ubuntu] distribution). I would like to have the code cross-platform, ie the C++ should compile at least under Windows and Linux, which is not too difficult if using the right tools (g++, make or CMake).
 +
 
 +
I am If you are not familiar with any of the following topic, please read more:
  
 
dedicated to developing quality software that can be easily maintained over the long term.  
 
dedicated to developing quality software that can be easily maintained over the long term.  
Ligne 14 : Ligne 26 :
  
 
- Test-driven development: writing tests takes a bit more time when developing, but helps in testing and ensures that the software still matches its specifications when refactoring later. I have used the Boost test library and it does the job http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/index.html, Google test is getting famous and is used in OpenCV.
 
- Test-driven development: writing tests takes a bit more time when developing, but helps in testing and ensures that the software still matches its specifications when refactoring later. I have used the Boost test library and it does the job http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/index.html, Google test is getting famous and is used in OpenCV.
 
+
* Computer vision algorithms: see above
- Computer vision algorithms: my paper http://n.saunier.free.fr/saunier/stock/saunier06feature-based.pdf and the paper it is based upon http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.49.599&rep=rep1&type=pdf
+
We are also interested in other techniques such as background subtraction (the most common method is based on a mixture of Gaussians and available in OpenCV http://www.ai.mit.edu/projects/vsam/Publications/stauffer_cvpr98_track.pdf; lit review in http://staff.it.uts.edu.au/~massimo/BackgroundSubtractionReview-Piccardi.pdf) and object detection/classification (http://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf, available in OpenCV) which can be used for tracking by detection (http://www.vision.ee.ethz.ch/showroom/tracking/).
+
  
 
- Python is nice for visualization, and the binding to OpenCV seem now pretty robust (less important)
 
- Python is nice for visualization, and the binding to OpenCV seem now pretty robust (less important)
Ligne 22 : Ligne 32 :
 
I would like to make use of a project I supervised in the Google Summer of Code 2010 on a library for trajectory management, with I/O functions and a lot of distances implemented (https://bitbucket.org/trajectories/trajectorymanagementandanalysis). I also have a preliminary open source project at https://bitbucket.org/Nicolas/trafficintelligence/wiki/Home, but it has very little in computer vision.
 
I would like to make use of a project I supervised in the Google Summer of Code 2010 on a library for trajectory management, with I/O functions and a lot of distances implemented (https://bitbucket.org/trajectories/trajectorymanagementandanalysis). I also have a preliminary open source project at https://bitbucket.org/Nicolas/trafficintelligence/wiki/Home, but it has very little in computer vision.
  
In term of platform, I would like to have the code cross-platform, ie the C++ should compile at least under Windows and Linux, which is not too difficult if using the right tools (g++, make or CMake, which I haven't delved into yet).
+
 
 +
 
 +
==Installation==
 +
*OpenCV: http://opencv.willowgarage.com/wiki/InstallGuide
 +
*Traffic Intelligence: Coming soon
  
 
==Resources==
 
==Resources==

Version du 12 octobre 2011 à 11:10

Methods for detection and tracking of road users

Software Development

Because I am relying on OpenCV for computer vision functionality, and because C++ is fast, the previous software was written in C++. For the same reasons, the core most computationally intensive functions should be written in C++ (although the python wrappers are more and more usable). The most up to date documentation is at http://opencv.itseez.com.

The platform of choice for development is Linux (e.g. the Ubuntu distribution). I would like to have the code cross-platform, ie the C++ should compile at least under Windows and Linux, which is not too difficult if using the right tools (g++, make or CMake).

I am If you are not familiar with any of the following topic, please read more:

dedicated to developing quality software that can be easily maintained over the long term.

- C++ The faq lite is a great resource http://www.parashift.com/c++-faq-lite/ I recommend the use of smart pointers for ease of memory management (avoiding memory leaks in a program meant to process hours of video without crashing is essential) See Boost shared pointers http://www.boost.org/doc/libs/1_46_1/libs/smart_ptr/smart_ptr.htm

- Version Control: I refuse to work in teams without software version control. I use mercurial which has a fairly low barrier to entry and good documentation. http://mercurial.selenic.com/

- Test-driven development: writing tests takes a bit more time when developing, but helps in testing and ensures that the software still matches its specifications when refactoring later. I have used the Boost test library and it does the job http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/index.html, Google test is getting famous and is used in OpenCV.

  • Computer vision algorithms: see above

- Python is nice for visualization, and the binding to OpenCV seem now pretty robust (less important)

I would like to make use of a project I supervised in the Google Summer of Code 2010 on a library for trajectory management, with I/O functions and a lot of distances implemented (https://bitbucket.org/trajectories/trajectorymanagementandanalysis). I also have a preliminary open source project at https://bitbucket.org/Nicolas/trafficintelligence/wiki/Home, but it has very little in computer vision.


Installation

Resources