Video-based transportation data collection : Différence entre versions
m |
|||
Ligne 1 : | Ligne 1 : | ||
− | + | ==Methods for detection and tracking of road users== | |
− | + | * '''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 | |
− | + | ||
− | + | ||
- 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. | ||
− | + | ||
+ | |||
+ | ==Installation== | ||
+ | *OpenCV: http://opencv.willowgarage.com/wiki/InstallGuide | ||
+ | *Traffic Intelligence: Coming soon | ||
==Resources== | ==Resources== |
Version du 12 octobre 2011 à 11:10
Sommaire
Methods for detection and tracking of road users
- 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 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
- OpenCV: http://opencv.willowgarage.com/wiki/InstallGuide
- Traffic Intelligence: Coming soon
Resources
- Open source computer vision projects
- OpenCV http://opencv.willowgarage.com/wiki/
- http://code.google.com/p/opencv-feature-tracker/ (Warning: many bugs, not a good basis to build upon)
- https://bitbucket.org/Nicolas/trafficintelligence
- https://bitbucket.org/trajectories/trajectorymanagementandanalysis
- Version Control http://mercurial.selenic.com/
- C++