You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1737 lines
93 KiB
1737 lines
93 KiB
<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.86.0 Not released
|
|
* Modify pixFindBaselines() to avoid joining textboxes and to
|
|
ignore bogus textboxes when listing baseline end points.
|
|
* Modify convertToPSEmbed() to efficiently encode webp input images.
|
|
* Modify compressFilesToPdf() to allow upscale interpolation for
|
|
low resolution pdfs.
|
|
* Fix innocuous indexing error in pixFillMapHoles().
|
|
* Source files changed: adaptmap.c, baseline.c, pageseg.c,
|
|
pdfapp.c, psio1.c
|
|
* Prog files changed: baseline_reg.c, binarizefiles.c,
|
|
compresspdf.c, croppdf.c, misctest2.c,
|
|
* Prog files added: baseline1.png, baseline2.png
|
|
|
|
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>
|
|
|