Frage

Wie konvertiere ich die RGB-Werte eines pixels zu einem einzigen monochrome Wert?

War es hilfreich?

Lösung

Ich fand eine mögliche Lösung in der Farbe FAQ.Die Luminanz-Komponente Y (aus dem CIE XYZ-system) erfasst, was die meisten vom Menschen wahrgenommen als Farbe, die in einem Kanal.Also, nutzen Sie diese Koeffizienten:

mono = (0.2125 * color.r) + (0.7154 * color.g) + (0.0721 * color.b);

Andere Tipps

In diesem MSDN-Artikel verwendet (0.299 * color.R + 0.587 * color.G + 0.114 * color.B);

Dieser Wikipedia-Artikel verwendet (0.3* color.R + 0.59 * color.G + 0.11 * color.B);

Diese aktuelle wissenschaftliche Artikel vergleicht die state-of-the-art bei der Umwandlung von Farbfotos in Graustufen, einschließlich der einfachen Leuchtkraft-Formel und komplexere Techniken.

Dies hängt davon ab, was Ihre Motivationen sind.Wenn Sie wollen einfach nur drehen Sie eine beliebige Bild zu Graustufen und haben es ziemlich gut, die Umsätze, die in anderen Antworten auf diese Frage zu tun.

Wenn Sie die Umwandlung von Farbfotos in Schwarzweiß, wird der Prozess kann sowohl sehr kompliziert und subjektiv, die spezielle Optimierungen für jedes Bild.Für eine Idee, was beteiligt sein könnten, werfen Sie einen Blick auf diese tutorial von Adobe für Photoshop.

Replizieren dies im code wäre ziemlich verwickelt, und würde immer noch eingreifen des Benutzers erforderlich, um die resultierenden Bild-ästhetisch "perfekt" (was auch immer das bedeutet!).

Wie erwähnt auch ein Graustufen-übersetzung (beachten Sie, dass die monochromen Bilder müssen nicht in Graustufen angezeigt) von einer RGB-triplet unterliegt Geschmack.

Für Beispiel, Sie könnten betrügen, extrahieren Sie nur die Blaue Komponente, die durch einfach werfen Sie die roten und grünen Komponenten entfernt, und kopieren den blau-Wert an Ihre Stelle.Eine weitere einfache und in der Regel ok Lösung wäre, nehmen Sie den Durchschnitt der pixel-RGB-Tripel, und verwenden Sie diesen Wert in allen drei Komponenten.

Die Tatsache, dass es einen beträchtlichen Markt für professionelle und nicht-sehr-Billig-at-all-no sirree Graustufen/Monochrom-Konverter-plugins für Photoshop allein, sagt, dass der Umbau ist genauso einfach oder Komplex sein, wie Sie es wünschen.

Die Logik hinter konvertieren von RGB-Bild in Monochrom kann, ist nicht eine triviale lineare transformation.Meiner Meinung nach ein solches problem besser gelöst, indem "Color Segmentierung Techniken.Sie erreichen könnten "Color Segmentierung" von k-bedeutet clustering.

Siehe Referenz-Beispiel von MathWorks-Website.

https://www.mathworks.com/examples/image/mw/images-ex71219044-color-based-segmentation-using-k-means-clustering

Original Bild in Farben.

Picture with colours

Nach dem konvertieren zu schwarz-weiß, mit k-means-clustering Picture after converting to monochrome using k-means clustering

Wie funktioniert das?

Sammeln Sie alle pixel-Werte, die vom gesamten Bild.Von einem Bild, das W Pixel Breite und H Pixel hoch ist, erhalten Sie W *H Farbe Werte.Jetzt, mit k-means-Algorithmus erstellen, der 2-Cluster (oder Ablagen) und werfen Sie die Farben in die entsprechenden "bins".Der 2-Cluster stellen Sie Ihre schwarzen und weißen Farbtönen.

Youtube-video demonstriert image segmentation using k-means? https://www.youtube.com/watch?v=yR7k19YBqiw

Herausforderungen, die mit dieser Methode

Der k-means-clustering-Algorithmus ist anfällig für Ausreißer.Ein paar zufällige Pixel mit einer Farbe, deren RGB-Abstand ist weit Weg von dem rest der Menge könnte leicht neigen der centroide zu unerwarteten Ergebnissen führen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top