Mercurial > hgrepos > Python2 > PyMuPDF
diff mupdf-source/thirdparty/leptonica/version-notes.html @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mupdf-source/thirdparty/leptonica/version-notes.html Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,1724 @@ +<html> +<body BGCOLOR=FFFFE4> + +<!-- JS Window Closer ----- +<form> +<center> +<input type="button" onclick="window.close();" value="Close this window"> +</center> +</form> +----- JS Window Closer --> + +<!-- Creative Commons License --> +<a rel="license" href="http://creativecommons.org/licenses/by/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.gif" /></a> +This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/2.5/">Creative Commons Attribution 2.5 License</a>. +<!-- /Creative Commons License --> + + +<!-- + +<rdf:RDF xmlns="http://web.resource.org/cc/" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> +<Work rdf:about=""> + <dc:title>leptonica</dc:title> + <dc:date>2001</dc:date> + <dc:description>An open source C library for efficient image processing and image analysis operations</dc:description> + <dc:creator><Agent> + <dc:title>Dan S. Bloomberg</dc:title> + </Agent></dc:creator> + <dc:rights><Agent> + <dc:title>Dan S. Bloomberg</dc:title> + </Agent></dc:rights> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" /> + <dc:source rdf:resource="www.leptonica.com"/> + <license rdf:resource="http://creativecommons.org/licenses/by/2.5/" /> +</Work> + +<License rdf:about="http://creativecommons.org/licenses/by/2.5/"> + <permits rdf:resource="http://web.resource.org/cc/Reproduction" /> + <permits rdf:resource="http://web.resource.org/cc/Distribution" /> + <requires rdf:resource="http://web.resource.org/cc/Notice" /> + <requires rdf:resource="http://web.resource.org/cc/Attribution" /> + <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> +</License> + +</rdf:RDF> + +--> + +<pre> +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ +</pre> + + +<h2 align=center>Version Notes for Leptonica</h2> +<h3 align=center>3 Jan 2024</h3> + +<hr> +<h2 align=center> <IMG SRC="moller52.jpg" border=1 ALIGN_MIDDLE> </h2> +<hr> + +<p> +Note: The following are highlights of the changes in each version. +They are <i>not</i> a complete listing of the modifications. + +<pre> + +1.85.0 Oct 16, 2024 + * Use wrapper callSystemDebug() instead of system() in programs. + * Fixed Issue #730: artifacts and bad compression with pixWriteJp2k. + Results are now identical with ImageMagick convert (to jp2). + * With PR732, Anton Tykhyy made pix(Read,Write)MemJp2k work with + direct memory access using openjpeg opj_stream functions. This + removes need for temp file on Windows when writing to/from memory. + * Achieve consistency with fclose() in library and lept_fclose() + in progs. Ditto for lept_free, lept_calloc, lept_fopen(), etc. + * Fix generation of bad colormap indices in + jbcorrelation and jbrankhaus + * Fixed coverity scan issues. + * Added findpattern2_reg.c to show generation of sels and their use. + * Added misctest2.c to show crop and clean page functions. + * Added page crop option for removing noise on left and right sides. + * Added page crop option to allow printing to full width of paper. + * Added page crop option to extract page within larger black image. + * Added renderpdf.c to library, to render pdfs as page images with + a specified resolution. + * Modified cleanpdf.c to use l_pdfRenderFiles(). + * Issues #750, #752: problems in bmpio.c with taking address of + packed member. + * Source files changed: adaptmap.c affinecompose.c, + bmpio.c, boxbasic.c, colormap.c, compare.c, + dewarp1.c, dnabasic.c, fpix1.c, gifio.c, + gplot.c, grayquant.c, jbclass.c, jp2kheader.c, + jp2kheaderstub.c, jp2kio.c, jpegio.c, libversions.c, + morphseq.c, numabasic.c, pageseg.c partify.c, pdfapp.c, + pdfio2.c, pix2.c, pixabasic.c, pixcomp.c, pixconv.c, + pnmio.c, psio2.c, ptabasic.c, + readfile.c, recogbasic.c, renderpdf.c, + sarray1.c, sel1.c, utils2.c, writefile.c, + allheaders.h, environ.h + * Prog files changed: alltests_reg.c, binmorph3_reg.c, + blend2_reg.c, blend4_reg.c cleanpdf.c, compressedpdf.c, croppdf.c, + findpattern_reg.c, findpattern1_reg.c findpattern2_reg.c, + htmlviewer.c, jbcorrelation.c, jbrankhaus.c, + jp2kio_reg.c, libre_makefigs.c, misctest1.c, misctest2.c, + pdfio2_reg.c, printimage.c, printsplitimage.c, + printtiff.c, psioseg_reg.c, splitpdf.c, + string_reg.c, tiffpdftest.c, xtractprotos.c + +1.84.1 Jan 3, 2024 + * Remove support for openjpeg versions < 2.1. + * Improve error handling for stringLength() and stringCat(), and + add tests in prog/string_reg. + * Source files changed: blend.c, dnafunc1.c, jp2kio.c, pageseg.c, + partify.c, pix1.c, ptafunc2.c, sarray2.c, utils2.c + * Prog files changed: boxa3_reg.c, string_reg.c, writetext_reg.c, + deskew_it.c + +1.84.0 Dec 23, 2023 + * Add getPdfPageCount() to find the number of pages in a pdf file. + * Add getPdfPageSizes() and getPdfMediaBoxSizes() to find the + information necessary to render images properly. Modify cleanpdf.c + and concatpdf.c to use this information. + * Add prog/splitpdf.c to split a pdf file into nearly equal page sets. + * Add ability to read and write rgba in bmp format, and + test in ioformats_reg. + * Add regression test prog/partition_reg.c + * Change the autotools library name from liblept to libleptonica, + to be consistent with the cmake library name. (Apologies to Jeff!) + * Add tests for 24 bit pix reading and writing in bmp and png in + ioformats_reg. Test new pixDisplayDiff() for visualizing diffs. + * Allow prog/concatpdf to output pdf with tiffg4 encoding and with + mixed tiffg4 and DCT encoding depending on image color content. + * Rename prog/concatpdf --> prog/compresspdf + * Put image processing and generation of output pdf from compresspdf + and cleanpdf into functions in new files: pdfapp.c, pdfappstub.c. + * Add versatile function for cropping an image and filling to + page size, along with prog/croppdf to do this on pdf file. + +1.83.0 Dec 20, 2022 + * Simplify setting the title of pdf files. + * Catch tiff failure to open stream in fopenTiffMemStream() + * Check for POSIX functions fstatat() and dirfd() before use. + * In prog/cleanpdf: do not allow threshold to exceed 190. Make all + parameters required; do not use default values for invalid parameters. + * In prog/concatpdf: add input param for title; add jpeg quality factor + * Fix flaky hash_reg test on i686: sets generated from SelectRange() + can depend slightly on platform. + * Convenience function for adding multiple black and white borders. + * Fix oss-fuzz issue 42202: underined shift in l_convertCharstrToInt(). + * Fix oss-fuzz issue 43841: made pixCountPixels() more efficient. + * Fix oss-fuzz issue 44008: pixCountArbInRect() used wrong depth. + * Always return tiff resolution of 0 (unknown) if not set. + * Simplify operations on pix memory to help avoid mem leaks + * Make bmp non-support of 32-bit bmp (rgba) files explicit. + * Improve tiff read resolution conversion by rounding. + * Use stdatomic.h to make cloning string safe. + Remove all *GetRefcount() and *ChangeRefcount() accessors. + * Replace procName and mainName strings by __func__. + * Remove information about fields in many structs from the public + interface allheaders.h, instead putting them in internal files + pix_internal.h, array_internal.h and ccbord_internal.h. + * Increase the .so number from 5.4.0 to 6.0.0. + * Rename the autotools generated libraries from liblept to libleptonica + * Fix potential memory leaks from recogAverageSamples() and + recogDebugAverages() by not destroying a recog. + +1.82.0 Sept 22, 2021 + * Fix issue-585: reading tiff rgb with tiffbpl = 1.5 * packedbpl. + * Fix issue-586: failure to properly wrap tiff-g4 in pdf without + transcoding. The fix is to do transcoding for tiff-g4, as was + done before April 2021. + +1.81.1 June 11, 2021 + * Added choice of codec (JP2 or J2K) when writing jp2k files. + * Fix use of hashmap with key based on dna. + +1.81.0 June 6, 2021 + * Fixed problems with tiff pdf wrapping photometry. + * Fixed scaling issues in prog/cleanpdf for printing. + * New progs: tiffpdftest, hashtest + * Fixed uninitialized data error in pixAddBorderGeneral() and + pixRemoveBorderGeneral() + * Rewrote Numa functions that discretize into bins. Have + binning by both sorting and histogram. + * Rewrote and simplified pixGetRankColorArray() and pixGetBinnedColor(). + * Added tests to prog/rankbin_reg.c. + * Simplified fpixCopy() and dpixCopy(), and functions that use them. + * Check input for bilateral transforms. + * Add function for splitting a file evenly by lines. + * Check input for getFilenamesInDirectory() + * Many new fuzzers. + * Use size_t for all size inputs to ascii85 encoding/decoding + * New regression tests: encoding_reg.c, binmorph6_reg.c, + flipdetect_reg.c + * Reworked concatpdf for generality, using the Poppler package. + * Removed dwa flipdetection from the library. All the dwa code + is now in flipdetectdwa.c.notused. Likewise prog/flipselgen.c + is retained for completeness, renamed flipselgen.c.notused, + and is not compiled. + * Added hashmap utility (hashmap.c, hashmap.h). + * Removed functions using dnahash on strings, pts and doubles. + * Improved the speed of hashing for strings and doubles. + * Added function for tiling images in pairs for comparison. + * Added null terminations to serialized strings written to memory, + preventing buffer overrun by strlen() [fixed by Stefan Weil]. + * No longer use "NoInit" versions of pix creation in leptonica. + because they risk reading uninitialized data. These functions + remain in the library because they are in use in applications. + * Add two composite binarization functions, from prog/binarize_set. + * Giulio Lunati fixed pnm reading to work with stdin input. + * Removed several of the boxa compare and modify functions. + * Implemented reading jpeg200 data encded in j2k "codestream" format. + Can now read data in both jp2 and j2k. + +1.80.0 28 July 2020 + * Improve bmp handling of 1 bpp images and sanity checking of params. + * Add function to display all rgb gamut colors + * in Makefile.am, use option serial-tests to avoid races in testing + * Make m4 subdirectory and add ax_split_version.m4 there + * Simple function for hue-invariant mapping (pixMapWithInvariantHue) + * Fixed bug in limit of ptra size when used for sorting by bins. + * Use hashmap to count pixel colors in RGB(A) images. + * Convert hashtest program to regression test hash_reg. + * Convert croptest program to regression test crop_reg. + * New color segmentation by region growing (colorfill.c) + * New regression tests: colorfill_reg, circle_reg, ccbord_reg. + * Set maxima for all allocations for common leptonica data structures. + * Don't fail when downscaling 2, 4, 8, and 32 bpp images, even + to one pixel, invoking pixScaleSmooth(). + * New functions that select 1 bpp components based on their area. + * Incremental addition to sorted array of numbers. + * new prog/fuzzing directory for oss-fuzz based fuzzing programs + * use of pixcmapIsValid() with extra argument to determine validity + with the pix it is attached to. + * Use lept_stderr() in all programs in the prog directory. + * New program rasteroptest() for thorough testing of rasterop functions. + * Removed the pixSaveTiled*() functions + * Stubbed pixDisplayWrite(). Last used in tesseract 3.04.01 (2/2016). + +1.79.0 1 Jan 2020 + * Clean up auto-generation of files; removed 'register' + * Some fixes for issues identified by fuzzer + * New source files: checkerboard.c + * New programs: replacebytes.c, webpanimio_reg.c, partifytest.c, + rectangle_reg.c, lowsat_reg.c, rotate_it.c, scale_it.c, dewarp_it.c, + pdfio1_reg.c, pdfio2_reg.c, checkerboard_reg.c, underlinetest.c. + * Convert to standard reg test: heap_reg.c, pixa1_reg.c, smallpix_reg.c + * Improve data checking when reading image file headers + (pnm, png, jpeg, tiff) + * Fix some bugs in pnm reading + * Fix inconsistencies with the encoding type flags in pdf writing + * Allow tiff to write images with colormaps + * Fix errors in PS code; made some functions static + * Add code for animated webp (requires webp mux and demux libraries) + * Add "partify" application for separating parts in a musical score + * Enable tif read/write of gray+alpha and rgba; filter out tiff + pixels that are not uint and compression by tile + * Apply consistent formatting of static const variables + * Add programs for scaling, rotation and deskew, named dewkew_it, + rotate_it and scale_it, for useful operations on arbitrary images. + * Convert pdfiotest program to two regression tests: pdfio1_reg + and pdfio2_reg. + * Remove all use of strncat; use stringCat(). + * New functions from removing outliers in sequences of boxes. + * Generalize pixAverageInRect(): mask, region and range filters, + and subsampling. New pixAverageInRectRGB(). + * Fix int overflow bug in pixMedianCut(); required new heap accessor. + * New pixMultiplyGray() allows pix to be multiplied by an array (or + another pix) + * Better routines for counting color. + * Lossless conversion for RGB to cmap with not more than 256 colors. + * New histo based global thresholding: pixThresholdByHisto(). + * Allow most reg tests to run even if external libraries are not + available. + * New one-line gplot functions that return a pix. + * New application to find where corners meet in a checkerboard. + * Add utility functions for painting through mask in cmap pix, + creating a hit-miss sela from a color pix, equality of two pta. + * Proper handling of 1 bpp colormap tiffs: remove when reading, + preserve when writing. + * Deprecate three pixSaveTile*() functions; removed all calls to + these from the library and progs. + * Include auto_config.h explicitly in all src and prog files. + * Improve input data checking for bmp files. + * Added pixAutoPhotoinvert() for tesseract, to automatically photo- + invert text regions where the background is black and text is white. + +1.78.0 21 Mar 19 + * Various improvements in handling boxa sequences and transforms. + * New regression tests: boxa4_reg, string_reg + * New function for copying a pix, filtered by a boxa. + * Modify histogram method for image comparison. + * More careful attention to invalid boxes in box geometry functions. + * Better string and array functions for search and replace. + * Convenience functions for generating simple masks. + * Allow pdf writing of jp2k images, in full generality. + * Allow writing compressed ps images for printing. + * Modified enum comments to include a suggested enum name. + * New program: imagetops + +1.77.0 14 Dec 18 + Here is the current status of CVE issues with leptonica; see + https://security-tracker.debian.org/tracker/source-package/leptonlib + * CVE-2018-7442: potential injection attack because '/' is allowed + in gplot rootdir. + Functions using this command have been disabled by default in the + distribution, starting with 1.76.0. As for the specific issue, it + is impossible to specify a general path without using the standard + directory subdivider '/'. + * CVE-2018-7186: number of characters not limited in fscanf or sscanf, + allowing possible attack with buffer overflow. + This has been fixed in 1.75.3. + * CVE-2018-3836: command injection vulnerability in gplotMakeOutput(). + This has been fixed in 1.75.3, using stringCheckForChars() to block + rootnames containing any of: ;&|>"?*$()/< + * CVE-2017-18196: duplicated path components. + This was fixed in 1.75.3. + * CVE-2018-7441: hardcoded /tmp pathnames. + These are all wrapped in special debug functions that are not + enabled by default in the distribution, starting with 1.76.0. + * CVE-2018-7247: input 'rootname' can overflow a buffer. + This was fixed in 1.76.0, using snprintf(). + * CVE-2018-7440: command injection in gplotMakeOutput using $(command). + Fixed in 1.75.3, which blocks '$' as well as 11 other characters. + Wrapped the few 'system' calls in an extra layer of debug code. + More coverity scan fixes; defects are about 1 per 10,000 source lines. + New regression tests: numa1_reg, numa2_reg, lowaccess_reg, + pixmem_reg. + New non-regression test programs: histoduptest + Juergen Buchmueller is working on Lua bindings. He typedef'd l_ok + and used it in 1100 functions that return a success/failure status. + He also helped clean up remaining issues in the doxygen-generated + documentation. + Using a packed struct for bmp headers to avoid crash on + some big-endians. + Fixed a bug in the prototype parser for xtractprotos that was + surfaced by a typedef declaration for the bmp headers. + Cleaned up IOS guards to avoid compiling a system(3) call on IOS. + Renamed autobuild --> autogen.sh + Added some basic pixa functions for rotation and translation. + Added an iterative method to find rectangular coverings for + arbitrary connected components. + Converted two tests to reg tests running in alltests_reg: + ptra1_reg, ptra2_reg + Enabled read/write for standard jpeg compressed tiff images. + Enabled reading for the old (deprecated) jpeg-encoded tiffs. + Fix range selectors for pixa, pixaa, boxa, boxaa, pta: + Now, last = -1 goes to the end. + When reading tiff --> pix, insert IMAGEDESCRIPTION into text field. + Converted iotest to reg test iomisc_reg; added to alltests_reg + Converted rasterop_reg into a standard regression test; added + to alltests_reg. + Converted boxa2_reg and fhmtauto_reg into standard regression tests; + added to alltests_reg. + Split boxa sequence functions out of boxfunc4.c, into a new boxfunc5.c. + Simplified bmp header and made reading more clearly endian + agnostic (Juergen Buchmueller) + New boxa3_reg regression test. This tests sequences of boxes + by two new boxfunctions in boxfunc5.c. + New bootnumgen4.c for more digit templates. + Rename prog/recog_bootnum.c --> prog/recog_bootname1.c + New in prog: recog_bootnum2.c, recog_bootnum3.c, recogtest7.c + Fixed uninitialized data in pixCentroid() on 1 bpp pix. + New reg test: bytea_reg.c. (removed byteatest.c) + Fixed bug in non-transcoding pdf generation from 1 bpp png. + Added LGTM to static analyzers that run over the library. + +1.76.0 1 May 18 + Modify infrastructure to fix outstanding security issues. By default, + you can no longer create temp directories and temp files whose + names are known to the compiler. Also, prevent "system" calls, + which were used for image display and gnuplot. + Replaced remaining sprintf() with snprintf() in prog tests. + Added non-transcoding functions for generating pdf from jpeg pixacomp + Add control of jpeg quality from pixWriteMem() and pixWriteStream() + Fixed getFilenamesInDirectory() to properly identify directories + Prevent size overflow in calloc for kernel; cleaned it up fpix and dpix + bmp reading now accepts negative height + Simplified splitimage2pdf; it no longer uses ps2pdf + Remove name-mangling WRITE_AS_NAMED compile option. + Removed 2 deprecated write functions. + Added these regression tests: + locminmax_reg, speckle_reg, watershed_reg, + +1.75.3 15 Feb 18 + Fixed some coverity scan issues. + Autotools fix to check for png if enabling gnuplot (James Le Cuirot). + +1.75.2 11 Feb 18 + Converted several progs to standard regression tests. + Added these tests to the alltests_reg suite: + adaptnorm_reg, binmorph1_reg, binmorph3_reg, equal_reg, + extrema_reg, grayfill_reg, falsecolor_reg, grayquant_reg. + Autotools fix for restricting giflib to 5.1+, and allowing + openjpeg 2.3 (James Le Cuirot). + +1.75.1 31 Jan 18 + Simpler and more accurate function for finding word masks from + text image; better debugging and more thorough testing. + Added to regression test set: prog/italic_reg + Fix for potential injection attack using gplot rootdir. + Bug fix for bmp reading to set opacity. + +1.75.0 24 Jan 18 + This is a new version, for major Ubuntu release 18.04. + $TMPDIR path rewriting turned off on Unix; only used for Windows. + Added pix conversion to depth 2 and 4. We now have general + converters to 1, 2, 4, 8, 16 and 32 bpp. + Modified giflib to use read/write from/to memory; no temp files; + no longer support versions before 5.1. + Move most low-level code from separate files to their callers; + about 30 of them became static. + Improved table detection on scanned page images (tests: pageseg_reg.c) + Added support for write/compare regression tests for files. + Modified printimage for more flexibility. + Enable lookup by key on comma-separated key/value text file. + Update README.html for building with Visual Studio. + Improved functions for getting pixel averages in RGB images + Simplified and speedup of unsharp masking. + New function for detecting and correcting text orientation. + Remove slow sharpening operation when not appropriate during scaling. + Better handling of gplots with 0 or 1 data point. + Coverity scan fixes. + Modified jpeg2000 header to use openjpeg 2.3. + Improved depth accessors for pixa and pixaa; added size accessors + for pixa and pixaa. + Bug fix in webp interface on read error. + New function that finds the closest boxes in a boxa to any particular + box, in each of 4 directions. + New regression tests in automated sequence: blend5_reg, quadtree_reg, + wordboxes_reg. + New program: textorient + Removed programs: snapcolortest + +1.74.4 11 Jun 17 + Converted two progs to reg tests + New version because 1.74.3 had some spurious files (xtractprotos, + endianness.h) + +1.74.3 9 Jun 17 + Coverity scan fixes. + Several fixes for running on Windows, including subtle one with tiff + encoding depending on pad bits. + Utility and test if a page image likely has a table. + Remove use of pixCreateTemplateNoInit() where it may cause problems. + Make release 'configure-make ready' + +1.74.2 19 May 17 + Many simplifications and improvements to recognizer. + Cleanup of doxygen comments + Encoded pdf title in escape 4-byte hex (for safety) + Fixed several hundered coverity scan possible leaks + Added about 20 regression tests to the automated set. + Improved vertical alignment of dewarp. + Implemented preliminary method for correcting dewarp foreshortening + due to page curvature. + Improved multipage tiff reading and writing. + Added a new version of textline finding. + Fixed bug in fast 2D sharpening code (used in some scaling ops) + BMP i/o rewritten to implement memory version directly. + PNG i/o functions added for encoding and decoding directly to memory. + Method for finding light color regions on scanned page images. + +1.74.1 3 Jan 17 + Configuration changes to support the patch number in the + version (major.minor.patch). + Removed all remaining pixDisplayWrite() calls in prog/. + Cleaned up and/or promoted about 15 programs to full regression + tests. There are now 95 tests in the regression set. + Over half the initial coverity scan warnings have been removed. + +1.74.0 10 Dec 16 + Leptonica development was moved to github. The master is at: + github.com/danbloomberg/leptonica + Egor Pugin is the maintainer of the site. + A very large number of changes have been made. Some of them follow; + details can be found in the git commit messages. + Static makefiles modified to work with gnu*9 and c*9. + Modify SET macros to work on windows. + New modes for RGB --> gray conversion. + New functions added for displaying a pix from a pixa. + Split out sort/hash/set/map functions for dna, sarray and pta. + More robust horizontal deskew on multi-column page images. + Improve webpio_reg test. + Remove X11 display for gplot; it is no longer supported. + Remove most sleep calls, which were put in for gplot; no longer needed. + Removed use of gthumb in library. + Removed use of pixDisplayWrite() in the library; still in some progs. + Improved test for endianness in makefile.static; no longer requires + any local files or building and running a program. + Modified all files for doxygen output (spearheaded by + Juergen Buchmueller) + Improved plotting of the boxes in a boxa. + Replaced the slow point hash function with a simple fast one. + Added pam (4 component) format writing to pnmio.c (Juergen Buchmueller) + Improved rendering of pixa in side/by/sides. + Better utilities for pixa and pixacomp. + Add read/write serialization functions from/to memory for all + the major data structures that do not already have them. + More serialized boot recognizers stored as self-generating code. + Cleaned up generating an adapted recognizer from the boot recognizer. + Simplified temp file naming; removed most instances of named + temp files from non-debug code; use tmpfile() and a wrapper + l_makeTempFilename(). + Simplify and streamline multipage tiff reading (Jeff Breidenbach). + Improvement of Otsu thresholding. + Recognize outstanding contributors to leptonica over the years. + New gif mem read/write interface that avoids writing a temp file, + contributed by Tobias Peirick. + Use double arrays (dna) instead of float (numa) for set ops. + Enrolled in coverity scan to find potential bugs (Stefan Weil + managed it). Fixed about 200 of them, mostly potential memory + leaks from early function exit. + Cleanup of gray quantization functions and tests. + Refactored connectivity-conserving operations, to make them more useful. + Provided methods for measuring and regularizing the width of strokes. + Removed viewfiles.c from library; code is now in prog htmlviewer.c. + Better debugging in page segmentation (pageseg.c) + Deprecated the pixDisplayWrite*() debugging methods. + Added about 15 regression tests to the framework in alltests_reg.c + Final mods for compatibility with tesseract 4.00. + +1.73 25 Jan 16 + All lept_* functions have been rewritten to avoid path rewrites for + output to temp files, which were introduced in 1.72. + Now, (1) files are written to the directory specified and (2) we + are careful to write to subdirectories of /tmp/lept/ for all test + programs, starting with the reg tests and prog/dewarp* and + prog/recog*. This also required re-writing stringcode.c and + stringtemplate1.txt to write temp files to subdirectories. + Goal is to write to the specified path while not spamming the + /tmp and /tmp/lept directories. This is particularly important + on windows because files in the <TEMP> directory are not cleared + on reboot. + Naming changes (to avoid collisions): + #defines MALLOC --> LEPT_MALLOC, CALLOC --> LEPT_CALLOC, etc. + ByteBuffer --> L_ByteBuffer + Added grayscale histogram functions that can be used to compare images. + Added functions to determine if an image region has horizontal + text lines. + Added functions to compare photo regions of images to determine + if they're essentially the same. + Added red-black tree utility functions to implement maps and sets. + The keys for maps and sets can be 64-bit entities (signed and + unsigned integers and doubles). + Implemented hashsets and hashmaps, using 64 bit keys. + Replaced the numaHash by l_dnaHash; removed numa2d + Improved security of tiff and gif reading, to prevent memory corruption + when reading bad data. + Removed src files: bootnumgen.c + Added src files: rbtree.c, rbtree.h, map.c, bootnumgen1.c, bootnumgen2.c + Added prog files: rbtreetest.c, maptest.c, settest.c, hashtest.c, + recog_bootnum.c, percolatetest.c + Added files for building using cmake (Egor Pugin) + +1.72 5 Apr 15 + Better handling of 1 bpp colormap read/write with png so that + they are losseless. The colormap is always removed on read and + the conversion is to the simplest non-cmapped pix that can fully + represent the input -- both with and without alpha. + Fixed overflow bug in pixCorrelationBinary(). + Fixed orientation flags and handling of 16 bit RGB in tiff. + Also new wrappers to TIFFClientOpen(), so we no longer go through + the file descriptor for memory operations. + Improvements in the dewarp functions. + New box sequence smoothings. + New antialiased painting through mask; previously it was only + implemented for connected components in a mask. + Better error handling and debug output with jpeg2000 read/write. + Implemented base64 encoding. This allows binary data to be represented + as a C string that can be compiled. Used this in bmf utility. + Implemented automatic code generation for deserialization from + compiled strings (stringcode.*) + Regression tests write to leptonica subdir of <Temp> in windows; in + unix it is optional. This avoids spamming the <Temp> directory. + Added new colorspace conversions (XYZ, LAB). + New source files: encoding.c, bmfdata.h, stringcode.c, stringcode.h, + bootnumgen.c. + Removed source files: convolvelow.c, graymorphlow.c + New programs: genfonts_reg, colorize_reg, texturefill_reg, + autogentest1, autogentest2. + alltests_reg now has 66 tests. + +1.71 18 Jun 14 + This version supports tesseract 3.04. In particular, 3.04 + has automatic conversion of a set of scanned images, either in a + directory or coming directly from a scanner, into pdf with injected + text. This is something we've wanted to do for several years! + Improved jp2k header reading, including resolution. + Removed src files: rotateorthlow.c, pdfio.c, pdfiostub.c + Renamed jp2kio.c, jp2kiostub.c ==> jp2kheader.c, jp2kheaderstub.c. + These header reading functions parse the jp2k files, and + don't require a jpeg2000 library. + New jp2kio.c, jp2kiostub.c, that uses openjpeg-2.X to read + and write jp2k. We now support I/O from these formats: + png, tiff, jpeg, bmp, pnm, webp, gif and jp2k + as well as writing to PostScript and pdf. + New pdfio1.c, pdfio1stub.c, pdfio2.c pdfio2stub.c, where we've + split functions into high and low level. + Fixed memory bug in bilateral.c + Improved reading/write of binary data from file. For example, + l_binaryReadStream() can now be used to capture data piped + in via stdin. + Font directory now arg passed in everywhere (not hardcoded) + Don't write temporary files to /tmp; only to a small number of + subdirectories, to avoid spamming the /tmp directory. E.g., + for regression tests, the current output is now to /tmp/regout/. + For jpeg reading modify pixReadJpeg() to take as a hint + a bit flag that allows extraction of only the luminance channel. + Allow wrapping of pdf objects from png images without transcoding + (thanks to Jeff Breidenbach) + Better support for alpha on read/write with png, including + 1 bpp with colormap, alpha (supported in png with transparency array) + +1.70 3 Feb 14 (distribution to debian; ubuntu 14-04; 4.1.0) + New bilateral filtering. + New simple character recognition utility. + Improved dewarping functionality, in model building and rendering. + More flexible use of ref models. + Better and more consistent handling of alpha layer in RGBA, though + use of the spp field. Ability to handle more png files with alpha, + including palette with alpha. + New fast converters from jpeg and jpeg2000 to pdf, without transcoding. + Made bmp reader (and pix reading in general) more robust; avoid + size overflow errors. + New text labelling operations; depth conversion of a set of images + New license (essentially BSD 2-clause), to specify conditions + for both source and binary distribution. + Improved auto make: make all progs, install just 11, test 61. + New src files: bilateral.{c,h}, dewarp1.c, dewarp2.c, + dewarp3.c, dewarp4.c, jp2kio.c, jp2kiostub.c, + pixlabel.c, recogbasic.c, recogdid.c, recogident.c, + recogtrain.c, recog.h + New prog files: adaptmap_dark.c, alphaxform_ret.c, + bilateral_reg.c, binarize_reg.c, binarize_set.c, + blackwhite_reg.c, blend1_reg.c, blend3_reg.c, blend4_reg.c, + boxa1_reg.c, colorcontent_reg.c, coloring_reg.c, + colorspace_reg.c, compare_reg.c, converttopdf.c, + croptest.c, dewarprules.c, dewarptest1.c, dewarptest2.c, + dewarptest3.c, dewarptest4.c, displayboxa.c, displaypix.c, + displaypixa.c, findcorners_reg.c, fpix1_reg.c, + fpix2_reg.c, fpixcontours.c, insert_reg.c, italictest.c, + jpegio_reg.c, label_reg.c, multitype_reg.c, nearline_reg.c, + newspaper_reg.c, numa1_reg.c, numa2_reg.c, recogsort.c, + recogtest1.c, shear1_reg.c, webpio_reg.c, wordboxes_reg.c + Removed src files: arithlow.c, binexpandlow.c, binreducelow.c, + dewarp.c + Removed prog files: blend_reg.c, blendtest1.c, + dewarptest.c, fpix_reg.c, inserttest.c, numa_reg.c, rotatetest2.c + shear_reg, xvdisp.c + +1.69 16 Jan 12 (distribution to debian; ubuntu 12-04; 3.0.0) + Fixed bug in pdf generation for large files, using a new + double array (dnabasic.c). Added several new modes for pdf + generation from sets of images. + Dewarp based on image content now aligns to left and right margins; + works at book level; is more robust to bad disparity models; + version 2 serialization. + Fixed regutils to return the actual number of errors. + Improved sorting efficiency of numas in cases where binning, + which is order N, makes sense. + Fixed fpix serialization (now version 2). + New version (5) of xtractprotos, allows putting prototypes in-line in + allheaders.h. Having them separately in leptprotos.h still an option + New copyright (BSD, 2 clause) on src files. + Removed all trailing whitespace in src files. + New src files: boxfunc4.c coloring.c, dnabasic.c + New prog files: dna_reg.c, alphaops_reg.c + Removed prog file: alphaclean_reg.c + +1.68 10 Mar 11 + Fixed windows issues with passing pointers across C-runtime boundaries + when using dlls, by providing special functions (e.g., lept_fopen()). + Proper version numbers are now set with automake. + New utility (quadtree.c) for generating quadtree statistics. + New utility (in colorspace.c) for conversions to and from YUV. + Refactored functions for assembling image data for generating + either PS or PDF images using g4, jpeg or flate encoding. + Better tempfile names, using current time in microseconds. + Functions for getting resolution from jpeg and png files. + Use size_t throughout for reading and writing binary data. + Deprecate arrayRead*() and arrayWrite() functions; replace in + the library with l_binaryRead*() and l_binaryWrite(). + Better handling of colormap images for in-place rasterop and shear. + New utility (bytearray.c) for parsing and handling binary data; + used for generating PDF files. + New utility (pdfio.c) for generating PDF files. + Refactored regutils functions to make them simpler to use. + Top-level deskew now works on any image. + Added functions in utils.c for cross-platform development, mostly + for functions that make and remove directories, copy, move + and delete files, etc. It should now be straightforward to write + programs that will compile and run on windows. + Reg tests have better printout; all give timings. + New utility program: convertfilestopdf + +1.67 9 Nov 10 + Autoconf: now built with James Cuirot's config files that + build the library and all 200 progs. + New sudoku solver. Just a game, but there are interesting aspects. + Modified parseprotos.c to reject a type of "extern" decl. + Add faster implementation for very small gray morphology + operations (3x1, 1x3, 3x3). + Eliminate warnings on recent gcc if you don't check return values + from fread, fscanf, fgets, system, etc. + Convolution: new functions for windowed variance and stdev; allow + non-square kernel for windowed mean square. + Put stdio.h and stdlib.h in alltypes.h, so they're not required + in any .c files. + Replace numaConvolve(), which is just a windowed mean, by + windowed statistics functions (mean, mean square, variance). + Generalize pixExtractOnLine() for arbitrary lines. + Add pix interface to webp (webpio.c, webpiostub.c). This is a + new open source codec, based on the video codec vpx (webm). + Serialization of FPix and DPix + Interconversion between FPix and DPix + Integer scaling of FPix and DPix; includes the last row and column. + New convertfiles.c: depth conversion on files in a directory. + Testing programs in prog: + convolve_reg.c, numa_reg.c: expanded test set + projection_reg.c (tests pixRowStats(), pixColumnStats()) + dewarptest.c: output ps and pdf files + writemtiff.c: simple driver to write images to a single file + +1.66 3 Aug 10 + More tweaks for including (or not) bounding box hints for + PS wrapping. Default is to write b.b., but not in functions + that wrap images as full pages (psio1.c, psio2.c) + pix4.c split in two files, and added function to identify c.c. + that are sufficiently similar in shape to rectangles (pix5.c) + Modify 2 and 4 bit setters to clip the input value so that it can + only affect the pixel requested (arrayaccess.c, arrayaccess,h) + New pseudorandom sequence functions (numafunc1.c) + Dewarping camera-based images using textlines (dewarp.c, prog/dewarp*) + Geometrical function for aggregating overlapping bounding boxes. + Programs to generate figures for book chapter "Document Image + Applications" in "Mathematical Morphology: theory and applications" + (see: http:/www.leptonica.org/najman-talbot-book-chapter.html) + (prog/livre*.c) + Functions that do affine and other operations in images with + alpha blending at edges: pix*WithAlpha(). Also do this + with a gamma/inverse-gamma wrapper to further reduce edge aliasing. + (rotate.c, scale.c, projective.c, affine.c, bilinear.c, + prog/alphaxform_reg.c) + Improved color segmentation (fixed bugs; made faster) + Higher order least square fits: quadratic, cubic, quartic. (pts.c) + Various mods for otsu binarization and the *SplitDistribution*() + functions (numafunc2.c, prog/otsutest2.c) + Control sampling in convolution output (convolve.c, prog/fpix_reg.c) + Morphological operations on numas (numafunc1.c, numafunc2.c, + prog/numa_reg.c) + Pix serialization wrapped so we can use pixRead(), etc on these + files (spixio.c, readfile.c, writefile.c) + Gif read/write to memory fixed (and cheated -- using files) (gifio.c) + New fpix and dpix accessors; contour rendering on fpix (fpix1.c, fpix2.c) + Various functions for linearly mapping colors and displaying arrays + of colors (pix4.c, blend.c, prog/rankhisto_reg.c) + Functions for getting approximate ranges of colors and color + components in an image (pix4.c, colormap.c) + Cleaned up windows platform and compiler defines and macros. + +1.65 5 Apr 10 + Added regression test utility functions for standardizing and + automating construction and running of regression tests. Makes the + golden files when the 2nd arg to the reg test is 'generate'. + (regutils.{c,h}) + Converted 22 reg tests in prog to use this; invoked with alltests_reg. + Goal is to put all prog/*_reg.c into this format and put a set + of golden files on the web. + Small fixes in gifio for handling streams properly. + New functions for shifting colors, hue invariant transforms, etc + (blend.c) + prog/dwamorph*.c: rename *1_reg.c to dwalineargen.c; others + converted to standard reg tests. + New rgb convolution functions. + For PS output, write all images with a bounding box hint and with + page numbers, which works for both embedded (e.g., in tex) and + full page generated PS. Once converted to pdf, this is fine + in all situation. + New functions for initialization and random insertion with pixcomp. + For color quantization, make the lightest color white if sufficiently + close; ditto for black (colorquant1.c, colorquant2.c). + Rank binning of 8 bpp and rgb images (numafunc2.c, pix4.c) + A function to rank colors by the intensity of the minimum comp (pix4.c) + New pixRotateBinaryNice(), rotates 1 bpp pix in such a way that + the shear lines aren't visible. (rotate.c) + New pixSaveTiledWithText(), a convenience function to append text + to images that are being tiled. (writefile.c) + Stereoscopic warping functions and stereo pair functions (warper.c) + Linear interpolated shear -- better than rasterop shear (shear.c) + Option to use higher quality chroma (U,V) sampling in jpeg (jpegio.c) + Rename Bmf --> L_Bmf. + New tests in prog: + alltests_reg.c alphaclean_reg.c, psio_reg.c, rankbin_reg.c, + rankhisto_reg.c, warpertest.c + +1.64 3 Jan 10 + Easy setup for standard byte processing on 8 bpp pix (pix2.c) + Evaluation of difference between similar images; test for + similar images and (compare.c) + Subpixel scaling, with color input and separate scale factors (pixconv.c) + Fix tiff header reader to get correct format (tiffio.c) + Enable pixDisplay() to work with i_view (windows) and with + xzgv and xli as well as xv; allow application to choose + which to use (writefile.c). + Use a mask to specify regions that are changed by a morphological + operation (morphapp.c). + Improve the default sharpening for scaling (scale.c) + Function to test for equivalence of file data (utils.c) + Select and read image files with embedded index (readfile.c) + Fix box size calculation in pixEmbedForRotation(); solution + provided by Brent Sundheimer. + New pixDisplayMultiple(), instead of calling gthumb directly; this + is now set up to use i_view for windows. + Changed criteria for determining if an image is color (colorcontent.c, + colorquant{1,2}.c. + Optional mode where the filename extension is automatically written + to output image files; particularly useful for windows. + Initialize boxa and pixa as full, with minimal placeholders. + Get rank valued numbers and boxes in numa and boxa. + Cute implementation for finding largest solid rectangle (maze.c) + New median cut quantization for mixed (color/gray) images (colorquant2.c) + Many changes to allow the library and applications be built easily + in windows. There is now a thorough windows readme, written by Tom + Powers, for doing this. The windows build information and + project files are now in a new vs2008 directory. + +1.63 8 Nov 09 + Added pixScaleToGrayFast(), a faster version with very similar quality. + Fixed scaleGrayLILow() to handle edge pixels more accurately + Text processing: + new text application (finditalic.c, prog/finditalic.c) for locating + words in italic type style. + Easier to add text to a pix using the bitmap font stored in + the font directory; see, e.g., prog/writetxt_reg.c. + Blending of 2 images with an alpha channel: pixBlendWithGrayMask() + Fixed bug in color segmentation; it now (again) works properly. + New utility (pixcomp.c) for handling compressed pix arrays in + memory; new PixComp and PixaComp structs. + Fast serialization of pix without compressing (pixSerializeToMemory + and pixDeserializeFromMemory); required serialized colormaps + FileI/O: new functions for reading file headers. + PostScript generation modernized; split psio.c into psio1.c + and psio2.c; added level 3 (flate) encoding. + new functions for reading and writing multipage tiffs, for + arbitrary input images. For writing, compression is lossless + (either g4 or zip) + update all I/O stub files + Miscellaneous: new pixaAddBorderGeneral(); new functions in pix3.c + for counting fg pixels and summing 8 bpp pixels by column and row; + new numaUniformSampling() for resampling with interpolation; + subpixel scaling. + New or improved regression tests in prog: + extrema_reg, pixalloc_reg, blend2_reg, rotateorth_reg, + ioformats_reg, colorseg_reg, pixcomp_reg, pixserial_reg, + writetext_reg, psioseg_reg, subpixel_reg. + Interface changes: + findFileFormat() and findFileFormatBuffer(): now returns format + using input ptr. The function return value is 0 if OK; 1 on error + rename: pixThresholdPixels() --> pixThresholdPixelSum() + +1.62 26 Jul 09 + Expanded composite Dwa implementation as a sequence of operations, + so that it now works beyond a size of 63. It's typically about 2x + faster than the composite rasterop implementation (with help + from Ankur Jain). Also use data transfer instead of data copy + whenever possible. Thorough tests with binmorph4_reg and binmorph5_reg. + New functions in colorseg.c for masking and histogramming in HSV + color space. + Treat string constants rigorously as const char*, initializing + to char[] if to be used as non-const, or in some cases casting + to char*. This avoids compiler warnings. + Improved color quantization using existing colormap for octcubes + and a new version for grayscale. This will rigorously map most + black and most white octcubes (rsp) to black and white + if they exist in the colormap. + Fast quantization to an existing colormap for color and grayscale. + Fixed some bugs; e.g., in pixAffineSampled() for 1 bpp with + L_BRING_IN_BLACK; reading and writing pnm for 2 and 4 bpp. + In pngio.c, enable compile time control over these settings: + converting 16 bpp --> 8 bpp on read + removing alpha channel on read + setting zlib compression on write + For general scaling, allow sharpening to be optional, and provided + faster sharpening operations. + Improve support for 16 bpp grayscale. + For scaleToGray* functions, reduce the width truncation. + In psio.c, new functions for converting segmented page images + (text and image) into level 2 PostScript. + Removed all implicit casting to const char*. + New custom pix memory allocator, designed for large pix whose + memory needs to be reused many times. + In xtractprotos, we now allow prepending an arbitrary string to + each prototype. + In environ.h, additions for MSVC to work with VC++6, including + prototpye strings for dll import and export (thanks to Ray Smith). + In colorseg.c, new functions for building HSV histograms, finding + peaks, and generating masks based on the peaks. + New or improved regression tests: + pixalloc_reg, binmorph4_reg, binmorph5_reg, conversion_reg, + scale_reg, cmapquant_reg, + +1.61 26 Apr 09 + New histo-based grayscale quantization: pixGrayQuantizeFromHisto(), + that is used in new pixQuanitzeIfFewColorsMixed(). + Made final fix in pixBlockconv(). No underflows; no more overflows! + More efficient rgb write with pnm. + Add proto to jpegiostub.c, allowing proper use of the stubber. + Fix several filter functions to use proper test on filter size; viz., + pixMinMaxTiles(), several functions in convolve.c. + Redo shear implementation to handle arbitrary angles, to handle + colormapped images, and to avoid the singularity at pi/2. + Removed both static vars from pixSaveTiled(). + Generalized pixRotate() to handle colormapped images, and to use + pixRotateBySampling() in place of the removed pixRotateEuclidean(). + New skew finder for full angle range, pixFindSkewOrthogonalRange(). + For skew detection, now allow shear about image center as well as + about the UL corner. + New rotation reg tests: rotate1_reg.c and rotate2_reg.c. + Better serialization format for boxaa; introduce new version numbers + for boxaa, pixa, and boxa, as required. + Proper init in boxGetGeometry(), boxaGetBoxGeometry(), and the + accessors in sel1.c and kernel.c. + Improved Numa functions in numafunc1.c and numafunc2.c; in + particular, numaMakeHistogramAuto() and numaGetStatsUsingHistogram(). + With all histo generators, make sure the start and binsize params + are properly set and are used. + Interface change: Use these parameters implicitly in + numaHistogramGetRankFromVal() and numaHistogramGetValFromRank(). + Interface change to ptaGetLinearLSF(): add 1 optional parameter. + In several pixaDisplay*() functions, handle colormaps properly. + pixafunc.c split to pixafunc1.c and pixafunc2.c. + New connected component selections and options in pixaSort. + Patch from Tony Dovgal for reading tiff rgba files. + Added new logical operation options for numas. + New pixConvertRGBToGrayMinMax() that chooses min or max of 3 components. + Computation of pixelwise aligned stats between multiple images + of the same size (e.g., video), in pix4.c. + Very fast binsort implemented for boxa and pixa. + Cleanup and rename stack, queue, heap and ptra functions: + all structs and typedefs start with "L_" + all functions start with "l" + Sel creation for crosses and T junctions. + New thresholding operations to binary; split out from adaptmap.c + into binarize.c. + Implementation of sauvola binarization, including use of pixtiling. + Added composite parallel union and intersection morphological operations. + Small changes to scaling and rotation to improve accuracy; only + visible on very tiny, symmetric images. + Implemented DPix (double precision data); useful for the mean + square accumulator for sauvola binarization. + New fast hybrid grayscale seedfill, in addition to the interative + version (contributed by Ankur Jain). + New or improved regression tests: + rotate1_reg, rotate2_reg, shear_reg, numa_reg, skew_reg, + ptra1_reg, ptra2_reg, paint_reg, smallpix_reg, pta_reg, + pixmem_reg, binarize_reg, grayfill_reg. + + +1.60 19 Jan 09 + Fixed bug in pixBlockconv(), introduced in 1.59, that causes + overflow when convolving with an image that has white (255) + at the edges. [quickly found by Dave Bryan] + Include function to display freetype fonts in a pix. + The files freetype.c and freetype.h are in the distribution, but are not + yet linked into the library. This is contributed by Tony Dovgal, + and this version works only for MSVC. + Found that the problems with binary compression in giflib are fixed + with giflib 4.1.6. + +1.59 11 Jan 09 + Lots of changes since 1.58. + New files: affinecompose.c, ptra.c, warper.c, watershed.{h,c}. + Split: boxfunc.c --> (boxfunc1.c, boxfunc2.c, boxfunc3.c) + Improved connected component filtering, with logical functions + applied to indicator arrays (pix4.c, pixafunc.c, numafunc1.c). + Function to determine if an image can be quantized nicely with + only a few colors (colorcontent.c, pixconv.c). + New gray seed-filling functions (seedfill.c, seedfilllow.c). + Fixed bugs in tophats and hdome, due to misuse of pixSubtractGray() + (morphapp.c). + New function for improving contrast (adaptmap.c) + Watershed transform (still slightly buggy) (watershed.c,h). + Fast random access into a pix using line pointers (pix1.c, arrayaccess.*) + Conversions of colormaps from gray to color and v.v. (colormap.c) + Seedfill function that applies an upper limit to the fill + distance (seedfill.c) + New function for warping images with random harmonic distortion + (with help from Tony Dovgal). + New generic ptr array utility: all O(1) functions of a stack plus + random replace, insert and delete (ptra.c). + Simple functions for colorizing a grayscale image with an arbitrary + color (pixconv.c, colormap.c) + Flexible affine transforms (translation, scale, rotation) on pta + and boxa (affinecompose.c). + Clipping of foreground (both exact and approximate) starting from + within a rectangular region of the image (pix4.c) + Blending a colored rectangle over an image (pix2.c, boxfunc3.c) + Generation of rectangle covering of mask components (boxfunc3.c). + Block convolution using tiles (for very large images) (convolve.c) + New or improved regression tests in prog: + locminmax_reg, lowaccess_reg, grayfill_reg, adaptnorm_reg, + xformbox_reg, warper_reg, cmapquant_reg, compfilter_reg, + splitcomp_reg, affine_reg, bilinear_reg, projective_reg + Acknowledgments: + (1) Big thanks to Tony Dovgal for helping with the warping + (e.g. for captcha). Tony also provided an implementation that + allows rendering truetype fonts into a Pix on windows. + This is not yet incorporated, because it opens a huge + "can of worms," which is OK if you're going fishing but + maybe not if you're trying to support leptonica on many platforms. + TBD. + (2) David Shao provided a libtools build system that includes + building the prog directory! I believe this will work, but it + is is not yet included because of problems I continue to have + with macros in version 2.61 of gnu libtools. + (3) Steve Rogers is working on a MSVC build for the prog directory. + I hope to have this available for 1.60. + +1.58 27 Sept 08 + Added serialization for numaa. + New octree quantizer pixOctreeQuantByPopulation(), that uses a + mixture of level2 and level4 octcubes. Renamed many functions + in colorquant1.c, and arranged/documented them more carefully. + Revised documentation in leptonica.org/papers/colorquant.pdf. + Simplified customization for I/O libraries and fmemopen() in environ.h. + Fixed bugs in colormap.c, viewfiles.c, pixarith.c. + Verified Adam Langley's jbig2enc (encoding jbig2 and generating pdf from + these encoded files) works properly with the current version -- see + Section 24 of README.html for usage and build hints. + New separable convolution; let pixConvolve() take 8, 16 and 32 bpp input. + New floating pt pix (FPix) utility, which allows convolution and + arithmetic operations on FPix; also interconversion to Pix. + Ability to read headers on multipage tiff. + More robust updown text detection in flipdetect.c. + Use of sharpening to improve scaling when the scale factor is near 1.0. + See prog/fpix_reg.c for regression test and usage. + See prog/blend_reg.c for blending regression test, with new functions. + +1.57 13 Jul 08 + New Debian distribution for 1.57 (thanks to Jeff Breidenbach). + Improved the Otsu-type approach for finding a binarization threshold, + by choosing the min in the histogram subject to constraints + (numafunc2.c, adaptmap.c) + New function pixSeedspread() in seedfill.c, similar to a voronoi tiling, + that is used for adaptive thresholding in pixThresholdSpreadNorm(). + In the process, fixed a small bug in pixDistanceFunction(). + (The approach was suggested by Ray Smith, and uses the fast + Vincent distance function method to expand each seed.) + Generalized the functions in kernel.c to use float weights + for general convolution (Version 2 for kernel), and added + gaussian kernel generation. + Put all jpeg header functions into jpegio.c, where they belong. + Fixed bugs in pixaInsertPix() and pixaRemovePix(). + Added read/write serialization for Numaa. + New functions for comparing two images using bounding boxes (classapp.c). + +1.56 12 May 08 + Added several new 1d barcode decoders. The functional interface + is still in flux. + Autoconf! To get this working, it was necessary to: determine and + set the endian flag; select which libraries are to be linked; + determine if stream-based memory I/O is enabled. + This required a major cleanup of the include files, minimizing + dependencies on external library header files, and getting everything + to work with both autoconf (HAVE_CONFIG_H) and the old + customized makefile. Customization is now all in environ.h. + pixSaveTiled(): a new way to display tiled images. + pixtiling.c: interface for splitting an image into a set of + overlapping tiles, using mirrored borders for tiles touching the + image boundary. + pixBlendHardLight(): new blending mode with nice visual effects. + pixColorFraction(): determines extent of color in image + Both octree and median-cut color quantization check first if + image is essentially grayscale; improvements to both algorithms. + box*TransformOrdered(): general sequence of linear transforms. + colorquant_reg.c, xformbox_reg.c, hardlight_reg.c: new regr tests. + +1.55 16 Mar 08 + New functions for combining two images arbitrarily through a mask, + including mirrored tiling (pix3.c) + Modify pixSetMasked*() to work on all images (pix3.c) + New functions for extracting masked regions such as pixClipMasked() + (pix3.c) and pixMaskConnComp() and pixMaskBoxa() (boxfunc.c). + New functions to separate fg from bg (pix3.c), one of which is supported + by numaSplitDistribution (numafunc.c). + Modify sobel edge detector to take another parameter (edge.c) + Support for 4 bpp cmyk color space in jpeg (jpegio.c) + Modified median cut color quantization (colorquant2.c) + Renamed colorquant.c (for octree quant) --> colorquant1.c. + Absorbed conncomp.h and colorquant.h into specific files that + depend on them (colorquant1.c, conncomp.c, pix.h) + General convolution with utility for building kernels + (convolve.c, kernel.c) + Initial implementation of 1D barcode reader. So far, we just have the + signal processing to locate barcodes on a page, deskew them, and + find the bar widths, along with decoders for two formats. + (readbarcode.*, prog/barcodetest.c) + Made the default to stub out read/write for non-tiff image formats + to memory; it doesn't work on Macs & they were complaining (*io.c) + Include MSVC project files for building leptonlib under + windows (leptonlib.*) + +1.54 21 Jan 08 + Histogram equalization (enhance.c). + New functions for pixaa: serialization (r/w), creation + from pixa, and a tiled/scaled display into a pixa (pixabasic.c, + pixafunc.c). + Read/write of tiff to memory (instead of a file, using + the TIFFClientOpen() callback interface), contributed by Adam + Langley (tiffio.c, testing in prog/ioformats_reg). + Improved image statistics functions, both over tiles and + through a mask over the entire image. Added standard deviation + and variance; enable statistics for rgb and colormapped images, + in addition to 8 bpp grayscale (pix3.c). New function to + extract rgb components from a colormapped image (pix2.c). + Fix pixWriteStringPS() to work with all depths and colormap (psio.c) + Enable all non-tiff formats to also write and read to/from memory (*io.c) + Added support for read/write to gif, contributed by Tony Dovgal + (gifio.c, gifiostub.c, imageio.h). See Makefile for instructions + on enabling this. + +1.53 29 Dec 07 + Add 4th arg to pixDistanceFunction() to specify b.c., + and fixed output to 16 bpp grayscale pix. (seedfill*.c) + New un-normalized block grayscale convolution (convolve.c) + Fixed bug in getLogBase2(), so that pixMaxDynamicRange() works + properly. This is useful for displaying a 16 bpp pix as + 8 bpp (pixarith.c). New function for getting rank val for + rgb over a region specified by a mask (pix3.c). New function + for extremem values of rgb colormap (colormap.c). New + function pixGlobalNormNoSatRGB(), a variant of pixGlobalNormRGB() + that prevents saturation for any component above a specified + rank value (adaptmap.c). Added mechanism for memory + management of pix (pix1.c). Added selective morphology by + region given by a mask (morphapp.c). Fixed prototype extracdtion + to work properly with function prototypes as args; released + version 1.2 of xtractprotos (parseprotos.c, xtractprotos.c). + Add a boxa field for pixaa, along with serialization (pixabasic.c), + and modified display of pixaa to include this (pixafunc.c). + Coalesced the version numbers for pixa, pixaa, boxa, and boxaa + serialization (pix.h). + New progs: modifyhuesat displays modified versions on a grid; + textlinemask shows simple methods for extracting textline masks. + +1.52 25 Nov 07 + Implemented Breuel's whitespace partitioning algorithm (partition.c). + Generalized pixColorMagnitude() to allow different methods + for computing the color amount of a pixel (colorcontent.c). + New methods for computing overlap of boxes (boxfunc.c). + New methods for painting (solid) and drawing (outline) of boxes, + replacing boxaDisplay() with pixDrawBoxa*() and pixPaintBoxa*() + (pix2.c, boxfunc.c). + Ray Smith fixed bug in the distance function (seedfilllow.c). + For pixConvertTo1() and pixConvertTo8(), treat input pixs as a + const and never return a clone or altered cmap (pixconv.c). + Make pixGlobalNormalRGB() crash-proof (adaptmap.c). + Tony Dovgal added ability to read jpeg comment (jpegio.c). + +1.51 21 Oct 07 + Improved histogramming of gray and color images (pix3.c) + Histogram statistics (numafunc.c). Better handling of tiff + formats, testing rle and packbits output and improving + level 2 postscript conversion efficiency (readfile.c, psio.c). + Test program for r/w and display of Sels (prog/seliotest.c). + Use endiantest to determine automatically which flags to set + when compiling for big- or little-endians (endiantest.c) + Compute a color magnitude for each rgb pixel (colorcontent.c). + Allow separate modification of hue and saturation (enhance.c). + Global transform of color image for arbitrary white point (adaptmap.c). + +1.50 07 Oct 07 + ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| + NOTE CAREFULLY: The image format enum in imageio.h has + changed. This is an ABI change, and it requires + recompilation of the library. + ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| + Suggestions by David Bryan again resulted in several changes, + including improvements to the dwa generating functions and interfaces. + Major improvements for dwa code generation, including an + optional filename for the output code, adding function prototypes + to the code so it can easily be linked outside the library. + Addition of 2-way composable dwa functions for bricks, with + code addition to the library, and a new interpreter for dwa + composable brick sequences (fmorphauto.c, fhmtauto.c, + morphtemplate1.c, hmttemplate1.c, morphdwa.c, dwacomb*.2.c, morphseq.c) + Exhaustively tested in six programs (prog/binmorph*_reg, + prog/dwamorph*_reg). + New input modes for Sels, from both color bitmap editors + and a simple file format (sel1.c). + Better Sel generation functions in sel2.c, including combs for + composable brick operations and linear bricks for comparison. + Removed unnecessary copies for more efficient border add'n & removal. + Added RLE basline enc/dec for tiff. + Binary morphology documentation on the web page updated for these + changes/additions. + William Rucklidge unrolled inner loops and added LUTs to + speed up several more functions, including correlation + (correlscore.c), centroid calculation (morphapp.c), + 2x linear interp grayscale scanning (scalelow.c), + thresholding to binary (grayquantlow.c), and removal + of colormaps to gray (pixconv.c). + +1.49 23 Sep 07 + ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| + NOTE CAREFULLY: The image format enum in imageio.h has + changed. This is an ABI change, and it requires + recompilation of the library. + ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| + Suggestions by David Bryan resulted in several changes. + pixUnpackBinary() unpacks to all depths. + Can now write and read tiff in LZW and ZIP (gzip) formats. + These, like uncompressed tiff, work on all bit depths. + Also enabled pnm 16 bpp r/w, both non-ascii and ascii. + ioFormatTest() now has better coverage and clarity; this is + used in prog/ioformats_reg.c. + Rewrite of morphautogen code to implement opening and closing atomically. + Cleaner interaction with new text templates (fmorphauto.c, + fhmtauto.c, sarray.c, *template*.txt,). + More regression testing (e.g., binmorph1_reg.c, binmorph3_reg.c). + +1.48 30 Aug 07 + William Rucklidge sped up pixCorrelationScore() by in-lining + all bit operations (jbclass.c). + Generalized rank filtering from 8 bpp to color (rank.c). + Fixed many functions that take a dest pix so that they don't fail if + the dimensions or depth are not consistent with the src pix. + The underlying change for this is to pixCopy() (pix1.c). + Improved display of Sel as a pix; added selaDisplayInPix() to + display all Sels in a Sela, orthogonal rotations of Sels (sel1.c). + New functions for thinning and thickening while preserving connectivity + and avoiding both free end erosion and dendritic cruft (ccthin.c, + prog/ccthin1_reg.c, prog/ccthin2_reg.c). + New function pixaDisplayTiledInRows() for compactly tiling pix + in a pixa, plus documentation of different existing methods. (pixafunc.c) + +1.47 22 Jul 07 + New brick rank order filter (rank.c, prog/ranktest.c, prog/rank_reg.c). + Use mirror reflection b.c. to avoid special processing at + boundaries (pix2.c). Simple sobel edge detector (edge.c). + Utility for assempling level 2 compressed images in PostScript + (psio.c, prog/convertfilestops.c). Enable read/write of 16 bpp, + grayscale tiff (tiffio.c, pix2.c). + New function for finding the number of c.c., which is a bit + faster than finding the b.b. or the component images (conncomp.c) + New functions for finding local extrema in grayscale image (seedfill.c) + +1.46 28 Jun 07 + Added interpreted mode for color morphology (morphseq.c). + In functions, make effort to consistently do early initialization + of ptrs to objects returned on the heap. This is to try to + avoid letting functions return uninitialized objects, even if + the return early because of bad input. + Split pixa.c into 2 files; revised the component filtering + in both pixafunc.c and boxfunc.c. Added component filtering + for "thin" components. + Added subsampling functions for numa and pta. + Word segmentation now works at both full and half resolution. + Better methods for displaying and tiling (for debugging), + using pixDisplayWrite(), pixaReadFiles() and pixaDisplayTiledAndScaled(). + +1.45 27 May 07 + Further improvements of orientation and mirror flip detection + (flipdetect.c). Added 2x rank downscaling and general integer + replicative expansion (scale.c). Simplified interface for + averaging, and included tiled averaging, which is yet another + integer reduction scaling function (pix3.c). + +1.44 1 May 07 + Split pix2.c into (pix2.c, pix3.c), with basic housekeeping + functions (e.g., ops on borders, padding) in pix2.c. + Split numarray.c into (numabasic.c, numafunc.c), with + constructors and accessors in numabasic.c. Added a number + of histogram, rank value and interpolation functions to numafunc.c. + Add rms and rank difference comparison functions (compare.c). + Separated orientation and mirror flip detection; fixed the latter + (flipdetect.c). + +1.43 24 Mar 07 + New and fixed functions for handling word boxes (classapp.c) + More consistent use of L_* flags (e.g., sarray.h, morph.h) + Morphology on color images (gray ops on each component) (colormorph.c) + New methods for generating sels; we now have five methods in + sel1.c and 3 others in selgen.c. Also a function that + displays Sels as an image, for use in documentation (sel1.c) + New high-level converters, such as pixConvertTo8(), pixConvertTo32(), + pixConvertLossless() (pixconv.c) + Identify regression tests, and rename them as prog/*_reg.c. + Complete revision of plotting package (gplot.c) + New functions for comparing pix (compare.c) + New morph application functions, such as the ability to run a + morph sequence separately on selected c.c. in an image, and + a fast, quasi-tophat function (morphapp.c) + Cleanup and new interfaces to border representations of c.c. (ccbord.c) + Page segmentation application (pageseg.c) + Better serialization with version control for all major structs. + Morphological brick operations with 2-way composite sels (morph.c) + +1.42 26 Dec 06 + New sorting functions, including 2-d sorting, for boxa and pixa, + and functions that sort by index (e.g., pixa --> pixa and + for 2d, pixa --> pixaa; ditto for boxa). + New accessors for pix dimensions. A new strtokSafe() to + substitute for strtok_r (utils.c). + Page flip detection, using both rasterop and dwa morphology + (flipdetect.c), with dwa generation (fliphmtgen.c) and testing + (prog/fliptest.c). + Increased basic sels from 42 to 52 (sel2.c). + Better high-level interfaces for binary morphology with + brick (separable) sels, both for rasterop (morph.c) and for + dwa (morphdwa.c); fully tested for both asymmetric and + symmetric b.c. (prog/morphtest3.c). Faster area mapping + reduction for power-of-2 scaling. + +1.41 5 Nov 06 + Simplified morph enums, removing all unused ones (morph.h). + Added new high-level interfaces for adaptive mapping (adaptmap.c). + New method to extract color content of images (colorcontent.c). + New method to generate sels from text strings, and to identify + roman text that is not properly oriented (thanks to Adam Langley). + Fast grayscale min/max (rank) scale reduction by integer factors. + New accessors for box and sel, that should be used when possible. + Thresholding grayscale mask by bandpass (grayquant.c). + Use of strtok_r() for thread safety. + +1.40 15 Oct 06 + Fixed xtractprotos for cygwin. Minor fixes and improved documentation + (baseline.c, conncomp.c, pix2.c, morphseq.c, pts.c, numarray.c, + utils.c, skew.c). Add ability to quantize an rgb image to a + specified colormap (colorquant.c); tested in prog/cmapquanttest.c. + Modifications to allow conditional compilation on MS VC++, + and to allow I/O calls to be stubbed out (new files: *iostub.c, + zlibmemstub.c, pstdint.h, arrayaccess.h.ms60) + +1.39 31 Aug 06 + ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| + NOTE CAREFULLY: There has been an interface change to make + affine, bilinear and projective transforms more general. + The implementation has been changed to allow them to handle + all image types and to make them faster (esp. with both sampled + and interpolated mapping on color images). + ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| + Added prog/Makefile.mingw to build executables. This is still + in a relatively raw state. It is necessary to download + gnuwin32 packages for 4 libraries (jpeg, png, zlib, tiff) + to link with leptonlib and the main, and I still have not + been able to build static executables (they require jpeg2b.dll, etc.). + +1.38 8 Aug 06 + ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| + NOTE CAREFULLY: There has been an interface change to both + simplify and generalize the grayscale morphology operations: + pixErodeGray(), pixDilateGray(), pixOpenGray(), + pixCloseGray(), pixTophat() and pixMorphGradient(). + The prototypes are not changed; old code will compile, but + it will be wrong! The old interface had a size and a type + (horizontal, vertical, square). The new interface takes + horizontal and vertical Sel dimensions. + ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| + For cross-compilation to make windows programs, you can use + src/Makefile.mingw to make a windows version of the library. + 6x scale-to-gray function donated by Alberto Accomazzi. + Interpreter added for sequence of grayscale morphological + operations, including the tophat (morphseq.c). + Pixacc container added to simplify the interface + for accumulator arithmetic using Pix. + Removed fmorph.c and fmorphlow.c from the library. These are + very limited and were deprecated in favor of fmorphauto(), which + autogens the code from (nearly) any Sel. + Fixed some of the gray morphology operations, which had errors + on the boundary. All gray morph ops should now be rigorously + OK (graymorph.c). For testing of graymorph dualities, the + the graymorph interpreter, etc., see prog/morphgraytest.c. + +1.37 10 Jul 06 + [After v.36 was released, Jeff Breidenbach built a Debian + distribution of Leptonica based on v.36, and you can now get Leptonica + as a Debian package. Use "apt-cache search leptonica" to see + what is available.] The libraries are now combined into a single + library (liblept.a, liblept.so) and the function prototypes are + also in a single file (leptprotos.h). cextract was found not + to work on recent versions of linux that support 64 bit data types, + and it is no longer distributed with leptonica. Instead, I wrote + a prototype extractor in leptonica (xtractprotos). When you + 'make allprotos', it now uses this program. The shared libraries + now have major and minor numbers corresponding to the version. + +1.36 17 Jun 06 + Line graphics generation (graphics.c) reorganized; separated out pta + generation from rendering. Can now render with alpha blending. + Examples of use are given in prog/graphicstest.c. + Sort functions for basic geometrical objects now have the option + of returning a numa giving the sort order on the original array. + The pixa sort can sort with either clones or copies of the pix. + +1.35 21 May 06 + The efficiency of the multipage jbig unsupervised classifier is + significantly improved due to a NumaHash struture implemented + by Adam Langley. Functions for computing runlength in 1 bpp + images have been added. + +1.34 7 May 06 + Completely rewrote the jbig unsupervised classifier. + It now works on multiple pages, and is more accurate in performing + visually lossless substitutions. You can classify by connected + components, characters, or words. The old data structures + and interfaces have been removed. New unpackers from 1 to 2 and + 1 to 4 bpp, with and without colormaps in the dest. + +1.33 18 Mar 06 + Generalized color snap to have different src and target colors, + and to include colormaps (blend.c). Distribute into root directory + that specifies the version number (e.g., 1.33). Add color + space conversion between rgb and hsv. Re-bundle thresholding + code from (binarize*.c, dibitize*.c) to grayquant*.c. + pixThreshold8() now also quantizes 8 bpp --> 8 bpp. + High-level pixRotate() that optionally expands image sufficiently + so that no pixels are lost in any sequence of rotations (rotate.c). + Generalize shear to specify color of pixels brought in, including + for in-place operation (shear.c, rotateshear.c). Faster version of + color rotation by area mapping, both about center and about UL corner. + You can now use the standard color rotator (pixRotateAM) and get + nearly the same speed as with the "Fast" one. + +1.32 4 Feb 06 + Ability to specify a sequence of binary morphological + (& binary reduction/expansion) operations in a single + function (morphseq.c). Fast downscaling combined with conversion + from rbg to gray and to binary (scale.c). Utility for + segmenting images by color (colorseg.c). + +1.31 7 Jan 06 + Remove more complicated functions that threshold to 2 bpp, + retaining the simplest interface. Retest all thresholding and + dithering. Add "ascii" write of PNM. Improve graphics writing + of lines; generalize to colormaps. New colorization functions + (paintcmap.c, blend.c). + +1.30 22 Dec 05 + Remove most instances of fprintf(stderr, ...), except within + DEBUG or encapsulated in error, warning or info macros. + As a result, there is no output to stderr if NO_CONSOLE_IO is defined. + Adaptive mapping to make bg uniform (adaptmap.c). A few bug fixes. + New PostScript output functions for embedding PS files + (prog/converttops). Generalized some image enhancement functions. + New functions for generating hit-miss sels. + +1.29 12 Nov 05 + More flexible blending of two images, with and without colormaps + (see blend.c). Painting colormapped images through masks, etc + (see paintcmap.c). More flexible interface for gamma and + contrast enhancement (see enhance.c). + +1.28 8 Oct 05 + Removed all pix colormaps for 1 bpp. Allow programmatic resetting + of binary morphology boundary conditions. Added (yet) another + simple octcube color quantizer. New colormap operations. + +1.27 24 Sep 05 + Renamed many of the enums and typedefs to avoid namespace + collisions. This includes structs and typedefs for BMP. + Interface change to pixClipRectangle(); apologies to everyone + whose code is broken by these changes -- I hope it's worth it. + Removed colormap.h; simplified all colormap usage, hiding details + from all but a few colormap functions. Am now saving file format + in the pix when an image is read, and can by default write + out in this format. Resolution info added for jpeg and png. + Added L_INFO* macros and l_info* fctns for printing + (e.g., debugging) info. Suggestions and code kindly + supplied by Dave Bryan, who helped solve compatibility issues + with MINGW32 (e.g., in timing and directory functions). + Added some blending and linear TRC functions. + Generalized pixEqual() to include all cases with and without + colormaps. New regression tests in prog: ioformats, equaltest. + +1.26 24 Jul 05 + Generalized affine pointwise to do interpolation as well as + sampling. For both projective and bilinear transforms, + implemented using both sampling and interpolation. + Added function to remove keystoning by computing the necessary + projective transform and doing it. Also find baselines in text images. + Added downscaling using accurate area-mapping over subpixels. + +1.25 25 Jun 05 + Better endian conversion fctns for 2 and 4 byte words. + Remove colormaps before converting by thresholds. + Added functions to read header parameters for png and tiff. + +1.24 5 Jun 05 + Added image splitting to allow printing in tiles (as several pages). + Added new octree quantization function to generate 4 and 8 bpp + colormapped output (not dithered). Fixed bmp resolution. + Added new flag for colormap removal (using dest depth based on + src colormap). Added I/O tests (prog/ioformats.c) + +1.23 10 Apr 05 + Added thresholding from 8 bpp to 2 and 4 bpp, allowing specification + of both the number of output levels and whether or not a colormap + is made. + +1.22 27 Mar 05 + Add pointer queue facility. To demonstrate it, you can now + generate a binary maze using a cellular automaton and find + the shortest path between two points in the maze. Add heap + of pointers (keyed on the first field), which is used to + implement a priority queue. This is applied to search for + a "least cost" path on a grayscale image (a generalization + of a binary maze). + +1.21 28 Feb 05 + Read/write of colormaps to file. For gplot, add a new + latex output terminal. Bring ptrs into 21st century by + including stdint.h, and using uintptr_t for the ptr address + arithmetic in arrayaccess.*. This seems to be OK back to + RH 7.0, but if you run into trouble with an earlier + C compiler, let me know. Also, use enums for global + constants whenever possible, and qualify named constants + (e.g., ADD --> ARITH_ADD, HORIZ --> MORPH_HORIZ) to avoid + possible interactions with other libraries. + +1.20 31 Jan 05 + Speed up of tiffio and pngio with byte swap generating new pix. + In textops.c, ability to split string into paragraphs, + in preparation for more general typesetting. + Automatic hit-miss Sel generation for pattern matching. + Fast downscaling using a lowpass filter and subsampling. + Generalization of several grayscale and color operations + to work on colormapped images. Improved scale-to-gray and + scaling reduction operations to be antialiased for best results. + +1.19 30 Nov 04 + Additions to fileIO: (1) new jpeg reading options, such as + returning warnings and scaled raster; (2) ability to write + custom tiff flags. Better tiling functions. + Edge extraction, both with grayscale morphology + and clipped convolution filters. More general painting + through a binary mask: pixSetMaskedGeneral(). + Unpacking from binary to 8, 16 and 32 bpp. Thresholding + and dithering from 8 bpp to 2 bpp ("dibitization"). New bitmap + font facility, using a single rendered font in a variety of + sizes: allows painting the text on an image (binary, gray, RGB). + (People have asked for the ability to write text on images). + +1.18 25 Aug 04 + Changed typedefs of built-in types to avoid possible conflicts. + Cleaned up and tested all programs in the prog directory. + Simplified and fixed the pixSetMasked() and pixCombineMasked() + functions. + +1.17 31 May 04 + Implemented distance function for 16 bpp. We can now generate + out 16 bpp PNG. Simple programs for generating PS from a + directory of g4tiff or jpeg images. Changed implementation of + erosion to allow either asymmetric or symmetric boundary conditions. + The distinction is described on the binary morphology web page. + Allow read/write of multipage TIFF files. Implemented + read/write of PNM files. + +1.16 31 Mar 04 + New depth conversion functions, improved conversion to false color, + new contour rendering (onto 1 bpp or onto the src grayscale image), + new orthogonal rotations, better interface for doing arithmetic + on 2-d arrays using a pix, improved distance function. + +1.15 31 Jan 04 + Fast interpolated color rotation with 4x4 subpixels; has + nearly the accuracy of the slower method using 16x16 subpixels. + Demonstration of line removal from grayscale sketch in + prog/lineremoval.c. Conversion of grayscale to false color. + Fixed shear and rotation functions to handle angle = 0.0 properly. + Other small fixes and interface improvements. + +1.14 30 Nov 03 + Small implementation changes to list.c. Better sorting + routines for number arrays (numa), plus sorting for box + arrays (boxa) and pix arrays (pixa). PostScript wrapper + for jpeg. Better handling of colormaps, and a simple + function to convert an RGB pix with not more than 256 + colors to the smallest colormapped pix. PS output wrappers + for JFIF JPEG and TIFF G4 files. Comments compatible + with doxygen for automatic documentation. + +1.13 31 Oct 03 + Cleaned up documentation in src. Made libraries and test programs + ANSI C++ compliant. Added special cases to rasterops for + alignment to word boundaries. Fixed pngio.c to work with + most recent libpng (1.2.5). + +1.12 30 Jun 03 + Implemented border chain representation from a binary image, + writes/reads a compressed version, and renders the original + image back from the borders. Also writes outline file out + in svg format. Number arrays (numa) and point arrays (pta) + are also extended to 2nd level arrays (numaa, ptaa). + Serialized I/O for boxa, pta, and pixa. + +1.11 31 May 03 + Implemented generic list handling, for doubly-linked + list cons cells and arbitrary objects. + +1.10 14 Apr 03 + Implemented simple image enhancements in gray and color: + gamma correction, contrast enhancement, unsharp masking. + Extended smoothing via block convolution to color. + Implemented auto-gen'd DWA version of hit-miss transform; + the code for generating these hmt routines is very similar to + that for DWA auto-gen'd erosion and dilation. + +1.9 28 Feb 03 + Implemented a safe, expandable byte queue. As an example of + its use, implemented memory-to-memory compression and decompression + using zlib. Generalized PS write to include RGB color. + Implemented a method to find image skew. + +1.8 31 Jan 03 + Implemented a simple 1-pass color quantization with dithering, + and improved the 2-pass octree color quantization. + Documented with an application page, that includes jbig2. + Added new general sampling operations and made a table + that summarizes the available scaling operations. + +1.7 31 Dec 02 + Added pixHtmlViewer(), a formatter that allows portable viewing of + a set of images (like a slide show) in a browser. + Implemented better octree color quantization, with variable + number of colors, pruning the octree for good color clusters, + and fast traversal for pixel assignment to colormap. + +1.6 30 Nov 02 + Generalized shear and shear rotation to arbitrary locations + about which the operation is performed. Implemented in-place + translation using pixRasteropIP(). Implemented arbitrary + affine transform of image two ways: pointwise and sequential. + Added binarization by error diffusion. Added simple color + quantization by octree. + +1.5 31 Oct 02 + Put jpeglib.h in local directory. This, along with the jmorecfg.h + file there prevents compiler warnings about redefined typedefs. + Compiled everything with g++ to make strictly ansi C compatible. + Added interface gplotFromFile() for simple file-based plotting with + gnuplot 3.7.2. Added functions to convert 2, 4 and 8 bpp + color-mapped (i.e., paletted) images to 24 bpp color or + 8 bpp grayscale. Added several jbig2 application cores that + only require a simple wrapper to make into programs. + +1.4 30 Sep 02 + Added interface to gnuplot 3.7.2 and to x11 display of images. + Added new functions with arrays of images for use in applications + such as jbig2 encoders, along with a simple jbig2 implementation + using either hausdorff or correlation scoring. Added centroid + finder for images. For accessing image arrays from arrays of + image arrays, added a "new reference" (NEW_REF) flag, with a + ref count attached to the array. Added power-of-2 binary + expansion and reduction. + +1.3 30 Jun 02 + Extended connected components to 8. Added morphological + operations tophat and hdome, along with clipped arithmetic + operators on grayscale images. Fixed memory error in + rasteropGeneralLow() that was found using valgrind. + Tested most operations with valgrind for memory errors. + Replaced integer arrays with number arrays, to include floats. + Added arithmetic functions on grayscale images. + +1.2 30 May 02 + Added connected component utility, stack utility, pix arrays, + line drawing and seed filling. Binary reconstruction, + both morphological and raster-oriented, are now supported + for 4 and 8 connected fills. Added the distance function + on binary images, grayscale reconstruction, and grayscale + morphology using the Gil-Werman method. + +1.1 30 Apr 02 + Added orthogonal rotations, binary scaling, PS output, + binary reconstruction, integer arrays, structuring element + input/output. + +1.0 25 Feb 02 + Initial distribution, with rasterops, binary morphology (two + implementations: rasterops and dwa), affine transforms + (translation, shear, scaling, rotation), fast convolution, + and basic i/o (BMP, PNG and JPEG). + + + +</pre> + +<!-- JS Window Closer ----- +<form> +<center> +<input type="button" onclick="window.close();" value="Close this window"> +</center> +</form> +----- JS Window Closer --> + +</body> +</html> +
