Normale Hashing- oder CRC-Berechnungsalgorithmen funktionieren mit Bilddaten nicht gut. Die dimensionale Natur der Informationen muss berücksichtigt werden.
Wenn Sie einen äußerst robusten Fingerabdruck benötigen, bei dem affine Transformationen (Skalierung, Drehung, Translation, Spiegeln) berücksichtigt werden, können Sie eine Radon-Transformation für die Bildquelle verwenden , um eine normative Abbildung der Bilddaten zu erstellen. Speichern Sie diese mit jedem Bild und Vergleichen Sie dann nur die Fingerabdrücke. Dies ist ein komplexer Algorithmus und nichts für schwache Nerven.
Einige einfache Lösungen sind möglich:
- Erstellen Sie ein Leuchtkrafthistogramm für das Bild als Fingerabdruck
- Erstellen Sie verkleinerte Versionen jedes Bildes als Fingerabdruck
- Kombinieren Sie die Techniken (1) und (2) zu einem Hybridansatz für eine verbesserte Vergleichsqualität
Ein Helligkeitshistogramm (insbesondere eines, das in RGB-Komponenten unterteilt ist) ist ein angemessener Fingerabdruck für ein Bild - und kann sehr effizient implementiert werden. Wenn Sie ein Histogramm von einem anderen subtrahieren, wird ein neues Histogramm erstellt, mit dem Sie entscheiden können, wie ähnlich zwei Bilder sind. Histogramme, da nur die Verteilung und das Auftreten von Leuchtkraft- / Farbinformationen die affinen Transformationen recht gut handhaben. Wenn Sie die Leuchtkraftinformationen jeder Farbkomponente auf einen 8-Bit-Wert quantisieren, reichen 768 Byte Speicherplatz für den Fingerabdruck eines Bildes mit nahezu jeder vernünftigen Größe aus. Helligkeitshistogramme erzeugen falsch negative Ergebnisse, wenn die Farbinformationen in einem Bild bearbeitet werden. Wenn Sie Transformationen wie Kontrast / Helligkeit, Posterisierung, Farbverschiebung und Änderung der Helligkeitsinformationen anwenden.
Die Verwendung skalierter Bilder ist eine weitere Möglichkeit, die Informationsdichte des Bildes auf ein Niveau zu reduzieren, das einfacher zu vergleichen ist. Bei einer Reduzierung unter 10% der ursprünglichen Bildgröße gehen im Allgemeinen zu viele Informationen verloren, um verwendet zu werden. Daher kann ein Bild mit 800 x 800 Pixel auf 80 x 80 verkleinert werden und bietet dennoch genügend Informationen, um einen anständigen Fingerabdruck durchzuführen. Im Gegensatz zu Histogrammdaten müssen Sie eine anisotrope Skalierung der Bilddaten durchführen, wenn die Quellauflösungen unterschiedliche Seitenverhältnisse aufweisen. Mit anderen Worten, das Reduzieren eines 300 x 800-Bilds in ein 80 x 80-Miniaturbild führt zu einer Verformung des Bildes, sodass im Vergleich zu einem 300 x 500-Bild (das sehr ähnlich ist) falsch negative Ergebnisse erzielt werden. Thumbnail-Fingerabdrücke führen auch häufig zu falsch negativen Ergebnissen, wenn affine Transformationen beteiligt sind. Wenn Sie ein Bild spiegeln oder drehen,
Die Kombination beider Techniken ist ein vernünftiger Weg, um Ihre Wetten abzusichern und das Auftreten von falsch positiven und falsch negativen Ergebnissen zu reduzieren.