Wie Spotify im Einzelnen funktioniert

Spotify verwendet eine Kombination mehrerer Techniken, um ein zufriedenstellendes Ergebnis zu erzeugen:

  • Identifiziert den Bereich im Bild, der ignoriert werden soll
  • behandelt Artefakte, die entweder durch Anti-Aliasing bzw. durch JPEG-Kompression entstanden sind oder einfach "Unreinheiten" im Bild selbst
  • findet die festgelegte Anzahl von einzelnen Farben für das Bild
  • weist die am Besten passenden Farben für jedes Pixel zu (oder lässt es durch Ausmaskierung
  • transparent)

Zu ignorierende Bereiche

Bereiche im Bild können aufgrund verschiedener Ursachen bei der Analyse ignoriert werden:

  • in den meisten Fällen werden weiße Bereiche ignoriert; dies schließt auch Bereiche ein, die 'nahezu weiß' sind.
  • vollständig transparente Bereiche werden fast immer ignoriert; manchmal gilt dies auch für "fast vollständig transparente" Bereiche
  • in seltenen Fällen werden graue ignoriert (dies ist nur beim Spotify-Modus in der CLI- Version möglich)
  • in seltenen Fällen, werden auch schwarze Bereiche ignoriert (dies ist nur beim Spotify-Modus in der CLI-Version möglich)

Vor der eigentlichen Verarbeitung und je nach Einstellung der Parameter werden Pixel in bestimmten Bereichen nicht berücksichtigt (und später ausmaskiert).

Artefakte

Selbst bei digital erstellten - und scheinbar sehr "sauberen" - Bildern gibt es Artefakte, die vor allem auf Antialiasing und - bei JPEG-Kompression - auf JPEG-Kompressionsblock-Artefakte zurückzuführen sind.

Das größte Problem bei beiden ist, dass in diesen Bereichen Farben vorhanden sind, die nicht repräsentativ für das Erscheinungsbild sind. Stellen Sie sich einfach ein Bild mit einem blauen Quadrat neben einem gelben Quadrat vor. Wenn die Antialisierung einsetzt, werden die Pixel an der Grenze zwischen den beiden einen oder mehrere Grüntöne verwenden. Nichtsdestotrotz sind die repräsentativen Farben für beide Bereiche immer noch blau und gelb und nicht grün.

Stellen Sie sich nun einen gelben Hintergrund vor, auf dem ein sehr dünner Text (z. B. mit Helvetica Light) in Blau steht: Es wird viele gelbe Pixel (vom Hintergrund) geben, und einige, aber nicht viele blaue Pixel (für den Text) - und eine manchmal überraschend große Anzahl von grünen (oder grünlichen) Pixeln - für die Grenze zwischen dem blauen Text und dem gelben Hintergrund. In einigen Dateien kann die Anzahl der grünen Pixel größer sein als die Anzahl der einfachen blauen Pixel.

Spotify verfügt über Optionen - basierend auf Kantenerkennungsalgorithmen - die es ermöglichen, solche Randpixel bei der Suche nach den am besten passenden Farben zu ignorieren. Diese Pixel werden aber dennoch bei der Zuweisung der am besten passenden Farben berücksichtigt. In diesem Beispiel würden den grünen oder grünlichen Pixeln entweder die Farbe Blau oder Gelb zugewiesen.

Die am meisten geeigneten Farben ermitteln

Spotify verwendet "k-means Clustering"-Algorithmen, um die (meist wenigen) Farben zu identifizieren, die ein Bild am besten repräsentieren.
Es hat sich gezeigt, dass die Suche nach mehr Farben als benötigt werden und deren anschließende Verdichten zu einer kleineren Liste mit nur den wenigen gewünschten Farben fast immer bessere Ergebnisse liefert, als die direkte Suche nach der gewünschten Anzahl von Farben.

Da das "k-means Clustering" naturgemäß Zufallsaspekte aufweist, wird die zweimalige (oder auch häufigere) Ausführung des Algorithmus auf demselben Datensatz jedes Mal leicht (oder auch gar nicht so leicht) unterschiedliche Ergebnisse liefern. Folglich durchläuft Spotify mehrere Iterationen und wählt die Iteration mit der geringsten aggregierten Differenz zwischen dem Originalbild und dem durch die Ergebnisfarben repräsentierten Bild aus.

Zuweisen von Schmuckfarben zu Pixeln

Unabhängig davon, ob Spotify auf Bilder oder PDFs angewendet wird, das nicht nur Bilder, sondern auch Text und Vektor enthalten, wird das Ergebnis immer ein Bild auf einer PDF-Seite sein, wobei sich dieses über den gesamten Seitenbereich erstreckt. 

Dieses Bild

  • hat einen Kanal für jede Schmuckfarbe
  • Jeder Kanal ist bitonal, d. h. er entspricht entweder 100 % der angegebenen Schmuckfarbe oder 0 %.
  • für jedes Pixel wird nur einer der Kanäle auf 100 % gesetzt
  • für jedes Pixel, bei dem alle Kanäle auf 0 % gesetzt sind, wird eine Maske angewendet, um das Bild an diesem bestimmten Pixel transparent zu machen.

Da die einzige Möglichkeit, solche Bilder in PDF zu kodieren, die Verwendung eines DeviceN-Farbraums ist, wird das erzeugte Bild ein DeviceN-farbiges mehrkanaliges bitonales Bild sein.

Die Namen für die Schmuckfarben werden entweder aus einer vom Benutzer bereitgestellten Schmuckfarbenbibliothek entnommen oder aus den RGB-Werten generiert, die das Aussehen der Schmuckfarbe darstellen.

Der Alternativraum für die Schmuckfarben ist standardmäßig mit sRGB kodiert. Für den Spotify-Modus auf der Befehlszeile ist es auch möglich, DeviceRGB oder Lab als alternativen Raum zu verwenden. Die Verwendung von Lab hat zumindest bei einigen Viewern zu Rendering-Problemen geführt.