AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Farbe von Bildschirminhalt ermitteln ?
Thema durchsuchen
Ansicht
Themen-Optionen

Farbe von Bildschirminhalt ermitteln ?

Ein Thema von Blamaster · begonnen am 1. Jul 2009 · letzter Beitrag vom 19. Jul 2009
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#1

Re: Farbe von Bildschirminhalt ermitteln ?

  Alt 3. Jul 2009, 10:57
Ich hab nun mal ein wenig rumprobiert, allerdings quick & dirty, ohne auge auf die geschwindigkeit, und auch erstmal nur in C# (weil ich grad keine Lust hatte mein XP System zu booten ). Ich bin dabei den Weg über HSV gegangen, und mit folgender Taktik habe ich bisher ganz nette Ergebnisse gehabt:

Pre 1) Farbstreifen an den Bildrändern, nicht weiter unterteilt.
Pre 2) Für einen Streifen betrachte 1/8 Breite bzw. Höhe des angrenzenden Bildteiles.

A) Laufe durch alle Pixel eines Bereiches:
1) Umwandlung in HSV
2) Wenn S und V einen Mindestwert überschreitet, Eintrag in einer Liste an der Position von H um 1 erhöhen (bedingtes Hue-Histogramm erstellen)
3) Unabhängig davon S und V aufkummulieren (um später einen einfachen Durchschitt draus zu berechnen)

B) Laufe durch das Hue-Histogramm:
1) Finde den höchten Eintrag
2) Wenn der Eintrag > 5% der Gesamtpixelanzahl des Bereiches ausmacht, Aufkummulieren des H-Wertes - Zähler mitführen wie viele Werte man da zusammenrechnet.
3) Wenn 2 zutrifft, diesen Eintrag löschen und bei 1) weitermachen
(So lange Einträge aufsummieren bis kein Wert mehr >5% Beitrag hat. Sind meist nicht mehr als 2-5 Farbwerte.)

C) Erzeugen der Durchschnitte
1) H-Summe / Anzahl der Hue-Einträge mit >5% Beitrag an der Pixelmasse
2) V-Summe / Gesamtpixel des Bereiches
3) S-Summe / Gesamtpixel des Bereiches

D) Zurückwandeln in RGB


Die Mindestwerte aus A2 sind hier recht entscheident, gute Ergebnisse hab ich mit S>75% und H>30% erzielt. Da ist aber mächtig Spielraum. Ebenso verhält es sich mit den 5% aus B2. Ich hatte auch mit 10% und 2% durchaus noch sinnvolle Ergebnisse. Hier lohnt es sich eine größere Menge sehr unterschiedlicher Bilder anzuschauen, und diese 3 Werte so zu wählen dass sie möglichst immer gut aussehen. Ist halt Fummelei.
Der Vorteil hier ist, dass wenn 2 sehr unterschiedliche Farben dominieren ein Mittelwert aus dem Spektrum, und damit ein "guter" Verlaufswert entsteht. Bei Mittlung im RGB Raum läuft man nämlich schnell Gefahr sehr stark im Grau zu landen.

Ich hoffe dass ich am WE dazu komme das mal in Delphi auszuprobieren, und dann auch auf Geschwindigkeit zu achten. Das einzig wirklich eklige ist hierbei diese Hue-Liste, bzw. die Maxima zu finden. Einfach sortieren ist da nicht, da die Indizes ja auch einen Nutzwert enthalten und erhalten bleiben müssten. Mal schauen ob sich da nicht noch eine geschicktere Datenstruktur finden lässt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz