stringtranslate.com

Ацтекский кодекс

Кодировка: «Это пример ацтекского символа для Википедии».

Aztec Code — это матричный код, изобретенный Эндрю Лонгакром-младшим и Робертом Хасси в 1995 году. [1] Код был опубликован AIM, Inc. в 1997 году. Хотя Aztec Code был запатентован , этот патент был официально передан в общественное достояние . [2] Aztec Code также опубликован как стандарт ISO/IEC 24778:2008. Названный в честь сходства центрального шаблона искателя с ацтекской пирамидой , Aztec Code имеет потенциал для использования меньшего пространства, чем другие матричные штрихкоды, поскольку он не требует окружающей пустой «тихой зоны».

Структура

Символ построен на квадратной сетке с рисунком «бычий глаз» в центре для размещения кода. Данные кодируются в концентрических квадратных кольцах вокруг рисунка «бычий глаз». Центральный «бычий глаз» имеет размер 9×9 или 13×13 пикселей , а вокруг него находится один ряд пикселей, кодирующий основные параметры кодирования, что создает «ядро» из квадратов 11×11 или 15×15. Данные добавляются «слоями», каждый из которых содержит два кольца пикселей, что дает общие размеры 15×15, 19×19, 23×23 и т. д.

Углы ядра включают метки ориентации, позволяющие считывать код при вращении или отражении. Декодирование начинается с угла с тремя черными пикселями и продолжается по часовой стрелке к углам с двумя, одним и нулевым черными пикселями. Переменные пиксели в центральном ядре кодируют размер, поэтому нет необходимости отмечать границу кода пустой «тихой зоной», хотя некоторые считыватели штрихкодов требуют ее.

Компактное ядро ​​кода Aztec может быть окружено 1–4 слоями, создавая символы от 15×15 (место для 13 цифр или 12 букв) до 27×27. Кроме того, существует специальная «руна» 11×11, которая кодирует один байт информации. Полное ядро ​​поддерживает до 32 слоев, 151×151 пикселей, которые могут кодировать 3832 цифры, 3067 букв или 1914 байт данных.

Любая часть символа, не используемая для основных данных, используется для исправления ошибок Рида-Соломона , и разделение полностью настраивается между пределами 1 слова данных и 3 контрольных слов. Рекомендуемое количество контрольных слов составляет 23% от емкости символа плюс 3 кодовых слова. [3]

Aztec Code должен производить читаемые коды с помощью различных технологий печати. ​​Он также хорошо подходит для дисплеев сотовых телефонов и других мобильных устройств.

Кодирование

Процесс кодирования состоит из следующих этапов:

  1. Преобразование исходного сообщения в строку битов
  2. Вычисление необходимого размера символа и сообщения режима, которое определяет размер кодового слова Рида-Соломона
  3. Вставка битов сообщения в кодовые слова Рида-Соломона
  4. Дополнение сообщения к границе кодового слова
  5. Добавление проверочных кодовых слов
  6. Расположение всего сообщения по спирали вокруг ядра

Все преобразования между строками битов и другими формами выполняются в соответствии с правилом « старший бит первым».

Набор символов

Могут быть закодированы все 8-битные значения, а также два управляющих кода:

По умолчанию коды 0–127 интерпретируются в соответствии с ANSI X3.4 ( ASCII ), а коды 128–255 интерпретируются в соответствии с ISO/IEC 8859-1 : латинский алфавит № 1. Это соответствует ECI 000003.

Байты преобразуются в 4- и 5-битные коды, основанные на текущем режиме декодирования, с кодами сдвига и защелки для изменения режимов. Значения байтов, недоступные таким образом, могут быть закодированы с использованием общего кода «двоичного сдвига», за которым следует длина и количество 8-битных кодов.

Для смены режимов сдвиг влияет только на интерпретацию одного следующего кода, тогда как защелка влияет на все последующие коды. Большинство режимов используют 5-битные коды, но режим Digit использует 4-битные коды.

За B/S (двоичным сдвигом) следует 5-битная длина. Если не ноль, это означает, что следуют 1–31 8-битных байта. Если ноль, 11 дополнительных бит длины кодируют количество следующих байтов за вычетом 31. (Обратите внимание, что для 32–62 байт две 5-битные последовательности сдвига байтов более компактны, чем одна 11-битная.) В конце двоичной последовательности возобновляется предыдущий режим.

За FLG( n ) следует 3-битное значение n . n = 0 кодирует FNC1. За n = 1–6 следуют 1–6 цифр (в цифровом режиме), которые дополняются нулями для создания 6-битного идентификатора ECI. n = 7 зарезервировано и в настоящее время недопустимо.

Сообщение о режиме

Сообщение режима кодирует количество слоев ( L слоев, закодированных как целое число L −1), и количество кодовых слов данных ( D кодовых слов, закодированных как целое число D −1) в сообщении. Все оставшиеся кодовые слова используются как проверочные кодовые слова.

Для компактных кодов Aztec количество слоев кодируется как 2-битное значение, а количество кодовых слов данных как 6-битное значение, что дает 8-битное слово режима. Для полных кодов Aztec количество слоев кодируется в 5 битах, а количество кодовых слов данных кодируется в 11 битах, что дает 16-битное слово режима.

Режимное слово разбивается на 2 или 4 4-битных кодовых слова в GF(16) и добавляются 5 или 6 контрольных слов Рида-Соломона, создавая 28- или 40-битное сообщение режима, которое оборачивается 1-пиксельным слоем вокруг ядра.

Поскольку компактный код Aztec со слоями L+1 может хранить больше данных, чем полный код со слоями L, полные коды с менее чем 4 слоями используются редко.

Самое главное, что количество слоев определяет размер используемых кодовых слов Рида-Соломона. Он варьируется от 6 до 12 бит:

Размер кодового слова b — это наименьшее четное число, гарантирующее, что общее количество кодовых слов в символе меньше предела 2 b −1, который может быть скорректирован с помощью кода Рида–Соломона.

Как упоминалось выше, рекомендуется зарезервировать не менее 23% доступных кодовых слов плюс 3 для исправления, а размер символа выбирать таким образом, чтобы сообщение помещалось в доступное пространство.

Набивка битов

Биты данных разбиваются на кодовые слова, причем первый бит соответствует самому значимому коэффициенту. При этом кодовые слова, состоящие из одних нулей и одних единиц, избегаются с помощью бит-стаффинга : если первые b −1 бит кодового слова имеют одинаковое значение, в поток данных вставляется дополнительный бит с дополнительным значением. Эта вставка происходит независимо от того, имел бы последний бит кодового слова такое же значение или нет.

Также обратите внимание, что это применимо только к строкам из b −1 бит в начале кодового слова . Более длинные строки одинаковых бит разрешены, если они выходят за границу кодового слова.

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

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

Прокладка

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

Кроме того, если общее количество бит данных, доступных в символе, не кратно размеру кодового слова, строка данных предваряется соответствующим количеством нулевых битов для заполнения дополнительного пространства. Эти биты не включаются в вычисление контрольного слова.

Проверить кодовые слова

Как слово режима, так и данные должны иметь добавленные контрольные слова для заполнения доступного пространства. Это вычисляется путем добавления K контрольных слов таким образом, чтобы все сообщение было кратно полиному Рида–Соломона ( x −2)( x −4)...( x −2 K ).

Обратите внимание, что контрольные слова не подлежат битовой подстановке и могут быть полностью нулевыми или полностью единичными. Таким образом, невозможно обнаружить стирание контрольного слова.

Изложение сообщения

9-слойный (53×53) код Aztec с опорной сеткой, выделенной красным.

Полный символ кода Aztec имеет, в дополнение к ядру, «опорную сетку» чередующихся черных и белых пикселей, занимающих каждую 16-ю строку и столбец. Компактный код Aztec не содержит этой сетки. Эти известные пиксели позволяют читателю поддерживать выравнивание с пиксельной сеткой над большими символами. Для до 4 слоев (31×31 пиксель) это состоит только из одиночных линий, простирающихся наружу от ядра, продолжая чередующийся рисунок. Однако внутри 5-го слоя дополнительные строки и столбцы чередующихся пикселей вставляются на ±16 пикселей от центра, поэтому 5-й слой расположен на ±17 и ±18 пикселей от центра, а 5-слойный символ имеет размер 37×37 пикселей.

Аналогично, дополнительные строки и столбцы опорной сетки вставляются на ±32 пикселя от центра, создавая 12-слойный символ размером 67×67 пикселей. В этом случае 12-й слой занимает кольца на ±31 и ±33 пикселя от центра. Шаблон продолжается бесконечно наружу, с 15-пиксельными блоками данных, разделенными строками и столбцами опорной сетки.

Один из способов построения символа — полностью удалить сетку ссылок и начать с ядра 14×14 пикселей, центрированного на белом квадрате 2×2 пикселей. Затем разбить его на блоки 15×15 пикселей и вставить сетку ссылок между ними.

Сообщение режима начинается в верхнем левом углу ядра и обвивается вокруг него по часовой стрелке слоем толщиной в 1 бит. Оно начинается с самого старшего бита из числа слоев и заканчивается контрольными словами. Для компактного кода Aztec оно разбивается на четыре 7-битных части, чтобы оставить место для меток ориентации. Для полного кода Aztec оно разбивается на четыре 10-битных части, и каждая из этих частей делится пополам опорной сеткой.

В некоторых случаях общая емкость матрицы не делится поровну на полные кодовые слова. В таких случаях основное сообщение дополняется нулевыми битами в начале. Эти биты не включаются в расчет контрольного слова и должны быть пропущены при декодировании. Общая емкость матрицы для полного символа может быть рассчитана как (112+16*L)*L для полного кода Aztec и (88+16*L)*L для компактного кода Aztec, где L — размер символа в слоях. [4] Например, общая емкость матрицы компактного кода Aztec с 1 слоем составляет 104 бита. Поскольку кодовые слова состоят из шести бит, это дает 17 кодовых слов и два дополнительных бита. Два нулевых бита добавляются к сообщению в качестве дополнения и должны быть пропущены при декодировании.

Основное сообщение с заполнением начинается с внешнего верхнего левого угла всего символа и спирально обвивается вокруг него против часовой стрелки в слое толщиной 2 бита, заканчиваясь прямо над верхним левым углом ядра. Это помещает битовые слова данных, для которых могут быть обнаружены стирания, в самые внешние слои символа, которые наиболее подвержены стираниям. Контрольные слова хранятся ближе к ядру. Последнее контрольное слово заканчивается чуть выше верхнего левого угла яблочка.

При стандартной ориентации ядра первый бит первого слова данных размещается в верхнем левом углу, а дополнительные биты размещаются в 2-битном столбце слева направо и сверху вниз. Это продолжается до 2 строк снизу символа, когда шаблон поворачивается на 90 градусов против часовой стрелки и продолжается в 2-битном высоком ряду, снизу вверх и слева направо. После 4 равных по размеру четвертных слоев спираль продолжается с верхнего левого угла следующего внутреннего слоя, наконец, заканчиваясь на один пиксель выше верхнего левого угла ядра.

Наконец, 1 бит печатается как черные квадраты, а 0 бит печатается как белые квадраты.

Использование

Онлайн-билет Deutsche Bahn. Обратите внимание, что штрихкод Aztec в этом образце билета не читается обычным приложением, поскольку его центр отличается.

Транспорт

Ацтекские коды широко используются для продажи транспортных билетов.

Aztec Code был выбран авиакомпанией ( стандарт BCBP ИАТА ) для электронных посадочных талонов. Несколько авиакомпаний отправляют Aztec Codes на мобильные телефоны пассажиров, чтобы они действовали как посадочные талоны. Они часто интегрируются с приложениями на телефонах пассажиров, включая Apple Wallet .

Aztec-коды также используются на железной дороге, в том числе Tehran Metro , British National Rail , [5] Eurostar , Deutsche Bahn , TCDD Taşımacılık , DSB , SJ , České dráhy , Slovak Railways , Slovenian Railways , Croatian Railways , Trenitalia , Nederlandse Spoorwegen , Pasažieru vilciens , PKP Intercity , VR Group , Via Rail , Swiss Federal Railways , SNCB и SNCF для билетов, продаваемых онлайн и распечатываемых клиентами или отображаемых на экранах мобильных телефонов. Aztec-код сканируется ручным сканером персоналом поезда или на турникете для проверки билета.

Правительственный

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

Федеральная налоговая служба России кодирует платежную информацию в налоговых уведомлениях с помощью кода Aztec Code.

Коммерческий

Многие компании в Канаде теперь также используют эту технологию, включая EastLink , Shaw Cable и Bell Aliant .

Смотрите также

Ссылки

  1. ^ * US 5591956, Лонгакр, младший, Эндрю и Хасси, Роберт, «Структура и символика кодирования двухмерных данных для использования с оптическими считывателями», опубликовано 07.01.1997 
  2. Official Gazette. Патентное ведомство США. 17 июня 1997 г. Настоящим посвящает публике весь срок действия указанного патента.Нажмите «изображения», а затем «исправление», чтобы увидеть передачу в общественное достояние.
  3. ^ Адамс, Расс. "Страница двумерного штрихкода". Архивировано из оригинала 30 апреля 2010 г. Получено 14 июля 2022 г.
  4. ^ "Спецификация Aztec Code (без Small Aztec)" [Aztec Code Specification (without Small Aztec)] (на русском языке). Архивировано из оригинала 25 февраля 2020 года.
  5. ^ "Отмена мобильных железнодорожных билетов в Великобритании". eta.st. 31 января 2023 г. Получено 5 февраля 2023 г.

Внешние ссылки