2013-03-28 14 views
5

Im Entwickeln einer Bild Hauterkennung App.Tun Sie etwas Ähnliches wie Auto Tone von Photoshop mit Aforge.net oder C#

Aber es gibt ein Problem mit meiner Kamera, die versuchen, das Licht zu kompensieren und das Ergebnisbild ist schlecht, in den meisten Fällen habe ich eine kalte oder warme Wirkung auf das Bild. Wenn ich Photoshop verwende, gibt es die AutoTone-Funktion, die ein Bild normalisiert und dieses Problem reduziert.

Image

Image after Photoshop AutoTone

Mit aforge i punktoperator() Filter verwenden möchten, aber das Ergebnis ist sehr schlecht:

Image after HistogramEqualization

// create filter 
HistogramEqualization filter = new HistogramEqualization(); 
// process image 
filter.ApplyInPlace(sourceImage); 

Also meine Frage ist: Es ist eine Funktion in Accord oder Aforge, um das gleiche Ergebnis zu erhalten Autotone von Photoshop? Wenn nicht, gibt es eine Bibliothek oder ein Skript, die das erlauben?

Danke euch allen.

Antwort

3

Ich verwende den LevelsLinear Filter und stützen sie auf das Bild Statistik:

ImageStatistics stats = new ImageStatistics(sourceImage); 
LevelsLinear levelsLinear = new LevelsLinear { 
    InRed = stats.Red.GetRange(0.90), 
    InGreen = stats.Green.GetRange(0.90), 
    InBlue = stats.Blue.GetRange(0.90) 
}; 

levelsLinear.ApplyInPlace(sourceImage); 

Sie können mit dem Bereich spielen das Ergebnis zu optimieren.

+0

Wow, diese Normalisierung ist perfekt! Vielen Dank. – Univers3

1

Sie möchten wahrscheinlich nicht das Histogramm entzerren, denn wie Sie sehen, würde ein Foto, das normalerweise nicht viel Rot haben würde, viel Rot erzeugt haben und es böse aussehen lassen. Stattdessen möchten Sie wahrscheinlich nach einer Tendenz zu einem Farbton suchen, der fast überall auftritt. Zum Beispiel hatte Ihr Originalfoto wahrscheinlich in fast jedem Pixel eine Tendenz zu Blau und sollte daher wahrscheinlich nicht da sein. Achten Sie auf eine minimale Verzerrung und entfernen Sie diese Menge überall.

Eine praktischere Lösung besteht darin, mit der Weißabgleicheinstellung an Ihrer Kamera zu experimentieren, um herauszufinden, was Ihnen das beste Ergebnis liefert. Wenn Sie das richtige Preset auswählen, wird ein Algorithmus verwendet, der wahrscheinlich genauso gut ist wie das, was Sie von Hand schreiben würden. Aber vielleicht machst du das als Lernerfahrung.

+0

Dies war ein Beispiel, aber mein Programm ist für Webcams gemacht, die nicht sehr viele Einstellungen haben. Ich brauche etwas in C#. – Univers3