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