Self-motion estimation is a vital problem for autonomous robots, frequently and appropriately addressed by vision algorithms.Most approaches involve repeating some local calculation over the entire imaging array, such as detection of locally salient features.A simple and local calculation can be efficiently implemented on the same chip as the photo-sensing array, thus parallelizing a huge computational task and vastly reducing the amount of data to transmit off chip.Mismatch between devices has previously been a stumbling block to producing truly useful arrays of local processing elements.Floating gate technology is used here as a compact means of programming away offsets in subcircuits to remedy this problem.A custom analog chip performs the above functions.For each pixel, the chip outputs sensed light intensity, the values of the vertical and horizontal intensity gradients, and a binary value indicating whether a feature is centered on that pixel. These values can be used as inputs to a motion estimation algorithm implemented on a standard computer.