Small detector simplification that addresses issue 215 and picks up a net +4 more...
authorsrowen <srowen@59b500cc-1b3d-0410-9834-0bbf25fbcc57>
Tue, 21 Jul 2009 09:39:31 +0000 (09:39 +0000)
committersrowen <srowen@59b500cc-1b3d-0410-9834-0bbf25fbcc57>
Tue, 21 Jul 2009 09:39:31 +0000 (09:39 +0000)
git-svn-id: http://zxing.googlecode.com/svn/trunk@1022 59b500cc-1b3d-0410-9834-0bbf25fbcc57

core/src/com/google/zxing/qrcode/detector/FinderPatternFinder.java
core/test/src/com/google/zxing/qrcode/QRCodeBlackBox1TestCase.java
core/test/src/com/google/zxing/qrcode/QRCodeBlackBox2TestCase.java
core/test/src/com/google/zxing/qrcode/QRCodeBlackBox3TestCase.java

index 9d38558..902c4bb 100755 (executable)
@@ -480,34 +480,25 @@ public class FinderPatternFinder {
    * @throws ReaderException if 3 such finder patterns do not exist\r
    */\r
   private FinderPattern[] selectBestPatterns() throws ReaderException {\r
    * @throws ReaderException if 3 such finder patterns do not exist\r
    */\r
   private FinderPattern[] selectBestPatterns() throws ReaderException {\r
-    Collections.insertionSort(possibleCenters, new CenterComparator());\r
-    int size = 0;\r
-    int max = possibleCenters.size();\r
-    while (size < max) {\r
-      if (((FinderPattern) possibleCenters.elementAt(size)).getCount() < CENTER_QUORUM) {\r
-        break;\r
-      }\r
-      size++;\r
-    }\r
-\r
-    if (size < 3) {\r
+    if (possibleCenters.size() < 3) {\r
       // Couldn't find enough finder patterns\r
       throw ReaderException.getInstance();\r
     }\r
       // Couldn't find enough finder patterns\r
       throw ReaderException.getInstance();\r
     }\r
+    Collections.insertionSort(possibleCenters, new CenterComparator());\r
 \r
 \r
-    if (size > 3) {\r
+    if (possibleCenters.size() > 3) {\r
       // Throw away all but those first size candidate points we found.\r
       // Throw away all but those first size candidate points we found.\r
-      possibleCenters.setSize(size);\r
-      //  We need to pick the best three. Find the most\r
-      // popular ones whose module size is nearest the average\r
-      float averageModuleSize = 0.0f;\r
-      for (int i = 0; i < size; i++) {\r
-        averageModuleSize += ((FinderPattern) possibleCenters.elementAt(i)).getEstimatedModuleSize();\r
-      }\r
-      averageModuleSize /= (float) size;\r
-      // We don't have java.util.Collections in J2ME\r
-      Collections.insertionSort(possibleCenters, new ClosestToAverageComparator(averageModuleSize));\r
+      possibleCenters.setSize(3);\r
+    }\r
+    //  We need to pick the best three. Find the most\r
+    // popular ones whose module size is nearest the average\r
+    float averageModuleSize = 0.0f;\r
+    for (int i = 0; i < 3; i++) {\r
+      averageModuleSize += ((FinderPattern) possibleCenters.elementAt(i)).getEstimatedModuleSize();\r
     }\r
     }\r
+    averageModuleSize /= 3.0f;\r
+    // We don't have java.util.Collections in J2ME\r
+    Collections.insertionSort(possibleCenters, new ClosestToAverageComparator(averageModuleSize));\r
 \r
     return new FinderPattern[]{\r
         (FinderPattern) possibleCenters.elementAt(0),\r
 \r
     return new FinderPattern[]{\r
         (FinderPattern) possibleCenters.elementAt(0),\r
index f6b83ea..7d45588 100644 (file)
@@ -29,8 +29,8 @@ public final class QRCodeBlackBox1TestCase extends AbstractBlackBoxTestCase {
     super("test/data/blackbox/qrcode-1", new MultiFormatReader(), BarcodeFormat.QR_CODE);
     addTest(19, 19, 0.0f);
     addTest(15, 15, 90.0f);
     super("test/data/blackbox/qrcode-1", new MultiFormatReader(), BarcodeFormat.QR_CODE);
     addTest(19, 19, 0.0f);
     addTest(15, 15, 90.0f);
-    addTest(16, 16, 180.0f);
-    addTest(13, 14, 270.0f);
+    addTest(17, 17, 180.0f);
+    addTest(14, 14, 270.0f);
   }
 
 }
\ No newline at end of file
   }
 
 }
\ No newline at end of file
index 085cbf3..2f88b46 100644 (file)
@@ -27,10 +27,10 @@ public final class QRCodeBlackBox2TestCase extends AbstractBlackBoxTestCase {
 
   public QRCodeBlackBox2TestCase() {
     super("test/data/blackbox/qrcode-2", new MultiFormatReader(), BarcodeFormat.QR_CODE);
 
   public QRCodeBlackBox2TestCase() {
     super("test/data/blackbox/qrcode-2", new MultiFormatReader(), BarcodeFormat.QR_CODE);
-    addTest(24, 24, 0.0f);
-    addTest(21, 21, 90.0f);
-    addTest(22, 22, 180.0f);
-    addTest(17, 18, 270.0f);
+    addTest(23, 23, 0.0f);
+    addTest(20, 20, 90.0f);
+    addTest(21, 21, 180.0f);
+    addTest(19, 19, 270.0f);
   }
 
 }
\ No newline at end of file
   }
 
 }
\ No newline at end of file
index 9440d40..6888c94 100644 (file)
@@ -29,8 +29,8 @@ public final class QRCodeBlackBox3TestCase extends AbstractBlackBoxTestCase {
     super("test/data/blackbox/qrcode-3", new MultiFormatReader(), BarcodeFormat.QR_CODE);
     addTest(33, 33, 0.0f);
     addTest(33, 33, 90.0f);
     super("test/data/blackbox/qrcode-3", new MultiFormatReader(), BarcodeFormat.QR_CODE);
     addTest(33, 33, 0.0f);
     addTest(33, 33, 90.0f);
-    addTest(32, 32, 180.0f);
-    addTest(34, 34, 270.0f);
+    addTest(33, 33, 180.0f);
+    addTest(35, 35, 270.0f);
   }
 
 }
\ No newline at end of file
   }
 
 }
\ No newline at end of file