Biildcharacteristik ermitteln

01/01/2008 - 15:35 von Ulf Kadner | Report spam
Hallo und gesundes neues Jahr allen.

Wie würdet Ihr das prgrammatisch performat lösen wenn sich folgendes
Problem stellt.

Es existiert ein Verzeichnis mit verschiedenen Grafikdatein (jpeg, bmp,
gif, png) in ganz verschiedenen Größen (40kb bis 2MB)

Aus dem Verzeichnis soll ein Bild ausgewàhlt werden, das zu den
aktuellen Tageslichtbedingungen past. Für die Nacht Bilder mit dunkleren
Character und für den Tag Bilder mit hellen Character.

Also müssen alle Grafiken im Verzeichnis auf diese Anforderungen
analysiert werden.

Mir ist bisher eingefallen pixelweise die Helligkeit zu ermitteln und
daraus für alle Pixel des Bildes den Durchschnitt zu ermitteln.

Das erscheint mir aber eher suboptimal da sich das bei 50 oder mehr
Bildern schon ganzschön zeitlich in die Lànge streckt.

Also habe ich mit Image.GetThumbnailImage() ein 10x10 px großes
Thumbnail vom Bitmap erstellt und analysiere dort nur die wenigen Pixel.

Die Methode funktionert soweit auch wie gewünscht. Allerdings muß halt
immernoch das Bitmap vom Bild erstellt werden und das scheint wesentlich
mehr an der Performace zu zerren wie die Helligkeitsberechnung.

Ist da jemand irgend eine Möglichkeit bekannt dies performanter zu lösen?

MfG, Ulf
 

Lesen sie die antworten

#1 Thomas Scheidegger
01/01/2008 - 16:00 | Warnen spam
Hallo Ulf

Mir ist bisher eingefallen pixelweise die Helligkeit zu ermitteln und
daraus für alle Pixel des Bildes den Durchschnitt zu ermitteln.
Ist da jemand irgend eine Möglichkeit bekannt dies performanter zu


lösen?


für den Zugriff auf die Roh-Pixeldaten (Basis GDI+, 2.0) dürfte mit managed
Code wohl am schnellsten sein:
http://www.google.com/search?q=%2Bb...2BLockBits
http://www.bobpowell.net/lockingbits.htm

für WPF (3.0) gibts evtl. andere Ansàtze.

Andernfalls dürfte ein markante Beschleunigung fast nur
per hochspezifisch-optimierte Image-Processing Libs (C++, ggf bis Assembler)
möglich sein...





Thomas Scheidegger - 'NETMaster'
http://www.cetus-links.org/oo_dotnet.html - http://dnetmaster.net/

Ähnliche fragen