2016-10-13 8 views
0

Ich habe 2 Binärbilder (schwarz/weiß). Sie haben den gleichen Inhalt, unterscheiden sich aber leicht in Rotation/Übersetzung und Umfang des Inhalts (Text).Compute Ähnlichkeit von 2 Binärbildern

Wie bekomme ich ein einfaches Maß für die Ähnlichkeit von 2 Bildern in OpenCV?

Die Operation muss so schnell wie möglich (live) sein.

Beispiele:

A:

enter image description here

B:

enter image description here

+0

Einige Beispielbilder könnten – Miki

+0

mit Hilfe Versuchen SIFT oder SURF gleiche Punkte im Bild zu finden.Dann berechnen eine affine Transformation, die die Bilder zueinander passt und berechnen die Summe der Differenz Größen – meetaig

+0

@meetaig klingt alles andere als einfach zu mir;) –

Antwort

1

Sie müssen die Skalierung und Rotation entfernen.

Um die Drehung zu entfernen, nehmen Sie pca, die Ihnen die primäre Achse gibt, und drehen Sie beide Bilder, so dass die primäre Achse entlang der x ist. (Verwenden Sie eine Schere drehen). Um die Skala zu entfernen, nehmen Sie entweder einfach eine Begrenzungsbox oder, wenn ein bisschen Rauschen darin ist, nehmen Sie die Fläche und skalieren Sie eine, bis sie gleich ist. Probiere einfach Pixelzentren aus, um sie zu skalieren (ein bisschen eklig, aber es ist schwierig, ein Binärbild schön zu skalieren).

Ich sollte dafür Unterstützung in der binären Bildbibliothek geben. Sie könnten das Material hilfreich

http://malcolmmclean.github.io/binaryimagelibrary/

0

Der eine Weg, den ich mir vorstellen kann, ist, mit SIFT/SURF den Schlüsselpunkt zu finden und dann die Homographie zwischen zwei Bildern zu berechnen und sie entsprechend der berechneten Homographie zu verzerren (um Rotation und Translation zu fixieren). Dann können Sie einfach Ähnlichkeit in Bezug auf SAD berechnen.

0

Notwendigkeit, Rotation und skaleninvariante Annäherung zu verwenden. Sie benötigen außerdem eine schwellenwertbasierte Bereichssegmentierung, bevor die Feature-Extraktion benötigt wird. Ich schlage vor, die folgenden Schritte zu befolgen:

1/Binärschwelle & Scanlinienalgorithmus kann verwendet werden, um bestimmte Textzeilenbereiche zu segmentieren.

2/Nach der Segmentierung sollten Sie die Rotation mithilfe der WarpAffine-Transformation anpassen. Sehen Sie diese example

3/Ein bereinigtes Bild können Sie SIFT oder BRISK oder SURF Merkmale gelten Funktion nutzen können

4/Vorlage verwenden Matching-Ansatz übereinstimmen oder Ähnlichkeit oder Distanz-Score zu erzeugen.

siehe für weitere Einzelheiten folgenden Link:

scale and rotation Template matching

Verwandte Themen