2017-10-13 5 views
0

Pour diviser l'espace colorimétrique de l'échelle de gris en cases, il suffit de diviser 255 par nbins. Pour déterminer une case de couleur à échelle de gris, je vérifie simplement dans quelle plage de cases la couleur se trouve. Donc, la division de l'espace de couleur à l'échelle de gris en cases devient et est triviale. Et je sais, par exemple, que les couleurs de 0 à 25 partagent une certaine similitude - elles sont assez sombres/noires. Mais qu'en est-il de diviser l'espace chromatique hexadécimal en cases? Est-ce que je fais simplement la même chose? diviser 16 (billon?) en nbins? Et ces bacs partagent-ils une sorte de similitude - comme la couleur de 0 à 25 de l'échelle de gris est similaire à celle de l'ombre, est-ce que la couleur est de 0 à 100 à 0 à 100? Mon utilisation consiste à réduire la couleur d'une image, puis à compter les couleurs de pixel (en hexadécimal), mais je vais les trier en cases plutôt que de compter les couleurs individuelles.Division de l'espace colorimétrique hexadécimal en cases

Est-ce que OpenCV a certaines fonctions pour diviser l'espace colorimétrique hexadécimal? Serais-je préférable d'éviter le canal hexadécimal et le passage au canal Hue uniquement? Est-ce que je travaillerais efficacement avec la même chose que l'hexadécimal, sauf que l'énorme plage hexadécimale ne l'est pas?

+0

do cluster de kmeans sur la couleur – Silencer

+1

Il n'y a pas d'espace colorimétrique hexadécimal. Les nombres hexadécimaux et décimaux sont exactement les mêmes nombres avec les mêmes règles, juste écrits différemment. – nwp

Répondre

0

Ils sont (comme l'indique le commentaire) pas tellement des couleurs "hexadécimales" que des couleurs "RVB".

Maintenant, ce que vous pouvez faire est de diviser R, G et B chaque en nbins, mais cela vous donnerait nbins*nbins*nbins totale. Au lieu de cela, vous pouvez envisager de les diviser en std::cbrtn(bins) (racine de cube) chacun. Vous pourriez avoir des effets d'arrondi là-bas.

Vous pouvez également subdiviser la représentation HSV. C'est le même espace de couleur, mais exprimé différemment. Dans ce cas, il n'est pas aussi évident de diviser l'espace HSV. Pour les couleurs blanc (V ~ 1) et très foncé/noir (V ~ 0), Hue n'est pas bien défini. Vous pouvez bien sûr utiliser la méthode donnée ci-dessus, utilisez simplement une partition simple de chaque composant individuel. Mais cela ne vous donnera pas des résultats tout aussi agréables. Vous utilisez trop de nbins pour différencier les teintes du blanc et du noir.

L'approche réelle de la réduction de la couleur serait Floyd-Steinberg dithering. Probablement trop pour toi.