This is an introduction to computer vision. This module provides an overview of the issues in machine visual perception. When completed, the reader should be ready to write robotics controllers that use a camera and image processing.
Computer vision is the name given to the processing of images by a computer. While it seems incredibly easy for you to interpret what you see, such as identifying all of the cars in a scene, it is quite difficult for a computer. Why? Consider a chair. How do you know that something is a chair? Is it something that you can sit on? Yes, but you could also sit on the floor or a table top. Does a chair have a flat surface mounted to four legs? Some do, but what about a bean bag chair? From an early age, a child can tell you if something is a chair or not; however, even the most sophisticated computer vision system would not be able to match a child's ability.
Fortunately, we will not need our robots to consider what makes a chair a chair. We'd like to be able to recognize a chair as an obstacle or as something that we're navigating toward, but it doesn't matter what it is called.
In this module, we'll learn how to process camera images using Pyro, then use the results to guide the robot.
Pyro has 7 types of cameras, but they all come through the same interface. Therefore, all of the camera types can be treated exactly the same. The camera types are:
Aibo Camera: used with the Sony Aibo (jpeg over wireless)
Blob Camera: used with Stage Simulator (created from blob data)
Fake Camera: created from a list of PPM files in a directory
Player Camera: used with Gazebo (creates images from Open GL data)
V4L Camera: Video For Linux (most real cameras under Linux)
Robocup Camera: simulated vision (created from locations in world)
BT848 Camera: older camera, before V4L (old Pioneers)