Artificial vision for an android robot

Principles and frameworks to give a robot the ability to interact with its environment.

Our humanoid robot will be functional only when it has at least an arm and a prehensile hand and a vision system that can be based in a primary way on a shooting device, coupled to a software for image processing.

Principles of computer vision

This vision system must be able to accomplish a set of tasks...

To do this, it must have the following resources...

Some of these resources may be provided by existing frameworks.

Frameworks to artificial vision

OpenCV

Open source under the BSD license.

It offers a number of algorithms to identify objects and put them in predefined classes such as people, faces, car, house etc...

Example of use:

Works with programs writen in C++, Java and Python on Windows, Linux, Android, iOS. The file size to download is 350 megs.

SimpleCV.

Framework to build applications using artificial vision. It is based on OpenCV and thus constitutes an interface to a simplified use of the latter.
It has a JavaScript and CoffeScript version, SimpleCV-JS. It works with Node.js. The demonstration is barely amazing, you will need to make you opinion by you own experience.

FastCV

Library provided by Qualcomm, the maker of processors. This computer vision-based module works with another module for augmented reality by the same author, and is designed for mobiles but could also suit robots as long as they use ARM processors.
Its features:

This program requires Java and the Android SDK to work as well as development tools for the latter.

LibCCV

Specializing in computer vision, as opposed to OpenCV, it proposes a set of algorithms for object recognition.

So another easier than OpenCV but less comprehensive alternative.

VXL

C++ libraries for computer vision. It is composed of several independent and lightweight modules.

Cambridge Video Dynamics/LibCVD

Library of C functions for computer vision and other image processing. LGPL license, runs on Windows and Linux.

These programs are all based on algorithms and it seems that imperative programming is most commonly used for this type of processing to date. This does not exempt to consider other modes, based on different programming paradigms, facilitating machine learning. Declarative programming is particularly suitable to describe an environment and reactive programming for a system of interacting objects.