Як реалізувати порівняння або розпізнавання зображень

Є багато картинок 7px на 14px. На кожному зображенні чорна цифра на білому тлі. Однакові цифри зовні однакові, тобто людина оком не може відрізнити 9 на одній картинці, від 9 на іншій. Усього 10 різних зовні картинок. Отримано ці картинки якимось явно автоматичним способом. Завдання - зрозуміти, на якому малюнку яка цифра.

Перше, що я спробував – вирахував хеш. Він, на жаль, мабуть через якісь стиски у картинок з однаковою цифрою різний.

Далі виникла ідея вважати чорні, наприклад, пікселі та їх кількість у певному діапазоні говоритиме про те, що цифра потрібна. Довго копався у мануалах ImageMagik, але не зрозумів, як можна кількість пікселів якогось кольору порахувати.

Прошу підказати мені, як це зробити або де можна прочитати про те, як це зробити. Чи, можливо, є простіше рішення? Може, якісь лінуксові розпізнавалки простенькі? Користуюсь я php. А картинки тираються із сайту за допомогою curl. Ідеальна точність не потрібна.

Буду дуже вдячний за будь-які ідеї/підказки.

Найпростіше, це написати програму, яка зафарбовуватиме всі не білі кольори в чорні, далі порівнюватиме попіксельно з шаблонами і найбільшим відсотком збігів вважати за відповідь.

По хеш природно нічого не вийде - картинки то хоч і однакові на вид, але не факт що ті ж.

Друга ваша ідея вже ближча до адекватних рішень. По суті, вам потрібно порахувати гістограму для зображення (кількість білих пікселів у кожній колонці). Вважати пікселі просто – для цього просто потрібно обійти кожен піксель зображення, визначити його колір (білий або чорний) та інкрементувати лічильники у разі білого кольору.

Для кожної цифри ці гістограми будутьвідрізнятися, а між видом подібними зображенням вони будуть дуже схожі.

Далі можна просто запам'ятати всі гістограми, і при розпізнаванні рахувати у зображення на вході її гістограму, обчислювати розбіжність (наскільки в кожній колонці різняться значення, тут багато варіантів. Краще пошукати щось готове, в мережі таких штук вистачає) і просто вибрати той варіант, розбіжність із яким менше.

Цей метод можна класифікувати як "тупий".

Нейронки (зокрема найпростіше це буде зробити використовуючи багатошаровий перцептрон, вихідники реалізацій якого в мережі валяються в достатньому обсязі) так само хороші, але для навчання потрібна хоч якась вибірка та ще тестова вибірка цифр. Якщо у вас їх достатньо (хоча б по 5 штук на цифру) і ще стільки ж тестових образів (вони мають хоч якось відрізнятися) – то без проблем. Алгоритм там досить простий, хоча обсяги теорії можуть призвести до легкого страху.