When Dan Ingalls and a group of researchers created the BitBlt routine for the Xerox Alto computer in 1975 at Xerox PARC, that set the stage for the invention of several important computer technologies. A couple of them are obvious, the modern bitmap display for which BitBlt was intended and laser printers, but BitBlt is also for image manipulation in other ways. One of these applications is robotic vision, where images are gathered from sensors and then manipulated. This demo shows a very low level version of how images may be combined mathematically:
In the demo, you’ll see that two image frames are gathered from a web cam, and then combined with the result placed onto a destination image. The combination of the frames is done using simple computer operations (bitwise AND, OR, XOR, ABSOLUTE DIFFERENCE) on corresponding pixels. Modern GPUs are able to do this in operation in parallel, that is, all the pixels from the two source images are combined using the indicated operation all at the same time.
The applications are many and varied. One example is what is called absolute difference, where consecutive frames can be compared to see what has changed. This can be useful in many circumstances, I’m sure you can think of how a robot might find it useful to see what’s changing in their environment when they’re navigating from place to place.
The demo itself is a slightly modified version of an example from Kyle McDonald’s openFrameworks add-on ofxCV package. ofxCV acts as a wrapper to interface with the NVIDIA accelerated OpenCV implementation on the Jetson TK1. OpenFrameworks has built in Gstreamer support which I used to grab the video from a Logitech c920 webcam.
Oh, and I got to play my guitar, which is always fun.