Laden...

IMage Convertieren nach schwarz/weiß

Erstellt von Matrix-NTN vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.493 Views
M
Matrix-NTN Themenstarter:in
267 Beiträge seit 2005
vor 18 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

P
939 Beiträge seit 2003
vor 18 Jahren

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

Code Project:
ColorMatrix Basics - Simple Image Color Adjustment

MSDN:
GDI+ Recoloring

Gruss
Pulpapex

M
Matrix-NTN Themenstarter:in
267 Beiträge seit 2005
vor 18 Jahren

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

P
939 Beiträge seit 2003
vor 18 Jahren

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.

M
8 Beiträge seit 2005
vor 18 Jahren

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 ^^

M
Matrix-NTN Themenstarter:in
267 Beiträge seit 2005
vor 18 Jahren

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

No Risk, No Fun

49.485 Beiträge seit 2005
vor 18 Jahren

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

M
Matrix-NTN Themenstarter:in
267 Beiträge seit 2005
vor 18 Jahren

Herzlichen Danke,

du glaubst garnich wie du mir gerade geholfen hast 😉

No Risk, No Fun