  We aim to study the set of color sets of continuous regions of an image given
as a matrix of $m$ rows over $n\geq m$ columns where each element in the matrix
is an integer from $[1,\sigma]$ named a {\em color}.
  The set of distinct colors in a region is called fingerprint. We aim to
compute, index and query the fingerprints of all rectangular regions named
rectangles. The set of all such fingerprints is denoted by ${\cal F}$. A
rectangle is {\em maximal} if it is not contained in a greater rectangle with
the same fingerprint. The set of all locations of maximal rectangles is denoted
by $\mathcal{L}.$ We first explain how to determine all the $|\mathcal{L}|$
maximal locations with their fingerprints in expected time $O(nm^2\sigma)$
using a Monte Carlo algorithm (with polynomially small probability of error) or
within deterministic $O(nm^2\sigma\log(\frac{|\mathcal{L}|}{nm^2}+2))$ time. We
then show how to build a data structure which occupies $O(nm\log
n+\mathcal{|L|})$ space such that a query which asks for all the maximal
locations with a given fingerprint $f$ can be answered in time $O(|f|+\log\log
n+k)$, where $k$ is the number of maximal locations with fingerprint $f$. If
the query asks only for the presence of the fingerprint, then the space usage
becomes $O(nm\log n+|{\cal F}|)$ while the query time becomes $O(|f|+\log\log
n)$. We eventually consider the special case of squared regions (squares).
