Skip to content

Latest commit

 

History

History
67 lines (53 loc) · 3.57 KB

README.md

File metadata and controls

67 lines (53 loc) · 3.57 KB

Leptonica Library

Build Status Build status

www.leptonica.org

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
  • Projective and bilinear transforms
  • 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, pdf, webp)
  • 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
  • Adaptive normalization and binarization
  • Segmentation of page images with mixed text and images
  • Location of baselines and local skew determination
  • jbig2 unsupervised classifier
  • Border representations of 1 bpp images and raster conversion for SVG
  • Postscript generation (levels 1, 2 and 3) of images for device-independent output
  • PDF generation (G4, DCT, FLATE) of images for device-independent output
  • Connectivity-preserving thinning and thickening of 1 bpp images
  • Image warping (captcha, stereoscopic)
  • Image dewarping based on content (textlines)
  • Watershed transform
  • Greedy splitting of components into rectangles
  • Location of largest fg or bg rectangles in 1 bpp 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); simple code patterns throughout
  • 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: ref counting on some structs
  • Documentation: large number of in-line comments; web pages for further background
  • Examples: many programs provided to test and show usage of approx. 2200 functions in the library

Open Source Projects that use Leptonica

  • php (scripting language for dynamic web pages)
  • tesseract (optical character recognition)
  • jbig2enc (encodes multipage binary image documents with jbig2 compression)