diff options
author | Daniel Gredler <daniel.gredler@gmail.com> | 2023-05-28 20:10:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-28 19:10:32 -0500 |
commit | 1ab0326bd5a4e73946223fb7490e52bc561cc6f5 (patch) | |
tree | e76cdd43e8bbfb73d0b60944cbcafa27f89f0cd0 | |
parent | 1a14d0f269a082cad7e4653f935d4cd81820108a (diff) | |
download | zxing-1ab0326bd5a4e73946223fb7490e52bc561cc6f5.tar.gz |
Use barcode-specific min height when searching for stop pattern (fixes #1641) (#1642)
-rw-r--r-- | core/src/main/java/com/google/zxing/pdf417/detector/Detector.java | 16 | ||||
-rw-r--r-- | core/src/test/java/com/google/zxing/pdf417/PDF417BlackBox1TestCase.java | 8 | ||||
-rw-r--r-- | core/src/test/resources/blackbox/pdf417-1/13.png | bin | 0 -> 238842 bytes | |||
-rw-r--r-- | core/src/test/resources/blackbox/pdf417-1/13.txt | 1 |
4 files changed, 17 insertions, 8 deletions
diff --git a/core/src/main/java/com/google/zxing/pdf417/detector/Detector.java b/core/src/main/java/com/google/zxing/pdf417/detector/Detector.java index e629beaf0..cda7f650f 100644 --- a/core/src/main/java/com/google/zxing/pdf417/detector/Detector.java +++ b/core/src/main/java/com/google/zxing/pdf417/detector/Detector.java @@ -40,7 +40,8 @@ public final class Detector { private static final int[] INDEXES_START_PATTERN = {0, 4, 1, 5}; private static final int[] INDEXES_STOP_PATTERN = {6, 2, 7, 3}; private static final float MAX_AVG_VARIANCE = 0.42f; - private static final float MAX_INDIVIDUAL_VARIANCE = 0.7f; + private static final float MAX_INDIVIDUAL_VARIANCE = 0.8f; + private static final float MAX_STOP_PATTERN_HEIGHT_VARIANCE = 0.5f; // B S B S B S B S Bar/Space pattern // 11111111 0 1 0 1 0 1 000 @@ -178,14 +179,20 @@ public final class Detector { int width = matrix.getWidth(); ResultPoint[] result = new ResultPoint[8]; - copyToResult(result, findRowsWithPattern(matrix, height, width, startRow, startColumn, START_PATTERN), + int minHeight = BARCODE_MIN_HEIGHT; + copyToResult(result, findRowsWithPattern(matrix, height, width, startRow, startColumn, minHeight, START_PATTERN), INDEXES_START_PATTERN); if (result[4] != null) { startColumn = (int) result[4].getX(); startRow = (int) result[4].getY(); + if (result[5] != null) { + int endRow = (int) result[5].getY(); + int startPatternHeight = endRow - startRow; + minHeight = (int) Math.max(startPatternHeight * MAX_STOP_PATTERN_HEIGHT_VARIANCE, BARCODE_MIN_HEIGHT); + } } - copyToResult(result, findRowsWithPattern(matrix, height, width, startRow, startColumn, STOP_PATTERN), + copyToResult(result, findRowsWithPattern(matrix, height, width, startRow, startColumn, minHeight, STOP_PATTERN), INDEXES_STOP_PATTERN); return result; } @@ -201,6 +208,7 @@ public final class Detector { int width, int startRow, int startColumn, + int minHeight, int[] pattern) { ResultPoint[] result = new ResultPoint[4]; boolean found = false; @@ -251,7 +259,7 @@ public final class Detector { result[2] = new ResultPoint(previousRowLoc[0], stopRow); result[3] = new ResultPoint(previousRowLoc[1], stopRow); } - if (stopRow - startRow < BARCODE_MIN_HEIGHT) { + if (stopRow - startRow < minHeight) { Arrays.fill(result, null); } return result; diff --git a/core/src/test/java/com/google/zxing/pdf417/PDF417BlackBox1TestCase.java b/core/src/test/java/com/google/zxing/pdf417/PDF417BlackBox1TestCase.java index b86222d24..c4060cab6 100644 --- a/core/src/test/java/com/google/zxing/pdf417/PDF417BlackBox1TestCase.java +++ b/core/src/test/java/com/google/zxing/pdf417/PDF417BlackBox1TestCase.java @@ -29,10 +29,10 @@ public final class PDF417BlackBox1TestCase extends AbstractBlackBoxTestCase { public PDF417BlackBox1TestCase() { super("src/test/resources/blackbox/pdf417-1", new MultiFormatReader(), BarcodeFormat.PDF_417); - addTest(11, 11, 0.0f); - addTest(11, 11, 90.0f); - addTest(11, 11, 180.0f); - addTest(11, 11, 270.0f); + addTest(12, 12, 0.0f); + addTest(12, 12, 90.0f); + addTest(12, 12, 180.0f); + addTest(12, 12, 270.0f); } } diff --git a/core/src/test/resources/blackbox/pdf417-1/13.png b/core/src/test/resources/blackbox/pdf417-1/13.png Binary files differnew file mode 100644 index 000000000..3251b95d3 --- /dev/null +++ b/core/src/test/resources/blackbox/pdf417-1/13.png diff --git a/core/src/test/resources/blackbox/pdf417-1/13.txt b/core/src/test/resources/blackbox/pdf417-1/13.txt new file mode 100644 index 000000000..0ee4e3228 --- /dev/null +++ b/core/src/test/resources/blackbox/pdf417-1/13.txt @@ -0,0 +1 @@ ++ABCDEFGHIJABCDEFGHIJABCDEFGHIJABBCDEV
\ No newline at end of file |