УДК 681.3.04
ПОБУДОВА КОЛЬОРОВИХ МАТРИЧНИХ ШТРИХОВИХ КОДІВ З КОРЕКЦІЄЮ ПОМИЛОК
ТАРАСЕНКО В.П., ДИЧКА I.A.
Пропонується спосіб корекції багатократних помилок в кольорових матричних штрихових кодах, який дозволяє підвищити завадостійкість штрихкодових позначок. Особливістю алгоритму виправлення помилок є простота реалізації та підвищена швидкодія порівняно з існуючими способами.
1. Вступ
Штрихові коди (ШК) є одним з видів автоматичної ідентифікації [1,2]. Серед ШК помітне місце посідають матричні штрихові коди (МШК) — завдяки значній ємності їх штрихкодових позначок (ШК-позначок).
Відомі МШК є чорно-білими [3]. Однак, якщо для розфарбовування елементів ШК-позначок застосовувати понад два кольори (такі МШК називатимемо кольоровими), то це дає можливість у декілька разів підвищити інформаційну щільність подан -ня даних. Кольорові МШК можуть подавати декілька тисяч алфавітно-цифрових символів.
ШК-позначка кольорового МШК складаєтьсяз різнокольорових чарунок, сформованих у вигляді прямокутної матриці, одного або кількох маркерів, які використовуються для визначення орієнтації ТТТК-позначки відносно сканера, і мірних лінійок, елементи яких задають розміри чарунок та використовувані кольори, що періодично повторюються в елементах мірної лінійки (рис. 1). Розміри ШК-позначки та чарунок задаються в модулях. Модуль (мод) — це мінімальна безрозмірна величина, якій кратні розміри всіх елементів ШК-позначки. Мінімальна чарунка має розмірність 1мод х 1 мод і площу 1 мод2.
Мірні
Рис. 1. Узагальнений вигляд кольорового МШК (кольори подано відтінками сірого)
Оскільки геометричні розміри елементів ШК-позначки надзвичайно малі (1мод=0,2^0,8мм), а ШК-позначка містить кілька тисяч елементів, то питання забезпечення належного рівня завадостійкості є актуальним, бо навіть незначне ушкодження ШК-позначки може призвести до виникнення багатократних помилок.
2. Завадостійке кодування даних
Мінімальною інформаційною одиницею МШК є штрихкодовий знак (ШК-знак), що являє собою матрицю чарунок розмірністью sxv (s — кількість рядків, v — кількість стовпців), зазвичай s,v=2,3. ШК-знак подає один алфавітно-цифровий символ (букву, цифру тощо). Якщо застосовуються спеціальні алгоритми ущільнення даних, то ШК-знак може подавати два або три текстові символи. ШК-знаки в ШК-позначці розміщуються у вигляді матриці, яку заповнюють порядково зліва направо.
Наприклад, якщо ШК-знак має розмірність 3х2 і для розфарбування чарунок використовуються три кольори, то можна створити 174 різні ШК-знаки, у яких у кожному рядку та стовпці принаймні одна чарунка відрізняється кольором від решти чарунок рядка (стовпця) (такий спосіб розфарбування запо -бігає появі великої кількості суміжних чарунок однакового кольору в матриці ШК-позначки). Це означає, що за допомогою такого набору ШК-знаків, який називається символікою, можна кодувати текстові повідомлення, символи яких належать алфавіту потужності 174.
Нехай символіка трикольорового МШК налічує N=7 ШК-знаків розмірністю 3х2 (табл.1) (малу потужність символіки взято для спрощення прикладів, що далі розглядаються). За допомогою такої символіки можна подавати будь-які текстові повідомлення, якщо попередньо кожний символ алфавіту замінити його десятковим порядковим номером в алфавіті та перетворити номер у 7-кову систему числення. Далі за допомогою такої символіки слід кодувати символи з множини M={0,1,2,...,6}.
Нехай k — довжина N-кової послідовності, яку належить подати у вигляді МШК. З кожним інформаційним словом a=(ak-i, ak-2, ..., ax, ao), a,є D = {0,1,2, ...,N-1} зв’яжемо многочлен k-1 .
a(x) =
X aix , коефіцієнти якого є відповідними i=0
координатами а. Нехай N — просте число. Тоді можна побудувати поле Галуа GF(N), у якому операції виконуються за модулем N [4]. Закодуємо слово а коректувальним кодом з твірним многочле-
ном
m
g(x) = X g jxj j=0
Операція a(x)g(x)=b(x) пород-n-1
жує кодовий многочлен
b(x) = X bzxz
степеня n-
z=0
1, якому відповідає n-розрядне кодове слово b={bn-
1, bn-2,...,b1, b0}, причому gj, bz eGF(N), n=k+m, а операції над коефіцієнтами виконуються за модулем N. Скористаємось кодом БЧХ, у якого поле символів збігається з полем локаторів помилок. Твірний многочлен такого коду подають у вигляді g(x)=(x-a)(x-a2)(x-am), де a — примітивний елемент поля GF(N). Примітивним елементом поля GF(N) називається такий елемент а, що всі елемен -ти поля, за винятком нуля, можуть бути поданими у вигляді степеня a [4]. Означений вище код БЧХ здатний виправляти t=m/2 помилок у кодових словах завдовжки n розрядів і характеризується мінімальною відстанню d=2t+1=m+1.
106
РИ, 2002, № 4
Нехай t=2, N=7. Тоді g(x) = (x-3)(x-32)(x-33)(x-34) = x4 -x3 + 3x2-5x +4 = x4+6x3 +3x2+ +2x+4 (операції над коефіцієнтами виконано за модулем N=7), де 3 — примітивний елемент поля GF(7) (всі ненульові елементи поля GF(7) є степенями елемента 3 за модулем 7).
Якщо, наприклад, задано 2-розрядне інформаційне слово a={2, 3}, якому відповідає інформаційний многочлен a(x)=2x+3, а t=2, то кодовий многочлен b(x) отримаємо як
b(x)=a(x)g (x)=(2x+3) (x4+6x3+3x2+2x+4)=
Таблиця 1. Приклад символіки трикольорового МШК на основі ШК-знаків розмірності 3х2
Символ ШК-знак Символ ШК-знак Символ ШК-знак
0 а 2 § 4 в
1 \ 3 н 5 я
=2x5+x4+3x3+6x2+5,
а кодове слово дорівнює b={2, 1, 3, 6, 0, 5}.
Кожній компоненті отриманого кодового слова b поставимо у відповідність ШК-знак з табл. 1 і отримаємо ШК-позначку на рис. 2 (без мірних лінійок та маркера); розмірність ШК-позначки — 2х3 ШК-знаки.
3. Виправлення
помилок при
зчитуванні
ШК-позначок
Рис. 2. Подання послідовності 2 1 3 6 0 5 у вигляді трикольорового МШК
Під час виготовлення, зберігання, переміщення, експлуатації ШК-позначки можливе виникнення спотворень окремих штрихкодових елементів позначки. Вважатимемо, що ушкодження деякого ШК -знака символіки МШК призводить до отримання іншого ШК-знака символіки. Отже, помилкою називатимемо перехід одного ШК-знака символіки в інший ШК-знак. В такому випадку після зчитування ШК-позначки, виокремлення кожного ШК-знака і заміни його на відповідний символ алфавіту, який він кодує, отримуємо вектор с=(сп-1, сп-2,...,с1, с0), сіє GF(N), що містить помилки. Вважатимемо, що декодеру відомі параметри m та п коректувального коду.
Зчитаному слову відповідає многочлен n-1
. Декодер обчислює значення ком-
c(x) = X Cz?
z=0 ,
понентів S1, S2,...,Sm сицдрома: Бі=с(аі). Якщо всі компоненти сицдрома дорівнюють нулю, то у зчитаному слові помилки відсутні.
многочлен локаторів помилок; v —кількість помилок; 6 Х/ — локатори помилок. Для
отримання W(x) перш за все -----
необхідно знайти Х(х).
Для знаходження многочлена локаторів помилок Х(х) скористаємося блок-схемою алгоритму на рис. 3, де r, L, А — допоміжні змінні, а B(x), T(x) — допоміжні многочлени.
Розглянемо знаходження X(x) на конкретному прикладі: нехай після зчитування ШК-позначки МШК отримано слово 233505 (подамо його у вигляді
а1: 35 34 З3 32 31 30
с: с5 с4 с3 с2 с1 с0 ,
2 3 3 5 0 5
що містить дві помилки (підкреслено), і відомо, що N=7, a=3, n=6, m=4. Цьому слову відповідає многочлен с ^)=2x5+3x4+3x3+5x2+5.
Знайдемо компоненти синдрома: S^^3)=6, S2=с(з2)=0, Sз=с(33)=1, S4=с(34)=6. Тоді за алгоритмом на рис.3 отримаємо X^)=x2+x+5 (табл.2).
Таблиця 2. Знаходження многочлена локаторів помилок 7(x)
г А г T(x) B(x) A,(x) L
0 1 1 0
1 6 1-6x=x+1 6 1-6x=x+1 1
2 6 1 6x 1 1
3 1 x2+1 1 x2+1 2
4 6 x2+x+1 x x2+x+1 2
Після знаходження X(x) необхідно знайти локатори помилок X1, X2,..., Xv. Для цього слід розв’язати рівняння X(x)=0 і знайти його корені x1, x2, ..., xv.
Нехай не всі компоненти сицдрома дорівнюють нулю, що означає, що прийняте слово с містить
помилки. Утворимо синдромний многочлен
m
S(x) = 1+Х Six1 i=1
та многочлен значень помилок
W(x) = S(x)A,(x)modxm+1,
Локаторами помилок є обернені до x/ величини:
X1 — Xj Xv — xv .
Для нашого прикладу (X(x)=x2+x+1) розв’язками рівняння X(x)=0 є x1=2, x2=4. Тоді локатори помилок дорівнюють
Xj = Xj-1 = 2= 4 = 34 mod7 (помилка в 4-му розряді (с4)),
де
V
Mx) = ^ (1 - Xjx) = Xv x v + ^v_1xv 1 +... + A^x +1 l=1
X2 = x-1 = 4= 2 = 32 mod7 (помилка в 2-му розряді (с2)).
Знаючи X(x), знайдемо многочлен значень помилок
РИ, 2002, № 4
107
W(x)=S(x)X(x)mod x5 =
= (1+6x+x3+6x4)^ (x2+x+1)mod x5=1.
Якщо відомий многочлен значень помилок W(x), то значення Yi, Y2,..., Yv помилок отримаємо з рівності
Yl = W(Xf1)
v 1 '
П а - хГ1х|)
l=1,j=1j l
Для прикладу, що розглядається,
Yi =-----1~г~ = 2, Y2 =----1—- = 6 .
1 - х^х2 1 - х21х1
У загальному випадку для виправлення помилок необхідно для кожної пари хр^р (р=1, 2, ..., v): а) записати хр у вигляді хр =аір та знайти ip — номер розряду прийнятого слова с, що містить помилку; б) для ip -го розряду прийнятого слова виконати операцію корекції: (cj - Yp)modN .
У нашому прикладі корекція помилок має вигляд:
(c4 - Y1)mod7 = (3 - 2)mod7 = 1,
(c2 - Y2)mod7 = (5 - 6)mod 7 = 6 .
Література: 1. Коваленко B.A., СолдатенкоЛ.М. Применение штриховых кодов // Приборы и системы управления. 1986. №8. С. 22-24. 2. Allais, Dr. David C, Bar code Symbology: Some Observations on Theory and Practice, Intermec, Lynnwood, WA, U.S.A., December, 1984. 3. Арманд B. A., Железнов B. B. Штриховые коды в системах обработки информации. М.: Радио и связь, 1989. 92с. 4. Р. Блейхут. Теория и практика кодов, контролирующих ошибки. М.: Мир, 1986. 576 с.
Надійшла до редколегії 07.10.2002
Рецензент: д-р техн. наук, проф. Кривуля Г.Ф.
Тарасенко Володимир Петрович, д-р техн. наук, професор, завідувач кафедри спеціалізованих комп’ютерних систем НТУУ “КПІ”. Адреса: Україна, 03056, Київ, пр. Перемоги, 37, корп. 15, к. 102, тел. (044) 2363202.
Дичка Іван Андрійович, канд. техн. наук, доцент кафедри спеціалізованих комп’ютерних систем НТУУ “КПІ”. Адреса: Україна, 03056, Київ, пр. Перемоги, 37, тел. (044) 2361063.
Отже, скориіоване зчитане слово має вигляд: 2 1 3 6 0 5. 4. Висновки
Реальна ШК-позначка кольорового МШК може налічувати кілька сотень ШК-знаків (аналогічним є значення параметра n). Передбачаючи можливу сферу застосування ШК-позначок, умов їх зберігання та експлуатації, при створенні ШК-позначок на підставі практичного досвіду та певного прогнозу необхідно з’ясувати, яким має бути параметр m, тобто визначити необхідну кількість контрольних ШК-знаків, які забезпечать потрібний рівень завадостійкості (коректувальна здатність t=m/2). Після вибору параметрів n, m генеруються ШК-позначки з відповідною здатністю виправляти помилки. Параметр m слід регулювати (зменшувати або збільшувати) залежно від якості носія ШК-позначки, умов експлуатації та середовища зберігання і зчитування МШК.
Для забезпечення потрібного рівня завадостійкості доцільно застосовувати многозначні коди БЧХ, у яких поле символів збігається з полем локаторів помилок. У цьому випадку потужність N символіки МШК має бути простим числом. Тоді при кодуванні-декодуванні даних операції виконуються за модулем N, що спрощує реалізацію декодера.
Застосування в кольорових МШК многозначних коректувальних кодів, здатних виправляти багатократні помилки, істотно підвищує завадостійкість штрихкодових позначок.
Стоп - у прийнятому слові понад m/2 помилок
B(x):=АГ'А( х)
X(x):=T(x)
L:=r-L
A r =%Х jSr _ j
j=0
Так
T(x) = X(x) - ArxB(x)
->
B(x):=xB(x)
Так
r = m
Hi
■*
Рис. 3. Блок-схема алгоритму визначення многочлена локаторів помилок X(x)
Кінець
108
РИ, 2002, № 4