2016-07-13 11 views
0

Es gibt ein originales Qualitätslabel. Nach dem Druck scannen wir ein Muster und möchten es mit dem Original vergleichen, um beispielsweise Fehler im gedruckten Text zu finden. Originale und gescannte Bilder haben fast die gleiche Größe (aber ein bisschen anders).Vergleichen gescanntes Bild (Etikett) mit Original

ImageMagic kann es gut, aber nicht mit gescanntem Bild (ich nehme an, es vergleicht es bitweise, aber das gescannte Bild enthält zu viel "Rauschen").

Gibt es ein Dienstprogramm, das so ein Vergleich sein kann? Oder kann ein Algorithmus (implementiert oder einfach zu implementieren) sein - wie der, der die Cauchy-Schwarz-Ungleichung in der Signalverarbeitung verwendet?

Hinzufügen von Beispielbildern.

Original: -
Original

Gescannte: -
Scanned

Antwort

1

Weitere Gedanken

Wie ich in den Kommentaren erklärt, ich glaube, die Registrierung des ursprünglichen und gescannte Bilder werden als Ihre sc wichtig sein und sind nicht genau horizontal oder gleich groß. Um eine grobe Registrierung durchzuführen, könnten Sie einige Punkte mit hohem Kontrast finden, die hoffentlich einzigartig im Originalbild sind. Also, ich wollte einen oben links (genannt tl.jpg), einen oben rechts (tr.jpg), einen unten links (bl.jpg) und einen unten rechts (br.jpg). Ich könnte diese wählen:

enter image description here [enter image description here] [enter image description here] 3enter image description here

Ich kann jetzt diese im Originalbild und in dem gescannten Bild mit einem Teilbild suchen, zum Beispiel finden:

compare -metric RMSE -subimage-search original.jpg tl.jpg a.png b.png 
1148.27 (0.0175214) @ 168,103 

enter image description hereenter image description here

dass mir zeigt, wo das Teilbild gefunden wurde, und das zweite (gräuliche) Bild zeigt mir einen weißen Peak, wo das Bild tatsächlich liegt. Es sagt mir auch, dass das Teilbild an Koordinaten [168,103] im Originalbild ist.

compare -metric RMSE -subimage-search scanned.jpg tl.jpg a.png b.png 
7343.29 (0.112051) @ 173,102 

Und jetzt weiß ich, dass der gleiche Punkt bei Koordinaten [173,102] im gescannten Bild ist. Also muss ich [173,102] in [168,103] verwandeln.

Ich brauche dann, dass für die anderen Teilbilder zu tun:

compare -metric RMSE -subimage-search scanned.jpg br.jpg result.png 
8058.29 (0.122962) @ 577,592 

enter image description hereenter image description here

Ok, so können wir 4 Punkte, ein in der Nähe jeder Ecke im Originalbild, und ihre entsprechenden Orte im gescannten Bild. Dann müssen wir eine affine Transformation durchführen - was ich in Zukunft tun darf oder auch nicht. Es gibt Hinweise, wie man es macht here.

Original-Antwort

Es würde helfen, wenn Sie in der Lage waren, einige Beispielbilder zu liefern, um zu zeigen, was für Probleme mit den Etiketten, die Sie erwarten. Aber nehmen wir an, Sie haben diese:

label.png

enter image description here

unhappy.png

enter image description here

unhappy2.png

Ich habe nur einen roten Rand um sie gelegt, damit Sie die Ränder auf diesem weißen Hintergrund sehen können.

Wenn Sie Fred Weinhaus Skript similar von seinem hervorragenden website verwenden, können Sie jetzt eine normalisierte Kreuzkorrelation zwischen dem ursprünglichen Bild und den unglücklichen berechnen. Also, das Originaletikett und das mit einer Spur von weiß über sie nehmen, sie kommen ziemlich ähnlich (96%)

./similar label.png unhappy.png 
Similarity Metric: 0.960718 

Wenn wir jetzt versuchen, die mehr unglücklich mit zwei Spuren über sie, sind sie weniger ähnlich (92%):

./similar label.png unhappy2.png 
Similarity Metric: 0.921804 

Ok, das scheint zu funktionieren. Wir müssen uns jetzt mit dem verschobenen und unterschiedlich großen Scan beschäftigen, also werde ich versuchen, sie zu trimmen, um nur die wichtigen Sachen zu bekommen und sie zu verwischen, um jedes Rauschen zu verlieren und mit einem kleinen Skript auf eine standardisierte Größe für Vergleiche zu skalieren.

#!/bin/bash 
image1=$1 
image2=$2 
fuzz="10%" 
filtration="-median 5x5" 
resize="-resize 500x300" 
echo DEBUG: Preparing $image1 and $image2... 

# Get cropbox from blurred image 
cropbox=$(convert "$image1" -fuzz $fuzz $filtration -format %@ info:) 
# Now crop original unblurred image and resize to standard size 
convert "$image1" -crop "$cropbox" $resize +repage im1.png 

# Get cropbox from blurred image 
cropbox=$(convert "$image2" -fuzz $fuzz $filtration -format %@ info:) 
# Now crop original unblurred image and resize to standard size 
convert "$image2" -crop "$cropbox" $resize +repage im2.png 

# Now compare using Fred's script 
./similar im1.png im2.png 

Wir können nun das Originaletikett mit einem neuen Bild namens unhappy-shifted.png

enter image description here

./prepare label.png unhappy-shifted.png 
DEBUG: Preparing label.png and unhappy-shifted.png... 
Similarity Metric: 1 

vergleichen Und wir können sehen, dass sie das gleiche vergleichen trotz verschoben wird. Natürlich kann ich deine Bilder nicht sehen, wie laut sie sind, welche Art von Hintergrund du hast, wie groß sie sind, welche Farbe sie haben und so weiter - also musst du vielleicht die Vorbereitung anpassen, wo ich gerade einen Medianfilter gemacht habe. Vielleicht brauchen Sie eine Unschärfe und/oder einen Schwellenwert. Vielleicht müssen Sie auf Graustufen gehen.

+0

Danke, Mark! Ich habe Beispielbilder hinzugefügt (nur 30% der Originalgröße) - sie sind etwas komplexer. Können Sie mir bitte sagen, ob Sie denken, dass diese Methode auch für sie funktioniert? – Stan

+0

Mmmm ... es ist schwieriger mit deinen Bildern, weil sie relativ zueinander gedreht sind und so werden Registrierungs-/Ausrichtungsfehler die Ergebnisse dominieren oder verzerren. Ich denke, Sie müssten Kontrollpunkte in der Nähe jeder Ecke des Bildes finden und eine affine Transformation durchführen, um den Scan auf das Original auszurichten, und dann mit der obigen Methode fortfahren. Es ist nicht etwas, was ich wahrscheinlich bald tun werde. Ich würde wahrscheinlich ein kleines Quadrat identifizieren, bei dem die Entropie/der Kontrast nahe jeder Ecke hoch ist, und eine Unterbildsuche in dem gescannten Bild durchführen, um Kontrollpunkte zu identifizieren. –

+0

Vielen Dank, Mark! Auch wenn Sie die Zeit nicht so schnell finden, ist es großartig, wenn Sie Ihre Ideen veröffentlichen. Übrigens war es auch nötig, den Ort zu zeigen wo die Bilder anders sind. Ich denke, ich werde jetzt mit dieser Aufgabe innehalten, um mehr über das Thema zu erfahren. – Stan

Verwandte Themen