tesseract_bin 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +23 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +46 -0
- data/VERSION +1 -0
- data/ext/tesseract_bin/extconf.rb +17 -0
- data/lib/tesseract_bin.rb +12 -0
- data/tesseract_bin.gemspec +660 -0
- data/test/helper.rb +18 -0
- data/test/test_tesseract_bin.rb +7 -0
- data/vendor/tesseract-2.04/AUTHORS +8 -0
- data/vendor/tesseract-2.04/COPYING +23 -0
- data/vendor/tesseract-2.04/ChangeLog +71 -0
- data/vendor/tesseract-2.04/INSTALL +229 -0
- data/vendor/tesseract-2.04/Makefile.am +20 -0
- data/vendor/tesseract-2.04/Makefile.in +641 -0
- data/vendor/tesseract-2.04/NEWS +1 -0
- data/vendor/tesseract-2.04/README +138 -0
- data/vendor/tesseract-2.04/ReleaseNotes +213 -0
- data/vendor/tesseract-2.04/StdAfx.cpp +8 -0
- data/vendor/tesseract-2.04/StdAfx.h +24 -0
- data/vendor/tesseract-2.04/ccmain/Makefile.am +63 -0
- data/vendor/tesseract-2.04/ccmain/Makefile.in +735 -0
- data/vendor/tesseract-2.04/ccmain/adaptions.cpp +1082 -0
- data/vendor/tesseract-2.04/ccmain/adaptions.h +109 -0
- data/vendor/tesseract-2.04/ccmain/applybox.cpp +891 -0
- data/vendor/tesseract-2.04/ccmain/applybox.h +73 -0
- data/vendor/tesseract-2.04/ccmain/baseapi.cpp +1105 -0
- data/vendor/tesseract-2.04/ccmain/baseapi.h +256 -0
- data/vendor/tesseract-2.04/ccmain/blobcmp.cpp +76 -0
- data/vendor/tesseract-2.04/ccmain/blobcmp.h +29 -0
- data/vendor/tesseract-2.04/ccmain/callnet.cpp +93 -0
- data/vendor/tesseract-2.04/ccmain/callnet.h +32 -0
- data/vendor/tesseract-2.04/ccmain/charcut.cpp +704 -0
- data/vendor/tesseract-2.04/ccmain/charcut.h +120 -0
- data/vendor/tesseract-2.04/ccmain/charsample.cpp +699 -0
- data/vendor/tesseract-2.04/ccmain/control.cpp +1842 -0
- data/vendor/tesseract-2.04/ccmain/control.h +198 -0
- data/vendor/tesseract-2.04/ccmain/docqual.cpp +1481 -0
- data/vendor/tesseract-2.04/ccmain/docqual.h +155 -0
- data/vendor/tesseract-2.04/ccmain/expandblob.cpp +82 -0
- data/vendor/tesseract-2.04/ccmain/expandblob.h +13 -0
- data/vendor/tesseract-2.04/ccmain/fixspace.cpp +989 -0
- data/vendor/tesseract-2.04/ccmain/fixspace.h +72 -0
- data/vendor/tesseract-2.04/ccmain/fixxht.cpp +825 -0
- data/vendor/tesseract-2.04/ccmain/fixxht.h +93 -0
- data/vendor/tesseract-2.04/ccmain/imgscale.cpp +154 -0
- data/vendor/tesseract-2.04/ccmain/imgscale.h +32 -0
- data/vendor/tesseract-2.04/ccmain/matmatch.cpp +391 -0
- data/vendor/tesseract-2.04/ccmain/matmatch.h +48 -0
- data/vendor/tesseract-2.04/ccmain/output.cpp +1273 -0
- data/vendor/tesseract-2.04/ccmain/output.h +116 -0
- data/vendor/tesseract-2.04/ccmain/pagewalk.cpp +666 -0
- data/vendor/tesseract-2.04/ccmain/pagewalk.h +155 -0
- data/vendor/tesseract-2.04/ccmain/paircmp.cpp +107 -0
- data/vendor/tesseract-2.04/ccmain/paircmp.h +43 -0
- data/vendor/tesseract-2.04/ccmain/pgedit.cpp +1867 -0
- data/vendor/tesseract-2.04/ccmain/pgedit.h +181 -0
- data/vendor/tesseract-2.04/ccmain/reject.cpp +1775 -0
- data/vendor/tesseract-2.04/ccmain/reject.h +181 -0
- data/vendor/tesseract-2.04/ccmain/scaleimg.cpp +366 -0
- data/vendor/tesseract-2.04/ccmain/scaleimg.h +35 -0
- data/vendor/tesseract-2.04/ccmain/tessbox.cpp +375 -0
- data/vendor/tesseract-2.04/ccmain/tessbox.h +110 -0
- data/vendor/tesseract-2.04/ccmain/tessedit.cpp +278 -0
- data/vendor/tesseract-2.04/ccmain/tessedit.h +49 -0
- data/vendor/tesseract-2.04/ccmain/tessembedded.cpp +110 -0
- data/vendor/tesseract-2.04/ccmain/tessembedded.h +38 -0
- data/vendor/tesseract-2.04/ccmain/tesseractfull.cc +37 -0
- data/vendor/tesseract-2.04/ccmain/tesseractmain.cpp +387 -0
- data/vendor/tesseract-2.04/ccmain/tesseractmain.h +58 -0
- data/vendor/tesseract-2.04/ccmain/tessio.h +110 -0
- data/vendor/tesseract-2.04/ccmain/tessvars.cpp +38 -0
- data/vendor/tesseract-2.04/ccmain/tessvars.h +48 -0
- data/vendor/tesseract-2.04/ccmain/tfacep.h +62 -0
- data/vendor/tesseract-2.04/ccmain/tfacepp.cpp +443 -0
- data/vendor/tesseract-2.04/ccmain/tfacepp.h +85 -0
- data/vendor/tesseract-2.04/ccmain/tstruct.cpp +549 -0
- data/vendor/tesseract-2.04/ccmain/tstruct.h +108 -0
- data/vendor/tesseract-2.04/ccmain/varabled.cpp +346 -0
- data/vendor/tesseract-2.04/ccmain/varabled.h +125 -0
- data/vendor/tesseract-2.04/ccmain/werdit.cpp +193 -0
- data/vendor/tesseract-2.04/ccmain/werdit.h +67 -0
- data/vendor/tesseract-2.04/ccstruct/Makefile.am +25 -0
- data/vendor/tesseract-2.04/ccstruct/Makefile.in +650 -0
- data/vendor/tesseract-2.04/ccstruct/blckerr.h +29 -0
- data/vendor/tesseract-2.04/ccstruct/blobbox.cpp +778 -0
- data/vendor/tesseract-2.04/ccstruct/blobbox.h +381 -0
- data/vendor/tesseract-2.04/ccstruct/blobs.cpp +247 -0
- data/vendor/tesseract-2.04/ccstruct/blobs.h +119 -0
- data/vendor/tesseract-2.04/ccstruct/blread.cpp +537 -0
- data/vendor/tesseract-2.04/ccstruct/blread.h +63 -0
- data/vendor/tesseract-2.04/ccstruct/callcpp.cpp +252 -0
- data/vendor/tesseract-2.04/ccstruct/coutln.cpp +650 -0
- data/vendor/tesseract-2.04/ccstruct/coutln.h +186 -0
- data/vendor/tesseract-2.04/ccstruct/crakedge.h +39 -0
- data/vendor/tesseract-2.04/ccstruct/genblob.cpp +133 -0
- data/vendor/tesseract-2.04/ccstruct/genblob.h +52 -0
- data/vendor/tesseract-2.04/ccstruct/hpddef.h +39 -0
- data/vendor/tesseract-2.04/ccstruct/hpdsizes.h +8 -0
- data/vendor/tesseract-2.04/ccstruct/ipoints.h +479 -0
- data/vendor/tesseract-2.04/ccstruct/labls.cpp +188 -0
- data/vendor/tesseract-2.04/ccstruct/labls.h +38 -0
- data/vendor/tesseract-2.04/ccstruct/linlsq.cpp +249 -0
- data/vendor/tesseract-2.04/ccstruct/linlsq.h +102 -0
- data/vendor/tesseract-2.04/ccstruct/lmedsq.cpp +453 -0
- data/vendor/tesseract-2.04/ccstruct/lmedsq.h +84 -0
- data/vendor/tesseract-2.04/ccstruct/mod128.cpp +100 -0
- data/vendor/tesseract-2.04/ccstruct/mod128.h +85 -0
- data/vendor/tesseract-2.04/ccstruct/normalis.cpp +176 -0
- data/vendor/tesseract-2.04/ccstruct/normalis.h +108 -0
- data/vendor/tesseract-2.04/ccstruct/ocrblock.cpp +369 -0
- data/vendor/tesseract-2.04/ccstruct/ocrblock.h +235 -0
- data/vendor/tesseract-2.04/ccstruct/ocrrow.cpp +216 -0
- data/vendor/tesseract-2.04/ccstruct/ocrrow.h +133 -0
- data/vendor/tesseract-2.04/ccstruct/pageblk.cpp +879 -0
- data/vendor/tesseract-2.04/ccstruct/pageblk.h +318 -0
- data/vendor/tesseract-2.04/ccstruct/pageres.cpp +330 -0
- data/vendor/tesseract-2.04/ccstruct/pageres.h +313 -0
- data/vendor/tesseract-2.04/ccstruct/pdblock.cpp +361 -0
- data/vendor/tesseract-2.04/ccstruct/pdblock.h +181 -0
- data/vendor/tesseract-2.04/ccstruct/pdclass.h +54 -0
- data/vendor/tesseract-2.04/ccstruct/points.cpp +102 -0
- data/vendor/tesseract-2.04/ccstruct/points.h +299 -0
- data/vendor/tesseract-2.04/ccstruct/polyaprx.cpp +588 -0
- data/vendor/tesseract-2.04/ccstruct/polyaprx.h +51 -0
- data/vendor/tesseract-2.04/ccstruct/polyblk.cpp +398 -0
- data/vendor/tesseract-2.04/ccstruct/polyblk.h +122 -0
- data/vendor/tesseract-2.04/ccstruct/polyblob.cpp +357 -0
- data/vendor/tesseract-2.04/ccstruct/polyblob.h +102 -0
- data/vendor/tesseract-2.04/ccstruct/polyvert.cpp +23 -0
- data/vendor/tesseract-2.04/ccstruct/polyvert.h +58 -0
- data/vendor/tesseract-2.04/ccstruct/poutline.cpp +441 -0
- data/vendor/tesseract-2.04/ccstruct/poutline.h +125 -0
- data/vendor/tesseract-2.04/ccstruct/quadlsq.cpp +147 -0
- data/vendor/tesseract-2.04/ccstruct/quadlsq.h +67 -0
- data/vendor/tesseract-2.04/ccstruct/quadratc.cpp +21 -0
- data/vendor/tesseract-2.04/ccstruct/quadratc.h +63 -0
- data/vendor/tesseract-2.04/ccstruct/quspline.cpp +382 -0
- data/vendor/tesseract-2.04/ccstruct/quspline.h +113 -0
- data/vendor/tesseract-2.04/ccstruct/ratngs.cpp +372 -0
- data/vendor/tesseract-2.04/ccstruct/ratngs.h +198 -0
- data/vendor/tesseract-2.04/ccstruct/rect.cpp +229 -0
- data/vendor/tesseract-2.04/ccstruct/rect.h +320 -0
- data/vendor/tesseract-2.04/ccstruct/rejctmap.cpp +545 -0
- data/vendor/tesseract-2.04/ccstruct/rejctmap.h +284 -0
- data/vendor/tesseract-2.04/ccstruct/rwpoly.cpp +89 -0
- data/vendor/tesseract-2.04/ccstruct/rwpoly.h +45 -0
- data/vendor/tesseract-2.04/ccstruct/statistc.cpp +905 -0
- data/vendor/tesseract-2.04/ccstruct/statistc.h +135 -0
- data/vendor/tesseract-2.04/ccstruct/stepblob.cpp +296 -0
- data/vendor/tesseract-2.04/ccstruct/stepblob.h +88 -0
- data/vendor/tesseract-2.04/ccstruct/txtregn.cpp +230 -0
- data/vendor/tesseract-2.04/ccstruct/txtregn.h +155 -0
- data/vendor/tesseract-2.04/ccstruct/vecfuncs.cpp +63 -0
- data/vendor/tesseract-2.04/ccstruct/vecfuncs.h +91 -0
- data/vendor/tesseract-2.04/ccstruct/werd.cpp +967 -0
- data/vendor/tesseract-2.04/ccstruct/werd.h +277 -0
- data/vendor/tesseract-2.04/ccutil/Makefile.am +19 -0
- data/vendor/tesseract-2.04/ccutil/Makefile.in +626 -0
- data/vendor/tesseract-2.04/ccutil/basedir.cpp +118 -0
- data/vendor/tesseract-2.04/ccutil/basedir.h +32 -0
- data/vendor/tesseract-2.04/ccutil/bits16.cpp +30 -0
- data/vendor/tesseract-2.04/ccutil/bits16.h +61 -0
- data/vendor/tesseract-2.04/ccutil/boxread.cpp +105 -0
- data/vendor/tesseract-2.04/ccutil/boxread.h +44 -0
- data/vendor/tesseract-2.04/ccutil/clst.cpp +626 -0
- data/vendor/tesseract-2.04/ccutil/clst.h +1085 -0
- data/vendor/tesseract-2.04/ccutil/debugwin.cpp +500 -0
- data/vendor/tesseract-2.04/ccutil/debugwin.h +103 -0
- data/vendor/tesseract-2.04/ccutil/elst.cpp +593 -0
- data/vendor/tesseract-2.04/ccutil/elst.h +1125 -0
- data/vendor/tesseract-2.04/ccutil/elst2.cpp +606 -0
- data/vendor/tesseract-2.04/ccutil/elst2.h +1121 -0
- data/vendor/tesseract-2.04/ccutil/errcode.cpp +104 -0
- data/vendor/tesseract-2.04/ccutil/errcode.h +104 -0
- data/vendor/tesseract-2.04/ccutil/fileerr.h +34 -0
- data/vendor/tesseract-2.04/ccutil/globaloc.cpp +115 -0
- data/vendor/tesseract-2.04/ccutil/globaloc.h +40 -0
- data/vendor/tesseract-2.04/ccutil/hashfn.cpp +57 -0
- data/vendor/tesseract-2.04/ccutil/hashfn.h +30 -0
- data/vendor/tesseract-2.04/ccutil/host.h +180 -0
- data/vendor/tesseract-2.04/ccutil/hosthplb.h +1 -0
- data/vendor/tesseract-2.04/ccutil/lsterr.h +43 -0
- data/vendor/tesseract-2.04/ccutil/mainblk.cpp +126 -0
- data/vendor/tesseract-2.04/ccutil/mainblk.h +39 -0
- data/vendor/tesseract-2.04/ccutil/memblk.cpp +1106 -0
- data/vendor/tesseract-2.04/ccutil/memblk.h +189 -0
- data/vendor/tesseract-2.04/ccutil/memry.cpp +532 -0
- data/vendor/tesseract-2.04/ccutil/memry.h +192 -0
- data/vendor/tesseract-2.04/ccutil/memryerr.h +38 -0
- data/vendor/tesseract-2.04/ccutil/mfcpch.cpp +5 -0
- data/vendor/tesseract-2.04/ccutil/mfcpch.h +37 -0
- data/vendor/tesseract-2.04/ccutil/ndminx.h +31 -0
- data/vendor/tesseract-2.04/ccutil/notdll.h +28 -0
- data/vendor/tesseract-2.04/ccutil/nwmain.h +176 -0
- data/vendor/tesseract-2.04/ccutil/ocrclass.h +345 -0
- data/vendor/tesseract-2.04/ccutil/ocrshell.cpp +772 -0
- data/vendor/tesseract-2.04/ccutil/ocrshell.h +191 -0
- data/vendor/tesseract-2.04/ccutil/platform.h +18 -0
- data/vendor/tesseract-2.04/ccutil/scanutils.cpp +543 -0
- data/vendor/tesseract-2.04/ccutil/scanutils.h +55 -0
- data/vendor/tesseract-2.04/ccutil/secname.h +9 -0
- data/vendor/tesseract-2.04/ccutil/serialis.cpp +117 -0
- data/vendor/tesseract-2.04/ccutil/serialis.h +93 -0
- data/vendor/tesseract-2.04/ccutil/stderr.h +26 -0
- data/vendor/tesseract-2.04/ccutil/strngs.cpp +495 -0
- data/vendor/tesseract-2.04/ccutil/strngs.h +138 -0
- data/vendor/tesseract-2.04/ccutil/tessclas.h +135 -0
- data/vendor/tesseract-2.04/ccutil/tessopt.cpp +61 -0
- data/vendor/tesseract-2.04/ccutil/tessopt.h +30 -0
- data/vendor/tesseract-2.04/ccutil/tprintf.cpp +122 -0
- data/vendor/tesseract-2.04/ccutil/tprintf.h +35 -0
- data/vendor/tesseract-2.04/ccutil/unichar.cpp +144 -0
- data/vendor/tesseract-2.04/ccutil/unichar.h +84 -0
- data/vendor/tesseract-2.04/ccutil/unicharmap.cpp +172 -0
- data/vendor/tesseract-2.04/ccutil/unicharmap.h +82 -0
- data/vendor/tesseract-2.04/ccutil/unicharset.cpp +307 -0
- data/vendor/tesseract-2.04/ccutil/unicharset.h +267 -0
- data/vendor/tesseract-2.04/ccutil/varable.cpp +672 -0
- data/vendor/tesseract-2.04/ccutil/varable.h +419 -0
- data/vendor/tesseract-2.04/classify/Makefile.am +24 -0
- data/vendor/tesseract-2.04/classify/Makefile.in +647 -0
- data/vendor/tesseract-2.04/classify/adaptive.cpp +535 -0
- data/vendor/tesseract-2.04/classify/adaptive.h +199 -0
- data/vendor/tesseract-2.04/classify/adaptmatch.cpp +2958 -0
- data/vendor/tesseract-2.04/classify/adaptmatch.h +86 -0
- data/vendor/tesseract-2.04/classify/baseline.cpp +58 -0
- data/vendor/tesseract-2.04/classify/baseline.h +91 -0
- data/vendor/tesseract-2.04/classify/blobclass.cpp +123 -0
- data/vendor/tesseract-2.04/classify/blobclass.h +49 -0
- data/vendor/tesseract-2.04/classify/chartoname.cpp +74 -0
- data/vendor/tesseract-2.04/classify/chartoname.h +21 -0
- data/vendor/tesseract-2.04/classify/cluster.cpp +2834 -0
- data/vendor/tesseract-2.04/classify/cluster.h +158 -0
- data/vendor/tesseract-2.04/classify/clusttool.cpp +507 -0
- data/vendor/tesseract-2.04/classify/clusttool.h +70 -0
- data/vendor/tesseract-2.04/classify/cutoffs.cpp +73 -0
- data/vendor/tesseract-2.04/classify/cutoffs.h +49 -0
- data/vendor/tesseract-2.04/classify/extern.h +32 -0
- data/vendor/tesseract-2.04/classify/extract.cpp +100 -0
- data/vendor/tesseract-2.04/classify/extract.h +36 -0
- data/vendor/tesseract-2.04/classify/featdefs.cpp +244 -0
- data/vendor/tesseract-2.04/classify/featdefs.h +71 -0
- data/vendor/tesseract-2.04/classify/flexfx.cpp +87 -0
- data/vendor/tesseract-2.04/classify/flexfx.h +34 -0
- data/vendor/tesseract-2.04/classify/float2int.cpp +126 -0
- data/vendor/tesseract-2.04/classify/float2int.h +65 -0
- data/vendor/tesseract-2.04/classify/fpoint.cpp +73 -0
- data/vendor/tesseract-2.04/classify/fpoint.h +63 -0
- data/vendor/tesseract-2.04/classify/fxdefs.cpp +74 -0
- data/vendor/tesseract-2.04/classify/fxdefs.h +93 -0
- data/vendor/tesseract-2.04/classify/fxid.h +69 -0
- data/vendor/tesseract-2.04/classify/hideedge.cpp +35 -0
- data/vendor/tesseract-2.04/classify/hideedge.h +76 -0
- data/vendor/tesseract-2.04/classify/intfx.cpp +608 -0
- data/vendor/tesseract-2.04/classify/intfx.h +63 -0
- data/vendor/tesseract-2.04/classify/intmatcher.cpp +1524 -0
- data/vendor/tesseract-2.04/classify/intmatcher.h +199 -0
- data/vendor/tesseract-2.04/classify/intproto.cpp +1823 -0
- data/vendor/tesseract-2.04/classify/intproto.h +320 -0
- data/vendor/tesseract-2.04/classify/kdtree.cpp +884 -0
- data/vendor/tesseract-2.04/classify/kdtree.h +118 -0
- data/vendor/tesseract-2.04/classify/mf.cpp +106 -0
- data/vendor/tesseract-2.04/classify/mf.h +43 -0
- data/vendor/tesseract-2.04/classify/mfdefs.cpp +58 -0
- data/vendor/tesseract-2.04/classify/mfdefs.h +60 -0
- data/vendor/tesseract-2.04/classify/mfoutline.cpp +1087 -0
- data/vendor/tesseract-2.04/classify/mfoutline.h +277 -0
- data/vendor/tesseract-2.04/classify/mfx.cpp +436 -0
- data/vendor/tesseract-2.04/classify/mfx.h +52 -0
- data/vendor/tesseract-2.04/classify/normfeat.cpp +132 -0
- data/vendor/tesseract-2.04/classify/normfeat.h +63 -0
- data/vendor/tesseract-2.04/classify/normmatch.cpp +305 -0
- data/vendor/tesseract-2.04/classify/normmatch.h +38 -0
- data/vendor/tesseract-2.04/classify/ocrfeatures.cpp +310 -0
- data/vendor/tesseract-2.04/classify/ocrfeatures.h +148 -0
- data/vendor/tesseract-2.04/classify/outfeat.cpp +262 -0
- data/vendor/tesseract-2.04/classify/outfeat.h +76 -0
- data/vendor/tesseract-2.04/classify/picofeat.cpp +297 -0
- data/vendor/tesseract-2.04/classify/picofeat.h +65 -0
- data/vendor/tesseract-2.04/classify/protos.cpp +472 -0
- data/vendor/tesseract-2.04/classify/protos.h +258 -0
- data/vendor/tesseract-2.04/classify/sigmenu.cpp +225 -0
- data/vendor/tesseract-2.04/classify/sigmenu.h +39 -0
- data/vendor/tesseract-2.04/classify/speckle.cpp +127 -0
- data/vendor/tesseract-2.04/classify/speckle.h +69 -0
- data/vendor/tesseract-2.04/classify/xform2d.cpp +120 -0
- data/vendor/tesseract-2.04/classify/xform2d.h +60 -0
- data/vendor/tesseract-2.04/config/config.guess +1466 -0
- data/vendor/tesseract-2.04/config/config.h.in +188 -0
- data/vendor/tesseract-2.04/config/config.sub +1579 -0
- data/vendor/tesseract-2.04/config/depcomp +530 -0
- data/vendor/tesseract-2.04/config/install-sh +269 -0
- data/vendor/tesseract-2.04/config/missing +198 -0
- data/vendor/tesseract-2.04/config/mkinstalldirs +40 -0
- data/vendor/tesseract-2.04/config/stamp-h.in +0 -0
- data/vendor/tesseract-2.04/configure +10424 -0
- data/vendor/tesseract-2.04/cutil/Makefile.am +14 -0
- data/vendor/tesseract-2.04/cutil/Makefile.in +612 -0
- data/vendor/tesseract-2.04/cutil/bitvec.cpp +115 -0
- data/vendor/tesseract-2.04/cutil/bitvec.h +100 -0
- data/vendor/tesseract-2.04/cutil/callcpp.h +190 -0
- data/vendor/tesseract-2.04/cutil/const.h +108 -0
- data/vendor/tesseract-2.04/cutil/cutil.cpp +92 -0
- data/vendor/tesseract-2.04/cutil/cutil.h +159 -0
- data/vendor/tesseract-2.04/cutil/danerror.cpp +144 -0
- data/vendor/tesseract-2.04/cutil/danerror.h +41 -0
- data/vendor/tesseract-2.04/cutil/debug.cpp +97 -0
- data/vendor/tesseract-2.04/cutil/debug.h +348 -0
- data/vendor/tesseract-2.04/cutil/efio.cpp +62 -0
- data/vendor/tesseract-2.04/cutil/efio.h +32 -0
- data/vendor/tesseract-2.04/cutil/emalloc.cpp +91 -0
- data/vendor/tesseract-2.04/cutil/emalloc.h +44 -0
- data/vendor/tesseract-2.04/cutil/freelist.cpp +75 -0
- data/vendor/tesseract-2.04/cutil/freelist.h +45 -0
- data/vendor/tesseract-2.04/cutil/funcdefs.h +35 -0
- data/vendor/tesseract-2.04/cutil/general.h +33 -0
- data/vendor/tesseract-2.04/cutil/globals.cpp +69 -0
- data/vendor/tesseract-2.04/cutil/globals.h +70 -0
- data/vendor/tesseract-2.04/cutil/listio.cpp +68 -0
- data/vendor/tesseract-2.04/cutil/listio.h +43 -0
- data/vendor/tesseract-2.04/cutil/minmax.h +40 -0
- data/vendor/tesseract-2.04/cutil/oldheap.cpp +337 -0
- data/vendor/tesseract-2.04/cutil/oldheap.h +126 -0
- data/vendor/tesseract-2.04/cutil/oldlist.cpp +393 -0
- data/vendor/tesseract-2.04/cutil/oldlist.h +350 -0
- data/vendor/tesseract-2.04/cutil/structures.cpp +66 -0
- data/vendor/tesseract-2.04/cutil/structures.h +112 -0
- data/vendor/tesseract-2.04/cutil/tessarray.cpp +115 -0
- data/vendor/tesseract-2.04/cutil/tessarray.h +166 -0
- data/vendor/tesseract-2.04/cutil/tordvars.cpp +95 -0
- data/vendor/tesseract-2.04/cutil/tordvars.h +61 -0
- data/vendor/tesseract-2.04/cutil/variables.cpp +317 -0
- data/vendor/tesseract-2.04/cutil/variables.h +170 -0
- data/vendor/tesseract-2.04/dict/Makefile.am +13 -0
- data/vendor/tesseract-2.04/dict/Makefile.in +609 -0
- data/vendor/tesseract-2.04/dict/choicearr.h +96 -0
- data/vendor/tesseract-2.04/dict/choices.cpp +210 -0
- data/vendor/tesseract-2.04/dict/choices.h +241 -0
- data/vendor/tesseract-2.04/dict/context.cpp +270 -0
- data/vendor/tesseract-2.04/dict/context.h +82 -0
- data/vendor/tesseract-2.04/dict/dawg.cpp +363 -0
- data/vendor/tesseract-2.04/dict/dawg.h +394 -0
- data/vendor/tesseract-2.04/dict/hyphen.cpp +84 -0
- data/vendor/tesseract-2.04/dict/hyphen.h +125 -0
- data/vendor/tesseract-2.04/dict/lookdawg.cpp +228 -0
- data/vendor/tesseract-2.04/dict/lookdawg.h +76 -0
- data/vendor/tesseract-2.04/dict/makedawg.cpp +449 -0
- data/vendor/tesseract-2.04/dict/makedawg.h +83 -0
- data/vendor/tesseract-2.04/dict/matchdefs.h +145 -0
- data/vendor/tesseract-2.04/dict/permdawg.cpp +415 -0
- data/vendor/tesseract-2.04/dict/permdawg.h +98 -0
- data/vendor/tesseract-2.04/dict/permngram.cpp +358 -0
- data/vendor/tesseract-2.04/dict/permngram.h +33 -0
- data/vendor/tesseract-2.04/dict/permnum.cpp +522 -0
- data/vendor/tesseract-2.04/dict/permnum.h +83 -0
- data/vendor/tesseract-2.04/dict/permute.cpp +1704 -0
- data/vendor/tesseract-2.04/dict/permute.h +93 -0
- data/vendor/tesseract-2.04/dict/reduce.cpp +424 -0
- data/vendor/tesseract-2.04/dict/reduce.h +112 -0
- data/vendor/tesseract-2.04/dict/states.cpp +382 -0
- data/vendor/tesseract-2.04/dict/states.h +111 -0
- data/vendor/tesseract-2.04/dict/stopper.cpp +1458 -0
- data/vendor/tesseract-2.04/dict/stopper.h +103 -0
- data/vendor/tesseract-2.04/dict/trie.cpp +683 -0
- data/vendor/tesseract-2.04/dict/trie.h +190 -0
- data/vendor/tesseract-2.04/dlltest/Makefile.am +2 -0
- data/vendor/tesseract-2.04/dlltest/Makefile.in +388 -0
- data/vendor/tesseract-2.04/dlltest/dlltest.cpp +163 -0
- data/vendor/tesseract-2.04/dlltest/dlltest.dsp +186 -0
- data/vendor/tesseract-2.04/dlltest/dlltest.vcproj +637 -0
- data/vendor/tesseract-2.04/eurotext.tif +0 -0
- data/vendor/tesseract-2.04/image/Makefile.am +10 -0
- data/vendor/tesseract-2.04/image/Makefile.in +596 -0
- data/vendor/tesseract-2.04/image/bitstrm.cpp +157 -0
- data/vendor/tesseract-2.04/image/bitstrm.h +73 -0
- data/vendor/tesseract-2.04/image/img.h +336 -0
- data/vendor/tesseract-2.04/image/imgbmp.cpp +223 -0
- data/vendor/tesseract-2.04/image/imgbmp.h +50 -0
- data/vendor/tesseract-2.04/image/imgerrs.h +35 -0
- data/vendor/tesseract-2.04/image/imgio.cpp +321 -0
- data/vendor/tesseract-2.04/image/imgio.h +22 -0
- data/vendor/tesseract-2.04/image/imgs.cpp +1764 -0
- data/vendor/tesseract-2.04/image/imgs.h +102 -0
- data/vendor/tesseract-2.04/image/imgtiff.cpp +723 -0
- data/vendor/tesseract-2.04/image/imgtiff.h +89 -0
- data/vendor/tesseract-2.04/image/imgunpk.h +1377 -0
- data/vendor/tesseract-2.04/image/svshowim.cpp +40 -0
- data/vendor/tesseract-2.04/image/svshowim.h +25 -0
- data/vendor/tesseract-2.04/java/Makefile.am +4 -0
- data/vendor/tesseract-2.04/java/Makefile.in +473 -0
- data/vendor/tesseract-2.04/java/com/Makefile.am +1 -0
- data/vendor/tesseract-2.04/java/com/Makefile.in +470 -0
- data/vendor/tesseract-2.04/java/com/google/Makefile.am +1 -0
- data/vendor/tesseract-2.04/java/com/google/Makefile.in +470 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/Makefile.am +4 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/Makefile.in +473 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ScrollView.java +421 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/Makefile.am +5 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/Makefile.in +474 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEvent.java +87 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEventHandler.java +296 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEventType.java +31 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/Makefile.am +7 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/Makefile.in +476 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVAbstractMenuItem.java +58 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVCheckboxMenuItem.java +60 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVEmptyMenuItem.java +48 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVImageHandler.java +228 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVMenuBar.java +130 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVMenuItem.java +61 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVPopupMenu.java +142 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVSubMenuItem.java +41 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVWindow.java +643 -0
- data/vendor/tesseract-2.04/java/makefile +55 -0
- data/vendor/tesseract-2.04/pageseg/Makefile.am +13 -0
- data/vendor/tesseract-2.04/pageseg/Makefile.in +596 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg.cpp +363 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg.h +90 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg_interface.cpp +82 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg_interface.h +30 -0
- data/vendor/tesseract-2.04/pageseg/pageseg.cpp +170 -0
- data/vendor/tesseract-2.04/pageseg/pageseg.h +29 -0
- data/vendor/tesseract-2.04/phototest.tif +0 -0
- data/vendor/tesseract-2.04/tessdata/Makefile.am +31 -0
- data/vendor/tesseract-2.04/tessdata/Makefile.in +529 -0
- data/vendor/tesseract-2.04/tessdata/configs/Makefile.am +3 -0
- data/vendor/tesseract-2.04/tessdata/configs/Makefile.in +344 -0
- data/vendor/tesseract-2.04/tessdata/configs/api_config +1 -0
- data/vendor/tesseract-2.04/tessdata/configs/box.train +19 -0
- data/vendor/tesseract-2.04/tessdata/configs/box.train.stderr +18 -0
- data/vendor/tesseract-2.04/tessdata/configs/inter +4 -0
- data/vendor/tesseract-2.04/tessdata/configs/kannada +4 -0
- data/vendor/tesseract-2.04/tessdata/configs/makebox +1 -0
- data/vendor/tesseract-2.04/tessdata/configs/unlv +3 -0
- data/vendor/tesseract-2.04/tessdata/confsets +3 -0
- data/vendor/tesseract-2.04/tessdata/eng.DangAmbigs +39 -0
- data/vendor/tesseract-2.04/tessdata/eng.freq-dawg +0 -0
- data/vendor/tesseract-2.04/tessdata/eng.inttemp +0 -0
- data/vendor/tesseract-2.04/tessdata/eng.normproto +1247 -0
- data/vendor/tesseract-2.04/tessdata/eng.pffmtable +111 -0
- data/vendor/tesseract-2.04/tessdata/eng.unicharset +113 -0
- data/vendor/tesseract-2.04/tessdata/eng.user-words +921 -0
- data/vendor/tesseract-2.04/tessdata/eng.word-dawg +0 -0
- data/vendor/tesseract-2.04/tessdata/makedummies +8 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/Makefile.am +3 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/Makefile.in +344 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/batch +2 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/batch.nochop +2 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/matdemo +7 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/msdemo +13 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/nobatch +2 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/segdemo +9 -0
- data/vendor/tesseract-2.04/tessdll.cpp +351 -0
- data/vendor/tesseract-2.04/tessdll.dsp +2050 -0
- data/vendor/tesseract-2.04/tessdll.h +143 -0
- data/vendor/tesseract-2.04/tessdll.vcproj +5495 -0
- data/vendor/tesseract-2.04/tesseract.dsp +2124 -0
- data/vendor/tesseract-2.04/tesseract.dsw +116 -0
- data/vendor/tesseract-2.04/tesseract.sln +59 -0
- data/vendor/tesseract-2.04/tesseract.spec +188 -0
- data/vendor/tesseract-2.04/tesseract.vcproj +5859 -0
- data/vendor/tesseract-2.04/testing/Makefile.am +2 -0
- data/vendor/tesseract-2.04/testing/Makefile.in +312 -0
- data/vendor/tesseract-2.04/testing/README +43 -0
- data/vendor/tesseract-2.04/testing/counttestset.sh +61 -0
- data/vendor/tesseract-2.04/testing/reorgdata.sh +44 -0
- data/vendor/tesseract-2.04/testing/reports/1995.bus.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/1995.doe3.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/1995.mag.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/1995.news.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/2.03.summary +9 -0
- data/vendor/tesseract-2.04/testing/reports/2.04.summary +9 -0
- data/vendor/tesseract-2.04/testing/runalltests.sh +110 -0
- data/vendor/tesseract-2.04/testing/runtestset.sh +61 -0
- data/vendor/tesseract-2.04/textord/Makefile.am +20 -0
- data/vendor/tesseract-2.04/textord/Makefile.in +624 -0
- data/vendor/tesseract-2.04/textord/blkocc.cpp +809 -0
- data/vendor/tesseract-2.04/textord/blkocc.h +327 -0
- data/vendor/tesseract-2.04/textord/blobcmpl.h +31 -0
- data/vendor/tesseract-2.04/textord/drawedg.cpp +77 -0
- data/vendor/tesseract-2.04/textord/drawedg.h +34 -0
- data/vendor/tesseract-2.04/textord/drawtord.cpp +469 -0
- data/vendor/tesseract-2.04/textord/drawtord.h +107 -0
- data/vendor/tesseract-2.04/textord/edgblob.cpp +412 -0
- data/vendor/tesseract-2.04/textord/edgblob.h +100 -0
- data/vendor/tesseract-2.04/textord/edgloop.cpp +211 -0
- data/vendor/tesseract-2.04/textord/edgloop.h +66 -0
- data/vendor/tesseract-2.04/textord/fpchop.cpp +1641 -0
- data/vendor/tesseract-2.04/textord/fpchop.h +238 -0
- data/vendor/tesseract-2.04/textord/gap_map.cpp +166 -0
- data/vendor/tesseract-2.04/textord/gap_map.h +40 -0
- data/vendor/tesseract-2.04/textord/makerow.cpp +2628 -0
- data/vendor/tesseract-2.04/textord/makerow.h +295 -0
- data/vendor/tesseract-2.04/textord/oldbasel.cpp +1761 -0
- data/vendor/tesseract-2.04/textord/oldbasel.h +195 -0
- data/vendor/tesseract-2.04/textord/pithsync.cpp +696 -0
- data/vendor/tesseract-2.04/textord/pithsync.h +134 -0
- data/vendor/tesseract-2.04/textord/pitsync1.cpp +425 -0
- data/vendor/tesseract-2.04/textord/pitsync1.h +135 -0
- data/vendor/tesseract-2.04/textord/scanedg.cpp +452 -0
- data/vendor/tesseract-2.04/textord/scanedg.h +74 -0
- data/vendor/tesseract-2.04/textord/sortflts.cpp +80 -0
- data/vendor/tesseract-2.04/textord/sortflts.h +64 -0
- data/vendor/tesseract-2.04/textord/tessout.h +76 -0
- data/vendor/tesseract-2.04/textord/topitch.cpp +2019 -0
- data/vendor/tesseract-2.04/textord/topitch.h +195 -0
- data/vendor/tesseract-2.04/textord/tordmain.cpp +907 -0
- data/vendor/tesseract-2.04/textord/tordmain.h +132 -0
- data/vendor/tesseract-2.04/textord/tospace.cpp +1939 -0
- data/vendor/tesseract-2.04/textord/tospace.h +193 -0
- data/vendor/tesseract-2.04/textord/tovars.cpp +87 -0
- data/vendor/tesseract-2.04/textord/tovars.h +94 -0
- data/vendor/tesseract-2.04/textord/underlin.cpp +312 -0
- data/vendor/tesseract-2.04/textord/underlin.h +53 -0
- data/vendor/tesseract-2.04/textord/wordseg.cpp +620 -0
- data/vendor/tesseract-2.04/textord/wordseg.h +70 -0
- data/vendor/tesseract-2.04/training/Makefile.am +54 -0
- data/vendor/tesseract-2.04/training/Makefile.in +720 -0
- data/vendor/tesseract-2.04/training/cnTraining.cpp +855 -0
- data/vendor/tesseract-2.04/training/cntraining.dsp +243 -0
- data/vendor/tesseract-2.04/training/cntraining.vcproj +950 -0
- data/vendor/tesseract-2.04/training/mergenf.cpp +451 -0
- data/vendor/tesseract-2.04/training/mergenf.h +106 -0
- data/vendor/tesseract-2.04/training/mfTraining.cpp +1341 -0
- data/vendor/tesseract-2.04/training/mftraining.dsp +285 -0
- data/vendor/tesseract-2.04/training/mftraining.vcproj +1055 -0
- data/vendor/tesseract-2.04/training/name2char.cpp +166 -0
- data/vendor/tesseract-2.04/training/name2char.h +38 -0
- data/vendor/tesseract-2.04/training/training.cpp +190 -0
- data/vendor/tesseract-2.04/training/training.h +130 -0
- data/vendor/tesseract-2.04/training/unicharset_extractor.cpp +140 -0
- data/vendor/tesseract-2.04/training/unicharset_extractor.dsp +335 -0
- data/vendor/tesseract-2.04/training/unicharset_extractor.vcproj +769 -0
- data/vendor/tesseract-2.04/training/wordlist2dawg.cpp +69 -0
- data/vendor/tesseract-2.04/training/wordlist2dawg.dsp +319 -0
- data/vendor/tesseract-2.04/training/wordlist2dawg.vcproj +1113 -0
- data/vendor/tesseract-2.04/viewer/Makefile.am +9 -0
- data/vendor/tesseract-2.04/viewer/Makefile.in +591 -0
- data/vendor/tesseract-2.04/viewer/scrollview.cpp +825 -0
- data/vendor/tesseract-2.04/viewer/scrollview.h +414 -0
- data/vendor/tesseract-2.04/viewer/svmnode.cpp +140 -0
- data/vendor/tesseract-2.04/viewer/svmnode.h +94 -0
- data/vendor/tesseract-2.04/viewer/svpaint.cpp +220 -0
- data/vendor/tesseract-2.04/viewer/svutil.cpp +347 -0
- data/vendor/tesseract-2.04/viewer/svutil.h +138 -0
- data/vendor/tesseract-2.04/wordrec/Makefile.am +23 -0
- data/vendor/tesseract-2.04/wordrec/Makefile.in +641 -0
- data/vendor/tesseract-2.04/wordrec/associate.cpp +62 -0
- data/vendor/tesseract-2.04/wordrec/associate.h +93 -0
- data/vendor/tesseract-2.04/wordrec/badwords.cpp +106 -0
- data/vendor/tesseract-2.04/wordrec/badwords.h +51 -0
- data/vendor/tesseract-2.04/wordrec/bestfirst.cpp +526 -0
- data/vendor/tesseract-2.04/wordrec/bestfirst.h +203 -0
- data/vendor/tesseract-2.04/wordrec/charsample.h +208 -0
- data/vendor/tesseract-2.04/wordrec/chop.cpp +458 -0
- data/vendor/tesseract-2.04/wordrec/chop.h +153 -0
- data/vendor/tesseract-2.04/wordrec/chopper.cpp +750 -0
- data/vendor/tesseract-2.04/wordrec/chopper.h +104 -0
- data/vendor/tesseract-2.04/wordrec/closed.cpp +136 -0
- data/vendor/tesseract-2.04/wordrec/closed.h +65 -0
- data/vendor/tesseract-2.04/wordrec/djmenus.cpp +118 -0
- data/vendor/tesseract-2.04/wordrec/djmenus.h +33 -0
- data/vendor/tesseract-2.04/wordrec/drawfx.cpp +92 -0
- data/vendor/tesseract-2.04/wordrec/drawfx.h +33 -0
- data/vendor/tesseract-2.04/wordrec/findseam.cpp +566 -0
- data/vendor/tesseract-2.04/wordrec/findseam.h +69 -0
- data/vendor/tesseract-2.04/wordrec/gradechop.cpp +226 -0
- data/vendor/tesseract-2.04/wordrec/gradechop.h +91 -0
- data/vendor/tesseract-2.04/wordrec/heuristic.cpp +194 -0
- data/vendor/tesseract-2.04/wordrec/heuristic.h +120 -0
- data/vendor/tesseract-2.04/wordrec/makechop.cpp +281 -0
- data/vendor/tesseract-2.04/wordrec/makechop.h +69 -0
- data/vendor/tesseract-2.04/wordrec/matchtab.cpp +191 -0
- data/vendor/tesseract-2.04/wordrec/matchtab.h +45 -0
- data/vendor/tesseract-2.04/wordrec/matrix.cpp +118 -0
- data/vendor/tesseract-2.04/wordrec/matrix.h +104 -0
- data/vendor/tesseract-2.04/wordrec/measure.h +135 -0
- data/vendor/tesseract-2.04/wordrec/metrics.cpp +363 -0
- data/vendor/tesseract-2.04/wordrec/metrics.h +130 -0
- data/vendor/tesseract-2.04/wordrec/mfvars.cpp +51 -0
- data/vendor/tesseract-2.04/wordrec/mfvars.h +27 -0
- data/vendor/tesseract-2.04/wordrec/msmenus.cpp +110 -0
- data/vendor/tesseract-2.04/wordrec/msmenus.h +45 -0
- data/vendor/tesseract-2.04/wordrec/olutil.cpp +153 -0
- data/vendor/tesseract-2.04/wordrec/olutil.h +128 -0
- data/vendor/tesseract-2.04/wordrec/outlines.cpp +172 -0
- data/vendor/tesseract-2.04/wordrec/outlines.h +148 -0
- data/vendor/tesseract-2.04/wordrec/pieces.cpp +410 -0
- data/vendor/tesseract-2.04/wordrec/pieces.h +154 -0
- data/vendor/tesseract-2.04/wordrec/plotedges.cpp +134 -0
- data/vendor/tesseract-2.04/wordrec/plotedges.h +71 -0
- data/vendor/tesseract-2.04/wordrec/plotseg.cpp +116 -0
- data/vendor/tesseract-2.04/wordrec/plotseg.h +73 -0
- data/vendor/tesseract-2.04/wordrec/render.cpp +152 -0
- data/vendor/tesseract-2.04/wordrec/render.h +58 -0
- data/vendor/tesseract-2.04/wordrec/seam.cpp +482 -0
- data/vendor/tesseract-2.04/wordrec/seam.h +136 -0
- data/vendor/tesseract-2.04/wordrec/split.cpp +182 -0
- data/vendor/tesseract-2.04/wordrec/split.h +115 -0
- data/vendor/tesseract-2.04/wordrec/tally.cpp +68 -0
- data/vendor/tesseract-2.04/wordrec/tally.h +94 -0
- data/vendor/tesseract-2.04/wordrec/tessinit.cpp +108 -0
- data/vendor/tesseract-2.04/wordrec/tessinit.h +46 -0
- data/vendor/tesseract-2.04/wordrec/tface.cpp +272 -0
- data/vendor/tesseract-2.04/wordrec/tface.h +35 -0
- data/vendor/tesseract-2.04/wordrec/wordclass.cpp +284 -0
- data/vendor/tesseract-2.04/wordrec/wordclass.h +64 -0
- metadata +708 -0
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
/******************************************************************************
|
|
2
|
+
** Filename: MergeNF.c
|
|
3
|
+
** Purpose: Program for merging similar nano-feature protos
|
|
4
|
+
** Author: Dan Johnson
|
|
5
|
+
** History: Wed Nov 21 09:55:23 1990, DSJ, Created.
|
|
6
|
+
**
|
|
7
|
+
** (c) Copyright Hewlett-Packard Company, 1988.
|
|
8
|
+
** Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
** you may not use this file except in compliance with the License.
|
|
10
|
+
** You may obtain a copy of the License at
|
|
11
|
+
** http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
** Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
** distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
** See the License for the specific language governing permissions and
|
|
16
|
+
** limitations under the License.
|
|
17
|
+
******************************************************************************/
|
|
18
|
+
/**----------------------------------------------------------------------------
|
|
19
|
+
Include Files and Type Defines
|
|
20
|
+
----------------------------------------------------------------------------**/
|
|
21
|
+
#include "mergenf.h"
|
|
22
|
+
#include "general.h"
|
|
23
|
+
#include "efio.h"
|
|
24
|
+
#include "clusttool.h"
|
|
25
|
+
#include "cluster.h"
|
|
26
|
+
#include "oldlist.h"
|
|
27
|
+
#include "protos.h"
|
|
28
|
+
#include "minmax.h"
|
|
29
|
+
#include "ocrfeatures.h"
|
|
30
|
+
#include "debug.h"
|
|
31
|
+
#include "const.h"
|
|
32
|
+
#include "featdefs.h"
|
|
33
|
+
#include "intproto.h"
|
|
34
|
+
|
|
35
|
+
#include <stdio.h>
|
|
36
|
+
#include <string.h>
|
|
37
|
+
#include <math.h>
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
/**----------------------------------------------------------------------------
|
|
41
|
+
Variables
|
|
42
|
+
-----------------------------------------------------------------------------**/
|
|
43
|
+
/*-------------------once in subfeat---------------------------------*/
|
|
44
|
+
make_float_var (AngleMatchScale, 1.0, MakeAngleMatchScale,
|
|
45
|
+
7, 2, SetAngleMatchScale, "Angle Match Scale ...")
|
|
46
|
+
|
|
47
|
+
make_float_var (SimilarityMidpoint, 0.0075, MakeSimilarityMidpoint,
|
|
48
|
+
7, 3, SetSimilarityMidpoint, "Similarity Midpoint ...")
|
|
49
|
+
|
|
50
|
+
make_float_var (SimilarityCurl, 2.0, MakeSimilarityCurl,
|
|
51
|
+
7, 4, SetSimilarityCurl, "Similarity Curl ...")
|
|
52
|
+
|
|
53
|
+
/*-----------------------------once in fasttrain----------------------------------*/
|
|
54
|
+
make_float_var (TangentBBoxPad, 0.5, MakeTangentBBoxPad,
|
|
55
|
+
15, 3, SetTangentBBoxPad, "Tangent bounding box pad ...")
|
|
56
|
+
|
|
57
|
+
make_float_var (OrthogonalBBoxPad, 2.5, MakeOrthogonalBBoxPad,
|
|
58
|
+
15, 4, SetOrthogonalBBoxPad, "Orthogonal bounding box pad ...")
|
|
59
|
+
|
|
60
|
+
make_float_var (AnglePad, 45.0, MakeAnglePad,
|
|
61
|
+
15, 5, SetAnglePad, "Angle pad ...")
|
|
62
|
+
|
|
63
|
+
/**----------------------------------------------------------------------------
|
|
64
|
+
Global Data Definitions and Declarations
|
|
65
|
+
----------------------------------------------------------------------------**/
|
|
66
|
+
//int row_number; /* kludge due to linking problems */
|
|
67
|
+
|
|
68
|
+
/**----------------------------------------------------------------------------
|
|
69
|
+
Public Code
|
|
70
|
+
----------------------------------------------------------------------------**/
|
|
71
|
+
/*---------------------------------------------------------------------------*/
|
|
72
|
+
FLOAT32 CompareProtos (
|
|
73
|
+
PROTO p1,
|
|
74
|
+
PROTO p2)
|
|
75
|
+
|
|
76
|
+
/*
|
|
77
|
+
** Parameters:
|
|
78
|
+
** p1, p2 protos to be compared
|
|
79
|
+
** Globals: none
|
|
80
|
+
** Operation: Compare protos p1 and p2 and return an estimate of the
|
|
81
|
+
** worst evidence rating that will result for any part of p1
|
|
82
|
+
** that is compared to p2. In other words, if p1 were broken
|
|
83
|
+
** into pico-features and each pico-feature was matched to p2,
|
|
84
|
+
** what is the worst evidence rating that will be achieved for
|
|
85
|
+
** any pico-feature.
|
|
86
|
+
** Return: Worst possible result when matching p1 to p2.
|
|
87
|
+
** Exceptions: none
|
|
88
|
+
** History: Mon Nov 26 08:27:53 1990, DSJ, Created.
|
|
89
|
+
*/
|
|
90
|
+
|
|
91
|
+
{
|
|
92
|
+
FEATURE Feature;
|
|
93
|
+
FLOAT32 WorstEvidence = WORST_EVIDENCE;
|
|
94
|
+
FLOAT32 Evidence;
|
|
95
|
+
FLOAT32 Angle, Length;
|
|
96
|
+
|
|
97
|
+
/* if p1 and p2 are not close in length, don't let them match */
|
|
98
|
+
Length = fabs (p1->Length - p2->Length);
|
|
99
|
+
if (Length > MAX_LENGTH_MISMATCH)
|
|
100
|
+
return (0.0);
|
|
101
|
+
|
|
102
|
+
/* create a dummy pico-feature to be used for comparisons */
|
|
103
|
+
Feature = NewFeature (&PicoFeatDesc);
|
|
104
|
+
Feature->Params[PicoFeatDir] = p1->Angle;
|
|
105
|
+
|
|
106
|
+
/* convert angle to radians */
|
|
107
|
+
Angle = p1->Angle * 2.0 * PI;
|
|
108
|
+
|
|
109
|
+
/* find distance from center of p1 to 1/2 picofeat from end */
|
|
110
|
+
Length = p1->Length / 2.0 - GetPicoFeatureLength () / 2.0;
|
|
111
|
+
if (Length < 0) Length = 0;
|
|
112
|
+
|
|
113
|
+
/* set the dummy pico-feature at one end of p1 and match it to p2 */
|
|
114
|
+
Feature->Params[PicoFeatX] = p1->X + cos (Angle) * Length;
|
|
115
|
+
Feature->Params[PicoFeatY] = p1->Y + sin (Angle) * Length;
|
|
116
|
+
if (DummyFastMatch (Feature, p2))
|
|
117
|
+
{
|
|
118
|
+
Evidence = SubfeatureEvidence (Feature, p2);
|
|
119
|
+
if (Evidence < WorstEvidence)
|
|
120
|
+
WorstEvidence = Evidence;
|
|
121
|
+
}
|
|
122
|
+
else
|
|
123
|
+
{
|
|
124
|
+
FreeFeature (Feature);
|
|
125
|
+
return (0.0);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* set the dummy pico-feature at the other end of p1 and match it to p2 */
|
|
129
|
+
Feature->Params[PicoFeatX] = p1->X - cos (Angle) * Length;
|
|
130
|
+
Feature->Params[PicoFeatY] = p1->Y - sin (Angle) * Length;
|
|
131
|
+
if (DummyFastMatch (Feature, p2))
|
|
132
|
+
{
|
|
133
|
+
Evidence = SubfeatureEvidence (Feature, p2);
|
|
134
|
+
if (Evidence < WorstEvidence)
|
|
135
|
+
WorstEvidence = Evidence;
|
|
136
|
+
}
|
|
137
|
+
else
|
|
138
|
+
{
|
|
139
|
+
FreeFeature (Feature);
|
|
140
|
+
return (0.0);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
FreeFeature (Feature);
|
|
144
|
+
return (WorstEvidence);
|
|
145
|
+
|
|
146
|
+
} /* CompareProtos */
|
|
147
|
+
|
|
148
|
+
/*---------------------------------------------------------------------------*/
|
|
149
|
+
void ComputeMergedProto (
|
|
150
|
+
PROTO p1,
|
|
151
|
+
PROTO p2,
|
|
152
|
+
FLOAT32 w1,
|
|
153
|
+
FLOAT32 w2,
|
|
154
|
+
PROTO MergedProto)
|
|
155
|
+
|
|
156
|
+
/*
|
|
157
|
+
** Parameters:
|
|
158
|
+
** p1, p2 protos to be merged
|
|
159
|
+
** w1, w2 weight of each proto
|
|
160
|
+
** MergedProto place to put resulting merged proto
|
|
161
|
+
** Globals: none
|
|
162
|
+
** Operation: This routine computes a proto which is the weighted
|
|
163
|
+
** average of protos p1 and p2. The new proto is returned
|
|
164
|
+
** in MergedProto.
|
|
165
|
+
** Return: none (results are returned in MergedProto)
|
|
166
|
+
** Exceptions: none
|
|
167
|
+
** History: Mon Nov 26 08:15:08 1990, DSJ, Created.
|
|
168
|
+
*/
|
|
169
|
+
|
|
170
|
+
{
|
|
171
|
+
FLOAT32 TotalWeight;
|
|
172
|
+
|
|
173
|
+
TotalWeight = w1 + w2;
|
|
174
|
+
w1 /= TotalWeight;
|
|
175
|
+
w2 /= TotalWeight;
|
|
176
|
+
|
|
177
|
+
MergedProto->X = p1->X * w1 + p2->X * w2;
|
|
178
|
+
MergedProto->Y = p1->Y * w1 + p2->Y * w2;
|
|
179
|
+
MergedProto->Length = p1->Length * w1 + p2->Length * w2;
|
|
180
|
+
MergedProto->Angle = p1->Angle * w1 + p2->Angle * w2;
|
|
181
|
+
FillABC (MergedProto);
|
|
182
|
+
|
|
183
|
+
} /* ComputeMergedProto */
|
|
184
|
+
|
|
185
|
+
/*---------------------------------------------------------------------------*/
|
|
186
|
+
int FindClosestExistingProto (
|
|
187
|
+
CLASS_TYPE Class,
|
|
188
|
+
int NumMerged[],
|
|
189
|
+
PROTOTYPE *Prototype)
|
|
190
|
+
|
|
191
|
+
/*
|
|
192
|
+
** Parameters:
|
|
193
|
+
** Class class to search for matching old proto in
|
|
194
|
+
** NumMerged[] # of protos merged into each proto of Class
|
|
195
|
+
** Prototype new proto to find match for
|
|
196
|
+
** Globals: none
|
|
197
|
+
** Operation: This routine searches thru all of the prototypes in
|
|
198
|
+
** Class and returns the id of the proto which would provide
|
|
199
|
+
** the best approximation of Prototype. If no close
|
|
200
|
+
** approximation can be found, NO_PROTO is returned.
|
|
201
|
+
** Return: Id of closest proto in Class or NO_PROTO.
|
|
202
|
+
** Exceptions: none
|
|
203
|
+
** History: Sat Nov 24 11:42:58 1990, DSJ, Created.
|
|
204
|
+
*/
|
|
205
|
+
|
|
206
|
+
{
|
|
207
|
+
PROTO_STRUCT NewProto;
|
|
208
|
+
PROTO_STRUCT MergedProto;
|
|
209
|
+
int Pid;
|
|
210
|
+
PROTO Proto;
|
|
211
|
+
int BestProto;
|
|
212
|
+
FLOAT32 BestMatch;
|
|
213
|
+
FLOAT32 Match, OldMatch, NewMatch;
|
|
214
|
+
|
|
215
|
+
MakeNewFromOld (&NewProto, Prototype);
|
|
216
|
+
|
|
217
|
+
BestProto = NO_PROTO;
|
|
218
|
+
BestMatch = WORST_MATCH_ALLOWED;
|
|
219
|
+
for (Pid = 0; Pid < Class->NumProtos; Pid++)
|
|
220
|
+
{
|
|
221
|
+
Proto = ProtoIn (Class, Pid);
|
|
222
|
+
ComputeMergedProto (Proto, &NewProto,
|
|
223
|
+
(FLOAT32) NumMerged[Pid], 1.0, &MergedProto);
|
|
224
|
+
OldMatch = CompareProtos (Proto, &MergedProto);
|
|
225
|
+
NewMatch = CompareProtos (&NewProto, &MergedProto);
|
|
226
|
+
Match = MIN (OldMatch, NewMatch);
|
|
227
|
+
if (Match > BestMatch)
|
|
228
|
+
{
|
|
229
|
+
BestProto = Pid;
|
|
230
|
+
BestMatch = Match;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return (BestProto);
|
|
234
|
+
|
|
235
|
+
} /* FindClosestExistingProto */
|
|
236
|
+
|
|
237
|
+
/*---------------------------------------------------------------------------*/
|
|
238
|
+
void MakeNewFromOld (
|
|
239
|
+
PROTO New,
|
|
240
|
+
PROTOTYPE *Old)
|
|
241
|
+
|
|
242
|
+
/*
|
|
243
|
+
** Parameters:
|
|
244
|
+
** New new proto to be filled in
|
|
245
|
+
** Old old proto to be converted
|
|
246
|
+
** Globals: none
|
|
247
|
+
** Operation: This fills in the fields of the New proto based on the
|
|
248
|
+
** fields of the Old proto.
|
|
249
|
+
** Return: none
|
|
250
|
+
** Exceptions: none
|
|
251
|
+
** History: Mon Nov 26 09:45:39 1990, DSJ, Created.
|
|
252
|
+
*/
|
|
253
|
+
|
|
254
|
+
{
|
|
255
|
+
New->X = CenterX (Old->Mean);
|
|
256
|
+
New->Y = CenterY (Old->Mean);
|
|
257
|
+
New->Length = LengthOf (Old->Mean);
|
|
258
|
+
New->Angle = OrientationOf (Old->Mean);
|
|
259
|
+
FillABC (New);
|
|
260
|
+
|
|
261
|
+
} /* MakeNewFromOld */
|
|
262
|
+
|
|
263
|
+
/*-------------------once in subfeat---------------------------------*/
|
|
264
|
+
/**********************************************************************
|
|
265
|
+
* InitSubfeatureVars
|
|
266
|
+
*
|
|
267
|
+
* Create and set up all menus and variables needed for this file.
|
|
268
|
+
**********************************************************************/
|
|
269
|
+
void InitSubfeatureVars ()
|
|
270
|
+
{
|
|
271
|
+
MakeAngleMatchScale ();
|
|
272
|
+
MakeSimilarityCurl ();
|
|
273
|
+
MakeSimilarityMidpoint ();
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
/**********************************************************************
|
|
278
|
+
* SubfeatureEvidence
|
|
279
|
+
*
|
|
280
|
+
* Compare a feature to a prototype. Print the result.
|
|
281
|
+
**********************************************************************/
|
|
282
|
+
FLOAT32 SubfeatureEvidence (
|
|
283
|
+
FEATURE Feature,
|
|
284
|
+
PROTO Proto)
|
|
285
|
+
{
|
|
286
|
+
float Distance;
|
|
287
|
+
float Dangle;
|
|
288
|
+
|
|
289
|
+
Dangle = Proto->Angle - Feature->Params[PicoFeatDir];
|
|
290
|
+
if (Dangle < -0.5) Dangle += 1.0;
|
|
291
|
+
if (Dangle > 0.5) Dangle -= 1.0;
|
|
292
|
+
Dangle *= AngleMatchScale;
|
|
293
|
+
|
|
294
|
+
Distance = Proto->A * Feature->Params[PicoFeatX] +
|
|
295
|
+
Proto->B * Feature->Params[PicoFeatY] +
|
|
296
|
+
Proto->C;
|
|
297
|
+
|
|
298
|
+
return (EvidenceOf (Distance * Distance + Dangle * Dangle));
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**********************************************************************
|
|
302
|
+
* EvidenceOf
|
|
303
|
+
*
|
|
304
|
+
* Return the new type of evidence number corresponding to this
|
|
305
|
+
* distance value. This number is no longer based on the chi squared
|
|
306
|
+
* approximation. The equation that represents the transform is:
|
|
307
|
+
* 1 / (1 + (sim / midpoint) ^ curl)
|
|
308
|
+
**********************************************************************/
|
|
309
|
+
FLOAT32 EvidenceOf (
|
|
310
|
+
register FLOAT32 Similarity)
|
|
311
|
+
{
|
|
312
|
+
|
|
313
|
+
Similarity /= SimilarityMidpoint;
|
|
314
|
+
|
|
315
|
+
if (SimilarityCurl == 3)
|
|
316
|
+
Similarity = Similarity * Similarity * Similarity;
|
|
317
|
+
else if (SimilarityCurl == 2)
|
|
318
|
+
Similarity = Similarity * Similarity;
|
|
319
|
+
else
|
|
320
|
+
Similarity = pow (Similarity, SimilarityCurl);
|
|
321
|
+
|
|
322
|
+
return (1.0 / (1.0 + Similarity));
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
/*-----------------------------once in fasttrain----------------------------------*/
|
|
326
|
+
void InitFastTrainerVars ()
|
|
327
|
+
/*
|
|
328
|
+
** Parameters: none
|
|
329
|
+
** Globals: none
|
|
330
|
+
** Operation: This routine initializes all of the control variables
|
|
331
|
+
** for the fast trainer.
|
|
332
|
+
** Return: none
|
|
333
|
+
** Exceptions: none
|
|
334
|
+
** History: Mon Nov 12 13:27:35 1990, DSJ, Created.
|
|
335
|
+
*/
|
|
336
|
+
|
|
337
|
+
{
|
|
338
|
+
MakeTangentBBoxPad ();
|
|
339
|
+
MakeOrthogonalBBoxPad ();
|
|
340
|
+
MakeAnglePad ();
|
|
341
|
+
|
|
342
|
+
} /* InitFastTrainerVars */
|
|
343
|
+
|
|
344
|
+
/*---------------------------------------------------------------------------*/
|
|
345
|
+
BOOL8 DummyFastMatch (
|
|
346
|
+
FEATURE Feature,
|
|
347
|
+
PROTO Proto)
|
|
348
|
+
|
|
349
|
+
/*
|
|
350
|
+
** Parameters:
|
|
351
|
+
** Feature feature to be "fast matched" to proto
|
|
352
|
+
** Proto proto being "fast matched" against
|
|
353
|
+
** Globals:
|
|
354
|
+
** TangentBBoxPad bounding box pad tangent to proto
|
|
355
|
+
** OrthogonalBBoxPad bounding box pad orthogonal to proto
|
|
356
|
+
** Operation: This routine returns TRUE if Feature would be matched
|
|
357
|
+
** by a fast match table built from Proto.
|
|
358
|
+
** Return: TRUE if feature could match Proto.
|
|
359
|
+
** Exceptions: none
|
|
360
|
+
** History: Wed Nov 14 17:19:58 1990, DSJ, Created.
|
|
361
|
+
*/
|
|
362
|
+
|
|
363
|
+
{
|
|
364
|
+
FRECT BoundingBox;
|
|
365
|
+
FLOAT32 MaxAngleError;
|
|
366
|
+
FLOAT32 AngleError;
|
|
367
|
+
|
|
368
|
+
MaxAngleError = AnglePad / 360.0;
|
|
369
|
+
AngleError = fabs (Proto->Angle - Feature->Params[PicoFeatDir]);
|
|
370
|
+
if (AngleError > 0.5)
|
|
371
|
+
AngleError = 1.0 - AngleError;
|
|
372
|
+
|
|
373
|
+
if (AngleError > MaxAngleError)
|
|
374
|
+
return (FALSE);
|
|
375
|
+
|
|
376
|
+
ComputePaddedBoundingBox (Proto,
|
|
377
|
+
TangentBBoxPad * GetPicoFeatureLength (),
|
|
378
|
+
OrthogonalBBoxPad * GetPicoFeatureLength (),
|
|
379
|
+
&BoundingBox);
|
|
380
|
+
|
|
381
|
+
return (PointInside (&BoundingBox,
|
|
382
|
+
Feature->Params[PicoFeatX],
|
|
383
|
+
Feature->Params[PicoFeatY]));
|
|
384
|
+
|
|
385
|
+
} /* DummyFastMatch */
|
|
386
|
+
|
|
387
|
+
/*----------------------------------------------------------------------------*/
|
|
388
|
+
void ComputePaddedBoundingBox (
|
|
389
|
+
PROTO Proto,
|
|
390
|
+
FLOAT32 TangentPad,
|
|
391
|
+
FLOAT32 OrthogonalPad,
|
|
392
|
+
FRECT *BoundingBox)
|
|
393
|
+
|
|
394
|
+
/*
|
|
395
|
+
** Parameters:
|
|
396
|
+
** Proto proto to compute bounding box for
|
|
397
|
+
** TangentPad amount of pad to add in direction of segment
|
|
398
|
+
** OrthogonalPad amount of pad to add orthogonal to segment
|
|
399
|
+
** BoundingBox place to put results
|
|
400
|
+
** Globals: none
|
|
401
|
+
** Operation: This routine computes a bounding box that encloses the
|
|
402
|
+
** specified proto along with some padding. The
|
|
403
|
+
** amount of padding is specified as separate distances
|
|
404
|
+
** in the tangential and orthogonal directions.
|
|
405
|
+
** Return: none (results are returned in BoundingBox)
|
|
406
|
+
** Exceptions: none
|
|
407
|
+
** History: Wed Nov 14 14:55:30 1990, DSJ, Created.
|
|
408
|
+
*/
|
|
409
|
+
|
|
410
|
+
{
|
|
411
|
+
FLOAT32 Pad, Length, Angle;
|
|
412
|
+
FLOAT32 CosOfAngle, SinOfAngle;
|
|
413
|
+
|
|
414
|
+
Length = Proto->Length / 2.0 + TangentPad;
|
|
415
|
+
Angle = Proto->Angle * 2.0 * PI;
|
|
416
|
+
CosOfAngle = fabs (cos (Angle));
|
|
417
|
+
SinOfAngle = fabs (sin (Angle));
|
|
418
|
+
|
|
419
|
+
Pad = MAX (CosOfAngle * Length, SinOfAngle * OrthogonalPad);
|
|
420
|
+
BoundingBox->MinX = Proto->X - Pad;
|
|
421
|
+
BoundingBox->MaxX = Proto->Y + Pad;
|
|
422
|
+
|
|
423
|
+
Pad = MAX (SinOfAngle * Length, CosOfAngle * OrthogonalPad);
|
|
424
|
+
BoundingBox->MinY = Proto->Y - Pad;
|
|
425
|
+
BoundingBox->MaxY = Proto->Y + Pad;
|
|
426
|
+
|
|
427
|
+
} /* ComputePaddedBoundingBox */
|
|
428
|
+
|
|
429
|
+
/*--------------------------------------------------------------------------*/
|
|
430
|
+
BOOL8 PointInside (
|
|
431
|
+
FRECT *Rectangle,
|
|
432
|
+
FLOAT32 X,
|
|
433
|
+
FLOAT32 Y)
|
|
434
|
+
|
|
435
|
+
/*
|
|
436
|
+
** Parameters:
|
|
437
|
+
** Globals: none
|
|
438
|
+
** Operation: Return TRUE if point (X,Y) is inside of Rectangle.
|
|
439
|
+
** Return: Return TRUE if point (X,Y) is inside of Rectangle.
|
|
440
|
+
** Exceptions: none
|
|
441
|
+
** History: Wed Nov 14 17:26:35 1990, DSJ, Created.
|
|
442
|
+
*/
|
|
443
|
+
|
|
444
|
+
{
|
|
445
|
+
if (X < Rectangle->MinX) return (FALSE);
|
|
446
|
+
if (X > Rectangle->MaxX) return (FALSE);
|
|
447
|
+
if (Y < Rectangle->MinY) return (FALSE);
|
|
448
|
+
if (Y > Rectangle->MaxY) return (FALSE);
|
|
449
|
+
return (TRUE);
|
|
450
|
+
|
|
451
|
+
} /* PointInside */
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/******************************************************************************
|
|
2
|
+
** Filename: MergeNF.c
|
|
3
|
+
** Purpose: Program for merging similar nano-feature protos
|
|
4
|
+
** Author: Dan Johnson
|
|
5
|
+
** History: Wed Nov 21 09:55:23 1990, DSJ, Created.
|
|
6
|
+
**
|
|
7
|
+
** (c) Copyright Hewlett-Packard Company, 1988.
|
|
8
|
+
** Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
** you may not use this file except in compliance with the License.
|
|
10
|
+
** You may obtain a copy of the License at
|
|
11
|
+
** http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
** Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
** distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
** See the License for the specific language governing permissions and
|
|
16
|
+
** limitations under the License.
|
|
17
|
+
******************************************************************************/
|
|
18
|
+
/**----------------------------------------------------------------------------
|
|
19
|
+
Include Files and Type Defines
|
|
20
|
+
----------------------------------------------------------------------------**/
|
|
21
|
+
#include "protos.h"
|
|
22
|
+
#include "cluster.h"
|
|
23
|
+
#include "ocrfeatures.h"
|
|
24
|
+
#include "training.h"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
#define WORST_MATCH_ALLOWED (0.9)
|
|
28
|
+
#define WORST_EVIDENCE (1.0)
|
|
29
|
+
#define MAX_LENGTH_MISMATCH (2.0 * GetPicoFeatureLength ())
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
#define PROTO_SUFFIX ".mf.p"
|
|
33
|
+
#define CONFIG_SUFFIX ".cl"
|
|
34
|
+
#define NO_PROTO (-1)
|
|
35
|
+
#define XPOSITION 0
|
|
36
|
+
#define YPOSITION 1
|
|
37
|
+
#define MFLENGTH 2
|
|
38
|
+
#define ORIENTATION 3
|
|
39
|
+
|
|
40
|
+
typedef enum {PicoFeatY, PicoFeatDir, PicoFeatX} PICO_FEAT_PARAM_NAME;
|
|
41
|
+
|
|
42
|
+
typedef struct
|
|
43
|
+
{
|
|
44
|
+
FLOAT32 MinX, MaxX, MinY, MaxY;
|
|
45
|
+
} FRECT;
|
|
46
|
+
|
|
47
|
+
/**----------------------------------------------------------------------------
|
|
48
|
+
Public Macros
|
|
49
|
+
----------------------------------------------------------------------------**/
|
|
50
|
+
#define CenterX(M) ( (M)[XPOSITION] )
|
|
51
|
+
#define CenterY(M) ( (M)[YPOSITION] )
|
|
52
|
+
#define LengthOf(M) ( (M)[MFLENGTH] )
|
|
53
|
+
#define OrientationOf(M) ( (M)[ORIENTATION] )
|
|
54
|
+
|
|
55
|
+
/**----------------------------------------------------------------------------
|
|
56
|
+
Public Function Prototypes
|
|
57
|
+
----------------------------------------------------------------------------**/
|
|
58
|
+
FLOAT32 CompareProtos (
|
|
59
|
+
PROTO p1,
|
|
60
|
+
PROTO p2);
|
|
61
|
+
|
|
62
|
+
void ComputeMergedProto (
|
|
63
|
+
PROTO p1,
|
|
64
|
+
PROTO p2,
|
|
65
|
+
FLOAT32 w1,
|
|
66
|
+
FLOAT32 w2,
|
|
67
|
+
PROTO MergedProto);
|
|
68
|
+
|
|
69
|
+
int FindClosestExistingProto (
|
|
70
|
+
CLASS_TYPE Class,
|
|
71
|
+
int NumMerged[],
|
|
72
|
+
PROTOTYPE *Prototype);
|
|
73
|
+
|
|
74
|
+
void MakeNewFromOld (
|
|
75
|
+
PROTO New,
|
|
76
|
+
PROTOTYPE *Old);
|
|
77
|
+
|
|
78
|
+
void InitSubfeatureVars ();
|
|
79
|
+
|
|
80
|
+
FLOAT32 SubfeatureEvidence (
|
|
81
|
+
FEATURE Feature,
|
|
82
|
+
PROTO Proto);
|
|
83
|
+
|
|
84
|
+
FLOAT32 EvidenceOf (
|
|
85
|
+
register FLOAT32 Similarity);
|
|
86
|
+
|
|
87
|
+
void InitFastTrainerVars ();
|
|
88
|
+
|
|
89
|
+
BOOL8 DummyFastMatch (
|
|
90
|
+
FEATURE Feature,
|
|
91
|
+
PROTO Proto);
|
|
92
|
+
|
|
93
|
+
void ComputePaddedBoundingBox (
|
|
94
|
+
PROTO Proto,
|
|
95
|
+
FLOAT32 TangentPad,
|
|
96
|
+
FLOAT32 OrthogonalPad,
|
|
97
|
+
FRECT *BoundingBox);
|
|
98
|
+
|
|
99
|
+
BOOL8 PointInside (
|
|
100
|
+
FRECT *Rectangle,
|
|
101
|
+
FLOAT32 X,
|
|
102
|
+
FLOAT32 Y);
|
|
103
|
+
|
|
104
|
+
extern FEATURE_DESC_STRUCT PicoFeatDesc;
|
|
105
|
+
|
|
106
|
+
|