Provided by: netpbm_10.97.00-2_amd64 bug

NAME

       pamtilt - print the tilt angle of a PGM file

SYNOPSIS

       pamtilt [-angle=maxangle] [-fast] [-quality=q] [-hstep=n] [-vstep=n] [-dstep=n] [-astep=n]
       [-verbose] [pgmfile]

EXAMPLES

           scanimage --mode Gray --resolution 300 >crooked.pgm
           pnmrotate -b white `pamtilt crooked.pgm` crooked.pgm >straight.pgm
           (then crop, threshold, etc.)

DESCRIPTION

       This program is part of Netpbm(1).

       pamtilt tries to find  the  correct  angle  for  untilting  (de-skewing)  a  scanned  text
       document.   The output is a single floating-point number (the angle in degrees) for use as
       the argument to pnmrotate.

       "Document skew" is the name given to what happens when you  feed  a  page  into  an  image
       scanner at an angle: the resulting image is tilted.  pamtilt aims to help correct that.

       pamtilt  makes  three  iterations  at  successively  finer increments, testing prospective
       rotation angles to find the best one.  pamtilt works best for  straightening  images  with
       strong  horizontal  lines  and  does  poorly  with  arbitrary  photos.   If pamtilt has no
       confidence in its results, it prints the special value 00.00; you can check  for  this  or
       just pass it as a legal argument to pnmrotate.

       pamtilt  operates  on  the first plane of the input image, which is either PNM or PAM, and
       ignores any other planes.  Ordinarily, the input is PGM or GRAYSCALE PAM, so there is only
       one plane.

       pamtilt  works  on  bilevel  (PBM, BLACKANDWHITE PAM) images as well as grayscale, but you
       will minimize artifacts if you scan and rotate in grayscale before you apply  a  threshold
       to make a bilevel image.

OPTIONS

       In addition to the options common to all programs based on libnetpbm (most notably -quiet,
       see
        Common Options ⟨index.html#commonoptions⟩ ), pamtilt  recognizes  the  following  command
       line options:

       -angle=maxangle
              Assume  a  maximum tilt angle of maxangle (measured in degrees).  The default value
              is sufficient for most images, even those scanned somewhat carelessly.

              The default is 10.0.

       -fast  Skip the third iteration for speed at the expense of accuracy.

       -verbose
              Show on Standard Error the measurements computed at each tested angle.

       Here are some other options you can use to tune  the  operation  of  pamtilt  but  they're
       seldom needed.  The default values accommodate a wide variety of input documents.

       -quality=q
              Require  a  signal-to-noise  ratio  of a least q on the first iteration to report a
              valid result.  Larger values reduce the chances of obtaining a bogus result at  the
              risk of obtaining no result at all.

              The default is 1.0.

       -hstep=n
              Set  the  horizontal  increment to check every nth column.  This value affects both
              run time and memory requirements.

              The default is 11.

       -vstep=n
              Set the vertical increment to check every nth row.   Larger  values  usually  work,
              reducing run time, but they increase the risk of incorrect results.

              The default is 5.

       -dstep=n
              Set  the  vertical  distance used when checking pixels in a column.  The default is
              intended to minimize the effect of noise along a horizontal boundary.

              The default is 2.

       -astep=n
              Set the angle increment of the first iteration, in degrees.

              The default is 1.0.

REFERENCES

       pamtilt implements a somewhat simplified algorithm inspired by: "Measuring Document  Image
       Skew  and  Orientation",  by  Bloomberg, Kopec, and Dasari.  In SPIE Volume 2422, Document
       Recognition II, pages 302-316, February 1995.

SEE ALSO

pnmrotate(1)

       •

              pgm(1)

HISTORY

       pamtilt was new in Netpbm 10.30 (October 2005).

       Gregg Townsend wrote it and sent it to Bryan Henderson in August 2005.  Bryan  recoded  it
       to fit Netpbm conventions.

DOCUMENT SOURCE

       This  manual page was generated by the Netpbm tool 'makeman' from HTML source.  The master
       documentation is at

              http://netpbm.sourceforge.net/doc/pamtilt.html