Wie zähle ich Farben in einem Bild oder einer Bildserie?

Vielleicht ist diese Frage zu technisch für diese Unterseite, wenn ja, verschieben Sie sie bitte an eine bessere Stelle.

Ich mache einige Nachforschungen über Farben, bei denen ich herausfinden muss, wie häufig Farben vorkommen. Das Endergebnis wird eine Reihe von Diagrammen sein, die dieser Flaggenanalyse etwas ähneln .

Ich habe mehr als 50 Sätze mit etwa 100 Bildern und möchte die Farbverteilung in jedem Satz berechnen und dann die Mittelwerte jedes Satzes vergleichen. Welche ist die häufigste Farbe in allen Sätzen, gibt es Änderungen/Trends zwischen den Sätzen und so weiter. Bei Tausenden von Bildern ist es natürlich nicht möglich, alle Pixel selbst zu zählen und zu entscheiden, welche Farben am auffälligsten sind. Also ich würde gerne automatisieren.

Idealerweise hätte ich ein Tool, das sich jeden Satz ansieht und Farben basierend auf einer von mir erstellten Palette quantisiert. Ich würde es auch lieben, wenn das Tool eine Reihe von Bildern unterschiedlicher Größe akzeptieren würde, aber ich bin bereit, jede Serie neu zu skalieren und zu einer einzigen Collage zu kombinieren.

Hinweis: Ich suche nach etwas, das PIXEL-Farben auflistet, nicht IMAGE AVERAGE-Farben. Da ich Bilder mit mehreren Farben haben werde, führt die Betrachtung der durchschnittlichen oder auffälligsten Farbe zu irreführenden Ergebnissen. Im folgenden Bild gibt es beispielsweise mehrere Bilder, die einen Regenbogen von Farben verwenden, aber nicht nebeneinander platziert werden.

Geben Sie hier die Bildbeschreibung ein

Und dieses Bild ist überwiegend blau, sollte aber immer noch etwa 1/3 als grüne Pixel zählen:

Geben Sie hier die Bildbeschreibung ein

Oder noch schlimmer, das folgende Bild verwendet helles Grün und Rot, würde aber entweder als gelb (durchschnittlicher Farbton) oder gräulich (durchschnittliche RGB-Werte) kategorisiert werden:Geben Sie hier die Bildbeschreibung ein

Zur Erinnerung: Ich suche nach einem Tool, das ein Bild auf eine kleine (angegebene) Farbpalette reduzieren und dann zählen kann, wie viele Pixel jeder dieser Farben vorhanden sind.

Das von Ihnen verwendete Tool führt je nach dem gescannten Bild und den Mitteln, mit denen Sie es auf die gewünschte Größe für die Pixelzählung herunter- oder hochsampeln, zu einer gewissen Verzerrung der Ergebnisse. Beachten Sie auch, dass das Zählen von Pixeln unter anderem basierend auf der Pixelgröße und dem Weißpunkt des Bildes und der Anzeige irreführend sein kann.

Antworten (4)

Interessante Frage.

Auf Photoshop:

1) Multiplizieren Sie Ihre Bildabmessungen. Zum Beispiel 640x480= 307.200 Speichern Sie diese Zahl (Gesamtwert), wahrscheinlich in einer Excel-Tabelle.

2) Konvertieren Sie Ihr Bild in 8 Bit

  • Modus > 8 Bit

  • Wählen Sie eine Anzahl von Farben. Nehmen wir an, das Doppelte der Palette können Sie später verfeinern. Halten Sie es in überschaubaren Werten. zum Beispiel 16-24 Farben, um es später auf 8 zu verfeinern.

  • Palete Local, kein Zittern.

3) Passen Sie die Palette nach Bedarf an

  • Bild > Modus > Farbtabelle

4) Wählen Sie Farbbereich und wählen Sie mit dem Toleranzregler eine oder mehrere ähnliche Farben aus.

5) Öffnen Sie das Histogramm und schalten Sie die erweiterte Ansicht ein. Fenster > Histogramm.

  • Dies zählt jetzt die Pixel innerhalb der Auswahl.

6) Teilen Sie den Gesamtwert / ausgewählten Wert und Sie haben jetzt den Prozentsatz dieser Farben.

7) Wiederholen Sie den Vorgang je nach gewählter Palette nach Bedarf.

Laden Sie IrfanView herunter , eine völlig kostenlose und übersichtliche Windows-Anwendung. Öffnen Sie Ihr Bild damit und gehen Sie zu Bild -> Informationen -> Feld „Anzahl der eindeutigen Farben“ (stellen Sie sicher, dass „Automatische Zählung“ aktiviert ist).

Dadurch wird die Anzahl der Farben in Ihrem Rasterbild gezählt.

Wenn Sie eine Reihe von Bildern analysieren möchten, können Sie die ImageMagick - Funktion convert verwenden , die die eindeutigen Pixelfarben des Bildes zählen kann.

Der Befehl ist ganz einfach :

convert [your file] -define histogram:unique-colors=true -format %c histogram:info:-

Im Moment bin ich auf einem Windows-Rechner und für Ihr erstes Beispiel sollte ich verwenden:

convert.exe K7Yo6.png -define histogram:unique-colors=true -format %c histogram:info:-

Welche Ausgänge:

2237: ( 0, 0, 0,255) #000000 schwarz
   8: ( 0, 0, 2,255) #000002 srgba(0,0,2,1)
   2: ( 0, 0, 4,255) #000004 srgba(0,0,4,1)
   3: ( 0, 0, 5,255) #000005 srgba(0,0,5,1)
   4: ( 0, 0, 7,255) #000007 srgba(0,0,7,1)
[...]

Wenn Sie die Ausgabe in umgekehrter Reihenfolge sortieren möchten (um die häufigste Farbe zu sehen), können Sie sie mit dem Sortierbefehl umleiten :

convert.exe K7Yo6.png -define histogram:unique-colors=true -format %c histogram:info:- | sort /R

Welche Ausgänge:

118590: ( 64, 64, 64,255) #404040 grau25
  2237: ( 0, 0, 0,255) #000000 schwarz
  1963: (3, 3, 3,255) #030303 grau1
  1687: (33, 33, 33,255) #212121 grau13
  1495: ( 8, 8, 8,255) #080808 grau3
  1232: ( 3, 1, 12,255) #03010C srgba(3,1,12,1)
   628: ( 3, 0, 22,255) #030016 srgba(3,0,22,1)
[...]

Dasselbe gilt für das andere Beispiel. Der Befehl:

convert.exe aEkrE.jpg -define histogram:unique-colors=true -format %c histogram:info:- | sort /R

Ausgänge:

60155: (30, 96,182) #1E60B6 srgb(30,96,182)
43676: (34.101.182) #2265B6 srgb(34.101.182)
42031: (36.103.184) #2467B8 srgb(36.103.184)
38782: (44.111.192) #2C6FC0 srgb(44.111.192)
38469: (14, 80,167) #0E50A7 srgb(14,80,167)
36962: (41.108.189) #296CBD srgb(41.108.189)
35717: (20, 86,172) #1456AC srgb(20,86,172)
35554: (40.107.188) #286BBC srgb(40.107.188)
[...]

Wenn Sie viele Bilder verarbeiten müssen, können Sie jede Ausgabe auf eine Datei umleiten , z.

convert.exe K7Yo6.png -define histogram:unique-colors=true -format %c histogram:info:- | sort /R > K7Yo6.txt

Unter Linux und macOS können Sie sort -r -k 1 verwenden , um die Ausgabe zu sortieren.

convert K7Yo6.png -define histogram:unique-colors=true -format %c histogram:info:- | sort -r -k 1 > K7Yo6.txt

Beste Antwort hier. Meiner Meinung nach viel einfacher als das Rechnen aus einem Histogramm. Um das Beste daraus zu machen, müssen Sie die Farben in Ihrem Bild reduzieren. Um dies in Photoshop zu tun: Bild> Modus> Indizierte Farbe, und spielen Sie mit Forced, um die Farben auf so wenig wie möglich zu bringen (Primärfarben funktionieren möglicherweise gut, um sie auf 8 zu reduzieren).

Das beste statistische Werkzeug für diese Art der Pixelanalyse ist ein „Histogramm“. Typische unterteilen ein Bild vertikal nach Prozent und 256 Spalten breit für jede der verschiedenen Luminanzen von Schwarz bis Weiß. Sie können ein Histogramm für jeden der Bildfarbkanäle erfassen, die Sie vergleichen möchten. Sie können separat nach Kanälen wie Rot, Grün, Blau und Kombinationen davon angezeigt werden. Farbton, Sättigung und Wert sind miteinander verbundene Komponenten einer Farbe.

Fotografen haben ein Histogramm, um das auf dem Kamerabildschirm angezeigte Bild zu beurteilen, nachdem ein Bild aufgenommen wurde. Manche Software zeigt auch Histogramme an. Die Formen werden für jedes der Bildbeispiele, die Sie zeigen, unterschiedlich sein. Ihr Link zeigt ein Projekt mit einer begrenzten Palette einiger grundlegender flacher Farben. Ihr Spektrum ist viel größer und nuancierter.

Histogramme sind nicht so markant wie die einfachen flachen Farben, die für Flaggendesigns in Ihrem Link verwendet werden. Unterschiede werden jedoch deutlicher, wenn sie einander überlagert werden, um Variationen hervorzuheben.

Erstellen Sie hier ein Histogramm zum Vergleich

Es gibt eine detailliertere Beschreibung des Prozesses und einige Variationen.