Blame README.md

rpm-build 01e673
# Leptonica Library #
rpm-build 01e673
rpm-build 01e673
[![Build Status](https://travis-ci.org/DanBloomberg/leptonica.svg?branch=master)](https://travis-ci.org/DanBloomberg/leptonica)
rpm-build 01e673
[![Build status](https://ci.appveyor.com/api/projects/status/vsk607rr6n4j2tmk?svg=true)](https://ci.appveyor.com/project/DanBloomberg/leptonica)
rpm-build 01e673
[![Coverity Scan Build Status](https://scan.coverity.com/projects/leptonica/badge.svg)](https://scan.coverity.com/projects/leptonica)
rpm-build 01e673
rpm-build 01e673
www.leptonica.org
rpm-build 01e673
rpm-build 01e673
## The library supports many operations that are useful on ##
rpm-build 01e673
rpm-build 01e673
  * Document images
rpm-build 01e673
  * Natural images
rpm-build 01e673
rpm-build 01e673
## Fundamental image processing and image analysis operations ##
rpm-build 01e673
rpm-build 01e673
  * Rasterop (aka bitblt)
rpm-build 01e673
  * Affine transforms (scaling, translation, rotation, shear) on images of arbitrary pixel depth
rpm-build 01e673
  * Projective and bilinear transforms
rpm-build 01e673
  * Binary and grayscale morphology, rank order filters, and convolution
rpm-build 01e673
  * Seedfill and connected components
rpm-build 01e673
  * Image transformations with changes in pixel depth, both at the same scale and with scale change
rpm-build 01e673
  * Pixelwise masking, blending, enhancement, arithmetic ops, etc.
rpm-build 01e673
rpm-build 01e673
## Ancillary utilities ##
rpm-build 01e673
rpm-build 01e673
  * I/O for standard image formats (_jpg_, _png_, _tiff_, _webp_, _jp2_, _bmp_, _pnm_, _gif_, _ps_, _pdf_)
rpm-build 01e673
  * Utilities to handle arrays of image-related data types (e.g., _pixa_, _boxa_, _pta_)
rpm-build 01e673
  * Utilities for stacks, generic arrays, queues, heaps, lists; number and string arrays; etc.
rpm-build 01e673
rpm-build 01e673
## Examples of some applications enabled and implemented ##
rpm-build 01e673
rpm-build 01e673
  * Octcube-based color quantization (w/ and w/out dithering)
rpm-build 01e673
  * Modified median cut color quantization (w/ and w/out dithering)
rpm-build 01e673
  * Skew determination of text images
rpm-build 01e673
  * Adaptive normalization and binarization
rpm-build 01e673
  * Segmentation of page images with mixed text and images
rpm-build 01e673
  * Location of baselines and local skew determination
rpm-build 01e673
  * jbig2 unsupervised classifier
rpm-build 01e673
  * Border representations of 1 bpp images and raster conversion for SVG
rpm-build 01e673
  * Postscript generation (levels 1, 2 and 3) of images for device-independent output
rpm-build 01e673
  * PDF generation (G4, DCT, FLATE) of images for device-independent output
rpm-build 01e673
  * Connectivity-preserving thinning and thickening of 1 bpp images
rpm-build 01e673
  * Image warping (captcha, stereoscopic)
rpm-build 01e673
  * Image dewarping based on content (textlines)
rpm-build 01e673
  * Watershed transform
rpm-build 01e673
  * Greedy splitting of components into rectangles
rpm-build 01e673
  * Location of largest fg or bg rectangles in 1 bpp images
rpm-build 01e673
  * Search for least-cost paths on binary and grayscale images
rpm-build 01e673
  * Barcode reader for 1D barcodes (very early version as of 1.55)
rpm-build 01e673
rpm-build 01e673
## Implementation characteristics ##
rpm-build 01e673
rpm-build 01e673
  * _Efficient_: image data is packed binary (into 32-bit words); operations on 32-bit data whenever possible
rpm-build 01e673
  * _Simple_: small number of data structures; simplest implementations provided that are efficient
rpm-build 01e673
  * _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
rpm-build 01e673
  * _Robust_: all ptr args checked; extensive use of accessors; exit not permitted
rpm-build 01e673
  * _Tested_: thorough regression tests provided for most basic functions; valgrind tested
rpm-build 01e673
  * _ANSI C_: automatically generated prototype header file
rpm-build 01e673
  * _Portable_: endian-independent; builds in Linux, macOS, MinGW, Cygwin, Windows
rpm-build 01e673
  * _Nearly thread-safe_: ref counting on some structs
rpm-build 01e673
  * _Documentation_: large number of in-line comments; doxygen; web pages for further background
rpm-build 01e673
  * _Examples_: many programs provided to test and show usage of approx. 2600 functions in the library
rpm-build 01e673
rpm-build 01e673
rpm-build 01e673
## Open Source Projects that use Leptonica ##
rpm-build 01e673
  * [tesseract](https://github.com/tesseract-ocr/tesseract/) (optical character recognition)
rpm-build 01e673
  * [OpenCV](https://github.com/opencv/opencv) (computer vision library)
rpm-build 01e673
  * [jbig2enc](https://github.com/agl/jbig2enc) (encodes multipage binary image documents with jbig2 compression)
rpm-build 01e673
rpm-build 01e673
## Major contributors to Leptonica ##
rpm-build 01e673
  * Tom Powers: Tom has supported Leptonica on Windows for many years.  He has made many contributions to code quality and documentation, including the beautiful "unofficial documentation" on the web site. Without his effort, Leptonica would not run today on Windows.
rpm-build 01e673
  * David Bryan: David has worked for years to support Leptonica on multiple platforms. He designed many nice features in Leptonica, such as the severity-based error messaging system, and has identified and fixed countless bugs. And he has built and tested each distribution many times on cross-compilers.
rpm-build 01e673
  * James Le Cuirot: James has written and supported the autotools scripts on Leptonica distributions for many years, and has helped test every distribution since 1.67.
rpm-build 01e673
  * Jeff Breidenbach: Jeff has built every Debian distribution for Leptonica. He has also made many improvements to formatted image I/O, including tiff, png and pdf. He is a continuous advocate for simplification.
rpm-build 01e673
  * Egor Pugin: Egor is co-maintainer of Leptonica on GitHub. He ported everything, including all the old distributions, from Google Code when it shut down. He set Leptonica up for appveyor and travis testing, and has implemented the cppan project, which simplifies building executables on Windows.
rpm-build 01e673
  * Jürgen Buchmüller: Jürgen wrote text converters to modify Leptonica source code so that it generates documentation using doxygen. He also wrote tiff wrappers for memory I/O.
rpm-build 01e673
  * Stefan Weil:: Stefan has worked from the beginning to clean up the Leptonica github distribution, including removing errors in the source code.  He also suggested and implemented the use of Coverity Scan.