comparison 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
comparison
equal deleted inserted replaced
1:1d09e1dec1d9 2:b50eed0cc0ef
1 <html>
2 <body BGCOLOR=FFFFE4>
3
4 <!-- JS Window Closer -----
5 <form>
6 <center>
7 <input type="button" onclick="window.close();" value="Close this window">
8 </center>
9 </form>
10 ----- JS Window Closer -->
11
12 <!-- Creative Commons License -->
13 <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>
14 This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/2.5/">Creative Commons Attribution 2.5 License</a>.
15 <!-- /Creative Commons License -->
16
17
18 <!--
19
20 <rdf:RDF xmlns="http://web.resource.org/cc/"
21 xmlns:dc="http://purl.org/dc/elements/1.1/"
22 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
23 <Work rdf:about="">
24 <dc:title>leptonica</dc:title>
25 <dc:date>2001</dc:date>
26 <dc:description>An open source C library for efficient image processing and image analysis operations</dc:description>
27 <dc:creator><Agent>
28 <dc:title>Dan S. Bloomberg</dc:title>
29 </Agent></dc:creator>
30 <dc:rights><Agent>
31 <dc:title>Dan S. Bloomberg</dc:title>
32 </Agent></dc:rights>
33 <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
34 <dc:source rdf:resource="www.leptonica.com"/>
35 <license rdf:resource="http://creativecommons.org/licenses/by/2.5/" />
36 </Work>
37
38 <License rdf:about="http://creativecommons.org/licenses/by/2.5/">
39 <permits rdf:resource="http://web.resource.org/cc/Reproduction" />
40 <permits rdf:resource="http://web.resource.org/cc/Distribution" />
41 <requires rdf:resource="http://web.resource.org/cc/Notice" />
42 <requires rdf:resource="http://web.resource.org/cc/Attribution" />
43 <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
44 </License>
45
46 </rdf:RDF>
47
48 -->
49
50 <pre>
51 /*====================================================================*
52 - Copyright (C) 2001 Leptonica. All rights reserved.
53 -
54 - Redistribution and use in source and binary forms, with or without
55 - modification, are permitted provided that the following conditions
56 - are met:
57 - 1. Redistributions of source code must retain the above copyright
58 - notice, this list of conditions and the following disclaimer.
59 - 2. Redistributions in binary form must reproduce the above
60 - copyright notice, this list of conditions and the following
61 - disclaimer in the documentation and/or other materials
62 - provided with the distribution.
63 -
64 - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
65 - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
66 - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
67 - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY
68 - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
69 - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
70 - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
71 - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
72 - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
73 - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
74 - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
75 *====================================================================*/
76 </pre>
77
78
79 <h2 align=center>Version Notes for Leptonica</h2>
80 <h3 align=center>3 Jan 2024</h3>
81
82 <hr>
83 <h2 align=center> <IMG SRC="moller52.jpg" border=1 ALIGN_MIDDLE> </h2>
84 <hr>
85
86 <p>
87 Note: The following are highlights of the changes in each version.
88 They are <i>not</i> a complete listing of the modifications.
89
90 <pre>
91
92 1.85.0 Oct 16, 2024
93 * Use wrapper callSystemDebug() instead of system() in programs.
94 * Fixed Issue #730: artifacts and bad compression with pixWriteJp2k.
95 Results are now identical with ImageMagick convert (to jp2).
96 * With PR732, Anton Tykhyy made pix(Read,Write)MemJp2k work with
97 direct memory access using openjpeg opj_stream functions. This
98 removes need for temp file on Windows when writing to/from memory.
99 * Achieve consistency with fclose() in library and lept_fclose()
100 in progs. Ditto for lept_free, lept_calloc, lept_fopen(), etc.
101 * Fix generation of bad colormap indices in
102 jbcorrelation and jbrankhaus
103 * Fixed coverity scan issues.
104 * Added findpattern2_reg.c to show generation of sels and their use.
105 * Added misctest2.c to show crop and clean page functions.
106 * Added page crop option for removing noise on left and right sides.
107 * Added page crop option to allow printing to full width of paper.
108 * Added page crop option to extract page within larger black image.
109 * Added renderpdf.c to library, to render pdfs as page images with
110 a specified resolution.
111 * Modified cleanpdf.c to use l_pdfRenderFiles().
112 * Issues #750, #752: problems in bmpio.c with taking address of
113 packed member.
114 * Source files changed: adaptmap.c affinecompose.c,
115 bmpio.c, boxbasic.c, colormap.c, compare.c,
116 dewarp1.c, dnabasic.c, fpix1.c, gifio.c,
117 gplot.c, grayquant.c, jbclass.c, jp2kheader.c,
118 jp2kheaderstub.c, jp2kio.c, jpegio.c, libversions.c,
119 morphseq.c, numabasic.c, pageseg.c partify.c, pdfapp.c,
120 pdfio2.c, pix2.c, pixabasic.c, pixcomp.c, pixconv.c,
121 pnmio.c, psio2.c, ptabasic.c,
122 readfile.c, recogbasic.c, renderpdf.c,
123 sarray1.c, sel1.c, utils2.c, writefile.c,
124 allheaders.h, environ.h
125 * Prog files changed: alltests_reg.c, binmorph3_reg.c,
126 blend2_reg.c, blend4_reg.c cleanpdf.c, compressedpdf.c, croppdf.c,
127 findpattern_reg.c, findpattern1_reg.c findpattern2_reg.c,
128 htmlviewer.c, jbcorrelation.c, jbrankhaus.c,
129 jp2kio_reg.c, libre_makefigs.c, misctest1.c, misctest2.c,
130 pdfio2_reg.c, printimage.c, printsplitimage.c,
131 printtiff.c, psioseg_reg.c, splitpdf.c,
132 string_reg.c, tiffpdftest.c, xtractprotos.c
133
134 1.84.1 Jan 3, 2024
135 * Remove support for openjpeg versions < 2.1.
136 * Improve error handling for stringLength() and stringCat(), and
137 add tests in prog/string_reg.
138 * Source files changed: blend.c, dnafunc1.c, jp2kio.c, pageseg.c,
139 partify.c, pix1.c, ptafunc2.c, sarray2.c, utils2.c
140 * Prog files changed: boxa3_reg.c, string_reg.c, writetext_reg.c,
141 deskew_it.c
142
143 1.84.0 Dec 23, 2023
144 * Add getPdfPageCount() to find the number of pages in a pdf file.
145 * Add getPdfPageSizes() and getPdfMediaBoxSizes() to find the
146 information necessary to render images properly. Modify cleanpdf.c
147 and concatpdf.c to use this information.
148 * Add prog/splitpdf.c to split a pdf file into nearly equal page sets.
149 * Add ability to read and write rgba in bmp format, and
150 test in ioformats_reg.
151 * Add regression test prog/partition_reg.c
152 * Change the autotools library name from liblept to libleptonica,
153 to be consistent with the cmake library name. (Apologies to Jeff!)
154 * Add tests for 24 bit pix reading and writing in bmp and png in
155 ioformats_reg. Test new pixDisplayDiff() for visualizing diffs.
156 * Allow prog/concatpdf to output pdf with tiffg4 encoding and with
157 mixed tiffg4 and DCT encoding depending on image color content.
158 * Rename prog/concatpdf --> prog/compresspdf
159 * Put image processing and generation of output pdf from compresspdf
160 and cleanpdf into functions in new files: pdfapp.c, pdfappstub.c.
161 * Add versatile function for cropping an image and filling to
162 page size, along with prog/croppdf to do this on pdf file.
163
164 1.83.0 Dec 20, 2022
165 * Simplify setting the title of pdf files.
166 * Catch tiff failure to open stream in fopenTiffMemStream()
167 * Check for POSIX functions fstatat() and dirfd() before use.
168 * In prog/cleanpdf: do not allow threshold to exceed 190. Make all
169 parameters required; do not use default values for invalid parameters.
170 * In prog/concatpdf: add input param for title; add jpeg quality factor
171 * Fix flaky hash_reg test on i686: sets generated from SelectRange()
172 can depend slightly on platform.
173 * Convenience function for adding multiple black and white borders.
174 * Fix oss-fuzz issue 42202: underined shift in l_convertCharstrToInt().
175 * Fix oss-fuzz issue 43841: made pixCountPixels() more efficient.
176 * Fix oss-fuzz issue 44008: pixCountArbInRect() used wrong depth.
177 * Always return tiff resolution of 0 (unknown) if not set.
178 * Simplify operations on pix memory to help avoid mem leaks
179 * Make bmp non-support of 32-bit bmp (rgba) files explicit.
180 * Improve tiff read resolution conversion by rounding.
181 * Use stdatomic.h to make cloning string safe.
182 Remove all *GetRefcount() and *ChangeRefcount() accessors.
183 * Replace procName and mainName strings by __func__.
184 * Remove information about fields in many structs from the public
185 interface allheaders.h, instead putting them in internal files
186 pix_internal.h, array_internal.h and ccbord_internal.h.
187 * Increase the .so number from 5.4.0 to 6.0.0.
188 * Rename the autotools generated libraries from liblept to libleptonica
189 * Fix potential memory leaks from recogAverageSamples() and
190 recogDebugAverages() by not destroying a recog.
191
192 1.82.0 Sept 22, 2021
193 * Fix issue-585: reading tiff rgb with tiffbpl = 1.5 * packedbpl.
194 * Fix issue-586: failure to properly wrap tiff-g4 in pdf without
195 transcoding. The fix is to do transcoding for tiff-g4, as was
196 done before April 2021.
197
198 1.81.1 June 11, 2021
199 * Added choice of codec (JP2 or J2K) when writing jp2k files.
200 * Fix use of hashmap with key based on dna.
201
202 1.81.0 June 6, 2021
203 * Fixed problems with tiff pdf wrapping photometry.
204 * Fixed scaling issues in prog/cleanpdf for printing.
205 * New progs: tiffpdftest, hashtest
206 * Fixed uninitialized data error in pixAddBorderGeneral() and
207 pixRemoveBorderGeneral()
208 * Rewrote Numa functions that discretize into bins. Have
209 binning by both sorting and histogram.
210 * Rewrote and simplified pixGetRankColorArray() and pixGetBinnedColor().
211 * Added tests to prog/rankbin_reg.c.
212 * Simplified fpixCopy() and dpixCopy(), and functions that use them.
213 * Check input for bilateral transforms.
214 * Add function for splitting a file evenly by lines.
215 * Check input for getFilenamesInDirectory()
216 * Many new fuzzers.
217 * Use size_t for all size inputs to ascii85 encoding/decoding
218 * New regression tests: encoding_reg.c, binmorph6_reg.c,
219 flipdetect_reg.c
220 * Reworked concatpdf for generality, using the Poppler package.
221 * Removed dwa flipdetection from the library. All the dwa code
222 is now in flipdetectdwa.c.notused. Likewise prog/flipselgen.c
223 is retained for completeness, renamed flipselgen.c.notused,
224 and is not compiled.
225 * Added hashmap utility (hashmap.c, hashmap.h).
226 * Removed functions using dnahash on strings, pts and doubles.
227 * Improved the speed of hashing for strings and doubles.
228 * Added function for tiling images in pairs for comparison.
229 * Added null terminations to serialized strings written to memory,
230 preventing buffer overrun by strlen() [fixed by Stefan Weil].
231 * No longer use "NoInit" versions of pix creation in leptonica.
232 because they risk reading uninitialized data. These functions
233 remain in the library because they are in use in applications.
234 * Add two composite binarization functions, from prog/binarize_set.
235 * Giulio Lunati fixed pnm reading to work with stdin input.
236 * Removed several of the boxa compare and modify functions.
237 * Implemented reading jpeg200 data encded in j2k "codestream" format.
238 Can now read data in both jp2 and j2k.
239
240 1.80.0 28 July 2020
241 * Improve bmp handling of 1 bpp images and sanity checking of params.
242 * Add function to display all rgb gamut colors
243 * in Makefile.am, use option serial-tests to avoid races in testing
244 * Make m4 subdirectory and add ax_split_version.m4 there
245 * Simple function for hue-invariant mapping (pixMapWithInvariantHue)
246 * Fixed bug in limit of ptra size when used for sorting by bins.
247 * Use hashmap to count pixel colors in RGB(A) images.
248 * Convert hashtest program to regression test hash_reg.
249 * Convert croptest program to regression test crop_reg.
250 * New color segmentation by region growing (colorfill.c)
251 * New regression tests: colorfill_reg, circle_reg, ccbord_reg.
252 * Set maxima for all allocations for common leptonica data structures.
253 * Don't fail when downscaling 2, 4, 8, and 32 bpp images, even
254 to one pixel, invoking pixScaleSmooth().
255 * New functions that select 1 bpp components based on their area.
256 * Incremental addition to sorted array of numbers.
257 * new prog/fuzzing directory for oss-fuzz based fuzzing programs
258 * use of pixcmapIsValid() with extra argument to determine validity
259 with the pix it is attached to.
260 * Use lept_stderr() in all programs in the prog directory.
261 * New program rasteroptest() for thorough testing of rasterop functions.
262 * Removed the pixSaveTiled*() functions
263 * Stubbed pixDisplayWrite(). Last used in tesseract 3.04.01 (2/2016).
264
265 1.79.0 1 Jan 2020
266 * Clean up auto-generation of files; removed 'register'
267 * Some fixes for issues identified by fuzzer
268 * New source files: checkerboard.c
269 * New programs: replacebytes.c, webpanimio_reg.c, partifytest.c,
270 rectangle_reg.c, lowsat_reg.c, rotate_it.c, scale_it.c, dewarp_it.c,
271 pdfio1_reg.c, pdfio2_reg.c, checkerboard_reg.c, underlinetest.c.
272 * Convert to standard reg test: heap_reg.c, pixa1_reg.c, smallpix_reg.c
273 * Improve data checking when reading image file headers
274 (pnm, png, jpeg, tiff)
275 * Fix some bugs in pnm reading
276 * Fix inconsistencies with the encoding type flags in pdf writing
277 * Allow tiff to write images with colormaps
278 * Fix errors in PS code; made some functions static
279 * Add code for animated webp (requires webp mux and demux libraries)
280 * Add "partify" application for separating parts in a musical score
281 * Enable tif read/write of gray+alpha and rgba; filter out tiff
282 pixels that are not uint and compression by tile
283 * Apply consistent formatting of static const variables
284 * Add programs for scaling, rotation and deskew, named dewkew_it,
285 rotate_it and scale_it, for useful operations on arbitrary images.
286 * Convert pdfiotest program to two regression tests: pdfio1_reg
287 and pdfio2_reg.
288 * Remove all use of strncat; use stringCat().
289 * New functions from removing outliers in sequences of boxes.
290 * Generalize pixAverageInRect(): mask, region and range filters,
291 and subsampling. New pixAverageInRectRGB().
292 * Fix int overflow bug in pixMedianCut(); required new heap accessor.
293 * New pixMultiplyGray() allows pix to be multiplied by an array (or
294 another pix)
295 * Better routines for counting color.
296 * Lossless conversion for RGB to cmap with not more than 256 colors.
297 * New histo based global thresholding: pixThresholdByHisto().
298 * Allow most reg tests to run even if external libraries are not
299 available.
300 * New one-line gplot functions that return a pix.
301 * New application to find where corners meet in a checkerboard.
302 * Add utility functions for painting through mask in cmap pix,
303 creating a hit-miss sela from a color pix, equality of two pta.
304 * Proper handling of 1 bpp colormap tiffs: remove when reading,
305 preserve when writing.
306 * Deprecate three pixSaveTile*() functions; removed all calls to
307 these from the library and progs.
308 * Include auto_config.h explicitly in all src and prog files.
309 * Improve input data checking for bmp files.
310 * Added pixAutoPhotoinvert() for tesseract, to automatically photo-
311 invert text regions where the background is black and text is white.
312
313 1.78.0 21 Mar 19
314 * Various improvements in handling boxa sequences and transforms.
315 * New regression tests: boxa4_reg, string_reg
316 * New function for copying a pix, filtered by a boxa.
317 * Modify histogram method for image comparison.
318 * More careful attention to invalid boxes in box geometry functions.
319 * Better string and array functions for search and replace.
320 * Convenience functions for generating simple masks.
321 * Allow pdf writing of jp2k images, in full generality.
322 * Allow writing compressed ps images for printing.
323 * Modified enum comments to include a suggested enum name.
324 * New program: imagetops
325
326 1.77.0 14 Dec 18
327 Here is the current status of CVE issues with leptonica; see
328 https://security-tracker.debian.org/tracker/source-package/leptonlib
329 * CVE-2018-7442: potential injection attack because '/' is allowed
330 in gplot rootdir.
331 Functions using this command have been disabled by default in the
332 distribution, starting with 1.76.0. As for the specific issue, it
333 is impossible to specify a general path without using the standard
334 directory subdivider '/'.
335 * CVE-2018-7186: number of characters not limited in fscanf or sscanf,
336 allowing possible attack with buffer overflow.
337 This has been fixed in 1.75.3.
338 * CVE-2018-3836: command injection vulnerability in gplotMakeOutput().
339 This has been fixed in 1.75.3, using stringCheckForChars() to block
340 rootnames containing any of: ;&|>"?*$()/<
341 * CVE-2017-18196: duplicated path components.
342 This was fixed in 1.75.3.
343 * CVE-2018-7441: hardcoded /tmp pathnames.
344 These are all wrapped in special debug functions that are not
345 enabled by default in the distribution, starting with 1.76.0.
346 * CVE-2018-7247: input 'rootname' can overflow a buffer.
347 This was fixed in 1.76.0, using snprintf().
348 * CVE-2018-7440: command injection in gplotMakeOutput using $(command).
349 Fixed in 1.75.3, which blocks '$' as well as 11 other characters.
350 Wrapped the few 'system' calls in an extra layer of debug code.
351 More coverity scan fixes; defects are about 1 per 10,000 source lines.
352 New regression tests: numa1_reg, numa2_reg, lowaccess_reg,
353 pixmem_reg.
354 New non-regression test programs: histoduptest
355 Juergen Buchmueller is working on Lua bindings. He typedef'd l_ok
356 and used it in 1100 functions that return a success/failure status.
357 He also helped clean up remaining issues in the doxygen-generated
358 documentation.
359 Using a packed struct for bmp headers to avoid crash on
360 some big-endians.
361 Fixed a bug in the prototype parser for xtractprotos that was
362 surfaced by a typedef declaration for the bmp headers.
363 Cleaned up IOS guards to avoid compiling a system(3) call on IOS.
364 Renamed autobuild --> autogen.sh
365 Added some basic pixa functions for rotation and translation.
366 Added an iterative method to find rectangular coverings for
367 arbitrary connected components.
368 Converted two tests to reg tests running in alltests_reg:
369 ptra1_reg, ptra2_reg
370 Enabled read/write for standard jpeg compressed tiff images.
371 Enabled reading for the old (deprecated) jpeg-encoded tiffs.
372 Fix range selectors for pixa, pixaa, boxa, boxaa, pta:
373 Now, last = -1 goes to the end.
374 When reading tiff --> pix, insert IMAGEDESCRIPTION into text field.
375 Converted iotest to reg test iomisc_reg; added to alltests_reg
376 Converted rasterop_reg into a standard regression test; added
377 to alltests_reg.
378 Converted boxa2_reg and fhmtauto_reg into standard regression tests;
379 added to alltests_reg.
380 Split boxa sequence functions out of boxfunc4.c, into a new boxfunc5.c.
381 Simplified bmp header and made reading more clearly endian
382 agnostic (Juergen Buchmueller)
383 New boxa3_reg regression test. This tests sequences of boxes
384 by two new boxfunctions in boxfunc5.c.
385 New bootnumgen4.c for more digit templates.
386 Rename prog/recog_bootnum.c --> prog/recog_bootname1.c
387 New in prog: recog_bootnum2.c, recog_bootnum3.c, recogtest7.c
388 Fixed uninitialized data in pixCentroid() on 1 bpp pix.
389 New reg test: bytea_reg.c. (removed byteatest.c)
390 Fixed bug in non-transcoding pdf generation from 1 bpp png.
391 Added LGTM to static analyzers that run over the library.
392
393 1.76.0 1 May 18
394 Modify infrastructure to fix outstanding security issues. By default,
395 you can no longer create temp directories and temp files whose
396 names are known to the compiler. Also, prevent "system" calls,
397 which were used for image display and gnuplot.
398 Replaced remaining sprintf() with snprintf() in prog tests.
399 Added non-transcoding functions for generating pdf from jpeg pixacomp
400 Add control of jpeg quality from pixWriteMem() and pixWriteStream()
401 Fixed getFilenamesInDirectory() to properly identify directories
402 Prevent size overflow in calloc for kernel; cleaned it up fpix and dpix
403 bmp reading now accepts negative height
404 Simplified splitimage2pdf; it no longer uses ps2pdf
405 Remove name-mangling WRITE_AS_NAMED compile option.
406 Removed 2 deprecated write functions.
407 Added these regression tests:
408 locminmax_reg, speckle_reg, watershed_reg,
409
410 1.75.3 15 Feb 18
411 Fixed some coverity scan issues.
412 Autotools fix to check for png if enabling gnuplot (James Le Cuirot).
413
414 1.75.2 11 Feb 18
415 Converted several progs to standard regression tests.
416 Added these tests to the alltests_reg suite:
417 adaptnorm_reg, binmorph1_reg, binmorph3_reg, equal_reg,
418 extrema_reg, grayfill_reg, falsecolor_reg, grayquant_reg.
419 Autotools fix for restricting giflib to 5.1+, and allowing
420 openjpeg 2.3 (James Le Cuirot).
421
422 1.75.1 31 Jan 18
423 Simpler and more accurate function for finding word masks from
424 text image; better debugging and more thorough testing.
425 Added to regression test set: prog/italic_reg
426 Fix for potential injection attack using gplot rootdir.
427 Bug fix for bmp reading to set opacity.
428
429 1.75.0 24 Jan 18
430 This is a new version, for major Ubuntu release 18.04.
431 $TMPDIR path rewriting turned off on Unix; only used for Windows.
432 Added pix conversion to depth 2 and 4. We now have general
433 converters to 1, 2, 4, 8, 16 and 32 bpp.
434 Modified giflib to use read/write from/to memory; no temp files;
435 no longer support versions before 5.1.
436 Move most low-level code from separate files to their callers;
437 about 30 of them became static.
438 Improved table detection on scanned page images (tests: pageseg_reg.c)
439 Added support for write/compare regression tests for files.
440 Modified printimage for more flexibility.
441 Enable lookup by key on comma-separated key/value text file.
442 Update README.html for building with Visual Studio.
443 Improved functions for getting pixel averages in RGB images
444 Simplified and speedup of unsharp masking.
445 New function for detecting and correcting text orientation.
446 Remove slow sharpening operation when not appropriate during scaling.
447 Better handling of gplots with 0 or 1 data point.
448 Coverity scan fixes.
449 Modified jpeg2000 header to use openjpeg 2.3.
450 Improved depth accessors for pixa and pixaa; added size accessors
451 for pixa and pixaa.
452 Bug fix in webp interface on read error.
453 New function that finds the closest boxes in a boxa to any particular
454 box, in each of 4 directions.
455 New regression tests in automated sequence: blend5_reg, quadtree_reg,
456 wordboxes_reg.
457 New program: textorient
458 Removed programs: snapcolortest
459
460 1.74.4 11 Jun 17
461 Converted two progs to reg tests
462 New version because 1.74.3 had some spurious files (xtractprotos,
463 endianness.h)
464
465 1.74.3 9 Jun 17
466 Coverity scan fixes.
467 Several fixes for running on Windows, including subtle one with tiff
468 encoding depending on pad bits.
469 Utility and test if a page image likely has a table.
470 Remove use of pixCreateTemplateNoInit() where it may cause problems.
471 Make release 'configure-make ready'
472
473 1.74.2 19 May 17
474 Many simplifications and improvements to recognizer.
475 Cleanup of doxygen comments
476 Encoded pdf title in escape 4-byte hex (for safety)
477 Fixed several hundered coverity scan possible leaks
478 Added about 20 regression tests to the automated set.
479 Improved vertical alignment of dewarp.
480 Implemented preliminary method for correcting dewarp foreshortening
481 due to page curvature.
482 Improved multipage tiff reading and writing.
483 Added a new version of textline finding.
484 Fixed bug in fast 2D sharpening code (used in some scaling ops)
485 BMP i/o rewritten to implement memory version directly.
486 PNG i/o functions added for encoding and decoding directly to memory.
487 Method for finding light color regions on scanned page images.
488
489 1.74.1 3 Jan 17
490 Configuration changes to support the patch number in the
491 version (major.minor.patch).
492 Removed all remaining pixDisplayWrite() calls in prog/.
493 Cleaned up and/or promoted about 15 programs to full regression
494 tests. There are now 95 tests in the regression set.
495 Over half the initial coverity scan warnings have been removed.
496
497 1.74.0 10 Dec 16
498 Leptonica development was moved to github. The master is at:
499 github.com/danbloomberg/leptonica
500 Egor Pugin is the maintainer of the site.
501 A very large number of changes have been made. Some of them follow;
502 details can be found in the git commit messages.
503 Static makefiles modified to work with gnu*9 and c*9.
504 Modify SET macros to work on windows.
505 New modes for RGB --> gray conversion.
506 New functions added for displaying a pix from a pixa.
507 Split out sort/hash/set/map functions for dna, sarray and pta.
508 More robust horizontal deskew on multi-column page images.
509 Improve webpio_reg test.
510 Remove X11 display for gplot; it is no longer supported.
511 Remove most sleep calls, which were put in for gplot; no longer needed.
512 Removed use of gthumb in library.
513 Removed use of pixDisplayWrite() in the library; still in some progs.
514 Improved test for endianness in makefile.static; no longer requires
515 any local files or building and running a program.
516 Modified all files for doxygen output (spearheaded by
517 Juergen Buchmueller)
518 Improved plotting of the boxes in a boxa.
519 Replaced the slow point hash function with a simple fast one.
520 Added pam (4 component) format writing to pnmio.c (Juergen Buchmueller)
521 Improved rendering of pixa in side/by/sides.
522 Better utilities for pixa and pixacomp.
523 Add read/write serialization functions from/to memory for all
524 the major data structures that do not already have them.
525 More serialized boot recognizers stored as self-generating code.
526 Cleaned up generating an adapted recognizer from the boot recognizer.
527 Simplified temp file naming; removed most instances of named
528 temp files from non-debug code; use tmpfile() and a wrapper
529 l_makeTempFilename().
530 Simplify and streamline multipage tiff reading (Jeff Breidenbach).
531 Improvement of Otsu thresholding.
532 Recognize outstanding contributors to leptonica over the years.
533 New gif mem read/write interface that avoids writing a temp file,
534 contributed by Tobias Peirick.
535 Use double arrays (dna) instead of float (numa) for set ops.
536 Enrolled in coverity scan to find potential bugs (Stefan Weil
537 managed it). Fixed about 200 of them, mostly potential memory
538 leaks from early function exit.
539 Cleanup of gray quantization functions and tests.
540 Refactored connectivity-conserving operations, to make them more useful.
541 Provided methods for measuring and regularizing the width of strokes.
542 Removed viewfiles.c from library; code is now in prog htmlviewer.c.
543 Better debugging in page segmentation (pageseg.c)
544 Deprecated the pixDisplayWrite*() debugging methods.
545 Added about 15 regression tests to the framework in alltests_reg.c
546 Final mods for compatibility with tesseract 4.00.
547
548 1.73 25 Jan 16
549 All lept_* functions have been rewritten to avoid path rewrites for
550 output to temp files, which were introduced in 1.72.
551 Now, (1) files are written to the directory specified and (2) we
552 are careful to write to subdirectories of /tmp/lept/ for all test
553 programs, starting with the reg tests and prog/dewarp* and
554 prog/recog*. This also required re-writing stringcode.c and
555 stringtemplate1.txt to write temp files to subdirectories.
556 Goal is to write to the specified path while not spamming the
557 /tmp and /tmp/lept directories. This is particularly important
558 on windows because files in the <TEMP> directory are not cleared
559 on reboot.
560 Naming changes (to avoid collisions):
561 #defines MALLOC --> LEPT_MALLOC, CALLOC --> LEPT_CALLOC, etc.
562 ByteBuffer --> L_ByteBuffer
563 Added grayscale histogram functions that can be used to compare images.
564 Added functions to determine if an image region has horizontal
565 text lines.
566 Added functions to compare photo regions of images to determine
567 if they're essentially the same.
568 Added red-black tree utility functions to implement maps and sets.
569 The keys for maps and sets can be 64-bit entities (signed and
570 unsigned integers and doubles).
571 Implemented hashsets and hashmaps, using 64 bit keys.
572 Replaced the numaHash by l_dnaHash; removed numa2d
573 Improved security of tiff and gif reading, to prevent memory corruption
574 when reading bad data.
575 Removed src files: bootnumgen.c
576 Added src files: rbtree.c, rbtree.h, map.c, bootnumgen1.c, bootnumgen2.c
577 Added prog files: rbtreetest.c, maptest.c, settest.c, hashtest.c,
578 recog_bootnum.c, percolatetest.c
579 Added files for building using cmake (Egor Pugin)
580
581 1.72 5 Apr 15
582 Better handling of 1 bpp colormap read/write with png so that
583 they are losseless. The colormap is always removed on read and
584 the conversion is to the simplest non-cmapped pix that can fully
585 represent the input -- both with and without alpha.
586 Fixed overflow bug in pixCorrelationBinary().
587 Fixed orientation flags and handling of 16 bit RGB in tiff.
588 Also new wrappers to TIFFClientOpen(), so we no longer go through
589 the file descriptor for memory operations.
590 Improvements in the dewarp functions.
591 New box sequence smoothings.
592 New antialiased painting through mask; previously it was only
593 implemented for connected components in a mask.
594 Better error handling and debug output with jpeg2000 read/write.
595 Implemented base64 encoding. This allows binary data to be represented
596 as a C string that can be compiled. Used this in bmf utility.
597 Implemented automatic code generation for deserialization from
598 compiled strings (stringcode.*)
599 Regression tests write to leptonica subdir of <Temp> in windows; in
600 unix it is optional. This avoids spamming the <Temp> directory.
601 Added new colorspace conversions (XYZ, LAB).
602 New source files: encoding.c, bmfdata.h, stringcode.c, stringcode.h,
603 bootnumgen.c.
604 Removed source files: convolvelow.c, graymorphlow.c
605 New programs: genfonts_reg, colorize_reg, texturefill_reg,
606 autogentest1, autogentest2.
607 alltests_reg now has 66 tests.
608
609 1.71 18 Jun 14
610 This version supports tesseract 3.04. In particular, 3.04
611 has automatic conversion of a set of scanned images, either in a
612 directory or coming directly from a scanner, into pdf with injected
613 text. This is something we've wanted to do for several years!
614 Improved jp2k header reading, including resolution.
615 Removed src files: rotateorthlow.c, pdfio.c, pdfiostub.c
616 Renamed jp2kio.c, jp2kiostub.c ==> jp2kheader.c, jp2kheaderstub.c.
617 These header reading functions parse the jp2k files, and
618 don't require a jpeg2000 library.
619 New jp2kio.c, jp2kiostub.c, that uses openjpeg-2.X to read
620 and write jp2k. We now support I/O from these formats:
621 png, tiff, jpeg, bmp, pnm, webp, gif and jp2k
622 as well as writing to PostScript and pdf.
623 New pdfio1.c, pdfio1stub.c, pdfio2.c pdfio2stub.c, where we've
624 split functions into high and low level.
625 Fixed memory bug in bilateral.c
626 Improved reading/write of binary data from file. For example,
627 l_binaryReadStream() can now be used to capture data piped
628 in via stdin.
629 Font directory now arg passed in everywhere (not hardcoded)
630 Don't write temporary files to /tmp; only to a small number of
631 subdirectories, to avoid spamming the /tmp directory. E.g.,
632 for regression tests, the current output is now to /tmp/regout/.
633 For jpeg reading modify pixReadJpeg() to take as a hint
634 a bit flag that allows extraction of only the luminance channel.
635 Allow wrapping of pdf objects from png images without transcoding
636 (thanks to Jeff Breidenbach)
637 Better support for alpha on read/write with png, including
638 1 bpp with colormap, alpha (supported in png with transparency array)
639
640 1.70 3 Feb 14 (distribution to debian; ubuntu 14-04; 4.1.0)
641 New bilateral filtering.
642 New simple character recognition utility.
643 Improved dewarping functionality, in model building and rendering.
644 More flexible use of ref models.
645 Better and more consistent handling of alpha layer in RGBA, though
646 use of the spp field. Ability to handle more png files with alpha,
647 including palette with alpha.
648 New fast converters from jpeg and jpeg2000 to pdf, without transcoding.
649 Made bmp reader (and pix reading in general) more robust; avoid
650 size overflow errors.
651 New text labelling operations; depth conversion of a set of images
652 New license (essentially BSD 2-clause), to specify conditions
653 for both source and binary distribution.
654 Improved auto make: make all progs, install just 11, test 61.
655 New src files: bilateral.{c,h}, dewarp1.c, dewarp2.c,
656 dewarp3.c, dewarp4.c, jp2kio.c, jp2kiostub.c,
657 pixlabel.c, recogbasic.c, recogdid.c, recogident.c,
658 recogtrain.c, recog.h
659 New prog files: adaptmap_dark.c, alphaxform_ret.c,
660 bilateral_reg.c, binarize_reg.c, binarize_set.c,
661 blackwhite_reg.c, blend1_reg.c, blend3_reg.c, blend4_reg.c,
662 boxa1_reg.c, colorcontent_reg.c, coloring_reg.c,
663 colorspace_reg.c, compare_reg.c, converttopdf.c,
664 croptest.c, dewarprules.c, dewarptest1.c, dewarptest2.c,
665 dewarptest3.c, dewarptest4.c, displayboxa.c, displaypix.c,
666 displaypixa.c, findcorners_reg.c, fpix1_reg.c,
667 fpix2_reg.c, fpixcontours.c, insert_reg.c, italictest.c,
668 jpegio_reg.c, label_reg.c, multitype_reg.c, nearline_reg.c,
669 newspaper_reg.c, numa1_reg.c, numa2_reg.c, recogsort.c,
670 recogtest1.c, shear1_reg.c, webpio_reg.c, wordboxes_reg.c
671 Removed src files: arithlow.c, binexpandlow.c, binreducelow.c,
672 dewarp.c
673 Removed prog files: blend_reg.c, blendtest1.c,
674 dewarptest.c, fpix_reg.c, inserttest.c, numa_reg.c, rotatetest2.c
675 shear_reg, xvdisp.c
676
677 1.69 16 Jan 12 (distribution to debian; ubuntu 12-04; 3.0.0)
678 Fixed bug in pdf generation for large files, using a new
679 double array (dnabasic.c). Added several new modes for pdf
680 generation from sets of images.
681 Dewarp based on image content now aligns to left and right margins;
682 works at book level; is more robust to bad disparity models;
683 version 2 serialization.
684 Fixed regutils to return the actual number of errors.
685 Improved sorting efficiency of numas in cases where binning,
686 which is order N, makes sense.
687 Fixed fpix serialization (now version 2).
688 New version (5) of xtractprotos, allows putting prototypes in-line in
689 allheaders.h. Having them separately in leptprotos.h still an option
690 New copyright (BSD, 2 clause) on src files.
691 Removed all trailing whitespace in src files.
692 New src files: boxfunc4.c coloring.c, dnabasic.c
693 New prog files: dna_reg.c, alphaops_reg.c
694 Removed prog file: alphaclean_reg.c
695
696 1.68 10 Mar 11
697 Fixed windows issues with passing pointers across C-runtime boundaries
698 when using dlls, by providing special functions (e.g., lept_fopen()).
699 Proper version numbers are now set with automake.
700 New utility (quadtree.c) for generating quadtree statistics.
701 New utility (in colorspace.c) for conversions to and from YUV.
702 Refactored functions for assembling image data for generating
703 either PS or PDF images using g4, jpeg or flate encoding.
704 Better tempfile names, using current time in microseconds.
705 Functions for getting resolution from jpeg and png files.
706 Use size_t throughout for reading and writing binary data.
707 Deprecate arrayRead*() and arrayWrite() functions; replace in
708 the library with l_binaryRead*() and l_binaryWrite().
709 Better handling of colormap images for in-place rasterop and shear.
710 New utility (bytearray.c) for parsing and handling binary data;
711 used for generating PDF files.
712 New utility (pdfio.c) for generating PDF files.
713 Refactored regutils functions to make them simpler to use.
714 Top-level deskew now works on any image.
715 Added functions in utils.c for cross-platform development, mostly
716 for functions that make and remove directories, copy, move
717 and delete files, etc. It should now be straightforward to write
718 programs that will compile and run on windows.
719 Reg tests have better printout; all give timings.
720 New utility program: convertfilestopdf
721
722 1.67 9 Nov 10
723 Autoconf: now built with James Cuirot's config files that
724 build the library and all 200 progs.
725 New sudoku solver. Just a game, but there are interesting aspects.
726 Modified parseprotos.c to reject a type of "extern" decl.
727 Add faster implementation for very small gray morphology
728 operations (3x1, 1x3, 3x3).
729 Eliminate warnings on recent gcc if you don't check return values
730 from fread, fscanf, fgets, system, etc.
731 Convolution: new functions for windowed variance and stdev; allow
732 non-square kernel for windowed mean square.
733 Put stdio.h and stdlib.h in alltypes.h, so they're not required
734 in any .c files.
735 Replace numaConvolve(), which is just a windowed mean, by
736 windowed statistics functions (mean, mean square, variance).
737 Generalize pixExtractOnLine() for arbitrary lines.
738 Add pix interface to webp (webpio.c, webpiostub.c). This is a
739 new open source codec, based on the video codec vpx (webm).
740 Serialization of FPix and DPix
741 Interconversion between FPix and DPix
742 Integer scaling of FPix and DPix; includes the last row and column.
743 New convertfiles.c: depth conversion on files in a directory.
744 Testing programs in prog:
745 convolve_reg.c, numa_reg.c: expanded test set
746 projection_reg.c (tests pixRowStats(), pixColumnStats())
747 dewarptest.c: output ps and pdf files
748 writemtiff.c: simple driver to write images to a single file
749
750 1.66 3 Aug 10
751 More tweaks for including (or not) bounding box hints for
752 PS wrapping. Default is to write b.b., but not in functions
753 that wrap images as full pages (psio1.c, psio2.c)
754 pix4.c split in two files, and added function to identify c.c.
755 that are sufficiently similar in shape to rectangles (pix5.c)
756 Modify 2 and 4 bit setters to clip the input value so that it can
757 only affect the pixel requested (arrayaccess.c, arrayaccess,h)
758 New pseudorandom sequence functions (numafunc1.c)
759 Dewarping camera-based images using textlines (dewarp.c, prog/dewarp*)
760 Geometrical function for aggregating overlapping bounding boxes.
761 Programs to generate figures for book chapter "Document Image
762 Applications" in "Mathematical Morphology: theory and applications"
763 (see: http:/www.leptonica.org/najman-talbot-book-chapter.html)
764 (prog/livre*.c)
765 Functions that do affine and other operations in images with
766 alpha blending at edges: pix*WithAlpha(). Also do this
767 with a gamma/inverse-gamma wrapper to further reduce edge aliasing.
768 (rotate.c, scale.c, projective.c, affine.c, bilinear.c,
769 prog/alphaxform_reg.c)
770 Improved color segmentation (fixed bugs; made faster)
771 Higher order least square fits: quadratic, cubic, quartic. (pts.c)
772 Various mods for otsu binarization and the *SplitDistribution*()
773 functions (numafunc2.c, prog/otsutest2.c)
774 Control sampling in convolution output (convolve.c, prog/fpix_reg.c)
775 Morphological operations on numas (numafunc1.c, numafunc2.c,
776 prog/numa_reg.c)
777 Pix serialization wrapped so we can use pixRead(), etc on these
778 files (spixio.c, readfile.c, writefile.c)
779 Gif read/write to memory fixed (and cheated -- using files) (gifio.c)
780 New fpix and dpix accessors; contour rendering on fpix (fpix1.c, fpix2.c)
781 Various functions for linearly mapping colors and displaying arrays
782 of colors (pix4.c, blend.c, prog/rankhisto_reg.c)
783 Functions for getting approximate ranges of colors and color
784 components in an image (pix4.c, colormap.c)
785 Cleaned up windows platform and compiler defines and macros.
786
787 1.65 5 Apr 10
788 Added regression test utility functions for standardizing and
789 automating construction and running of regression tests. Makes the
790 golden files when the 2nd arg to the reg test is 'generate'.
791 (regutils.{c,h})
792 Converted 22 reg tests in prog to use this; invoked with alltests_reg.
793 Goal is to put all prog/*_reg.c into this format and put a set
794 of golden files on the web.
795 Small fixes in gifio for handling streams properly.
796 New functions for shifting colors, hue invariant transforms, etc
797 (blend.c)
798 prog/dwamorph*.c: rename *1_reg.c to dwalineargen.c; others
799 converted to standard reg tests.
800 New rgb convolution functions.
801 For PS output, write all images with a bounding box hint and with
802 page numbers, which works for both embedded (e.g., in tex) and
803 full page generated PS. Once converted to pdf, this is fine
804 in all situation.
805 New functions for initialization and random insertion with pixcomp.
806 For color quantization, make the lightest color white if sufficiently
807 close; ditto for black (colorquant1.c, colorquant2.c).
808 Rank binning of 8 bpp and rgb images (numafunc2.c, pix4.c)
809 A function to rank colors by the intensity of the minimum comp (pix4.c)
810 New pixRotateBinaryNice(), rotates 1 bpp pix in such a way that
811 the shear lines aren't visible. (rotate.c)
812 New pixSaveTiledWithText(), a convenience function to append text
813 to images that are being tiled. (writefile.c)
814 Stereoscopic warping functions and stereo pair functions (warper.c)
815 Linear interpolated shear -- better than rasterop shear (shear.c)
816 Option to use higher quality chroma (U,V) sampling in jpeg (jpegio.c)
817 Rename Bmf --> L_Bmf.
818 New tests in prog:
819 alltests_reg.c alphaclean_reg.c, psio_reg.c, rankbin_reg.c,
820 rankhisto_reg.c, warpertest.c
821
822 1.64 3 Jan 10
823 Easy setup for standard byte processing on 8 bpp pix (pix2.c)
824 Evaluation of difference between similar images; test for
825 similar images and (compare.c)
826 Subpixel scaling, with color input and separate scale factors (pixconv.c)
827 Fix tiff header reader to get correct format (tiffio.c)
828 Enable pixDisplay() to work with i_view (windows) and with
829 xzgv and xli as well as xv; allow application to choose
830 which to use (writefile.c).
831 Use a mask to specify regions that are changed by a morphological
832 operation (morphapp.c).
833 Improve the default sharpening for scaling (scale.c)
834 Function to test for equivalence of file data (utils.c)
835 Select and read image files with embedded index (readfile.c)
836 Fix box size calculation in pixEmbedForRotation(); solution
837 provided by Brent Sundheimer.
838 New pixDisplayMultiple(), instead of calling gthumb directly; this
839 is now set up to use i_view for windows.
840 Changed criteria for determining if an image is color (colorcontent.c,
841 colorquant{1,2}.c.
842 Optional mode where the filename extension is automatically written
843 to output image files; particularly useful for windows.
844 Initialize boxa and pixa as full, with minimal placeholders.
845 Get rank valued numbers and boxes in numa and boxa.
846 Cute implementation for finding largest solid rectangle (maze.c)
847 New median cut quantization for mixed (color/gray) images (colorquant2.c)
848 Many changes to allow the library and applications be built easily
849 in windows. There is now a thorough windows readme, written by Tom
850 Powers, for doing this. The windows build information and
851 project files are now in a new vs2008 directory.
852
853 1.63 8 Nov 09
854 Added pixScaleToGrayFast(), a faster version with very similar quality.
855 Fixed scaleGrayLILow() to handle edge pixels more accurately
856 Text processing:
857 new text application (finditalic.c, prog/finditalic.c) for locating
858 words in italic type style.
859 Easier to add text to a pix using the bitmap font stored in
860 the font directory; see, e.g., prog/writetxt_reg.c.
861 Blending of 2 images with an alpha channel: pixBlendWithGrayMask()
862 Fixed bug in color segmentation; it now (again) works properly.
863 New utility (pixcomp.c) for handling compressed pix arrays in
864 memory; new PixComp and PixaComp structs.
865 Fast serialization of pix without compressing (pixSerializeToMemory
866 and pixDeserializeFromMemory); required serialized colormaps
867 FileI/O: new functions for reading file headers.
868 PostScript generation modernized; split psio.c into psio1.c
869 and psio2.c; added level 3 (flate) encoding.
870 new functions for reading and writing multipage tiffs, for
871 arbitrary input images. For writing, compression is lossless
872 (either g4 or zip)
873 update all I/O stub files
874 Miscellaneous: new pixaAddBorderGeneral(); new functions in pix3.c
875 for counting fg pixels and summing 8 bpp pixels by column and row;
876 new numaUniformSampling() for resampling with interpolation;
877 subpixel scaling.
878 New or improved regression tests in prog:
879 extrema_reg, pixalloc_reg, blend2_reg, rotateorth_reg,
880 ioformats_reg, colorseg_reg, pixcomp_reg, pixserial_reg,
881 writetext_reg, psioseg_reg, subpixel_reg.
882 Interface changes:
883 findFileFormat() and findFileFormatBuffer(): now returns format
884 using input ptr. The function return value is 0 if OK; 1 on error
885 rename: pixThresholdPixels() --> pixThresholdPixelSum()
886
887 1.62 26 Jul 09
888 Expanded composite Dwa implementation as a sequence of operations,
889 so that it now works beyond a size of 63. It's typically about 2x
890 faster than the composite rasterop implementation (with help
891 from Ankur Jain). Also use data transfer instead of data copy
892 whenever possible. Thorough tests with binmorph4_reg and binmorph5_reg.
893 New functions in colorseg.c for masking and histogramming in HSV
894 color space.
895 Treat string constants rigorously as const char*, initializing
896 to char[] if to be used as non-const, or in some cases casting
897 to char*. This avoids compiler warnings.
898 Improved color quantization using existing colormap for octcubes
899 and a new version for grayscale. This will rigorously map most
900 black and most white octcubes (rsp) to black and white
901 if they exist in the colormap.
902 Fast quantization to an existing colormap for color and grayscale.
903 Fixed some bugs; e.g., in pixAffineSampled() for 1 bpp with
904 L_BRING_IN_BLACK; reading and writing pnm for 2 and 4 bpp.
905 In pngio.c, enable compile time control over these settings:
906 converting 16 bpp --> 8 bpp on read
907 removing alpha channel on read
908 setting zlib compression on write
909 For general scaling, allow sharpening to be optional, and provided
910 faster sharpening operations.
911 Improve support for 16 bpp grayscale.
912 For scaleToGray* functions, reduce the width truncation.
913 In psio.c, new functions for converting segmented page images
914 (text and image) into level 2 PostScript.
915 Removed all implicit casting to const char*.
916 New custom pix memory allocator, designed for large pix whose
917 memory needs to be reused many times.
918 In xtractprotos, we now allow prepending an arbitrary string to
919 each prototype.
920 In environ.h, additions for MSVC to work with VC++6, including
921 prototpye strings for dll import and export (thanks to Ray Smith).
922 In colorseg.c, new functions for building HSV histograms, finding
923 peaks, and generating masks based on the peaks.
924 New or improved regression tests:
925 pixalloc_reg, binmorph4_reg, binmorph5_reg, conversion_reg,
926 scale_reg, cmapquant_reg,
927
928 1.61 26 Apr 09
929 New histo-based grayscale quantization: pixGrayQuantizeFromHisto(),
930 that is used in new pixQuanitzeIfFewColorsMixed().
931 Made final fix in pixBlockconv(). No underflows; no more overflows!
932 More efficient rgb write with pnm.
933 Add proto to jpegiostub.c, allowing proper use of the stubber.
934 Fix several filter functions to use proper test on filter size; viz.,
935 pixMinMaxTiles(), several functions in convolve.c.
936 Redo shear implementation to handle arbitrary angles, to handle
937 colormapped images, and to avoid the singularity at pi/2.
938 Removed both static vars from pixSaveTiled().
939 Generalized pixRotate() to handle colormapped images, and to use
940 pixRotateBySampling() in place of the removed pixRotateEuclidean().
941 New skew finder for full angle range, pixFindSkewOrthogonalRange().
942 For skew detection, now allow shear about image center as well as
943 about the UL corner.
944 New rotation reg tests: rotate1_reg.c and rotate2_reg.c.
945 Better serialization format for boxaa; introduce new version numbers
946 for boxaa, pixa, and boxa, as required.
947 Proper init in boxGetGeometry(), boxaGetBoxGeometry(), and the
948 accessors in sel1.c and kernel.c.
949 Improved Numa functions in numafunc1.c and numafunc2.c; in
950 particular, numaMakeHistogramAuto() and numaGetStatsUsingHistogram().
951 With all histo generators, make sure the start and binsize params
952 are properly set and are used.
953 Interface change: Use these parameters implicitly in
954 numaHistogramGetRankFromVal() and numaHistogramGetValFromRank().
955 Interface change to ptaGetLinearLSF(): add 1 optional parameter.
956 In several pixaDisplay*() functions, handle colormaps properly.
957 pixafunc.c split to pixafunc1.c and pixafunc2.c.
958 New connected component selections and options in pixaSort.
959 Patch from Tony Dovgal for reading tiff rgba files.
960 Added new logical operation options for numas.
961 New pixConvertRGBToGrayMinMax() that chooses min or max of 3 components.
962 Computation of pixelwise aligned stats between multiple images
963 of the same size (e.g., video), in pix4.c.
964 Very fast binsort implemented for boxa and pixa.
965 Cleanup and rename stack, queue, heap and ptra functions:
966 all structs and typedefs start with "L_"
967 all functions start with "l"
968 Sel creation for crosses and T junctions.
969 New thresholding operations to binary; split out from adaptmap.c
970 into binarize.c.
971 Implementation of sauvola binarization, including use of pixtiling.
972 Added composite parallel union and intersection morphological operations.
973 Small changes to scaling and rotation to improve accuracy; only
974 visible on very tiny, symmetric images.
975 Implemented DPix (double precision data); useful for the mean
976 square accumulator for sauvola binarization.
977 New fast hybrid grayscale seedfill, in addition to the interative
978 version (contributed by Ankur Jain).
979 New or improved regression tests:
980 rotate1_reg, rotate2_reg, shear_reg, numa_reg, skew_reg,
981 ptra1_reg, ptra2_reg, paint_reg, smallpix_reg, pta_reg,
982 pixmem_reg, binarize_reg, grayfill_reg.
983
984
985 1.60 19 Jan 09
986 Fixed bug in pixBlockconv(), introduced in 1.59, that causes
987 overflow when convolving with an image that has white (255)
988 at the edges. [quickly found by Dave Bryan]
989 Include function to display freetype fonts in a pix.
990 The files freetype.c and freetype.h are in the distribution, but are not
991 yet linked into the library. This is contributed by Tony Dovgal,
992 and this version works only for MSVC.
993 Found that the problems with binary compression in giflib are fixed
994 with giflib 4.1.6.
995
996 1.59 11 Jan 09
997 Lots of changes since 1.58.
998 New files: affinecompose.c, ptra.c, warper.c, watershed.{h,c}.
999 Split: boxfunc.c --> (boxfunc1.c, boxfunc2.c, boxfunc3.c)
1000 Improved connected component filtering, with logical functions
1001 applied to indicator arrays (pix4.c, pixafunc.c, numafunc1.c).
1002 Function to determine if an image can be quantized nicely with
1003 only a few colors (colorcontent.c, pixconv.c).
1004 New gray seed-filling functions (seedfill.c, seedfilllow.c).
1005 Fixed bugs in tophats and hdome, due to misuse of pixSubtractGray()
1006 (morphapp.c).
1007 New function for improving contrast (adaptmap.c)
1008 Watershed transform (still slightly buggy) (watershed.c,h).
1009 Fast random access into a pix using line pointers (pix1.c, arrayaccess.*)
1010 Conversions of colormaps from gray to color and v.v. (colormap.c)
1011 Seedfill function that applies an upper limit to the fill
1012 distance (seedfill.c)
1013 New function for warping images with random harmonic distortion
1014 (with help from Tony Dovgal).
1015 New generic ptr array utility: all O(1) functions of a stack plus
1016 random replace, insert and delete (ptra.c).
1017 Simple functions for colorizing a grayscale image with an arbitrary
1018 color (pixconv.c, colormap.c)
1019 Flexible affine transforms (translation, scale, rotation) on pta
1020 and boxa (affinecompose.c).
1021 Clipping of foreground (both exact and approximate) starting from
1022 within a rectangular region of the image (pix4.c)
1023 Blending a colored rectangle over an image (pix2.c, boxfunc3.c)
1024 Generation of rectangle covering of mask components (boxfunc3.c).
1025 Block convolution using tiles (for very large images) (convolve.c)
1026 New or improved regression tests in prog:
1027 locminmax_reg, lowaccess_reg, grayfill_reg, adaptnorm_reg,
1028 xformbox_reg, warper_reg, cmapquant_reg, compfilter_reg,
1029 splitcomp_reg, affine_reg, bilinear_reg, projective_reg
1030 Acknowledgments:
1031 (1) Big thanks to Tony Dovgal for helping with the warping
1032 (e.g. for captcha). Tony also provided an implementation that
1033 allows rendering truetype fonts into a Pix on windows.
1034 This is not yet incorporated, because it opens a huge
1035 "can of worms," which is OK if you're going fishing but
1036 maybe not if you're trying to support leptonica on many platforms.
1037 TBD.
1038 (2) David Shao provided a libtools build system that includes
1039 building the prog directory! I believe this will work, but it
1040 is is not yet included because of problems I continue to have
1041 with macros in version 2.61 of gnu libtools.
1042 (3) Steve Rogers is working on a MSVC build for the prog directory.
1043 I hope to have this available for 1.60.
1044
1045 1.58 27 Sept 08
1046 Added serialization for numaa.
1047 New octree quantizer pixOctreeQuantByPopulation(), that uses a
1048 mixture of level2 and level4 octcubes. Renamed many functions
1049 in colorquant1.c, and arranged/documented them more carefully.
1050 Revised documentation in leptonica.org/papers/colorquant.pdf.
1051 Simplified customization for I/O libraries and fmemopen() in environ.h.
1052 Fixed bugs in colormap.c, viewfiles.c, pixarith.c.
1053 Verified Adam Langley's jbig2enc (encoding jbig2 and generating pdf from
1054 these encoded files) works properly with the current version -- see
1055 Section 24 of README.html for usage and build hints.
1056 New separable convolution; let pixConvolve() take 8, 16 and 32 bpp input.
1057 New floating pt pix (FPix) utility, which allows convolution and
1058 arithmetic operations on FPix; also interconversion to Pix.
1059 Ability to read headers on multipage tiff.
1060 More robust updown text detection in flipdetect.c.
1061 Use of sharpening to improve scaling when the scale factor is near 1.0.
1062 See prog/fpix_reg.c for regression test and usage.
1063 See prog/blend_reg.c for blending regression test, with new functions.
1064
1065 1.57 13 Jul 08
1066 New Debian distribution for 1.57 (thanks to Jeff Breidenbach).
1067 Improved the Otsu-type approach for finding a binarization threshold,
1068 by choosing the min in the histogram subject to constraints
1069 (numafunc2.c, adaptmap.c)
1070 New function pixSeedspread() in seedfill.c, similar to a voronoi tiling,
1071 that is used for adaptive thresholding in pixThresholdSpreadNorm().
1072 In the process, fixed a small bug in pixDistanceFunction().
1073 (The approach was suggested by Ray Smith, and uses the fast
1074 Vincent distance function method to expand each seed.)
1075 Generalized the functions in kernel.c to use float weights
1076 for general convolution (Version 2 for kernel), and added
1077 gaussian kernel generation.
1078 Put all jpeg header functions into jpegio.c, where they belong.
1079 Fixed bugs in pixaInsertPix() and pixaRemovePix().
1080 Added read/write serialization for Numaa.
1081 New functions for comparing two images using bounding boxes (classapp.c).
1082
1083 1.56 12 May 08
1084 Added several new 1d barcode decoders. The functional interface
1085 is still in flux.
1086 Autoconf! To get this working, it was necessary to: determine and
1087 set the endian flag; select which libraries are to be linked;
1088 determine if stream-based memory I/O is enabled.
1089 This required a major cleanup of the include files, minimizing
1090 dependencies on external library header files, and getting everything
1091 to work with both autoconf (HAVE_CONFIG_H) and the old
1092 customized makefile. Customization is now all in environ.h.
1093 pixSaveTiled(): a new way to display tiled images.
1094 pixtiling.c: interface for splitting an image into a set of
1095 overlapping tiles, using mirrored borders for tiles touching the
1096 image boundary.
1097 pixBlendHardLight(): new blending mode with nice visual effects.
1098 pixColorFraction(): determines extent of color in image
1099 Both octree and median-cut color quantization check first if
1100 image is essentially grayscale; improvements to both algorithms.
1101 box*TransformOrdered(): general sequence of linear transforms.
1102 colorquant_reg.c, xformbox_reg.c, hardlight_reg.c: new regr tests.
1103
1104 1.55 16 Mar 08
1105 New functions for combining two images arbitrarily through a mask,
1106 including mirrored tiling (pix3.c)
1107 Modify pixSetMasked*() to work on all images (pix3.c)
1108 New functions for extracting masked regions such as pixClipMasked()
1109 (pix3.c) and pixMaskConnComp() and pixMaskBoxa() (boxfunc.c).
1110 New functions to separate fg from bg (pix3.c), one of which is supported
1111 by numaSplitDistribution (numafunc.c).
1112 Modify sobel edge detector to take another parameter (edge.c)
1113 Support for 4 bpp cmyk color space in jpeg (jpegio.c)
1114 Modified median cut color quantization (colorquant2.c)
1115 Renamed colorquant.c (for octree quant) --> colorquant1.c.
1116 Absorbed conncomp.h and colorquant.h into specific files that
1117 depend on them (colorquant1.c, conncomp.c, pix.h)
1118 General convolution with utility for building kernels
1119 (convolve.c, kernel.c)
1120 Initial implementation of 1D barcode reader. So far, we just have the
1121 signal processing to locate barcodes on a page, deskew them, and
1122 find the bar widths, along with decoders for two formats.
1123 (readbarcode.*, prog/barcodetest.c)
1124 Made the default to stub out read/write for non-tiff image formats
1125 to memory; it doesn't work on Macs & they were complaining (*io.c)
1126 Include MSVC project files for building leptonlib under
1127 windows (leptonlib.*)
1128
1129 1.54 21 Jan 08
1130 Histogram equalization (enhance.c).
1131 New functions for pixaa: serialization (r/w), creation
1132 from pixa, and a tiled/scaled display into a pixa (pixabasic.c,
1133 pixafunc.c).
1134 Read/write of tiff to memory (instead of a file, using
1135 the TIFFClientOpen() callback interface), contributed by Adam
1136 Langley (tiffio.c, testing in prog/ioformats_reg).
1137 Improved image statistics functions, both over tiles and
1138 through a mask over the entire image. Added standard deviation
1139 and variance; enable statistics for rgb and colormapped images,
1140 in addition to 8 bpp grayscale (pix3.c). New function to
1141 extract rgb components from a colormapped image (pix2.c).
1142 Fix pixWriteStringPS() to work with all depths and colormap (psio.c)
1143 Enable all non-tiff formats to also write and read to/from memory (*io.c)
1144 Added support for read/write to gif, contributed by Tony Dovgal
1145 (gifio.c, gifiostub.c, imageio.h). See Makefile for instructions
1146 on enabling this.
1147
1148 1.53 29 Dec 07
1149 Add 4th arg to pixDistanceFunction() to specify b.c.,
1150 and fixed output to 16 bpp grayscale pix. (seedfill*.c)
1151 New un-normalized block grayscale convolution (convolve.c)
1152 Fixed bug in getLogBase2(), so that pixMaxDynamicRange() works
1153 properly. This is useful for displaying a 16 bpp pix as
1154 8 bpp (pixarith.c). New function for getting rank val for
1155 rgb over a region specified by a mask (pix3.c). New function
1156 for extremem values of rgb colormap (colormap.c). New
1157 function pixGlobalNormNoSatRGB(), a variant of pixGlobalNormRGB()
1158 that prevents saturation for any component above a specified
1159 rank value (adaptmap.c). Added mechanism for memory
1160 management of pix (pix1.c). Added selective morphology by
1161 region given by a mask (morphapp.c). Fixed prototype extracdtion
1162 to work properly with function prototypes as args; released
1163 version 1.2 of xtractprotos (parseprotos.c, xtractprotos.c).
1164 Add a boxa field for pixaa, along with serialization (pixabasic.c),
1165 and modified display of pixaa to include this (pixafunc.c).
1166 Coalesced the version numbers for pixa, pixaa, boxa, and boxaa
1167 serialization (pix.h).
1168 New progs: modifyhuesat displays modified versions on a grid;
1169 textlinemask shows simple methods for extracting textline masks.
1170
1171 1.52 25 Nov 07
1172 Implemented Breuel's whitespace partitioning algorithm (partition.c).
1173 Generalized pixColorMagnitude() to allow different methods
1174 for computing the color amount of a pixel (colorcontent.c).
1175 New methods for computing overlap of boxes (boxfunc.c).
1176 New methods for painting (solid) and drawing (outline) of boxes,
1177 replacing boxaDisplay() with pixDrawBoxa*() and pixPaintBoxa*()
1178 (pix2.c, boxfunc.c).
1179 Ray Smith fixed bug in the distance function (seedfilllow.c).
1180 For pixConvertTo1() and pixConvertTo8(), treat input pixs as a
1181 const and never return a clone or altered cmap (pixconv.c).
1182 Make pixGlobalNormalRGB() crash-proof (adaptmap.c).
1183 Tony Dovgal added ability to read jpeg comment (jpegio.c).
1184
1185 1.51 21 Oct 07
1186 Improved histogramming of gray and color images (pix3.c)
1187 Histogram statistics (numafunc.c). Better handling of tiff
1188 formats, testing rle and packbits output and improving
1189 level 2 postscript conversion efficiency (readfile.c, psio.c).
1190 Test program for r/w and display of Sels (prog/seliotest.c).
1191 Use endiantest to determine automatically which flags to set
1192 when compiling for big- or little-endians (endiantest.c)
1193 Compute a color magnitude for each rgb pixel (colorcontent.c).
1194 Allow separate modification of hue and saturation (enhance.c).
1195 Global transform of color image for arbitrary white point (adaptmap.c).
1196
1197 1.50 07 Oct 07
1198 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1199 NOTE CAREFULLY: The image format enum in imageio.h has
1200 changed. This is an ABI change, and it requires
1201 recompilation of the library.
1202 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1203 Suggestions by David Bryan again resulted in several changes,
1204 including improvements to the dwa generating functions and interfaces.
1205 Major improvements for dwa code generation, including an
1206 optional filename for the output code, adding function prototypes
1207 to the code so it can easily be linked outside the library.
1208 Addition of 2-way composable dwa functions for bricks, with
1209 code addition to the library, and a new interpreter for dwa
1210 composable brick sequences (fmorphauto.c, fhmtauto.c,
1211 morphtemplate1.c, hmttemplate1.c, morphdwa.c, dwacomb*.2.c, morphseq.c)
1212 Exhaustively tested in six programs (prog/binmorph*_reg,
1213 prog/dwamorph*_reg).
1214 New input modes for Sels, from both color bitmap editors
1215 and a simple file format (sel1.c).
1216 Better Sel generation functions in sel2.c, including combs for
1217 composable brick operations and linear bricks for comparison.
1218 Removed unnecessary copies for more efficient border add'n & removal.
1219 Added RLE basline enc/dec for tiff.
1220 Binary morphology documentation on the web page updated for these
1221 changes/additions.
1222 William Rucklidge unrolled inner loops and added LUTs to
1223 speed up several more functions, including correlation
1224 (correlscore.c), centroid calculation (morphapp.c),
1225 2x linear interp grayscale scanning (scalelow.c),
1226 thresholding to binary (grayquantlow.c), and removal
1227 of colormaps to gray (pixconv.c).
1228
1229 1.49 23 Sep 07
1230 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1231 NOTE CAREFULLY: The image format enum in imageio.h has
1232 changed. This is an ABI change, and it requires
1233 recompilation of the library.
1234 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1235 Suggestions by David Bryan resulted in several changes.
1236 pixUnpackBinary() unpacks to all depths.
1237 Can now write and read tiff in LZW and ZIP (gzip) formats.
1238 These, like uncompressed tiff, work on all bit depths.
1239 Also enabled pnm 16 bpp r/w, both non-ascii and ascii.
1240 ioFormatTest() now has better coverage and clarity; this is
1241 used in prog/ioformats_reg.c.
1242 Rewrite of morphautogen code to implement opening and closing atomically.
1243 Cleaner interaction with new text templates (fmorphauto.c,
1244 fhmtauto.c, sarray.c, *template*.txt,).
1245 More regression testing (e.g., binmorph1_reg.c, binmorph3_reg.c).
1246
1247 1.48 30 Aug 07
1248 William Rucklidge sped up pixCorrelationScore() by in-lining
1249 all bit operations (jbclass.c).
1250 Generalized rank filtering from 8 bpp to color (rank.c).
1251 Fixed many functions that take a dest pix so that they don't fail if
1252 the dimensions or depth are not consistent with the src pix.
1253 The underlying change for this is to pixCopy() (pix1.c).
1254 Improved display of Sel as a pix; added selaDisplayInPix() to
1255 display all Sels in a Sela, orthogonal rotations of Sels (sel1.c).
1256 New functions for thinning and thickening while preserving connectivity
1257 and avoiding both free end erosion and dendritic cruft (ccthin.c,
1258 prog/ccthin1_reg.c, prog/ccthin2_reg.c).
1259 New function pixaDisplayTiledInRows() for compactly tiling pix
1260 in a pixa, plus documentation of different existing methods. (pixafunc.c)
1261
1262 1.47 22 Jul 07
1263 New brick rank order filter (rank.c, prog/ranktest.c, prog/rank_reg.c).
1264 Use mirror reflection b.c. to avoid special processing at
1265 boundaries (pix2.c). Simple sobel edge detector (edge.c).
1266 Utility for assempling level 2 compressed images in PostScript
1267 (psio.c, prog/convertfilestops.c). Enable read/write of 16 bpp,
1268 grayscale tiff (tiffio.c, pix2.c).
1269 New function for finding the number of c.c., which is a bit
1270 faster than finding the b.b. or the component images (conncomp.c)
1271 New functions for finding local extrema in grayscale image (seedfill.c)
1272
1273 1.46 28 Jun 07
1274 Added interpreted mode for color morphology (morphseq.c).
1275 In functions, make effort to consistently do early initialization
1276 of ptrs to objects returned on the heap. This is to try to
1277 avoid letting functions return uninitialized objects, even if
1278 the return early because of bad input.
1279 Split pixa.c into 2 files; revised the component filtering
1280 in both pixafunc.c and boxfunc.c. Added component filtering
1281 for "thin" components.
1282 Added subsampling functions for numa and pta.
1283 Word segmentation now works at both full and half resolution.
1284 Better methods for displaying and tiling (for debugging),
1285 using pixDisplayWrite(), pixaReadFiles() and pixaDisplayTiledAndScaled().
1286
1287 1.45 27 May 07
1288 Further improvements of orientation and mirror flip detection
1289 (flipdetect.c). Added 2x rank downscaling and general integer
1290 replicative expansion (scale.c). Simplified interface for
1291 averaging, and included tiled averaging, which is yet another
1292 integer reduction scaling function (pix3.c).
1293
1294 1.44 1 May 07
1295 Split pix2.c into (pix2.c, pix3.c), with basic housekeeping
1296 functions (e.g., ops on borders, padding) in pix2.c.
1297 Split numarray.c into (numabasic.c, numafunc.c), with
1298 constructors and accessors in numabasic.c. Added a number
1299 of histogram, rank value and interpolation functions to numafunc.c.
1300 Add rms and rank difference comparison functions (compare.c).
1301 Separated orientation and mirror flip detection; fixed the latter
1302 (flipdetect.c).
1303
1304 1.43 24 Mar 07
1305 New and fixed functions for handling word boxes (classapp.c)
1306 More consistent use of L_* flags (e.g., sarray.h, morph.h)
1307 Morphology on color images (gray ops on each component) (colormorph.c)
1308 New methods for generating sels; we now have five methods in
1309 sel1.c and 3 others in selgen.c. Also a function that
1310 displays Sels as an image, for use in documentation (sel1.c)
1311 New high-level converters, such as pixConvertTo8(), pixConvertTo32(),
1312 pixConvertLossless() (pixconv.c)
1313 Identify regression tests, and rename them as prog/*_reg.c.
1314 Complete revision of plotting package (gplot.c)
1315 New functions for comparing pix (compare.c)
1316 New morph application functions, such as the ability to run a
1317 morph sequence separately on selected c.c. in an image, and
1318 a fast, quasi-tophat function (morphapp.c)
1319 Cleanup and new interfaces to border representations of c.c. (ccbord.c)
1320 Page segmentation application (pageseg.c)
1321 Better serialization with version control for all major structs.
1322 Morphological brick operations with 2-way composite sels (morph.c)
1323
1324 1.42 26 Dec 06
1325 New sorting functions, including 2-d sorting, for boxa and pixa,
1326 and functions that sort by index (e.g., pixa --> pixa and
1327 for 2d, pixa --> pixaa; ditto for boxa).
1328 New accessors for pix dimensions. A new strtokSafe() to
1329 substitute for strtok_r (utils.c).
1330 Page flip detection, using both rasterop and dwa morphology
1331 (flipdetect.c), with dwa generation (fliphmtgen.c) and testing
1332 (prog/fliptest.c).
1333 Increased basic sels from 42 to 52 (sel2.c).
1334 Better high-level interfaces for binary morphology with
1335 brick (separable) sels, both for rasterop (morph.c) and for
1336 dwa (morphdwa.c); fully tested for both asymmetric and
1337 symmetric b.c. (prog/morphtest3.c). Faster area mapping
1338 reduction for power-of-2 scaling.
1339
1340 1.41 5 Nov 06
1341 Simplified morph enums, removing all unused ones (morph.h).
1342 Added new high-level interfaces for adaptive mapping (adaptmap.c).
1343 New method to extract color content of images (colorcontent.c).
1344 New method to generate sels from text strings, and to identify
1345 roman text that is not properly oriented (thanks to Adam Langley).
1346 Fast grayscale min/max (rank) scale reduction by integer factors.
1347 New accessors for box and sel, that should be used when possible.
1348 Thresholding grayscale mask by bandpass (grayquant.c).
1349 Use of strtok_r() for thread safety.
1350
1351 1.40 15 Oct 06
1352 Fixed xtractprotos for cygwin. Minor fixes and improved documentation
1353 (baseline.c, conncomp.c, pix2.c, morphseq.c, pts.c, numarray.c,
1354 utils.c, skew.c). Add ability to quantize an rgb image to a
1355 specified colormap (colorquant.c); tested in prog/cmapquanttest.c.
1356 Modifications to allow conditional compilation on MS VC++,
1357 and to allow I/O calls to be stubbed out (new files: *iostub.c,
1358 zlibmemstub.c, pstdint.h, arrayaccess.h.ms60)
1359
1360 1.39 31 Aug 06
1361 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1362 NOTE CAREFULLY: There has been an interface change to make
1363 affine, bilinear and projective transforms more general.
1364 The implementation has been changed to allow them to handle
1365 all image types and to make them faster (esp. with both sampled
1366 and interpolated mapping on color images).
1367 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1368 Added prog/Makefile.mingw to build executables. This is still
1369 in a relatively raw state. It is necessary to download
1370 gnuwin32 packages for 4 libraries (jpeg, png, zlib, tiff)
1371 to link with leptonlib and the main, and I still have not
1372 been able to build static executables (they require jpeg2b.dll, etc.).
1373
1374 1.38 8 Aug 06
1375 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1376 NOTE CAREFULLY: There has been an interface change to both
1377 simplify and generalize the grayscale morphology operations:
1378 pixErodeGray(), pixDilateGray(), pixOpenGray(),
1379 pixCloseGray(), pixTophat() and pixMorphGradient().
1380 The prototypes are not changed; old code will compile, but
1381 it will be wrong! The old interface had a size and a type
1382 (horizontal, vertical, square). The new interface takes
1383 horizontal and vertical Sel dimensions.
1384 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1385 For cross-compilation to make windows programs, you can use
1386 src/Makefile.mingw to make a windows version of the library.
1387 6x scale-to-gray function donated by Alberto Accomazzi.
1388 Interpreter added for sequence of grayscale morphological
1389 operations, including the tophat (morphseq.c).
1390 Pixacc container added to simplify the interface
1391 for accumulator arithmetic using Pix.
1392 Removed fmorph.c and fmorphlow.c from the library. These are
1393 very limited and were deprecated in favor of fmorphauto(), which
1394 autogens the code from (nearly) any Sel.
1395 Fixed some of the gray morphology operations, which had errors
1396 on the boundary. All gray morph ops should now be rigorously
1397 OK (graymorph.c). For testing of graymorph dualities, the
1398 the graymorph interpreter, etc., see prog/morphgraytest.c.
1399
1400 1.37 10 Jul 06
1401 [After v.36 was released, Jeff Breidenbach built a Debian
1402 distribution of Leptonica based on v.36, and you can now get Leptonica
1403 as a Debian package. Use "apt-cache search leptonica" to see
1404 what is available.] The libraries are now combined into a single
1405 library (liblept.a, liblept.so) and the function prototypes are
1406 also in a single file (leptprotos.h). cextract was found not
1407 to work on recent versions of linux that support 64 bit data types,
1408 and it is no longer distributed with leptonica. Instead, I wrote
1409 a prototype extractor in leptonica (xtractprotos). When you
1410 'make allprotos', it now uses this program. The shared libraries
1411 now have major and minor numbers corresponding to the version.
1412
1413 1.36 17 Jun 06
1414 Line graphics generation (graphics.c) reorganized; separated out pta
1415 generation from rendering. Can now render with alpha blending.
1416 Examples of use are given in prog/graphicstest.c.
1417 Sort functions for basic geometrical objects now have the option
1418 of returning a numa giving the sort order on the original array.
1419 The pixa sort can sort with either clones or copies of the pix.
1420
1421 1.35 21 May 06
1422 The efficiency of the multipage jbig unsupervised classifier is
1423 significantly improved due to a NumaHash struture implemented
1424 by Adam Langley. Functions for computing runlength in 1 bpp
1425 images have been added.
1426
1427 1.34 7 May 06
1428 Completely rewrote the jbig unsupervised classifier.
1429 It now works on multiple pages, and is more accurate in performing
1430 visually lossless substitutions. You can classify by connected
1431 components, characters, or words. The old data structures
1432 and interfaces have been removed. New unpackers from 1 to 2 and
1433 1 to 4 bpp, with and without colormaps in the dest.
1434
1435 1.33 18 Mar 06
1436 Generalized color snap to have different src and target colors,
1437 and to include colormaps (blend.c). Distribute into root directory
1438 that specifies the version number (e.g., 1.33). Add color
1439 space conversion between rgb and hsv. Re-bundle thresholding
1440 code from (binarize*.c, dibitize*.c) to grayquant*.c.
1441 pixThreshold8() now also quantizes 8 bpp --> 8 bpp.
1442 High-level pixRotate() that optionally expands image sufficiently
1443 so that no pixels are lost in any sequence of rotations (rotate.c).
1444 Generalize shear to specify color of pixels brought in, including
1445 for in-place operation (shear.c, rotateshear.c). Faster version of
1446 color rotation by area mapping, both about center and about UL corner.
1447 You can now use the standard color rotator (pixRotateAM) and get
1448 nearly the same speed as with the "Fast" one.
1449
1450 1.32 4 Feb 06
1451 Ability to specify a sequence of binary morphological
1452 (& binary reduction/expansion) operations in a single
1453 function (morphseq.c). Fast downscaling combined with conversion
1454 from rbg to gray and to binary (scale.c). Utility for
1455 segmenting images by color (colorseg.c).
1456
1457 1.31 7 Jan 06
1458 Remove more complicated functions that threshold to 2 bpp,
1459 retaining the simplest interface. Retest all thresholding and
1460 dithering. Add "ascii" write of PNM. Improve graphics writing
1461 of lines; generalize to colormaps. New colorization functions
1462 (paintcmap.c, blend.c).
1463
1464 1.30 22 Dec 05
1465 Remove most instances of fprintf(stderr, ...), except within
1466 DEBUG or encapsulated in error, warning or info macros.
1467 As a result, there is no output to stderr if NO_CONSOLE_IO is defined.
1468 Adaptive mapping to make bg uniform (adaptmap.c). A few bug fixes.
1469 New PostScript output functions for embedding PS files
1470 (prog/converttops). Generalized some image enhancement functions.
1471 New functions for generating hit-miss sels.
1472
1473 1.29 12 Nov 05
1474 More flexible blending of two images, with and without colormaps
1475 (see blend.c). Painting colormapped images through masks, etc
1476 (see paintcmap.c). More flexible interface for gamma and
1477 contrast enhancement (see enhance.c).
1478
1479 1.28 8 Oct 05
1480 Removed all pix colormaps for 1 bpp. Allow programmatic resetting
1481 of binary morphology boundary conditions. Added (yet) another
1482 simple octcube color quantizer. New colormap operations.
1483
1484 1.27 24 Sep 05
1485 Renamed many of the enums and typedefs to avoid namespace
1486 collisions. This includes structs and typedefs for BMP.
1487 Interface change to pixClipRectangle(); apologies to everyone
1488 whose code is broken by these changes -- I hope it's worth it.
1489 Removed colormap.h; simplified all colormap usage, hiding details
1490 from all but a few colormap functions. Am now saving file format
1491 in the pix when an image is read, and can by default write
1492 out in this format. Resolution info added for jpeg and png.
1493 Added L_INFO* macros and l_info* fctns for printing
1494 (e.g., debugging) info. Suggestions and code kindly
1495 supplied by Dave Bryan, who helped solve compatibility issues
1496 with MINGW32 (e.g., in timing and directory functions).
1497 Added some blending and linear TRC functions.
1498 Generalized pixEqual() to include all cases with and without
1499 colormaps. New regression tests in prog: ioformats, equaltest.
1500
1501 1.26 24 Jul 05
1502 Generalized affine pointwise to do interpolation as well as
1503 sampling. For both projective and bilinear transforms,
1504 implemented using both sampling and interpolation.
1505 Added function to remove keystoning by computing the necessary
1506 projective transform and doing it. Also find baselines in text images.
1507 Added downscaling using accurate area-mapping over subpixels.
1508
1509 1.25 25 Jun 05
1510 Better endian conversion fctns for 2 and 4 byte words.
1511 Remove colormaps before converting by thresholds.
1512 Added functions to read header parameters for png and tiff.
1513
1514 1.24 5 Jun 05
1515 Added image splitting to allow printing in tiles (as several pages).
1516 Added new octree quantization function to generate 4 and 8 bpp
1517 colormapped output (not dithered). Fixed bmp resolution.
1518 Added new flag for colormap removal (using dest depth based on
1519 src colormap). Added I/O tests (prog/ioformats.c)
1520
1521 1.23 10 Apr 05
1522 Added thresholding from 8 bpp to 2 and 4 bpp, allowing specification
1523 of both the number of output levels and whether or not a colormap
1524 is made.
1525
1526 1.22 27 Mar 05
1527 Add pointer queue facility. To demonstrate it, you can now
1528 generate a binary maze using a cellular automaton and find
1529 the shortest path between two points in the maze. Add heap
1530 of pointers (keyed on the first field), which is used to
1531 implement a priority queue. This is applied to search for
1532 a "least cost" path on a grayscale image (a generalization
1533 of a binary maze).
1534
1535 1.21 28 Feb 05
1536 Read/write of colormaps to file. For gplot, add a new
1537 latex output terminal. Bring ptrs into 21st century by
1538 including stdint.h, and using uintptr_t for the ptr address
1539 arithmetic in arrayaccess.*. This seems to be OK back to
1540 RH 7.0, but if you run into trouble with an earlier
1541 C compiler, let me know. Also, use enums for global
1542 constants whenever possible, and qualify named constants
1543 (e.g., ADD --> ARITH_ADD, HORIZ --> MORPH_HORIZ) to avoid
1544 possible interactions with other libraries.
1545
1546 1.20 31 Jan 05
1547 Speed up of tiffio and pngio with byte swap generating new pix.
1548 In textops.c, ability to split string into paragraphs,
1549 in preparation for more general typesetting.
1550 Automatic hit-miss Sel generation for pattern matching.
1551 Fast downscaling using a lowpass filter and subsampling.
1552 Generalization of several grayscale and color operations
1553 to work on colormapped images. Improved scale-to-gray and
1554 scaling reduction operations to be antialiased for best results.
1555
1556 1.19 30 Nov 04
1557 Additions to fileIO: (1) new jpeg reading options, such as
1558 returning warnings and scaled raster; (2) ability to write
1559 custom tiff flags. Better tiling functions.
1560 Edge extraction, both with grayscale morphology
1561 and clipped convolution filters. More general painting
1562 through a binary mask: pixSetMaskedGeneral().
1563 Unpacking from binary to 8, 16 and 32 bpp. Thresholding
1564 and dithering from 8 bpp to 2 bpp ("dibitization"). New bitmap
1565 font facility, using a single rendered font in a variety of
1566 sizes: allows painting the text on an image (binary, gray, RGB).
1567 (People have asked for the ability to write text on images).
1568
1569 1.18 25 Aug 04
1570 Changed typedefs of built-in types to avoid possible conflicts.
1571 Cleaned up and tested all programs in the prog directory.
1572 Simplified and fixed the pixSetMasked() and pixCombineMasked()
1573 functions.
1574
1575 1.17 31 May 04
1576 Implemented distance function for 16 bpp. We can now generate
1577 out 16 bpp PNG. Simple programs for generating PS from a
1578 directory of g4tiff or jpeg images. Changed implementation of
1579 erosion to allow either asymmetric or symmetric boundary conditions.
1580 The distinction is described on the binary morphology web page.
1581 Allow read/write of multipage TIFF files. Implemented
1582 read/write of PNM files.
1583
1584 1.16 31 Mar 04
1585 New depth conversion functions, improved conversion to false color,
1586 new contour rendering (onto 1 bpp or onto the src grayscale image),
1587 new orthogonal rotations, better interface for doing arithmetic
1588 on 2-d arrays using a pix, improved distance function.
1589
1590 1.15 31 Jan 04
1591 Fast interpolated color rotation with 4x4 subpixels; has
1592 nearly the accuracy of the slower method using 16x16 subpixels.
1593 Demonstration of line removal from grayscale sketch in
1594 prog/lineremoval.c. Conversion of grayscale to false color.
1595 Fixed shear and rotation functions to handle angle = 0.0 properly.
1596 Other small fixes and interface improvements.
1597
1598 1.14 30 Nov 03
1599 Small implementation changes to list.c. Better sorting
1600 routines for number arrays (numa), plus sorting for box
1601 arrays (boxa) and pix arrays (pixa). PostScript wrapper
1602 for jpeg. Better handling of colormaps, and a simple
1603 function to convert an RGB pix with not more than 256
1604 colors to the smallest colormapped pix. PS output wrappers
1605 for JFIF JPEG and TIFF G4 files. Comments compatible
1606 with doxygen for automatic documentation.
1607
1608 1.13 31 Oct 03
1609 Cleaned up documentation in src. Made libraries and test programs
1610 ANSI C++ compliant. Added special cases to rasterops for
1611 alignment to word boundaries. Fixed pngio.c to work with
1612 most recent libpng (1.2.5).
1613
1614 1.12 30 Jun 03
1615 Implemented border chain representation from a binary image,
1616 writes/reads a compressed version, and renders the original
1617 image back from the borders. Also writes outline file out
1618 in svg format. Number arrays (numa) and point arrays (pta)
1619 are also extended to 2nd level arrays (numaa, ptaa).
1620 Serialized I/O for boxa, pta, and pixa.
1621
1622 1.11 31 May 03
1623 Implemented generic list handling, for doubly-linked
1624 list cons cells and arbitrary objects.
1625
1626 1.10 14 Apr 03
1627 Implemented simple image enhancements in gray and color:
1628 gamma correction, contrast enhancement, unsharp masking.
1629 Extended smoothing via block convolution to color.
1630 Implemented auto-gen'd DWA version of hit-miss transform;
1631 the code for generating these hmt routines is very similar to
1632 that for DWA auto-gen'd erosion and dilation.
1633
1634 1.9 28 Feb 03
1635 Implemented a safe, expandable byte queue. As an example of
1636 its use, implemented memory-to-memory compression and decompression
1637 using zlib. Generalized PS write to include RGB color.
1638 Implemented a method to find image skew.
1639
1640 1.8 31 Jan 03
1641 Implemented a simple 1-pass color quantization with dithering,
1642 and improved the 2-pass octree color quantization.
1643 Documented with an application page, that includes jbig2.
1644 Added new general sampling operations and made a table
1645 that summarizes the available scaling operations.
1646
1647 1.7 31 Dec 02
1648 Added pixHtmlViewer(), a formatter that allows portable viewing of
1649 a set of images (like a slide show) in a browser.
1650 Implemented better octree color quantization, with variable
1651 number of colors, pruning the octree for good color clusters,
1652 and fast traversal for pixel assignment to colormap.
1653
1654 1.6 30 Nov 02
1655 Generalized shear and shear rotation to arbitrary locations
1656 about which the operation is performed. Implemented in-place
1657 translation using pixRasteropIP(). Implemented arbitrary
1658 affine transform of image two ways: pointwise and sequential.
1659 Added binarization by error diffusion. Added simple color
1660 quantization by octree.
1661
1662 1.5 31 Oct 02
1663 Put jpeglib.h in local directory. This, along with the jmorecfg.h
1664 file there prevents compiler warnings about redefined typedefs.
1665 Compiled everything with g++ to make strictly ansi C compatible.
1666 Added interface gplotFromFile() for simple file-based plotting with
1667 gnuplot 3.7.2. Added functions to convert 2, 4 and 8 bpp
1668 color-mapped (i.e., paletted) images to 24 bpp color or
1669 8 bpp grayscale. Added several jbig2 application cores that
1670 only require a simple wrapper to make into programs.
1671
1672 1.4 30 Sep 02
1673 Added interface to gnuplot 3.7.2 and to x11 display of images.
1674 Added new functions with arrays of images for use in applications
1675 such as jbig2 encoders, along with a simple jbig2 implementation
1676 using either hausdorff or correlation scoring. Added centroid
1677 finder for images. For accessing image arrays from arrays of
1678 image arrays, added a "new reference" (NEW_REF) flag, with a
1679 ref count attached to the array. Added power-of-2 binary
1680 expansion and reduction.
1681
1682 1.3 30 Jun 02
1683 Extended connected components to 8. Added morphological
1684 operations tophat and hdome, along with clipped arithmetic
1685 operators on grayscale images. Fixed memory error in
1686 rasteropGeneralLow() that was found using valgrind.
1687 Tested most operations with valgrind for memory errors.
1688 Replaced integer arrays with number arrays, to include floats.
1689 Added arithmetic functions on grayscale images.
1690
1691 1.2 30 May 02
1692 Added connected component utility, stack utility, pix arrays,
1693 line drawing and seed filling. Binary reconstruction,
1694 both morphological and raster-oriented, are now supported
1695 for 4 and 8 connected fills. Added the distance function
1696 on binary images, grayscale reconstruction, and grayscale
1697 morphology using the Gil-Werman method.
1698
1699 1.1 30 Apr 02
1700 Added orthogonal rotations, binary scaling, PS output,
1701 binary reconstruction, integer arrays, structuring element
1702 input/output.
1703
1704 1.0 25 Feb 02
1705 Initial distribution, with rasterops, binary morphology (two
1706 implementations: rasterops and dwa), affine transforms
1707 (translation, shear, scaling, rotation), fast convolution,
1708 and basic i/o (BMP, PNG and JPEG).
1709
1710
1711
1712 </pre>
1713
1714 <!-- JS Window Closer -----
1715 <form>
1716 <center>
1717 <input type="button" onclick="window.close();" value="Close this window">
1718 </center>
1719 </form>
1720 ----- JS Window Closer -->
1721
1722 </body>
1723 </html>
1724