J'ai écrit un programme informatique capable de détecter des pièces de monnaie dans une image statique (.jpeg, .png, etc.) à l'aide de certaines techniques standard de vision par ordinateur (flou gaussien, seuillage, transformation de Hough, etc.). En utilisant les ratios des pièces capturées à partir d'une image donnée, je peux établir avec certitude quelles pièces sont lesquelles. Cependant, je souhaite ajouter à mes niveaux de confiance et également déterminer si une pièce que je déduis comme étant du type A (à partir des ratios de rayon) a également la bonne couleur. Le problème est que pour les pièces britanniques et al. (cuivre, argent, or), les couleurs respectives (en particulier du cuivre au doré) sont très similaires.
J'ai une routine qui extrait la couleur moyenne d'une pièce donnée en termes de «l'espace de couleurs» RedGreenBlue (RGB) et des routines pour convertir cette couleur en «espace de couleurs» HueSaturationBrightness (HSB ou HSV).
RGB n’est pas très agréable à utiliser pour tenter de différencier les trois couleurs de pièce (voir l’image ci-jointe [de base] pour un exemple). J'ai les plages et les valeurs typiques suivantes pour les couleurs des différents types de pièces:
Remarque: la valeur typique est celle sélectionnée en utilisant une moyenne "en pixels" d'une image réelle.
**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)
J'ai d'abord essayé d'utiliser la «distance euclidienne» entre une couleur de pièce moyenne donnée (en utilisant RVB) et les valeurs typiques pour chaque type de pièce donné ci-dessus, traitant les valeurs RVB comme un vecteur; pour le cuivre on aurait:
où la plus petite valeur de la différence ( ) nous indiquerait le type le plus probable de la pièce donnée. Cette méthode s'est révélée très imprécise.
J'ai également essayé de comparer la teinte des pièces avec les valeurs typiques des types fournis ci-dessus. Bien que théoriquement, cela fournisse un "espace couleur" bien meilleur pour gérer les niveaux de luminosité et de saturation variables des images, il n'était pas assez précis.
Question: Quelle est la meilleure méthode pour déterminer un type de pièces basé sur la couleur (à partir d’une image statique)?
Merci beaucoup pour votre temps.
Modifier 1
Remarque: j'ai essayé toutes les idées abordées ci-dessous et je n'ai presque rien réalisé. La variance des conditions d'éclairage (même au sein d'une même image) rend ce problème très difficile et doit être prise en compte.
Éditer 2 (résumé des résultats)
Merci pour vos réponses. Mes propres recherches (y compris vos réponses et vos commentaires) ont montré à quel point il est difficile de résoudre ce problème dans le cas générique d’éclairage arbitraire, de caméra arbitraire (appareil mobile), de fluctuation de la couleur de la pièce (même pour les mêmes espèces / types) etc. Je me suis d'abord intéressé à la reconnaissance de la couleur de la peau (un domaine de recherche très actif) et les problèmes restent nombreux, même en ce qui concerne la reconnaissance de la couleur de la peau chez les Caucasiens uniquement (voir cet article pour un aperçu des techniques actuelles), et le fait que ce problème contienne trois objets de couleur distincts, qui peuvent tous avoir des chromacités continues et variables, rend ce sujet de la vision par ordinateur très difficile à classer et à traiter en conséquence (vous pourriez même faire un bon doctorat à ce sujet. !)
Je regardais dans la Gamut Méthode Constraint de la très utile après par DW ci - dessous. À première vue, cette opération était très prometteuse pour transformer l’image et les objets séparés en pièces de monnaie en couleurs indépendantes des conditions d’éclairage. Cependant, même cette technique ne fonctionne pas parfaitement (et implique une bibliothèque d'images / histogrammes pour les mappages - ce que je ne souhaite pas aborder), pas plus que les méthodologies beaucoup plus complexes d'Architecture de réseau neuronal. En fait, cet article énonce dans l'abstrait que:
"current machine colour constancy algorithms are not good enough for colour-based
object recognition.".
Cela ne veut pas dire qu'il n'y a pas beaucoup plus d'articles à jour sur ce sujet, mais je ne les trouve pas et cela ne semble pas être un domaine de recherche très actif pour le moment.
La réponse d'AVB était également utile et j'ai brièvement examiné L A B *.
"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."
D'après ce que j'ai lu, la transformation de cet espace colorimétrique pour les images dépendantes de mon appareil sera délicate - mais j'examinerai cela en détail (dans la perspective d'une sorte de mise en œuvre) lorsque j'aurai un peu plus de temps.
Je ne retiens pas mon souffle pour trouver une solution concrète à ce problème et, après la tentative avec L A B *, je négligerai la couleur de la pièce et chercherai à mettre en sécurité mes algorithmes de détection géométriques actuels (Elliptic Hough Transform, etc.).
Merci à tous. Et comme note finale à cette question, voici la même image avec un nouvel algorithme de détection géométrique, qui n’a pas de reconnaissance de couleur: