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:
[] [] 3
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
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
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
unhappy.png
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
./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.
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
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. –
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