Frage

Meine ursprüngliche Frage

Ich habe das gelesen, um ein RGB -Pixel in graukale RGB umzuwandeln, sollte man verwenden

r_new = g_new = b_new = r_old * 0.3 + g_old * 0.59 + b_old * 0.11

Ich lese und verstehe das auch g hat eine höhere Gewichtung, weil das menschliche Auge empfindlicher gegenüber grün ist. Als ich dies implementierte, sah ich, dass die Ergebnisse die gleichen waren, wie ich es erhalten würde, wenn ich ein Bild auf 'Grauskala' in einem Image -Editor wie The GIMP einstellen würde.

Bevor ich dies las, stellte ich mir vor, dass man es in HSL oder HSV umwandeln würde, um ein Pixel in eine Grauskala umzuwandeln, und dann die Sättigung auf Null einstellen (damit alle Farbe entfernen). Als ich dies tat, bekam ich jedoch eine ganz andere Bildausgabe, obwohl es auch fehlgeschlagen war.

Wie geht es s = 0 Unterscheiden Sie sich genau von der "korrekten" Art, wie ich gelesen habe, und warum ist es "falsch"?

Laufende Ergebnisse basierend auf Antworten und anderen Forschungsergebnissen

Es scheint, dass die zu verwendenden Luminanzkoeffizienten Gegenstand einer Debatte ist. Verschiedene Kombinationen und grausikale Algorithmen haben unterschiedliche Ergebnisse. Im Folgenden sind einige Voreinstellungen in Bereichen wie TV -Standards verwendet:

  • Die durch ITU-R BT.601 (NTSC?) definierten Koeffizienten sind 0.299r + 0.587g + 0.114b
  • Die durch ITU-R BT.709 (neueren) definierten Koeffizienten sind 0.2126r + 0.7152g + 0.0722b
  • die Koeffizienten gleicher Drittel, (1/3)(rgb), ist äquivalent zu s = 0

Dies wissenschaftlicher Artikel Detailliert verschiedene Graustufen -Techniken und ihre Ergebnisse für verschiedene Bilder sowie subjektive Untersuchungen von 119 Personen.

Bei der Konvertierung eines Bildes in eine Grauskala, um den „besten“ künstlerischen Effekt zu erzielen, wird man diese vordefinierten Koeffizienten mit ziemlicher Sicherheit nicht verwenden, aber den Beitrag von jedem Kanal zur Erzeugung der besten Ausgabe für das bestimmte Bild optimiert.

War es hilfreich?

Lösung

Obwohl diese Transformationskoeffizienten existieren, bindet Sie nichts daran, sie zu verwenden. Solange die Gesamtintensität jedes Pixels unverändert bleibt, können die Beiträge von jedem Kanal irgendetwas zwischen 0 und 100%liegen.

Fotografen, die Bilder in Graustufen konvertieren, verwenden Kanalmixer, um die Pegel jedes Kanals (RGB oder CMYK) anzupassen. In Ihrem Bild gibt es viele Rot- und Grün- und Grünen, sodass es wünschenswert sein kann (abhängig von Ihrer Absicht), diese Kanäle in der Graustufeintensität stärker als das Blau dargestellt zu haben.

Dies unterscheidet die "wissenschaftliche" Transformation des Bildes von einer "künstlerischen" Kombination der Bänder.

Eine zusätzliche Überlegung ist der dynamische Wertebereich in jedem Band und versucht, sie im Graustufenbild zu bewahren. Das Steigungsschatten und/oder Highlights erfordern beispielsweise möglicherweise den Beitrag des blauen Bandes.

Andere Tipps

Ein interessanter Artikel zum Thema hier ... "Weil menschliche Augen Helligkeit nicht linear mit Farbe erkennen".

http://www.scantips.com/lumin.html

Sieht so aus, als wären diese Koeffizienten aus der alten CRT -Technologie und sind nicht gut an die heutigen Monitore angepasst, von der Farb -FAQ:

Die Koeffizienten 0,299, 0,587 und 0,114 ordnungsgemäß berechnet für Monitore mit Phosphoren, die bei der Einführung des NTSC -Fernsehens im Jahr 1953 zeitgemäß waren Luminanz für zeitgenössische Monitore.

Konnte jedoch nicht den richtigen Konversionskoeffizienten finden.

Siehe auch RGB zu monochromem Umbau

Verwendung s = 0 In HSL/HSV und der Konvertierung in RGB führt dazu R = G = B, so ist das gleiche wie zu tun r_old * 1/3 + g_old * 1/3 + b_old * 1/3.

Um zu verstehen, warum, schauen Sie sich das an die Wikipedia -Seite Das beschreibt Conversion hsv-> rgb. Sättigung s wird 0 sein, also C und X wird auch sein. Sie werden enden mit R_1,G_1,B_1 Sein (0,0,0) und dann hinzufügen m zu den endgültigen RGB -Werten, die dazu führen (m,m,m) = (V,V,V). Gleiches gilt für HSL, das Ergebnis wird sein (m,m,m) = (L,L,L).

Bearbeiten: OK, habe gerade herausgefunden, dass es nicht die vollständige Antwort ist, obwohl es ein guter Ausgangspunkt ist. RGB -Werte werden jeweils gleich sein, L oder V, aber es hängt immer noch davon ab, wie L und V wurden ursprünglich erneut berechnet, siehe Wikipedia. Es scheint 1/3 * R + 1/3 * G + 1/3 * B Lösung oder eine der beiden anderen (Hexcone/Bi-Hexcone).

Wenn Sie HSL/HSV verwenden, müssen Sie jedoch nur entscheiden, welche Formel früher verwendet werden soll, und die Konvertierung in RGB -Graustufenwerte später isoliert nur die letzte Komponente.

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