Wie konvertiert man ein Bitmap-Bild in c # in Schwarz-Weiß? [Duplikat]

7

Ich schreibe eine C # -Anwendung, die ein Bild öffnet und auf eine Schaltfläche klickt, die nur in Schwarzweiß angezeigt wird! Ich war sicher, viele Informationen im Internet zu finden, aber meine Recherchen gaben mir nicht viele verständliche und nützliche Informationen.

Ich habe keine Ahnung, wie ich vorgehen soll. Hat jemand einen Ratschlag? Kennen Sie ein Tutorial im Netz?

    
Flo 12.01.2011, 13:30
quelle

3 Antworten

19

Ich habe einmal eine Funktion gefunden, die eine Bitmap in Graustufen konvertiert

%Vor%

Die Funktion akzeptiert eine Bitmap als Parameter und gibt die Bitmap in Graustufen zurück.

Ich hoffe, das hilft.

    
raRaRa 12.01.2011, 13:36
quelle
7

Bitte überprüfen Sie dies: Ссылка

    
petro.sidlovskyy 12.01.2011 13:36
quelle
1

Bearbeiten Hier finden Sie eine ausführlichere Antwort: Bild in Schwarz-Weiß oder Sepia in c # konvertieren.

Es gibt viele Möglichkeiten, ein Farbbild zu entsättigen . In der Tat gibt es wahrscheinlich keinen "richtigen" oder "richtigen" Weg, dies zu tun, obwohl ein Weg korrekter ist als andere.
Ich nehme an, dass Ihr Bild im RGB-Format (Rot-Grün-Blau) ist (obwohl BGR auch üblich ist).

Der einfachste Weg, der für die meisten Fotos funktionieren sollte (aber weniger für synthetische Bilder), besteht darin, einfach den grünen Kanal der drei RGB-Kanäle zu verwenden. Menschen sind am empfindlichsten auf Schwankungen im grünen Teil des Spektrums, so dass der grüne Kanal den größten Teil des sichtbaren Bereichs abdeckt und eine gute Annäherung an das gewünschte Graustufenbild darstellt.

Eine bessere Möglichkeit, ein Graustufenbild zu erzeugen, besteht darin, einen gewichteten Durchschnitt der 3 RGB-Kanäle zu verwenden. Wenn Sie gleiche Gewichte wählen (0,33 * R + 0,33 * G + 0,33 * B), erhalten Sie ein ziemlich gutes Graustufenbild. Anderes Gewicht wird zu anderen Ergebnissen führen, von denen einige als ästhetisch ansprechender angesehen werden können, und einige können perzeptuelle Parameter berücksichtigen.

Sie können das Bild immer in einen anderen Farbraum konvertieren, der nur einen einzelnen Graustufenkanal (und zwei "Farbkanäle") hat, wie HSV (V ist die Graustufe), YUV (Y ist die Graustufen) oder La b (L ist die Graustufe). Die Unterschiede sollten nicht sehr groß sein.

Der Begriff "Entsättigung" kommt vom HSV-Raum. Wenn Sie das Bild in HSV konvertieren, den S-Kanal (Sättigung) auf Nullen setzen und das Bild rendern, erhalten Sie ein 3-Kanal-entsättigtes "Farbbild".

    
Adi Shavit 12.01.2011 13:59
quelle

Tags und Links