Pourquoi utilisons-nous si souvent l'espace colorimétrique HSV dans le traitement de la vision et des images?

64

Je vois l’espace colorimétrique HSV utilisé partout: pour le suivi, la détection humaine, etc. Je me demande pourquoi. En quoi cet espace colorimétrique est-il meilleur que l'utilisation de RVB?

bouillie
la source
3
C'est une très bonne question. À mon avis, il serait avantageux d’être un peu plus détaillé: qu'est-ce que le VHS, qu'est-ce que le RVB? La plupart des réponses comparant HSV à RVB, le titre pourrait être reformulé pour comparer ces deux espaces colorimétriques.
PhilMacKay
2
Une autre bonne question pourrait être: "Pourquoi le VHS est-il utilisé partout au lieu de HSL?"
Posfan12

Réponses:

60

La réponse simple est que, contrairement au RVB , le HSV sépare la luma , ou l’intensité de l’image, de la chrominance ou des informations de couleur. Ceci est très utile dans de nombreuses applications. Par exemple, si vous souhaitez effectuer une égalisation d'histogramme d'une image couleur, vous souhaiterez probablement le faire uniquement sur la composante d'intensité et laisser les composantes de couleur seules. Sinon, vous obtiendrez des couleurs très étranges.

En vision par ordinateur, vous souhaitez souvent séparer les composants couleur de l'intensité pour différentes raisons, telles que la robustesse aux changements d'éclairage ou la suppression des ombres.

Notez cependant que le HSV est l’un des nombreux espaces colorimétriques qui séparent la couleur de l’intensité (voir YCbCr, Lab, etc.). HSV est souvent utilisé simplement parce que le code permettant la conversion entre RVB et HSV est largement disponible et peut également être facilement implémenté. Par exemple, la boîte à outils de traitement d'images pour MATLAB comprend des fonctions rgb2hsvet hsv2rgb.

Dima
la source
42

Les informations de couleur sont généralement beaucoup plus bruyantes que les informations HSV.

Laissez-moi vous donner un exemple: moi-même et des amis avons participé à un projet traitant de la reconnaissance des panneaux de signalisation dans des vidéos de scènes réelles (bruit, ombres et parfois occlusion). Cela faisait partie d'un projet plus vaste, ce qui nous a permis de mettre à l'essai différentes approches de ce problème particulier (et de réutiliser des approches plus anciennes). Je n'ai pas essayé moi-même l'approche basée sur les couleurs, mais je me souviens d'une information intéressante: _La composante RVB dominante d'un panneau STOP n'était souvent pas rouge! (principalement à cause des ombres)

Vous pouvez généralement obtenir de meilleures informations d'un espace de couleurs HSV . Laissez-moi essayer à nouveau de donner un exemple d'expérience personnelle: essayez d'imaginer que vous avez l'image d'un avion monochrome avec une ombre. Dans l'espace colorimétrique RVB, la partie ombre aura probablement des caractéristiques très différentes de celle de la partie sans ombre. Dans l’espace colorimétrique HSV, la composante de teinte des deux patchs a plus de chances d’être similaire: l’ombre influence principalement la valeur , ou peut-être la composante de saturation , tandis que la teinte indique la "couleur" principale (sans sa luminosité et son effet dilué par le blanc). / black) ne devrait pas changer autant.

Si ces explications ne vous semblent pas intuitives, je suggère:

  • essayez de mieux comprendre les composants utilisés pour représenter une couleur dans l'espace de couleurs HSV et renouvelez vos connaissances en RVB
  • essayez de voir les raisons pour lesquelles ce type de représentation des couleurs a été développé: il s’agit toujours d’une manière ou d’une autre, basée sur une vision de l’interprétation humaine de la couleur

    par exemple les enfants ne sont pas vraiment comme très colorés == valeur des objets, ils préfèrent très satuated objets, des objets dont la couleur est intense et non dilué

  • Après avoir compris cela et développé une certaine intuition, vous devriez jouer avec les images: essayez de décomposer diverses images dans leurs composants RVB et HSV.

    Votre objectif serait de voir et de comprendre une différence entre ces décompositions pour les images contenant des ombres, une forte illumination, une réflexion de la lumière.

  • Si vous aimez jouer avec un type particulier d'images, essayez de les décomposer: qui sait, peut-être que le RVB est vraiment plus adapté à vos besoins que le HSV :)

Pénélope
la source
1
Si c'est une ombre, cela ne devrait changer que la luminosité - pas la saturation.
Andrey Rubshtein
@Andrey, comme je l'ai dit, je n'ai pas travaillé moi-même sur l'approche basée sur les couleurs, mais je peux supposer que si ce n'était pas seulement une ombre - il est probable que l'éclairage indirect des environs ou quelque chose de similaire a également joué un rôle.
penelope
1
Tu as raison. Cependant, dans le cas d'un éclairage indirect, la teinte pourrait également changer.
Andrey Rubshtein
1
@Andrey D'où mon libellé: "plus probable", "similaire", "essentiellement influent", ... Après tout, je n'expliquais pas le HSV, je ne donnais que des exemples et des suppositions éclairées basées sur l'expérience. Et, le meilleur moyen de choisir l'espace colorimétrique le mieux adapté à chaque application est de jouer avec votre base de données d'images et différents espaces colorimétriques
penelope
3
Tout ce qui se trouve dans l'ombre et qui n'est donc pas éclairé par la source de lumière primaire (le soleil) est éclairé par la source de lumière secondaire - le ciel, qui est une lumière géante, brillante et très bleue. Pour les yeux de l'homme, le rouge a toujours l'air rouge, car nos yeux prennent des mesures de couleur relatives au lieu d'une couleur absolue. C'est pourquoi vos photos prises à l'intérieur, sans flash, paraissent plus jaunes que vous ne le pensez. Et je suis tout à fait d’accord pour jouer avec votre base de données d’images.
John Robertson
8

Utiliser uniquement le composant Teinte rend l'algorithme moins sensible (sinon invariant) aux variations d'éclairage.

Une autre option populaire est l'espace colorimétrique LAB, où les canaux AB représentent la couleur et les distances euclidiennes de l'espace AB correspondent mieux à la perception humaine de la couleur. Là encore, ignorer le canal L (Luminance) rend l’algorithme plus robuste face aux différences d’éclairage.

nimrodm
la source
7

La meilleure réponse que je puisse comprendre est la suivante: le RVB concerne les "détails de mise en œuvre" concernant la façon dont le RVB affiche la couleur, et le HSV, les composants "de couleur réelle". Une autre façon de dire que ce serait RVB est la façon dont les ordinateurs traitent la couleur, et HSV essaye de capturer les composants de la façon dont nous percevons la couleur.

Je vais élaborer:

La couleur est une perception basée sur les ondes électromagnétiques. Les propriétés naturelles de ces ondes sont, par exemple, l'intensité et la fréquence. Si nous balayions la fréquence d'une onde lumineuse de l'infrarouge à l'ultra-violet, nous percevrions visuellement une variation de couleur le long des couleurs de l'arc-en-ciel. Les couleurs arc-en-ciel peuvent être considérées comme des "couleurs pures" car elles sont représentées par des ondes monofréquences.

Maintenant, l'œil humain ne peut que réagir ou "résonner" à trois fréquences lumineuses principales, à savoir le rouge, le vert et le bleu. Le fait est que cette réponse est non linéaire, de sorte que la rétine peut distinguer une couleur pure donnée (et implicitement sa "fréquence") par la réponse combinée des trois composantes de couleur .

L’espace colorimétrique RVB n’existe en tant que tel que pour imiter le fonctionnement interne de notre rétine, de sorte qu’une vaste majorité de couleurs puissent être représentées sur des écrans d’ordinateur au moyen d’une couleur commode (d’un point de vue informatique) à 24 bits par pixel. codage. L'espace colorimétrique RVB n'a pas de relation intrinsèque avec les propriétés naturelles de la couleur, ni avec l'interprétation humaine de la couleur.

Par exemple, toute opération arithmétique exécutée canal par canal dans un espace RVB (par exemple, la génération de dégradés de couleurs) donne des résultats très bruts, voire carrément "erronés". C'est pourquoi il est conseillé de créer des tables de couleurs en convertissant les arrêts de couleur RVB en d'autres espaces colorimétriques (HLS, Lab, etc.), en effectuant les interpolations, puis en reconvertissant les valeurs interpolées en RVB.

J'espère que cela t'aides!

Heltonbiker
la source
2
Je ne suis pas d'accord. Il y a trois domaines, pas deux: l'homme, l'informatique et la physique. Le modèle RGB est dérivé de l'œil humain, qui possède trois récepteurs de couleur.
MSalters
@MSalters Je pense que nous parlons des mêmes choses (même si je ne me suis peut-être pas dit très clairement). Les écrans RVB sont conçus pour correspondre à notre système de perception des couleurs. Ils ont une contrepartie d'ordinateur, les "coordonnées" (R, G, B). Etant donné que ces coordonnées correspondent plus exactement aux propriétés physiques et physiques de la couleur, elles ne sont pas adaptées à certains traitements mathématiques, tels que l'interpolation de gradient perceptuellement linéaire, la correction de couleur, les opérations de luminosité et de saturation, etc.
heltonbiker
2

HSV signifie Hue-Saturation-Value. Il s’agit en fait d’un type de représentation du plan couleur (type RVB, YCbCr, etc.).

Il s’agit d’un format de représentation des couleurs indépendant du périphérique: la représentation des couleurs HSV est utile pour détecter des types de couleurs spécifiques, par exemple: couleur de peau, couleur de feu, etc.

Matlabfonction pour convertir une image RVB en plan HSV est rgb2hsv('/inputimage_name').

Nish
la source
1

Je vais vous donner un exemple pour comprendre. Comme notre main a de nombreuses parties paume, dos, et au-dessous. Nous pouvons voir des variations de couleur différentes dans ces zones, mais la teinte de toutes ces régions ne varie pas beaucoup. La valeur de teinte peut donc être utile pour la segmentation manuelle.

crack_addict
la source
1

Je ne connais rien qui soit spécialement meilleur avec HSV que YUV ou LAB qui le rendrait meilleur pour l'extraction de caractéristiques et l'invariance ou la visualisation de l'éclairage. Je suppose que HSV est le plus couramment utilisé en raison de sa convention et de sa continuité: il est plus facile de comparer les résultats et de communiquer les uns avec les autres si vous utilisez le même espace colorimétrique.

Cela dit, le HSV (par opposition au RVB) est utilisé en vision par ordinateur pour deux raisons que je connais:

  1. Visualisation . Lorsque vous avez des informations directionnelles sur une image, HSV constitue un bon espace colorimétrique pour la visualisation. Au lieu de tracer de petits vecteurs sur une image (ils encombreront tout), vous pouvez tracer une couleur avec HSV en plaçant le vecteur directionnel sur M (angle du vecteur) et S (magnitude du vecteur). Cela laisse le composant Valeur, qui peut être défini de différentes façons en fonction de ce que vous souhaitez atteindre. Voir ci-dessous l'exemple du jeu de données de flux optique middlebury. HSV est utilisé pour afficher les directions de manière dense.

Exemple de middlebury DB sur le flux optique

  1. Extraction de caractéristiques et invariance d'éclairage , comme expliqué dans les autres réponses.
Stefan Karlsson
la source
0

Comme d'autres l'ont mentionné, il est avantageux de séparer la luma de la chrominance. La luma varie beaucoup dans la scène en fonction de la quantité de lumière qui tombe sur l'objet. La chrominance, en revanche, est plus corrélée aux propriétés intrinsèques de l'objet et, pour des images correctement équilibrées en blanc, elle est plus ou moins invariante.

Cependant, je voudrais ajouter que HSV, HSL, ou en fait tout espace colorimétrique avec paramétrisation polaire du plan chromatique, sont de mauvais choix à cet égard. En effet, ils introduisent une singularité dans la ligne de gris (quelle nuance est grise?), Ce qui les rend très sensibles au bruit et à la balance des blancs. De plus, comparer entre deux couleurs dans un système de coordonnées polaires n'est pas aussi simple. Notez également que ni la valeur dans HSV ni la luminosité dans HSL ne correspondent à la luminosité perçue par l'homme ni à aucune autre mesure physique de l'énergie.

Il existe de nombreux espaces colorimétriques linéaires qui procurent la même séparation luma-chroma tout en préservant la linéarité (YCbCr, YUV) ou en modélisant correctement la vision humaine (LUV, LAB). Avec ceux-ci, vous pouvez comparer deux couleurs en utilisant une norme Euclidienne L2 sur leurs chromaticités, ce qui donne un algorithme plus robuste.

Pourquoi HSV / HSL sont-ils utilisés si souvent? Difficile de donner une réponse objective. D'après mon expérience, c'est principalement dû à l'ignorance et à la disponibilité des routines de conversion RVB-> HSV. Dû travailler avec du code dont les auteurs ne comprenaient pas la correction gamma, sans parler des différents espaces colorimétriques. Vu le code qui convertissait RVB en HSV puis segmentait l'image en fonction de la teinte, sans tenir compte du fait qu'il s'agissait d'une quantité modulaire. Je pense que nous pouvons convenir que ces décisions ne sont pas conscientes et qu’elles soient fondées sur une raison quelconque.

ybungalobill
la source
-1

Le modèle de couleur HSV est plus corrélé à la façon dont les humains perçoivent les objets colorés, par rapport à RVB, YUV, Lab, etc.

Nous voyons quelle est la couleur de l'objet (teinte), à ​​quel point est-il saturé (saturation) et quelle quantité de lumière blanche lui tombe dessus (intesity).

Deepak
la source