Современные
информационные технологии/Вычислительная техника и
программирование.
к.т.н., профессор Пинт Э.М., к.т.н., доцент Яшин
А.В.,
к.т.н., доцент Еличев К.А., к.т.н., доцент Козицын
В.С.
ГОУ ВПО «Пензенский ГУАС», Россия
ФГОУ ВПО «Пензенская ГСХА», Россия
Оригинальный алгоритм
распознавания компьютером кодовой записи направлений контура печатного знака
Создание
читающего устройства до настоящего времени является актуальной проблемой.
Читающее устройство должно выполнять две основные функции: воспринимать сигналы
изображения знаков текста и распознавать каждый знак. Если задача восприятия
изображения знаков в настоящее время не вызывает трудностей, то задача
распознавания печатных знаков разных шрифтов до сих пор актуальна.
Разработанное
авторами читающее устройство состоит из фотоэлектронной системы считывания
печатных знаков и компьютера. При помощи фотоэлектронной системы считывания
изображение знака дискретно преобразуется в электрические импульсы, поступающие
в определенном порядке в запоминающее устройство компьютера. Печатный знак
оказывается как бы вписанным в дискретную прямоугольную матрицу, состоящую из
ячеек запоминающего устройства компьютера, где заполненные ячейки соответствуют
элементам изображения знака.
Авторами
была разработана программа для компьютера, реализующая предложенный метод
распознавания печатных знаков разных шрифтов. Кратко остановимся на сути этого
метода. Компьютер по программе, начиная с заполненной ячейки с наименьшим
номером, обходит дискретно представленный знак по так называемым главным
направлениям, то есть по контуру. Так как линии контура печатного знака имеют
толщину, которая к тому же непостоянная для разных знаков, необходимо выделять
главные направления и совершать обход по ним, не принимая во внимание направления,
возникающие от толщины линий, а также от декоративных украшений, дефектов и
т.п. Поэтому главное направление выбиралось как направление, имеющее количество
заполненных ячеек матрицы, большее или равное весу, а вес (определенное
количество ячеек матрицы) выбирался больше количества ячеек, составляющих
толщину линий знака. Были выбраны восемь главных направлений. Если эти направления
направить из центра окружности, то соседние направления окажутся сдвинутыми на
450 (рисунок 1).
Рисунок 1 – Схема к
пояснению выбора направлений обхода
Компьютер
для каждой заполненной ячейки матрицы отыскивает возможные направления,
образуемые соседними с исследуемой заполненными ячейками по всем восьми
направлениям, для последующего перехода по главному направлению на соседнюю
ячейку.
При
обходе по контуру встречаются случаи, когда выявляются лишь направления, где
количество заполненных ячеек меньше веса (так называемой суммы). Тогда обход совершается
в сторону направления имеющего наибольшую сумму ячеек.
Во время
обхода по направлениям производится так называемое стирание по толщине и
стирание исследованной ячейки, то есть стирание содержимого заполненных ячеек,
составляющих толщину линий знака и стирание содержимого исследованной по восьми
направлениям ячейки. Это делается для того, чтобы толщина линий не изменяла
направление обхода (в противном случае линия будет обходиться несколько раз) и
чтобы исключить возможность обхода по только что пройденному пути.
Знак
после обхода по контуру представляется в виде номеров главных направлений и
некоторых сумм. Например, как следует из рисунка 2 запись по направлениям буквы
«Г» с учетом стирания по толщине будет 333333211.
Рисунок 2 – Схема к
пояснению записи по направлениям буквы «Г» с учетом стирания по толщине
Полученная
после обхода по контуру последовательность направлений упрощается с целью
исключения нехарактерных наклонов вертикальных и горизонтальных линий, то есть
их выпрямления и с целью исключения нехарактерных отклонений наклонных линий.
Как показал анализ, при этом ликвидируются определенные дефекты, например,
размывы линий знака и отклонения формы от стандартной.
Полученная
упрощенная запись знака по направлениям сравнивается со стандартными видами
(эталонами) для определения знака. Каждому печатному знаку одного смыслового
символа и определенного стиля написания независимо от шрифта соответствует определенный
стандартный вид. По разработанному алгоритму при сравнении записи знака по
направлениям с любым стандартным видом подсчитывается возможное количество несовпадений.
После окончания сравнения со всеми стандартными видами по меньшему количеству несовпадений
определяется знак.
Сравнение
записи знака по направлениям со стандартным видом (эталоном) согласно выбранной
в результате анализа методике идет следующим образом. Первый номер направления
из стандартного вида сравнивается по порядку с первым номером направления из
записи знака по направлениям. Если номера совпадают, то они стираются из
стандартного вида и из записи знака по направлениям. Если совпадения нет, то
номер направления из стандартного вида сравнивается со следующим по порядку
номером направления из записи знака по направлениям и т.д. до совпадения
номеров. После совпадения номеров следует очередной номер направления из
стандартного вида, который сравнивается с оставшимися номерами записи знака по
направлениям. Если после n сравнения совпадения номеров не произошло, стирания нет, то при n+1 сравнении очередной
номер из стандартного вида сравнивается с номерами направлений из записи знака
по направлениям, следующими за стертым номером после n – 1 сравнения; если и
ранее не было совпадений, сравнение начинается с первого номера направления из
записи знака по направлениям. Сравнение заканчивается, либо когда все номера
стандартного вида прошли цикл сравнения, либо когда за стертым номером в записи
знака по направлениям не следует очередного номера направления. Количество
несовпадений подсчитывается путем сложения оставшихся номеров в стандартном
виде и в записи знака по направлениям.
Логическая
схема этой части программы:
где – оператор, который
вносит определенное число в индексный регистр; или – правый знак перехода; – оператор переадресации по индексу; – оператор формирования; – оператор переноса из одних ячеек оперативной памяти в
другие; – арифметический оператор; – логический оператор; – левый знак перехода; – операторы , .