Ich habe ein Computerprogramm geschrieben, mit dem Münzen in einem statischen Bild (.jpeg, .png usw.) mithilfe einiger Standardtechniken für die Bildverarbeitung (Gaußscher Weichzeichner, Schwellenwert, Hough-Transformation usw.) erkannt werden können. Anhand der Verhältnisse der von einem bestimmten Bild aufgenommenen Münzen kann ich mit großer Sicherheit feststellen, welche Münzen welche sind. Ich möchte jedoch mein Konfidenzniveau erhöhen und auch feststellen, ob eine Münze, die ich als Typ-A-Münze (anhand der Radiusverhältnisse) erachte, auch die richtige Farbe hat. Das Problem ist, dass für britische Münzen et al. (Kupfer, Silber, Gold), die jeweiligen Farben (va Kupfer bis Gold) sind sehr ähnlich.
Ich habe eine Routine, die die Durchschnittsfarbe einer bestimmten Münze im Hinblick auf den "Farbraum" von RedGreenBlue (RGB) extrahiert und Routinen, um diese Farbe in den "Farbraum" von HueSaturationBrightness (HSB oder HSV) umzuwandeln.
Es ist nicht sehr angenehm, mit RGB zu arbeiten, um zwischen den drei Münzfarben zu unterscheiden (ein Beispiel finden Sie im beigefügten [Grundbild]). Ich habe folgende Bereiche und typische Werte für die Farben der verschiedenen Münztypen:
Hinweis: Der typische Wert hier ist einer, der unter Verwendung eines "pixelweisen" Mittelwerts eines realen Bildes ausgewählt wird.
**Copper RGB/HSB:** typicalRGB = (153, 117, 89)/(26, 0.42, 0.60).
**Silver RGB/HSB:** typicalRGB = (174, 176, 180)/(220, 0.03, 0.71).
**Gold RGB/HSB:** typicalRGB = (220, 205, 160)/(45, 0.27, 0.86)
Ich habe zuerst versucht, den 'Euklidischen Abstand' zwischen einer bestimmten mittleren Münzfarbe (unter Verwendung von RGB) und den typischen Werten für jeden oben angegebenen Münztyp zu verwenden, wobei die RGB-Werte als Vektor behandelt wurden. für kupfer hätten wir:
wo der kleinste Wert der Differenz ( ) uns sagen würde, welcher Typ die gegebene Münze am wahrscheinlichsten ist. Diese Methode hat sich als sehr ungenau erwiesen.
Ich habe auch versucht, nur den Farbton der Münzen mit den typischen Werten der oben angegebenen Typen zu vergleichen. Obwohl dies theoretisch einen viel besseren "Farbraum" bietet, um mit unterschiedlichen Helligkeits - und Sättigungsgraden der Bilder umzugehen, war es auch nicht genau genug.
Frage: Was ist die beste Methode, um einen Münztyp anhand der Farbe (aus einem statischen Bild) zu bestimmen?
Vielen Dank für Ihre Zeit.
Bearbeiten 1
Hinweis: Ich habe alle unten diskutierten Ideen ausprobiert und fast nichts erreicht. Unterschiedliche Lichtverhältnisse (auch innerhalb des gleichen Bildes) machen dieses Problem sehr schwierig und sollten berücksichtigt werden.
Edit 2 (Zusammenfassung der Ergebnisse)
Danke für deine Antworten. Meine eigenen Untersuchungen (einschließlich Ihrer Antworten und Kommentare) haben gezeigt, wie schwierig es ist, dieses Problem im allgemeinen Fall von willkürlicher Beleuchtung, willkürlicher Kamera (mobiles Gerät) und Schwankung der Münzfarbe (auch für dieselbe Art / denselben Typ) zu lösen. usw. Ich habe zuerst die Hautfarbenerkennung (ein sehr aktives Forschungsgebiet) als Ausgangspunkt betrachtet und es gibt immer noch zahlreiche Probleme, auch wenn nur Kaukasier die Hautfarbe erkennen (siehe dieses Papier für einen Überblick über die aktuellen Techniken). und die Tatsache, dass dieses Problem drei verschiedene Farbobjekte enthält, die alle kontinuierliche und unterschiedliche Chromazitäten aufweisen können, macht es sehr schwierig, dieses Thema der Computersicht zu klassifizieren und entsprechend zu behandeln (in der Tat könnten Sie einen guten Doktortitel darüber schreiben) !).
Ich habe mir die Gamut-Beschränkungsmethode aus dem folgenden sehr hilfreichen Beitrag von DW angesehen. Dies war auf den ersten Blick als Vorverarbeitungsschritt sehr vielversprechend, um das Bild und die einzelnen Münzobjekte in Farben zu verwandeln, die unabhängig von den Lichtbedingungen sind. Aber auch diese Technik funktioniert nicht perfekt (und beinhaltet eine Bibliothek von Bildern / Histogrammen für Zuordnungen - auf die ich nicht näher eingehen möchte) und auch nicht die viel komplexeren Methoden der neuronalen Netzwerkarchitektur. Tatsächlich heißt es in diesem Artikel abstrakt:
"current machine colour constancy algorithms are not good enough for colour-based
object recognition.".
Das heißt nicht, dass es zu diesem Thema nicht viel aktuellere Veröffentlichungen gibt, aber ich kann sie nicht finden, und es scheint derzeit kein sehr aktives Forschungsgebiet zu sein.
Die Antwort von AVB war auch hilfreich und ich habe mich kurz mit L A B * befasst.
"The nonlinear relations for L*, a*, and b* are intended to mimic the nonlinear
response of the eye. Furthermore, uniform changes of components in the L*a*b* colour
space aim to correspond to uniform changes in perceived colour, so the relative
perceptual differences between any two colours in L*a*b* can be approximated by
treating each colour as a point in a three dimensional space."
Nach dem, was ich gelesen habe, wird die Umwandlung in diesen Farbraum für meine geräteabhängigen Bilder schwierig sein - aber ich werde dies ausführlich untersuchen (mit Blick auf eine Art Implementierung), wenn ich etwas mehr Zeit habe.
Ich halte nicht den Atem an, um eine konkrete Lösung für dieses Problem zu finden, und nach dem Versuch mit L A B * werde ich die Münzfarbe vernachlässigen und meine aktuellen geometrischen Erkennungsalgorithmen (genaue elliptische Hough-Transformation usw.) überprüfen.
Danke euch allen. Und als letzte Anmerkung zu dieser Frage hier das gleiche Bild mit einem neuen geometrischen Erkennungsalgorithmus, der keine Farberkennung hat: