Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
gosy.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.11 Mб
Скачать

2. Дешифрующая программа. Контроль числа считанных штрихов. Классифицирующая программа. Распознавание направления Дешифрующая программа

Дешифрующая программа состоит из 6 частей. Первая программная часть проверяет, содержит ли считанный набор данных корректное (допустимое) число штрихов. (2) Затем следующая программная часть классифицирует все численные содержимые (длину штрихов). Если штрихи узкие ячейки собирающей области устанавливаются на значение ooh, - в противном случае на FFh. (3)Следующим программным шагом анализируются крайние знаки и определяется направление обработки. (4) Затем выполняется расчет контрольного слова и (5) его сравнение с контрольными считанными битами. (6) Последняя часть дешифрующей программы охватывает по 4-ячейки собирающей области, преобразует их в ASCII – знаки и подготавливает данные для выходной программы.

Контроль числа считанных штрихов.

В собирающей программе предусмотрен указатель собирающей области, который, как уже говорилось, во время каждой обработки окна увеличивается значение указателя на 1. После считывания существует разница между значениями в этом указателе и начальным адресом собирающей области, равная количеству считанных штрихов. Так как осмысленный набор данных ШК должен, по меньшей мере, содержать один знак для данных, то минимальное число штрихов на одну осмысленную этикетку должно составлять 20. Кроме того, общее число штриха должно делиться на 4.

Классифицирующая программа.

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

Исходя из соотношения широкий штрих/узкий =3/1, подбирается порог для классификации динамически измеренных значений. Он разделяет по мере надобности ожидаемые оценки для широких и узких штрихов. Так как независимо от направления чтения первый штрих всегда широкий из этого условия можно вывести начальное значение порога.

Пусть MS(i) – среднее значение узкого штриха;

MB(i) – среднее значение широкого штриха;

SCHW(i) – порог отнесения штриха в разряд узких или широких штрихов;

S(i) –ширина штриха

соответственно для i-того штриха.

Тогда для стартового значения справедливо

MB(1) = S(1),

SCHW(1) = 2/3 S(1).

Например, 6 единиц – широкий штрих, тогда 4 – порог.

Можно предложить следующую запись значений MS, MB и соответственно SCHW как наиболее подходящую:

1. В случае, если S(i)≤ SCHW(i) штрих i кодируется нулем. Тогда устанавливается новое значение MS, MB: MS(i+1) = (MS(i) + S(i)) / 2

MB(i+1) = (MB(i) + 3S(i)) / 2

2. В случае, если S(i) > SCHW(i) штрих i соответствует коду единица.

В этом случае определяется MB(i+1) = (MB(i) +S(i)) / 2

MS(i+1) = (1/3 S(i) + MS(i)) / 2

Значение нового порога в обоих случаях получается

SCHW(i+1) = (MS(i+1) +MB(i+1)) / 2

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

Получаются следующие цифровые значения:

i

S(i)

MS(i)

MB(i)

SCHW(i)

0

-

10

30

20

1

30

10

30

20

2

10

10

30

20

3

9

9

28

18

4

8

8

26

17

5

7

7

23

15

6

6

6

20

13

7

5

5

17

11

8

15

5

16

10

9

13

4

14

9

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

Например, для рассматриваемой иллюстрации получаем результат развертки:

S(i) – результат развертки

Содержимое ячеек

после классификации

30

FF (широкий)

10

00 (узкий)

9

00 (узкий)

8

00 (узкий)

7

00 (узкий)

6

00 (узкий)

5

00 (узкий)

15

FF (широкий)

13

FF (широкий)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]