Leptonica Library
The library supports many operations that are useful on
- Document images
- Natural images
Fundamental image processing and image analysis operations
- Rasterop (aka bitblt)
- Affine transforms (scaling, translation, rotation, shear) on images of arbitrary pixel depth
- Binary and grayscale morphology, rank order filters, and convolution
- Seedfill and connected components
- Image transformations with changes in pixel depth, both at the same scale and with scale change
- Pixelwise masking, blending, enhancement, arithmetic ops, etc.
Ancillary utilities
- I/O for standard image formats (jpg, png, tiff, bmp, pnm, gif, ps)
- Utilities to handle arrays of image-related data types (e.g., pixa, boxa, pta)
- Utilities for stacks, generic arrays, queues, heaps, lists; number and string arrays; etc.
Examples of some applications enabled and implemented
- Octcube-based color quantization (w/ and w/out dithering)
- Modified median cut color quantization (w/ and w/out dithering)
- Skew determination of text images
- Segmentation of page images with mixed text and images
- jbig2 unsupervised classifier
- Border representations of 1 bit/pixel images and raster conversion for SVG
- Postscript wrapping (levels 1, 2) of images for device-independent output
- Connectivity-preserving thinning and thickening of 1 bit/pixel images
- Search for least-cost paths on binary and grayscale images
- Barcode reader for 1D barcodes (very early version as of 1.55)
Implementation characteristics
- Efficient: image data is packed binary (into 32-bit words); operations on 32-bit data whenever possible
- Simple: small number of data structures; simplest implementations provided that are efficient
- Consistent: data allocated on the heap with simple ownership rules; function names usually begin with primary data structure (e.g., pix)
- Robust: all ptr args checked; extensive use of accessors; exit not permitted
- Tested: thorough regression tests provided for most basic functions; valgrind tested
- Ansi C: automatically generated prototype header file
- Portable: endian-independent; builds in linux, osx, mingw, cygwin, windows
- Nearly thread-safe: no non-const global vars
- Documentation: large number of in-line comments; web pages for further background
- Examples: many programs provided to test and show usage of approx. 1600 functions in the library