Video 289
16.5 Video as Sensor, Computer Vision
Every example in this chapter has treated the video camera as a data source data for digital imagery
displayed onscreen. is section will provide a simple introduction to things you can do with a video
camera when you do not display the image, that is, “ computer vision. ” Computer vision is a scientifi c
fi eld of research dedicated to machines that see , using the camera as a sensor.
In order to better understand the inner workings of computer vision algorithms, we will write all of the
code ourselves on a pixel by pixel level. However, to explore these topics further, you might consider
downloading some of the third party computer vision libraries that are available for Processing. Many of
these libraries have advanced features beyond what will be covered in this chapter. A brief overview of the
libraries will be off ered at the end of this section.
Let’s begin with a simple example.
e video camera is our friend because it provides a ton of information. A 320 240 image is 76,800
pixels! What if we were to boil down all of those pixels into one number: the overall brightness of a
room? is could be accomplished with a one dollar light sensor (or “ photocell ” ), but as an exercise we
will make our webcam do it.
We have seen in other examples that the brightness value of an individual pixel can be retrieved with the
brightness( ) function, which returns a fl oating point number between 0 and 255. e following line of
code retrieves the brightness for the fi rst pixel in the video image.
float brightness = brightness(video.pixels[0]);
We can then compute the overall (i.e., average) brightness by adding up all the brightness values and
dividing by the total number of pixels.
video.loadPixels();
// Start with a total of 0
float totalBrightness = 0;
// Sum the brightness of each pixel
for (int i = 0; i < video.pixels.length; i + + ){
color c = video.pixels[i];
totalBrightness + = brightness(c);
}
// Compute the average
float averageBrightness =
// Display the background as average brightness
background(averageBrightness);
Before you start to cheer too vigorously from this accomplishment, while this example is an excellent
demonstration of an algorithm that analyzes data provided by a video source, it does not begin to harness
the power of what one can “ see ” with a video camera. After all, a video image is not just a collection of
colors, but it is a collection of spatially oriented colors. By developing algorithms that search through the
pixels and recognize patterns, we can start to develop more advanced computer vision applications.
Sum all brightness values.
Average brightness total
brightness / total pixels
totalBrightness / video.pixels.length;