.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "debian::manpages::puzzle_set 3" .TH debian::manpages::puzzle_set 3 "" "" "" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "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 .SH "SYNOPSIS" .IX Header "SYNOPSIS" #include .PP int puzzle_set_max_width(PuzzleContext *\fIcontext\fR, unsigned int \fIwidth\fR); .PP int puzzle_set_max_height(PuzzleContext *\fIcontext\fR, unsigned int \fIheight\fR); .PP int puzzle_set_lambdas(PuzzleContext *\fIcontext\fR, unsigned int \fIlambdas\fR); .PP int puzzle_set_p_ratio(PuzzleContext *\fIcontext\fR, double \fIp_ratio\fR); .PP int puzzle_set_noise_cutoff(PuzzleContext *\fIcontext\fR, double \fInoise_cutoff\fR); .PP int puzzle_set_contrast_barrier_for_cropping(PuzzleContext *\fIcontext\fR, double \fIbarrier\fR); .PP int puzzle_set_max_cropping_ratio(PuzzleContext *\fIcontext\fR, double \fIratio\fR); .PP int puzzle_set_autocrop(PuzzleContext *\fIcontext\fR, int \fIenable\fR); .SH "DESCRIPTION" .IX Header "DESCRIPTION" While default values have been chosen to be ok for most people, the \fBpuzzle_set_*()\fR functions are knobs to fit the algorithm to your set of data and to your applications. .SH "LAMBDAS" .IX Header "LAMBDAS" By default, pictures are divided in 9 x 9 blocks. .PP \&\fI9\fR is the \fIlambdas\fR value, and it can be changed with \fB\fBpuzzle_set_lambdas()\fB\fR. .PP 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 \fI11\fR or even \fI13\fR. .PP However, raising that value obviously means that vectors will require more storage space. .PP The \fIlambdas\fR value should remain the same in order to get comparable vectors. So if you pick \fI11\fR (for instance), you should always use that value for all pictures you will compute a digest for \fB\fBpuzzle_set_p_ratio()\fB\fR. .PP The average intensity of each block is based upon a small centered zone. .PP The \fI\*(L"p ratio\*(R"\fR determines the size of that zone. The default is 2.0, and that ratio mimics the behavior that is described in the reference algorithm. .PP 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 \fI1.5\fR. .PP The lowest acceptable value is \fI1.0\fR. .SH "MAXIMUM SIZES" .IX Header "MAXIMUM SIZES" In order to avoid \s-1CPU\s0 starvation, pictures won't be processed if their width or height is larger than 3000 pixels. .PP These limits are rather large, but if you ever need to change them, the \fB\fBpuzzle_set_max_width()\fB\fR and \fB\fBpuzzle_set_max_height()\fB\fR are available. .SH "NOISE CUTOFF" .IX Header "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. .PP Unless you have very specialized sets of pictures, you probably don't want to change this. .SH "AUTOCROP" .IX Header "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. .PP That feature can be disabled with \fB\fBpuzzle_set_autocrop\fB\|(0)\fR, any other value will enable it. .PP \&\fB\fBpuzzle_set_contrast_barrier_for_cropping()\fB\fR changes the tolerance. The default value is 5. Less shaves less, more shaves more. .PP \&\fB\fBpuzzle_set_max_cropping_ratio()\fB\fR : this is a safe-guard against unwanted excessive auto-cropping. .PP The default (0.25) means that no more than 25% of the total width (or height) will ever be shaved. .SH "RETURN VALUE" .IX Header "RETURN VALUE" Functions return \fI0\fR on success, and \fI\-1\fR if something went wrong. .SH "AUTHORS" .IX Header "AUTHORS" Frank \s-1DENIS\s0 libpuzzle at pureftpd dot org .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBlibpuzzle\fR\|(3), \fBpuzzle\-diff\fR\|(8)