C# Bild bearbeiten/manipulieren

th3_f0ss1l

Newbie
Registriert
März 2011
Beiträge
1
Hallo Leute,

ich bin auf dem Gebiet noch ein Anfänger und hoffe, dass ihr mir Tipps zu Literatur und/oder Links geben könnt, in denen beschrieben wird, wie ich bei Bildern die Helligkeit, Schärfe, Kontrast etc. bearbeiten kann.
Ich konnte bis jetzt noch nichts gescheites finden.
Vielleicht habe ich nur noch nicht die richtigen Suchwörter eingegeben.

Vielen Dank.
 
Zuletzt bearbeitet:
Ich fürchte für "aufwändigere" Sachen wie die von dir genannten musst du selbst Methoden schreiben, da ich mir nicht vorstellen kann, dass C# sowas schon von sich aus beinhaltet und man nur sagen muss "Mach mal heller".

Von daher müsstest du danach suchen, wie man generell Bilder bearbeiten kann. (Graphic wäre eine Möglichkeit, aber ist für deinen Anwendungsbereich wohl nicht die Beste. Ich bin mir nicht ganz sicher, aber eventuell gibt es da noch spezielle Methoden unter Image oder Bitmap, die die notwendigen Sachen wie Bildinformationen auswerten mit sich bringen)
 
Da musst du dir schon selber Algorithmen ausdenken, wie du die Bilder manipulieren willst.
Da gibt es einen "mache das Bild heller"-Befehl. Es sei denn, du findest schon eine fertige Bibliothek, die dir solche Funktionen zur Verfügung stellt.
Es spielt ja schon eine Rolle, welche Bildformate du eigentlich manipulieren möchtest. Sind es S/W-, Graustufen-, 16 Farben-, ... Bilder oder sogar Bilder mit 24 Bit Farbtiefe? Wie werden die Informationen der Bilder gespeichert, etc? Helligkeit wird das geringste Übel sein. Bei Schärfe sieht es schon deutlich komplizierter aus. Da ist hohe Mathematik erforderlich. Du könntest aber hiermit anfangen:
http://de.wikipedia.org/wiki/Bildverarbeitung
 
"Mach mal heller" geht recht einfach, bei der DrawImage-Funktion kann man ImageAttributes mit angeben und dafür kann man einene ColorMatrix definieren:

Code:
                      ImageAttributes imgAttributes = new ImageAttributes();
                        float[][] colorMatrixElements = { 
   new float[] {1,  0,  0,  0, 0},        // red scaling factor
   new float[] {0,  1,  0,  0, 0},        // green scaling factor
   new float[] {0,  0,  1,  0, 0},        // blue scaling factor
   new float[] {0,  0,  0,  1, 0},        // alpha scaling factor
   new float[] {0.2,  0.2,  0.2,  0, 1}};       // translations

                        ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);

                        imgAttributes.SetColorMatrix(
                           colorMatrix,
                           ColorMatrixFlag.Default,
                           ColorAdjustType.Bitmap);
Das würde z.B das ganze Bild 20% heller machen, man kann auch Farbanteile tauschen z.B alles was Rot ist Grün und umgekehrt:
Code:
   new float[] {0,  1,  0,  0, 0},        // red scaling factor
   new float[] {1,  0,  0,  0, 0},        // green scaling factor
   new float[] {0,  0,  1,  0, 0},        // blue scaling factor
   new float[] {0,  0,  0,  1, 0},        // alpha scaling factor
   new float[] {0,  0,  0,  0, 1}};       // translations
Unschärfe etc sind aber nicht möglich, höchstens Alphachannel aus Farbanteilen berechnen.
 
Zurück
Oben