Attempts to decode a one-dimensional barcode format given a single row of an image.
row number from top of the row
the black/white pixel data of the row
decode hints
Result containing encoded string and start/end of barcode
We're going to examine rows from the middle outward, searching alternately above and below the middle, and farther out each time. rowStep is the number of rows between each successive attempt above and below the middle. So we'd scan row middle, then middle - rowStep, then middle + rowStep, then middle - (2 * rowStep), etc. rowStep is bigger as the image is taller, but is always at least 1. We've somewhat arbitrarily decided that moving up and down by about 1/16 of the image is pretty good; we try more of the image if "trying harder".
The image to decode
Any hints that were requested
The contents of the decoded barcode
Determines how closely a set of observed counts of runs of black/white values matches a given target pattern. This is reported as the ratio of the total variance from the expected pattern proportions across all pattern elements, to the length of the pattern.
observed counters
expected pattern
The most any counter can differ before we give up
ratio of total variance between counters and pattern compared to total pattern size
Records the size of successive runs of white and black pixels in a row, starting at a given point. The values are recorded in the given array, and the number of runs recorded is equal to the size of the array. If the row starts on a white pixel at the given start point, then the first count recorded is the run of white pixels starting from that point; likewise it is the count of a run of black pixels if the row begin on a black pixels at that point.
row to count from
offset into row to start at
array into which to record counts
Generated using TypeDoc
Encapsulates functionality and implementation that is common to all families of one-dimensional barcodes.
dswitkin@google.com (Daniel Switkin)
Sean Owen