This class hierarchy provides a set of methods to convert luminance data to 1 bit data.
It allows the algorithm to vary polymorphically, for example allowing a very expensive
thresholding technique for servers and a fast one for mobile. It also permits the implementation
to vary, e.g. a JNI version for Android and a Java fallback version for other platforms.
Encapsulates a type of hint that a caller may pass to a barcode reader to help it
more quickly or accurately decode it. It is up to implementations to decide what,
if anything, to do with the information that is supplied.
This Binarizer implementation uses the old ZXing global histogram approach. It is suitable
for low-end mobile devices which don't have enough CPU or memory to use a local thresholding
algorithm. However, because it picks a global black point, it cannot handle difficult shadows
and gradients.
This class implements a local thresholding algorithm, which while slower than the
GlobalHistogramBinarizer, is fairly efficient for what it does. It is designed for
high frequency images of barcodes with black data on white backgrounds. For this application,
it does a much better job than a global blackpoint with severe shadows and gradients.
However it tends to produce artifacts on lower frequency images and is therefore not
a good general purpose binarizer for uses outside ZXing.
A wrapper implementation of {@link LuminanceSource} which inverts the luminances it returns -- black becomes
white and vice versa, and each value becomes (255-value).
The purpose of this class hierarchy is to abstract different bitmap implementations across
platforms into a standard interface for requesting greyscale luminance values. The interface
only provides immutable methods; therefore crop and rotation create copies. This is to ensure
that one Reader does not modify the original luminance source and leave it in an unknown state
for other Readers in the chain.
Implementations of this interface can decode an image of a barcode in some format into
the String it encodes. For example, {@link com.google.zxing.qrcode.QRCodeReader} can
decode a QR code. The decoder may optionally receive hints from the caller which may help
it decode more quickly or accurately.
Encapsulates a point of interest in an image containing a barcode. Typically, this
would be the location of a finder pattern or the corner of the barcode, for example.
The general exception class throw when something goes wrong during decoding of a barcode.
This includes, but is not limited to, failing checksums / error correction algorithms, being
unable to locate finder timing patterns, and so on.