The VIR Image Engine is an extensible framework for building content based
image retrieval systems.
A basic concept is that of a primitive, which denotes a feature's type,
computation and matching distance.
Five abstract data types are defined: global values and histograms, local
values and histograms, and graphs.
The VIR Image Engine provides a set of general primitives, such as global color, local color,
texture and shapes.
Appart from these, various domain specific primitives can be created when
developing an application.
When defining such a primitive, the developer supplies a function for computing
the primitive's feature data from the raw image.
The VIR Image Engine provides a set of GUI tools necessary for the development
of a user interface.
These include facilities for image insertion, image query, weight adjustment
for re-query, inclusion of keywords, and support for several popular image file formats.
Another available component, the query canvas, allows queries-by-sketch; it consists of a bitmap editor
where the user can sketch a picture with drawing tools and color it using the colors from a palette.
Also, the user can bring onto the canvas an image from an existing collection and
modify it using the same drawing tools.
Queries can be performed on various user-defined combinations of primitives.
When defining a new primitive, a function for computing the similarity between two sets
of feature data previously extracted must also be supplied by the developer.
When comparing two images, for each primitive in the current query combination, a similarity score is
computed using the distance function defined within the primitive. These individual scores
are combined in an overall score using a set of weights in a way characteristic to the
application. This score is then stored in a score structure,
which contains also the individual similarity scores for each primitive. This allows
a quick recomputation of the overall score for a new set of weights.
A sort of relevance feedback is obtained by searching for matches to a fixed query
image for different sets of weights.
The storage of feature data for all primitives is the responsibility of the
The system was integrated into databases from Sybase, Object Design, and
Objectivity, and added as a component to the Oracle DBMS.
Two applications of Virage technology are the
AltaVistaAltaVista Photofinder and Illustra's Visual Intelligence