2016-04-18 6 views
1

Ich muss erkennen, ob der Kreis übermalt ist oder nicht. Ich habe versucht, Konstruktion wie folgt aus:So erkennen Sie die Farbe des Kreises im Bild mit PHP

for ($i=1; $i <= 10; $i++) { //FOR LINE 
    for ($line=1; $line <= 4; $line++) { //FOR COLUMN 
     $rgb = imagecolorat($img, $x_start, $y_start); 
     $r = ($rgb >> 16) & 0xFF; 
     $g = ($rgb >> 8) & 0xFF; 
     $b = $rgb & 0xFF; 
     //Detect black or white - how? 
     $y_start -= 50; 

    } 
    $x_start += 52; 
    $y_start = 1023; 
    echo '-----------------------------<br>'; 
} 

Aber trotz der Tatsache, dass ich weiß nicht, wie Farbe zu erkennen, einige Pixel im Kreis Nummer verweisen, deshalb schreiben sie, dass dieser Kreis ist schwarz, aber in der Tat, es ist weiss. Wie behebt man dieses Problem und wie erkennt man schwarze Farbe? Vielen Dank.

View attached file

Antwort

3
  1. Da es keine wirkliche Farbinformation ist, konvertieren Sie das Bild zuerst in Graustufen Ihre Verarbeitung zu vereinfachen.

  2. Dann verwischen Sie das Bild leicht, so dass kleine Variationen im Scan geglättet werden.

  3. Dann schwellen Sie das Bild, so dass es nur aus reinen schwarzen und weißen Tönen besteht und alle Werte werden 0 oder 255 sein und Ihre Aufgabe wird einfach sein.

Hier verwendete ich ImageMagick die obigen Schritte wie dies zu tun: auf Schritt 2

convert score.jpg -rotate 90 -blur 0x2 -threshold 50% result.png 

enter image description here

Als Alternative können Sie eine kleine 3x3 oder 5x5 Medianfilter verwenden könnte zu füllen Irgendwelche Löcher in den Stiften in Kreisen. Eine andere Option könnte eine morphologische Dilatation sein, um die Löcher zu füllen.

Auch für Studenten aufgepasst, die in mehr als einem Kreis füllen ;-)

0

hängt davon ab, wie viel Energie Sie investieren wollen. Wenn Sie die Position jedes Feldes festgelegt haben (die Scans sind alle gleich), müssen Sie keine Positionsprüfung durchführen (mit diesen schwarzen Quadraten in den Ecken) und einfach größere Proben erstellen und die durchschnittliche Farbe in jeder Probe (Probe) berechnen ein Antwortfeld sein). Wenn die durchschnittliche Farbe einer Probe schwarz ist, ist sie wahrscheinlich gefüllt. aber einige Studenten können Kreuz verwenden, um ihre Antwort zu korrigieren, und dann ist diese Lösung nicht perfekt.