pamthreshold

Updated: 12 May 2006
Table Of Contents

NAME

pamthreshold - threshold grayscale image to black and white

SYNOPSIS

pamthreshold [-simple] [-local=widthxheight] [-dual=widthxheight] [-threshold=threshold] [-contrast=threshold] [inputpamfile]

Minimum unique abbreviation of options is acceptable. You may use double hyphens instead of a single hyphen to denote options. You may use white space in place of the equals sign to separate an option name from its value.

DESCRIPTION

This program is part of Netpbm.

pamthreshold thresholds a grayscale image. Thresholding means dividing the image into background and foreground by comparing every pixel to a thresholding value.

The input should be a PGM image or a PAM image of tuple type GRAYSCALE. However, pamthreshold doesn't check; it just thresholds the first channel as if it were grayscale samples. So if you feed it e.g. a PPM image, it will work but produce probably useless results.

The output is a PAM with tuple type BLACKANDWHITE. You can turn this into a PBM (if you need to use it with an older program that doesn't understand PAM) with pamtopnm.

The output is to Standard Output.

Another way to convert a grayscale image to black and white is to dither. Dithering is using clustered black and white pixels such that if you step back and look at the picture, you see varying levels of gray. pamditherbw does dithering.

OPTIONS

Without any options, pamthreshold uses an iterative algorithm found in the wikipedia article Thresholding (image processing) to compute the thresholding value. It uses this threshold to globally threshold the image. This should work well for most images. The program issues a message telling you what threshold it used. (Netpbm messages go to Standard Error, and you can turn them off with the Netpbm command option -quiet).

-simple
This selects simple or global thresholding, i.e. pamthreshold compares every pixel to the threshold you specify with -threshold. This works well for black and white text pages scanned with a flatbed scanner and is faster than the default method that iteratively determines the thresholding value first.
-local=widthxheight
This selects local adaptive thresholding (also known as dynamic thresholding) using the neighborhood of width and height around every pixel. pamthreshold computes the threshold individually for each pixel of the image. This can accommodate changing lighting conditions in the image. Depending on the size of the neighborhood this can be quite slow.
-dual=widthxheight
This selects a dual thresholding algorithm using a global threshold for low contrast neighborhoods and local thresholding otherwise. This can preserve larger back- respectively foreground areas than local adaptive thresholding. This algorithm was proposed in the paper "An Approach To Licence Plate Recognition" by J.R. Parker and Pavol Federl.
-threshold=threshold
This sets the thresholding value for simple or local thresholding. The value is a floating point number in the range [0, 1], where 0 is black and 1 is the maxval of the image.

If you don't specify this option, pamthreshold uses a threshold of 0.5. Without -simple or -local this option is meaningless.

-contrast=threshold
This sets the threshold to determine if a neighborhood has low contrast or not for dual thresholding. The value is a floating point number in the range [0, 1].

If you don't specify this option, pamthreshold uses a contrast threshold of 0.05. Without -dual this option is meaningless.

SEE ALSO

pamditherbw, ppmtopgm, pamtopnm, pam

HISTORY

pamthreshold was new in Netpbm 10.34 (June 2006).

AUTHOR

pamthreshold is Copyright © 2006 by Erik Auerswald and released under the GPL.


Table Of Contents