2009-07-24 13 views
4

Ich schreibe ein Programm, das mit Bildern arbeitet und irgendwann muss ich das Bild vervielfältigen. Das bedeutet, dass ich die Farben aussortieren muss, aber ich habe Probleme, zu entscheiden, wie nahe eine Farbe einer anderen Farbe ist.Ähnlichkeit zwischen Farben

eine Farbe im RGB gegeben, kann ich von mindestens 2 Möglichkeiten denken, um zu sehen, wie unterschiedlich sie sind:

  1. | r1 - r2 | + | g1 - g2 | + | b1 - b2 |
  2. sqrt ((r1 - r2)^2 + (g1 - g2)^2 + (b1 - b2)^2)

Und wenn ich in HSV bewegen, kann ich denke, andere Möglichkeiten zu tun es.

Also frage ich, Ignorieren Geschwindigkeit, was ist der beste Weg, um zu sagen, wie ähnlich zwei Farben sind? Beste Bedeutung für das menschliche Auge.

+0

Wenn Sie die Geschwindigkeit ignorieren, nach welchen Kriterien fragen Sie, in welchen es am besten wäre? – Sneakyness

+0

Ich meinte am genauesten für das menschliche Auge, aber guter Fang, bearbeitet. – ReaperUnreal

+0

@ReaperUnreal: Eigentlich bedeutet Posterize auch Quantisierung. – EFraim

Antwort

0

Was meinst du mit "posterize das Bild"?

Wenn Sie versuchen, die Farben in Behälter gruppieren, Sie bei cluster analysis

+0

Fixed Sie Link für ya ' – UnkwnTech

+0

Richtig, aber ich muss in der Lage sein zu sagen, wie verschiedene Farben in der Lage sein, sie zu clustern. – ReaperUnreal

1

Gut aussehen sollte Wenn Geschwindigkeit keine Rolle spielt, wäre der genaueste Weg, etwas zu nehmen Beispielbilder und wenden Sie den Filter auf sie an, die verschiedene cutoff-Werte für die Entfernung verwenden (Abstand, der durch eine der Gleichungen auf der Color_difference Seite bestimmt wird, mit der astander verbunden ist), das bedeutet, dass Sie einen der dort aufgeführten Farbräume mit den Berechnungen verwenden müssen , wandle dann in sRGB oder etwas um [was auch bedeutet, dass du das Bild zuerst in den anderen Farbraum konvertieren musst, wenn es nicht darin ist]), und dann lasse eine große Anzahl von Leuten die Bilder untersuchen, um sie zu sehen Was für sie am besten aussieht, dann gehen Sie mit dem Cutoff-Wert für die Bilder, die die Mehrheit zustimmt, am besten aus.

Grundsätzlich ist es weitgehend eine Frage der Subjektivität; In der Tat hängt es auch davon ab, wie stilisiert Sie die Bilder haben wollen, und vielleicht möchten Sie sogar eine Art Kontrolle hinzufügen, so dass Sie die Cutoff-Entfernung im laufenden Betrieb ändern können.

Wenn die Geschwindigkeit tut ein bisschen ein Problem zu werden, und/oder Sie mehr Einfachheit wollen, dann nur Ihre zweite Wahl zur Entfernungsberechnung verwenden (was einfach ist die CIE76 Gleichung, nur sicherstellen, dass die L ein zu verwenden b * Farbraum) mit einem Cutoff von etwa 2 oder 2,3.

0

einfach einen Kommentar, wenn Sie HSV bewegen (oder ähnliche Räume) werden:

  • Diffing auf H: Unterschied zwischen 0 ° und 359 ° ist numerisch groß, aber wahrnehmungs ist vernachlässigbar.

  • H Unterschied, wenn V oder S klein sind - ist klein.

  • Für Computer Vision Anwendungen, wichtiger nicht wahrnehmbare Unterschied (meist von Lackherstellern verwendet), aber diese Farben gehören zu dem gleichen Objekt/Segment oder nicht.Was bedeutet, dass wir V, das sich von den Lichtverhältnissen ändern kann, teilweise ignorieren können.

Verwandte Themen