The vision software comes with is an image database system, a searchable storage of visual information about objects, optimized for object identification and content-based image retrieval applications. The database stores visual information about physical rigid objects. Every object is described by one or more images of the object's facets. Having an image of a facet, the system builds a unique "fingerprint" of the image, called a model. There is a one-to-many relationship between objects and their models ("fingerprints").
The objects must have enough texture or labels which would allow identification of the object. Sample suitable objects are books, boxes, magazines, furniture items, buildings, rooms, home appliances, toys, landmarks for aerial navigation, pictures on the walls, and so on. The image database does not store raw images; instead, the system creates a unique "fingerprint" of an image and stores it in a tree-like indexed data structure optimized for fast searches. When recognizing objects shown on a given image, the system uses the indexed "fingerprint" information about all known objects for identifying which objects are shown on the image.
To enable the system to recognize an object from various angles, it might be necessary to take a picture of every side/facet and load those images into the database. For example, if an object is a book, it might be required to take pictures of the book's front cover as well as back cover in order to help the vision system recognize the book from various angles of view. The system assigns a unique ID to every object loaded into the database (Object ID). An object can have one or more models associated with it. A model represents a particular facet/side of an object. The image database stores unique "fingerprints" of every model. The image database assigns a unique ID to every model of every object.
An object recognition algorithm used by the image database system is of a logarithmic complexity. This means that recognition time does not increase much when additional objects are added into the database. For example, if the number of models stored in the database is doubled, the average recognition time would only increase by about 30%. This rule is valid for relatively large databases (e.g. hundreds or thousands of objects). If a database contains just several objects, the performance might not be noticeably affected at all after the number of objects has been doubled.