I am really intrigued by the field of computer vision and the potential it has. Are there any examples (preferably implemented in .NET) which I can study along with a reference book?
Here's a large collection of code, toolkits, and apps you might find useful
There is the OpenCV project on sourceforge with a book that you can get as well. You can see it here. However, that is not a .NET solution it is C
OpenCV (Open Computer Vision) is the most popular library, and it has been wrapped for C#:
http://www.codeproject.com/KB/cs/Intel_OpenCV.aspx
Some discussion about this wrapper and the library in general is here:
http://coolthingoftheday.blogspot.com/2008/08/opencv-open-source-computer-vision-for.html
I recommend Open Computer Vision Library. It's much spoken of and looks promising. It even has an O'Reilly accompanying book :)
The Open Computer Vision Library has > 500 algorithms, documentation and sample code for real time computer vision. Tutorial documentation is in O'Reilly Book
I've done a bit of work with SIFT in the recent past and it seems to be a rather interesting modern algorithm for feature detection), which is one of the major (and perhaps more advanced) topics within machine vision. Someone has written a C# library for SIFT with a pretty nice example that can automatically stitch together separate photographs of the same scene. Admittedly, this isn't a very complete answer, and I can't recommend a reference book, but hopefully it should be of some use to you anyway...
You could start by looking at some of the similar questions on this site:
- where-do-i-start-learning-about-image-processing-and-object-recognition
- image-processing-textbook
- computer-vision-reference
I can also look at these two sites:
- http://www.cs.cmu.edu/afs/cs/project/cil/ftp/html/vision.html
- http://www.cs.cf.ac.uk/Dave/Vision_lecture/Vision_lecture_caller.html
The sites provide information, tutorials and code examples, even though they are not actively maintained anymore.
While the OpenCV library is interesting to use, it doesn't offer a lot of transparency as you learn. If you're interested in actually learning about the field, I would recommend looking into low-level image processing libraries and implementing your own Computer Vision applications. Once you've coded your own basic CV applications, using the OpenCV library becomes a lot easier. I would suggest the following topics to advance quickly through the basics:
- sobel operators for edge detection
- trying your hand at color segmentation
- reconstructing 3d information from stereo images using disparity maps
Here's a site with some good test images (http://www.cs.cmu.edu/~cil/v-images.html).
I also found a good resource of course slides that cover the majority of these topics at (http://www.cs.nott.ac.uk/~tpp/G5BVIS/lectures.html)
Happy hacking =)
Sample Vision Code
- Vision Source Code - Carnegie Mellon University
- Open Source Computer Vision Library - Sourceforge
- Computer Vision Test Images
- libsift - Scale-Invariant Feature Transform implementation
- C# wrapper for OpenCV
Resources
- Computer Vision "Home" - Carnegie Mellon University
- Lecture on Vision Systems - Cardiff School of Computer Science
- Lectures on Computer Vision Systems - The University of Nottingham Computer Science Department
- Feature Detection - Wikipedia Article
- Scale-Invariant Feature Transform - Wikipedia Article