Getting started in ComputerVision/Road Tracking
I want to develop a system that can track and follow a road. Initially, I'd like to handle well-defined roads only and maybe later incorporate tracking for开发者_StackOverflow中文版 roads that aren't so well defined.
The problem I'm facing is that I don't know where to get started. I am new to image processing and I was hoping I could get some pointers on where to start off and what books to read on the subject. I am an 'experienced' programmer (I can program in C and Python fairly well, and can handle C++ and Objective-C), so the code itself isn't that big of an issue - its just "where do I start? what do I read?" thats confusing me. I am also open on learning another language if it helps me in anyway.
I'll appreciate any pointers/suggestions regarding this.
You might want to at least start with OpenCV.
I do not know your level in mathematics at all. The "Handbook of Mathematical Models in Computer Vision" is a very good reference on my mind. You should take a look at the "google books" version.
For a hands-on: Learning OpenCV: Computer Vision with the OpenCV Library by Gary Bradski and Adrian Kaehler. This book will give you a nice introduction to a lot of CV topics, references to go further and code examples using OpenCV, probably the most used computer vision library nowadays (recently, NVidia announced porting part of the code to their GPUs). OpenCV presents C, C++ and Python APIs.
Gonzalez and Woods' Digital Image Processing is a nice companion of image processing techniques.
Update I forgot the hot new Szelisk's book. There is a free (and good) draft available!
The wikipedia page for computer vision is quite good: http://en.wikipedia.org/wiki/Computer_vision you can get a lot of pointers to relevant topics there.
From a very high-level standpoint, you may find it interesting to check out the PBS Nova episode, The Great Robot Race.
The winning team used a combination of visual analysis with cameras, as well as laser range finders. The lasers were great, but only for very short (<100ft) distances. They used the laser to figure out where the road was, and what color it was. From there the camera was used to color match where the road might be off in the distance.
The problem you face is video tracking, specifically, rigid object tracking (which means your object is not deformable). There are various approaches to the problem. Depending on your data, you might want to use feature/blob tracking approach or optical flow.
I suppose optical flow is a good point to start. There are two basic algorithms: By Horn & Shunk and Lucas & Kanade. One of the best state-of-the-art methods is by D.Sun (paper and MATLAB code), he also gives a comprehensive analysis of the previous work.
Once you compute optical flow, you are able to track any point in neighbouring frames. To make it more robust, one can use the particle video paradigm by P.Sand. Although it might be an overkill for your problem (smth like SLAM, right?), you are likely to end up with a simple method.
精彩评论