Распознавание рукописного ввода

Введение В данной статье пойдет речь о методе распознавания рукописного ввода путем математического анализа всех точек плоскости и перебора всех возможных комбинаций с целью отыскать наиболее лучшее наложение контрольных точек на ранее описанные фигуры. Поясню. Рукописный ввод — это рисование мыслимым «пером» определенной фигуры. Рисование в компьютерных системах — это сохранение в графической памяти информации обо всех пикселях графического контекста. «Точка на плоскости» в математике — понятие абстрактное. В компьютерной же графике за этим понятием скрывается «пиксель». Данный алгоритм распознавания будет анализировать предоставленный ему набор точек (пикселей) и пытаться в нем отыскать наиболее возможную и похожую фигуру. Фигура, в свою очередь, это каркас, содержащий лишь основные (контрольные) точки, делающие фигуру уникальной. Матчасть Вообще говоря, сердце алгоритма — всем известная со времен школы Теорема Косинусов, являющаяся обобщенной теоремой Пифагора. Зная координаты трех точек плоскости и их порядок «появления» на ней, мы можем с легкостью определить угол, описанный этими точками (Вершина угла — вторая по счету точка): image A (x1; y1) B (x2; y2) C (x3; y3) расстояния между точками находятся по теореме Пифагора a^ = b^ + c^ — 2*b*c*cos (ALPHA) cos (BETA) = (b^+c^-a^) / 2*b*c Зная косинус, величину угла легко можно вычислить. Среди набора точек, которые подаются на вход алгоритма, необходимо «подставить» точки во всевозможные каркасы фигур (о них выше) и выбрать наилучшее решение среди найденных. Делается это следующим образом: Мы берем первую и последнюю точки каркасов фигур. Уже две есть, осталось отыскать третью (для нахождения величины угла). Поиск третьей осуществляется перебором все последующих точек после первой. Решение включать точку в предполагаемый каркас фигуры принимается на основе двух анализов: Попытка подставить точку в угол (в качестве третьей, заключительной) и проверить его на соответствие величине того же угла в каркасе реальной фигуры. Проверить отношение сторон получившегося угла с тем же отношением сторон угла в каркасе реальной фигуры. Если эти два условия выполняются, то алгоритм принимает решение о включении точки из набора точек в мыслимый каркас (при этом увеличиваем величину похожести на текущую анализируемую фигуру). Если, допустим, у нас есть несколько анализируемых каркасов, например,»8» и »6». И результат алгоритма распознавания:»8»-80%,»6» — 90%, то решение принимается в пользу той фигуры, в каркасе которой присутствует больше контрольных точек, т.е в пользу восьмерки. Процент сходства набора точек с точками в каркасе высчитывается просто: суммируются все точки, которые сошлись с теми же точками в каркасе и находится отношение. Допустим, если в каркасе N контрольных точек, а у нас сошлось M, то процент сходства — M / N * 100 Читать дальше →

© Habrahabr.ru