+\r
+ // Filter outlier possibilities whose module size is too different\r
+ if (startSize > 3) {\r
+ // But we can only afford to do so if we have at least 4 possibilities to choose from\r
+ float totalModuleSize = 0.0f;\r
+ for (int i = 0; i < startSize; i++) {\r
+ totalModuleSize += ((FinderPattern) possibleCenters.get(i)).getEstimatedModuleSize();\r
+ }\r
+ float average = totalModuleSize / (float) startSize;\r
+ for (int i = 0; i < possibleCenters.size() && possibleCenters.size() > 3; i++) {\r
+ FinderPattern pattern = (FinderPattern) possibleCenters.get(i);\r
+ if (Math.abs(pattern.getEstimatedModuleSize() - average) > 0.2f * average) {\r
+ possibleCenters.remove(i);\r
+ i--;\r
+ }\r
+ }\r
+ }\r