Laden...

IMage Convertieren nach schwarz/weiß

8 Antworten
1,625 Aufrufe
Letzter Beitrag: vor 20 Jahren
IMage Convertieren nach schwarz/weiß

Servus zusammen,

kennt von euch einer eine relative schnelle methode, ein Bild in schwarz weiß zu verwandeln?

Mfg
Tobias

No Risk, No Fun

Mit einer System.Drawing.Imaging.ColorMatrix geht's ...

Code Project:
ColorMatrix Basics - Simple Image Color Adjustment

MSDN:
GDI+ Recoloring

Gruss
Pulpapex

ok das hat mir ein bischen gholfen Danke, aber leide rmacht das zeugs alle nciht kpl. schwarz weis sondern graustufen aber ich möchte nur schwarz also 255 und weiß 0 oder wars andersrum...

No Risk, No Fun

ok, dann such mal im Netz nach "1 bit dithering". Es gibt verschiedene Algorithmen. Bei einem Quellbildmaterial sieht ein Algorithmus besser aus, bei einem anderen ein anderer.

Mit folgendem Ansatz könnte das Problem auch gelöst werden (Simpel ein farbiges Bild
in ein graustufen Bild konvertieren):


Bitmap graustufe = (Bitmap)pictureBox1.Image;
int height = graustufe.Height;
int width = graustufe.Width;

for (int j = 0; j < height; j++)
{
   for (int i = 0; i < width; i++)
   {
      Color farbe;
      farbe = graustufe.GetPixel(i, j);
      graustufe.SetPixel(i, j, Color.FromArgb((farbe.R + farbe.G + farbe.B) / 3, (farbe.R + farbe.G + farbe.B) / 3, (farbe.R + farbe.G + farbe.B) / 3));
   }
}

pictureBox1.Image = graustufe;

EDIT: Sorry, dass mit den graustufen hab ich zu spät gelesen ^^

Also entweder bin ich zu blöd aber ich finde keinen einzigen algo...

No Risk, No Fun

Hallo Matrix-NTN,

der einfachste Algorithmus ist Schwellwert. Dazu nimmst du dir die LowLevelGraphicsLibrary von dr4g0n76 aus Neue Komponente: LowLevelGraphicsLibrary und fügst in der Methode in Datei cGraphics.cs an Zeile 573 hinter der Zeile


grau = (Byte)((77*rv+151*gv+28*bv)/256);

noch ein:


grau = (grau < 128) ? 0 : 255

Statt 128 kannst du natürlich auch einen zusätzlichen Parameter benutzen.

herbivore

Herzlichen Danke,

du glaubst garnich wie du mir gerade geholfen hast 😉

No Risk, No Fun