2016-04-18 2 views
1

Мне нужно определить, окрашена ли кружка. Я попробовал конструкцию, как это:Как определить цвет круга на изображении с помощью 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>'; 
} 

Но несмотря на то, что я не знаю, как распознать цвет, некоторые пиксели указывают на номер в кругах, поэтому пишут, что этот круг черный, но, на самом деле, Он белый. Как исправить эту проблему и как определить черный цвет? Спасибо.

View attached file

ответ

3
  1. Поскольку нет никакой реальной информации о цвете, конвертировать изображение в оттенки серого первых, чтобы упростить обработку.

  2. Затем слегка смажьте изображение, чтобы сгладить крошечные варианты сканирования.

  3. Затем пороговое изображение, чтобы оно состояло только из чистых черно-белых тонов, и все значения будут 0 или 255, и ваша задача будет простой.

Здесь я использовал ImageMagick сделать вышеуказанные шаги, как это:

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

enter image description here

В качестве альтернативы на этапе 2, вы можете использовать небольшой 3x3 или 5x5 медианный фильтр для заполнения любые отверстия в карандаше в кругах. Другим вариантом может быть морфологическое расширение, чтобы заполнить отверстия.

Кроме того, следить за студентов, которые заполняют более одного круга ;-)

0

зависит от того, сколько энергии вы хотите инвестировать. если у вас есть положение каждого фиксированного поля (сканирование одинаковое), вам не нужно выполнять некоторую проверку позиции (используя эти черные квадраты в углах) и просто делать большие образцы и вычислять средний цвет в каждом образце (образец являющееся одним полем ответа). если средний цвет образца черный, он, вероятно, заполнен. но некоторые ученики могут использовать крест, чтобы исправить свой ответ, а затем это решение не идеально.

Смежные вопросы