Hatte jetzt nochmal beide Fotos in eine RAR-Datei gepackt.
Jetzt sind die Bilder zwar gleich groß und das Bild ist von der Positionierung der Pixel auch gleich, allerdings weichen die Werte für die einzelnen Pixel auch da voneinander ab, wo kein QR-Code hinterlegt ist. Das kann z.B. durch eine JPG-Komprimierung entstanden sein.
Wenn man das Referenzbild um einen einige Pixel breiten Rahmen erweitert und anschließend beide Bilder in ein klein wenig verwackelt bzw. die Werte der Pixel über die Nachbarpixel interpoliert (
https://processing.org/examples/blur.html), dann in Graustufen konvertiert und ein Template-Matching durchführt - also die Abbildung pixelweise über das Referenzbild verschiebt und so die Koordinaten für die maximale Übereinstimmung ermittelt, anschließend wieder das eine Bild vom anderen abzieht (mit der von Dir angegebenen Toleranz arbeitet), das Ergebnis in ein Schwarzweissbild verwandelt, und anschließend die nicht verbundenen Komponenten unterhalb einer bestimmten Schwelle (z.b. 120 Pixel) also als Pixelverbunde die weniger als 120 zusammenhängende Pixel aufweisen entfernt, eine Segmentierung durchführt in der das verbleibende Quadrat "außgestanzt" wird (YX-CUT), dann kommt man zu den folgenden Ergebnis.
Das ist eigentlich schon recht gut. Da dieser Code durch Quadrate gebildet wird, könnte man versuchen die Länge/Breite eines der Quadrate zu ermitteln, das Bild in entsprechende Quadrate/Zellen unterteilen, für jede Zelle prüfen ob mehr als 50 % Pixel gesetzt sind. Ist das der Fall dann wird das Quadrat ausgefüllt, ist das nicht der Fall dann wird das Quadrat nicht ausgefüllt.
Das dürfte dann noch nicht perfekt sein aber doch schon sehr gut.
cu Ha-Jö