forked from dmtx/libdmtx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
230 lines (213 loc) · 11.9 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
TODO
-----------------------------------------------------------------
version 1.0.0: (planned TBD)
FOCUS: remaining gaps, testing, documentation
o decoder: Investigate using MMX to optimize inner loops
o decoder: Investigate using threads to split up image processing
o testing: Generate metrics in reproducible format to enable historical tracking
o testing: Investigate option of embedding decoded text into PNG test image comments
o testing: Tests should compare scanned results to embedded PNG comments
o testing: 'make test' writes metrics file
o testing: 'make test' confirms performance
version 0.9.0: (planned TBD)
FOCUS: multiple barcode scanning, structured append, FNC1, macros
o Implement --auto-fast option using algorithm from spec (lighter & faster?)
o Structured append reading and writing
o (test suite) Implement exhaustive comparison between --auto-fast and --auto-best
o Implement consistent and robust error handling (errno.h + custom)
o Implement structured append symbols
o Image quality metric
o Clean up source file permissions (write script to detect outliers?)
version 0.8.0: (planned TBD)
FOCUS: region detection
o Use calibration edge alignment to set precise locs for all edges
o Replace DmtxDirection (e.g., DmtxDirUp) with index range 0-7 (?)
o Rename outputIdx to outputLength? (Count pad codewords instead of pointer)
o Rename math types to drop unnecessary numeral (DmtxVector2, DmtxRay2, etc...)
o Inspect SDL image packing naming conventions (stride vs. pad, etc...)
o Clean up API for use with external ROI finders
o Is there a good way to know if dmtxRegionFindNext() timed out or finished file?
o testing: Test error corrections with controled damage to images
o library: Add .gitignore for generated files
o library: Add explicit build targets for debug and release
o library: Library should never call exit() or assert()
x encoder: Fixed Data Mosaic encoding bug
version 0.7.4: (02-Jun-2011)
x library: Relicensed to use Simplified BSD with waiver option
x library: Added new error codes and messages in dmtxencode.c
x library: Added DmtxByteList struct and supporting functions
x library: Changed file header with updated text
x library: Fixed ECC bug for 144x144 case (thanks Huver!)
x library: New Reed Solomon implementation
x library: New repository structure: libdmtx, dmtx-utils, and dmtx-wrappers
x testing: Added test in compare_generated.sh to create directory if needed
x testing: Fix compare_generated.sh to prevent false negatives
x encoder: Review CHK macro strategy
x encoder: New encoding implementation
x encoder: Added Base 256 "encode to end of symbol" single byte header
x encoder: Check ProcessEndOfSymbolTriplet() for same problem fixed in Edifact
x encoder: Clean up PushCTXValues() passFail handling
x encoder: Fixed all encoding bugs reported by compare_generated.sh
x encoder: Fixed encoding bug affecting certain end-of-symbol conditions
x encoder: Replaced "twothirdsbits" encoder concept (major source of headaches)
x encoder: Track intermediate states in "optimize best" to handle all possibilities
x decoder: Use new Edifact decode function that doesn't assume full triplet
version 0.7.2: (04-Sep-2009)
x Added initial macro decoding support (thanks Marlon!)
x Fast quad fill for dmtxDecodeMatrixRegion() (thanks Mackenzie!)
x Fixed capacity bug with rectangle requests
x Add libdmtx-X.X.X.zip as source package option
x Add libdmtx-win32-X.X.X.zip as binary package option
x Add "project" directory to EXTRA_DIST in Makefile.am
version 0.7.0: (02-Mar-2009)
x Fix 64b->32b int assignment warnings
x FNC1 and correct upper shift (thanks Robin!)
x Support byte-padded row sizes via dmtxImageSetProp()
x Move image scaling factors to DmtxDecode
x Add DmtxUndefined to replace "-1" for undefined fixes, offset, etc...
x Update dmtxImageCreate() parameter options
x Switch DmtxFlipNone represent top-down row order
x Add dmtxEncodeSetProp() and dmtxEncodeGetProp()
x Relocate scan cache from DmtxImage to DmtxDecode
x Remove status from DmtxPixelLoc
x Configurable pixel packing
x Removed DmtxRgb, dmtxcolor.c, DmtxColor3, and DmtxGradient
x DmtxTrue/DmtxFalse replaces DMTX_TRUE/DMTX_FALSE
x DmtxPass/DmtxFail replaces DMTX_SUCCESS/DMTX_FAILURE
x Change all major types to use Create() and Destroy() convention
x Update documentation to reflect API changes
x Add comment to wiki pages that points to source README
x Figure out earliest usable Magick version for configure.ac
x Add simple_test project to libdmtx.sln
x Rename wiki page to "Windows (VisualC)"
x Introduce "project" directory for non-autotools platforms
x Rename "wrappers" directory to "wrapper" for consistency
x Create a common tasks and release checklist document
version 0.6.0: (23-Nov-2008)
x Initial work preparing for custom pixel packing in future
x Begin static analysis cleanup with splint
x New --disable-dmtxread and --disable-dmtxwrite [Romain]
x Ability to specify max/min expected barcode sizes
x New edge neighbor tracking (Hough Transform + 2 way edge cache)
x Info cache to track scan progress and avoid rescanning pixels
x Scan multiple barcodes within an image
x Significantly reduced memory footprint
x Major reduction in floating point operations
x Dedicated README.xxx instructions for specific platforms
x Various improvements for cross platform builds
version 0.5.2: (04-Sep-2008)
x Move SetRangeLimit and SetScanRegion into library
x Replace DMTXUTIL_SUCCESS/ERROR with DMTX_SUCCESS/FAILURE
x Add edge threshold filtering
x Add encoding support for 144x144 barcodes
x Fixed encoding case when message starts with two digits
x Fixed bug in range limit option
x Add dynamic image shrinking (pixel skipping)
x Add step-by-step diagnostic image dump (debug build)
x Fixed bug in minimum scan gap setting
x Removed y-flip from internal pixel storage
x Added strict border tests to eliminate false positives
x Added squareness deviation filter
x Implement simplified Hough transform for locating first edge
x Several behind-the-scenes performance enhancements
x Various improvements when building for OS X and FreeBSD
version 0.5.1: (01-Jul-2008)
x Fixed Extended ASCII encoding bug
x Fixed error correction bug related to multiple interleaved blocks
x Added timeout condition for region detection
x Allow partial and complete disabling of error correction
x Replaced DmtxPixel struct with DmtxRgb for safe pixel copies
x Tighter integration with libfec
x (test suite) Started unit test executable for low level testing
x Include local copies of getopt1.c getopt.c getopt.h
x Various things to help compiling in MS VC++
x Added missing header comments
version 0.5: (13-Apr-2008)
x Rework encoding and decoding API for consistency and intuitiveness
x Handle region detection and region decoding as separate tasks
x Pass found regions back to calling app before attempting decode
x Image mask approach (for performance and multi-barcode scans)
x Remove "2" from functions named *MatrixRegion2*() (whoops)
x Fix TestForEndOfSymbolEdifact() to handle special cases correctly
x Roll scan pattern into core library (inward breadth-first cross)
x Replace dmtxScanLine() with dmtxScanPixel()
x Implement 4-direction weighted module decisions (eliminates thresholds)
x Error correction using libfec (thanks Florian!)
x Remove gltest and simpletest from default build target
x Update Subversion to be keyword friendly ($Id$)
x Updated documentation to reflect API and option changes
x (test suite) Moved all public images to common directory with single copyright file
version 0.4: (07-Dec-2008)
x Remove arbitrary sz scaling (100.0) since it doesn't matter anyway
x Fix 4 bottom-right modules in sizes where they are not used (thanks Matthias R.!)
x Replace callback references with preprocessor macros
x Implement remaining encodation schemes for encoding (X12, Base 256, etc...)
x Implement remaining encodation schemes for decoding (X12, Base 256, etc...)
x Implement --auto-best option for best possible encoding efficiency
x Implement multi-region symbols
x Read and write rectangle shaped barcodes
x Use GNU autotools (autoconf, automake, libtool)
x New region detection overhaul
x Fix chcon error in Makefile (right answer might be to use autoconf)
x (test suite) 'make test' executes regression tests for encodation
x (test suite) Add marathon images to project (thanks John!)
version 0.3: (15-Oct-2006)
x Use preprocessor to pull code into one big file before compiling
x Update Makefile to handle monolithic approach; add targets for test, util, tarball
x Rename DmtxInfo struct and variables to DmtxDecode (for consistency with DmtxEncode)
x Merge placement logic into single implementation for both encoding and decoding
x Deploy codebase to SourceForge CVS
x Add revision control keywords to source files
x Implement remaining encodation schemes in dmtxdecode.c (X12, Base 256, etc...)
x Create separate file for callback functions (allows them to be optional)
x Move PNG (and other format) logic and dependencies to dmtxread, dmtxwrite, etc...
x Fix the regressions (crash bugs) introduced during v0.2 structural rework
x Add multi-page TIFF capabilities to dmtxread
x Move pure decode calls from dmtxScanLine into a dmtxdecode.c function
x Sample module color from more than one pixel location
x Rename DmtxVector3 to DmtxColor3 and merge into dmtxcolor.c
x Add package/build dependencies to INSTALL file
x Build coding style test scripts
x Replace current calibration size estimate with new approach
x Size step size dynamically according to pixel size
version 0.2: (11-Jun-2006)
x Move dmtxCapturePixel routine to library code
x Initial restructuring of code for architectural goodness
x Improve API for real-world use (and not just dumping results to STDOUT)
x Implement error detection
x Create "simpletest.c" for full-circle processing
x Use libpng(3) in library to read Data Matrix images
x Slap together some basic documentation
version 0.1: (22-Apr-2006)
x Cycle texture images with right-click
x Complete PlotPoint so it handles floating rows and columns
x Implement right and left directions of FollowEdge
x Call right and left edge following scans started from vertical step scans
x Implement 2D vector and matrix functions
x Trace lines with actual line object (2D ray)
x Turn corners when encountering the end of a followed line
x Build 2d transformation to wrap around region, assuming parallelogram
x Display pane 4 with reverse-transformed image capture
x Enhance dmtxCapturePixel to use "area averaging" instead of nearest neighbor
x Figure out why squares are 3 pixels off (to start: draw white gl lines over follower paths)
x Add callback function for PlotEventPoint(x, y, event_type)
x Improve follower logic (weighted line fit)
x dmtxGetPixel: do averaged interpolation followed by a tMin/tMid/tMax cutoff
x Add in de-skew transformation
x Refactor vector libraries to consistently list target parameter first
x Calibrate based on calibration lines
x Shrink-fit transformation around region
Future Versions:
-----------------------------------------------------------------
o Capture high-level design in documentation (data flow, module analogies)
o Try bi-linear approximation (instead of linear) in follower edge detection
o Implement fixed point math functions for use on mobile platforms
o Add calibration functionality to remove spherical distortion
Perhaps Never:
-----------------------------------------------------------------
o Implement pre-ECC200 Data Matrix standards (big effort/low demand)
Website:
-----------------------------------------------------------------
o Explore using single background image instead of split
o Add what we currently do, don't do, would like to do in the future
o Add http://hosted-projects.com/trac/hudora/public/wiki/huBarcode to resources page