NAME¶
puzzle_set_max_width, puzzle_set_max_height, puzzle_set_lambdas,
puzzle_set_p_ratio, puzzle_set_noise_cutoff,
puzzle_set_contrast_barrier_for_cropping, puzzle_set_max_cropping_ratio,
puzzle_set_autocrop - set tunables for libpuzzle functions
SYNOPSIS¶
#include <puzzle.h>
int puzzle_set_max_width(PuzzleContext *
context, unsigned int
width);
int puzzle_set_max_height(PuzzleContext *
context, unsigned int
height);
int puzzle_set_lambdas(PuzzleContext *
context, unsigned int
lambdas);
int puzzle_set_p_ratio(PuzzleContext *
context, double
p_ratio);
int puzzle_set_noise_cutoff(PuzzleContext *
context, double
noise_cutoff);
int puzzle_set_contrast_barrier_for_cropping(PuzzleContext *
context,
double
barrier);
int puzzle_set_max_cropping_ratio(PuzzleContext *
context, double
ratio);
int puzzle_set_autocrop(PuzzleContext *
context, int
enable);
DESCRIPTION¶
While default values have been chosen to be ok for most people, the
puzzle_set_*() functions are knobs to fit the algorithm to your set of
data and to your applications.
LAMBDAS¶
By default, pictures are divided in 9 x 9 blocks.
9 is the
lambdas value, and it can be changed with
puzzle_set_lambdas() .
For large databases, for complex images, for images with a lot of text or for
sets of near-similar images, it might be better to raise that value to
11 or even
13.
However, raising that value obviously means that vectors will require more
storage space.
The
lambdas value should remain the same in order to get comparable
vectors. So if you pick
11 (for instance), you should always use that
value for all pictures you will compute a digest for
puzzle_set_p_ratio() .
The average intensity of each block is based upon a small centered zone.
The
"p ratio" determines the size of that zone. The default is
2.0, and that ratio mimics the behavior that is described in the reference
algorithm.
For very specific cases (complex images) or if you get too many false positives,
as an alternative to increasing lambdas, you can try to lower that value, for
instance to
1.5.
The lowest acceptable value is
1.0.
MAXIMUM SIZES¶
In order to avoid CPU starvation, pictures won't be processed if their width or
height is larger than 3000 pixels.
These limits are rather large, but if you ever need to change them, the
puzzle_set_max_width() and
puzzle_set_max_height() are available.
NOISE CUTOFF¶
The noise cutoff defaults to 2. If you raise that value, more zones with little
difference of intensity will be considered as similar.
Unless you have very specialized sets of pictures, you probably don't want to
change this.
AUTOCROP¶
By default, featureless borders of the original image are ignored. The size of
each border depends on the sum of absolute values of differences between
adjacent pixels, relative to the total sum.
That feature can be disabled with
puzzle_set_autocrop(0), any other value will
enable it.
puzzle_set_contrast_barrier_for_cropping() changes
the tolerance. The default value is 5. Less shaves less, more shaves more.
puzzle_set_max_cropping_ratio() : this is a
safe-guard against unwanted excessive auto-cropping.
The default (0.25) means that no more than 25% of the total width (or height)
will ever be shaved.
RETURN VALUE¶
Functions return
0 on success, and
-1 if something went wrong.
AUTHORS¶
Frank DENIS libpuzzle at pureftpd dot org
SEE ALSO¶
libpuzzle(3),
puzzle-diff(8)