aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gredler <daniel.gredler@gmail.com>2023-05-28 20:10:32 -0400
committerGitHub <noreply@github.com>2023-05-28 19:10:32 -0500
commit1ab0326bd5a4e73946223fb7490e52bc561cc6f5 (patch)
treee76cdd43e8bbfb73d0b60944cbcafa27f89f0cd0
parent1a14d0f269a082cad7e4653f935d4cd81820108a (diff)
downloadzxing-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.java16
-rw-r--r--core/src/test/java/com/google/zxing/pdf417/PDF417BlackBox1TestCase.java8
-rw-r--r--core/src/test/resources/blackbox/pdf417-1/13.pngbin0 -> 238842 bytes
-rw-r--r--core/src/test/resources/blackbox/pdf417-1/13.txt1
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
new file mode 100644
index 000000000..3251b95d3
--- /dev/null
+++ b/core/src/test/resources/blackbox/pdf417-1/13.png
Binary files differ
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