Anzeige

[PHP] Kontrast bewerten

[PHP] Kontrast bewerten | PSD-Tutorials.de

Erstellt von progfrog, 24.08.2009.

  1. progfrog

    progfrog programming & 3d

    1
    Dabei seit:
    13.06.2007
    Beiträge:
    288
    Geschlecht:
    männlich
    Software:
    Blender, Eclipse, Photoshop
    Kameratyp:
    Nikon D60
    [PHP] Kontrast bewerten
    Moin Community,

    und zwar bin ich gerade bei dem Versuch Text auf Bildern mit PHP zu entschlüsseln. Sozusagen Texterkennung.

    Ich bin nun schon soweit, dass ich mein Bild in Buchstaben separiert habe und diese dann jeweils nach der Übereinstimmung mit bestimmten Farben in ein Graustufenbild umwandle. Nun habe ich aber 6 Graustufenbilder, auf denen wie man sieht einige einen sehr guten Kontrast aufweisen.

    Ich stehe also vor der Aufgabe eines der Bilder anhand des Kontrastes auszuwählen. Automatisch natürlich. Hat da jemand eine Idee wie ich das angehen könnte?

    Mein momentaner Ansatz, die Pixel zu zählen, die über einem Schwellenwert liegen und die die unter einem anderen liegen funktioniert noch nicht recht. Gibt's da vieleicht sogar nen Algorithmus?

    [​IMG]

    Warum mache ich sowas? Ich möchte mich spaßeshalber der Herausforderung stellen Captchacodes zu knacken. Ich hasse diese Dinger, da es auch viele andere und bei weitem bessere Möglichkeiten gibt Mensch und Maschine zu unterscheiden. Falls es dich interessiert, hier ein guter Artikel zum Thema Barrierefreie Captchas. Ich schreibe das hier nur, damit nicht der Verdacht aufkommt ich würde irgendwelche kriminellen Ziele damit verfolgen. Ich sehe es lediglich als Herausforderung der ich mich stellen möchte.

    Ich würde mich über eine zeitnahe Antwort freuen, da ich gerade am programmieren bin und eben nicht weiterkomme.
    Gruß progfrog



    [Edit]
    Ich habe mich jetzt einige Stunden damit rumgeschlagen und eine einigermaßen passable Lösung gefunden, die mir für meine bisher ausprobierten Captchas - dürften 24 sein - das beste Bild raussucht.

    Da ich es immer ätzend finde wenn Leute was fragen und selbst ne Lösung finden, die anderen aber nicht daran teilhaben lassen, möchte ich nochmal meine Methode darlegen. Ich bin davon aber zweifelsohne noch nicht überzeugt und würde mich weiterhin über Ideen freuen.

    Also ich habe wie im Screenshot zu sehen erstmal für jeden Bild ein Histogramm ausgerechnet. Hier habe ich festgestellt, ob das Bild mehr dunkel als helle Bereiche hat. Wenn ja wird es invertiert. Also alle Farben werden umgekehrt.
    Nun wird geprüft ob das Bild überhaupt Bereiche hat, die dunkler sind als der Mittelwert (128, 128, 128 RGB). Wenn nein bekommt es gleich ein Ranking von 0.
    Falls nicht wird das Histogramm Balken für Balken durgegangen. Jeder Balken wird nun mit einem Faktor multipliziert. Dieser Faktor wird durch x hoch vier gebildet und hat den Effekt, dass je weiter links im Histogramm ein Wert steht, desto mehr EInfluss bekommt er. Ganz links ist der Faktor 1 und ganz rechts 0. Man kann sich das wie so eine Parabelkurve vorstellen.
    Der Abschnitt für die Grautöne im Histogramm, also von (90, bis 200) wird nicht in das Ranking mit einbezogen.

    Mag alles etwas kryptisch klingen aber ist aus reinen Erfahrungswerten in den letzten Stunden entstanden. Da ich so aber z.B. 256 mal mit 4 Potenzieren muss, wäre ich über eine elegantere Lösung schon dankbar.

    So sieht das ganze im Browser momentan aus. Die Zahlen im Histogramm sind die Anteile an dunklen und hellen Grautönen. Links dunkel rechts hell.
    [​IMG]

    Gruß progfrog
     
    Zuletzt bearbeitet: 25.08.2009
    #1      
x
×
×