Распознавание символов

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by zingeon, 9 May 2015.

  1. zingeon

    zingeon New Member

    Joined:
    9 May 2015
    Messages:
    2
    Likes Received:
    1
    Reputations:
    0
    Нашел программу на Delphi, которая распознает буквы латинского алфавита (по одной).
    http://codes-sources.commentcamarche.net/source/49762-reconnaissance-de-caracteres-ocr

    На холсте размером 100*100 пикселей пользователем рисуется буква (изображение бинарное: черная буква на белом фоне) таким образом: http://prntscr.com/7389w3. При запуске программы формируется набор эталонов для каждой буквы латинского алфавита шрифта Arial 72 кегля (каждая буква - массив из 10000 элементов: 1 или 0 (заполненная или незаполненная области)) . При распознавании нарисованной буквы (для создания ее образа формируется тоже массив такого же типа, как и для эталонных букв описанных выше из 10000 элементов) она сравнивается с каждой эталонной. После этого формируется коэффициент подобия для каждой буквы таким образом:

    • Если определенная позиция пикселя в массиве образа, который распознается, соответствует «0», а та же позиция у массива обучающей выборки соответствует «1», то общий результат уменьшается на 100;
    • Если определенная позиция пикселя в массиве образа, который распознается, соответствует «1», а та же позиция у массива обучающей выборки соответствует «0», то общий результат уменьшается на -15;
    • Если определенная позиция пикселя в массиве образа, который распознается, соответствует «1», а та же позиция у массива обучающей выборки соответствует «1», то общий результат увеличивается на 100;

    Вот тут и возникает вопрос: на основе каких математических теорий это основывается? может кто знает или имеет догадки? буду очень признателен!
     
    KIR@PRO likes this.
  2. smack

    smack Active Member

    Joined:
    25 Aug 2013
    Messages:
    210
    Likes Received:
    157
    Reputations:
    3
    Машинное обучение.
     
    scrat likes this.
  3. zingeon

    zingeon New Member

    Joined:
    9 May 2015
    Messages:
    2
    Likes Received:
    1
    Reputations:
    0
    имеется в виду вот эта логика прибавления/отнимания чисел 100, -15, -100 - что лежит в основе этого?
     
  4. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    В данном случае это не машинное обучение, как сказал smack. Хотя оно часто используется для задач распознавания образов. Подробнее смотри https://www.coursera.org/course/ml

    Здесь же сделана логика вычитания одного изображения из другого. Из каких соображений взяты числа 100 и 15? Думаю, что простой прикидкой. Если взять числа 200 и 10, то при применении алгоритма количество неправильно распознанных символов изменится. Это как раз в машинном обучении изучается.

    Вот хороший скринкаст с похожим алгоритмом: