Data Matrix — это двумерный код, состоящий из черных и белых «ячеек» или точек, расположенных в квадратной или прямоугольной форме, также известной как матрица . Кодируемая информация может быть текстовой или числовой. Обычный размер данных составляет от нескольких байт до 1556 байт . Длина закодированных данных зависит от количества ячеек в матрице. Коды исправления ошибок часто используются для повышения надежности: даже если одна или несколько ячеек повреждены и их невозможно прочитать, сообщение все равно можно прочитать. Символ Data Matrix может хранить до 2335 буквенно-цифровых символов.
Символы Data Matrix имеют прямоугольную, обычно квадратную форму и состоят из квадратных «ячеек», которые представляют биты . В зависимости от используемого кодирования «светлая» ячейка представляет 0, а «темная» ячейка — 1, или наоборот. Каждая Data Matrix состоит из двух сплошных смежных границ в форме «L» (называемых «шаблоном поиска») и двух других границ, состоящих из чередующихся темных и светлых «ячеек» или модулей (называемых «шаблоном синхронизации»). Внутри этих границ находятся строки и столбцы ячеек, кодирующих информацию. Шаблон поиска используется для определения местоположения и ориентации символа, в то время как шаблон синхронизации обеспечивает подсчет количества строк и столбцов в символе. По мере того, как больше данных кодируется в символе, количество ячеек (строк и столбцов) увеличивается. Каждый код уникален. Размеры символов варьируются от 10×10 до 144×144 в новой версии ECC 200 и от 9×9 до 49×49 в старой версии ECC 000 – 140.
Наиболее популярным применением Data Matrix является маркировка небольших предметов из-за способности кода кодировать пятьдесят символов в символе, который считывается на площади 2 или 3 мм2 ( 0,003 или 0,005 кв. дюйма), и того факта, что код может быть прочитан всего при 20% контрастности. [1] Data Matrix масштабируется; существуют коммерческие приложения с изображениями размером от 300 микрометров (0,012 дюйма) (лазерная гравировка на 600-микрометровом (0,024 дюйма) кремниевом устройстве) и размером до 1 метра (3 фута) квадрата (нарисованного на крыше товарного вагона ). Единственным ограничением являются точность маркировки и считывания систем. Альянс электронной промышленности США (EIA) рекомендует использовать Data Matrix для маркировки небольших электронных компонентов. [2]
Коды Data Matrix становятся обычным явлением на печатных носителях, таких как этикетки и письма. Код может быть быстро прочитан считывателем штрих-кода , что позволяет отслеживать носитель, например, когда посылка была отправлена получателю.
Для целей промышленного машиностроения коды Data Matrix могут быть нанесены непосредственно на компоненты, гарантируя, что только требуемый компонент будет идентифицирован с помощью данных, закодированных в Data Matrix. Коды могут быть нанесены на компоненты различными способами, но в аэрокосмической промышленности это обычно промышленная струйная печать, точечная маркировка, лазерная маркировка и электролитическое химическое травление (ECE). Эти методы дают постоянную маркировку, которая может сохраняться в течение всего срока службы компонента.
Коды Data Matrix обычно проверяются с помощью специального оборудования и программного обеспечения. [ необходимо дополнительное объяснение ] Эта проверка гарантирует, что код соответствует соответствующим стандартам, и обеспечивает читаемость в течение всего срока службы компонента. После того, как компонент поступает в эксплуатацию, код Data Matrix может быть считан камерой считывателя, которая декодирует данные Data Matrix, которые затем могут использоваться для ряда целей, таких как отслеживание перемещения или проверка запасов.
Коды Data Matrix, а также другие коды с открытым исходным кодом, такие как 1D штрих-коды, также можно считывать с помощью мобильных телефонов, загружая специальные мобильные приложения для кодов. Хотя многие мобильные устройства способны считывать 2D-коды, включая Data Matrix Code, [3] лишь немногие расширяют декодирование для обеспечения мобильного доступа и взаимодействия, после чего коды можно безопасно использовать в различных средах; например, в решениях для отслеживания и прослеживания, борьбы с подделками, электронного правительства и банковских решений.
Коды Data Matrix используются в пищевой промышленности в системах автоматического кодирования для предотвращения неправильной упаковки и датирования пищевых продуктов. Коды поддерживаются внутри компании-производителя продуктов питания и связаны с каждым уникальным продуктом, например, с вариациями ингредиентов. Для каждого выпуска продукта уникальный код передается на принтер. Требуется дизайн этикетки, чтобы обеспечить позиционирование 2D Data Matrix для оптимального сканирования. Для кодов черного на белом тестирование не требуется, если качество печати не вызывает проблем, но все цветовые вариации необходимо тестировать перед производством, чтобы убедиться, что они читабельны. [ необходима цитата ]
В мае 2006 года немецкий программист Бернд Хопфенгартнер создал большую матрицу данных на пшеничном поле (похоже на круги на полях ). Сообщение гласило: « Привет, мир! ». [4] В июне 2011 года парижский татуировщик KARL в рамках рекламной акции шотландского виски Ballantine's [5] создал первую в мире анимированную татуировку, используя код матрицы данных в совместном процессе, транслировавшемся в прямом эфире на Facebook. [6] [7]
Символы Data Matrix состоят из модулей, расположенных в периметре искателя и шаблона синхронизации. Он может кодировать до 3116 символов из всего набора символов ASCII (с расширениями). Символ состоит из областей данных, которые содержат модули, установленные в регулярном массиве. Большие символы содержат несколько областей. Каждая область данных ограничена шаблоном искателя, и он окружен со всех четырех сторон границей свободной зоны (полем). (Примечание: модули могут быть круглыми или квадратными — в стандарте не определена конкретная форма. Например, ячейки с точечной обработкой обычно круглые.)
ECC 200, более новая версия Data Matrix, использует коды Рида-Соломона для восстановления ошибок и стирания. ECC 200 позволяет проводить рутинную реконструкцию всей закодированной строки данных, когда символ получил 30% повреждений, предполагая, что матрицу все еще можно точно локализовать. Data Matrix имеет частоту ошибок менее 1 на 10 миллионов отсканированных символов. [8]
Символы имеют четное количество строк и четное количество столбцов. Большинство символов квадратные с размерами от 10 × 10 до 144 × 144. Однако некоторые символы прямоугольные с размерами от 8 × 18 до 16 × 48 (только четные значения). Все символы, использующие коррекцию ошибок ECC 200, можно распознать по модулю в правом верхнем углу, который совпадает с цветом фона. (двоичный 0).
Дополнительные возможности, отличающие символы ECC 200 от более ранних стандартов, включают:
[9]
Более старые версии Data Matrix включают ECC 000, ECC 050, ECC 080, ECC 100, ECC 140. Вместо использования кодов Рида–Соломона , таких как ECC 200, ECC 000–140 используют коррекцию ошибок на основе свертки. Каждая из них отличается по объему предлагаемой коррекции ошибок, при этом ECC 000 не предлагает никакой коррекции, а ECC 140 предлагает наибольшую. Для обнаружения ошибок во время декодирования, даже в случае ECC 000, каждая из этих версий также кодирует циклический избыточный контроль (CRC) по битовой комбинации. В качестве дополнительной меры размещение каждого бита в коде определяется таблицами размещения бит, включенными в спецификацию. Эти старые версии всегда имеют нечетное количество модулей и могут быть изготовлены в размерах от 9 × 9 до 49 × 49. Все символы, использующие коррекцию ошибок ECC 000–140, можно распознать по модулю в правом верхнем углу, который является инверсией цвета фона (двоичная 1).
Согласно стандарту ISO/IEC 16022, «ECC 000–140 следует использовать только в закрытых приложениях, где одна сторона контролирует как создание, так и считывание символов и несет ответственность за общую производительность системы».
Data Matrix была изобретена компанией International Data Matrix, Inc. (ID Matrix), которая была объединена с RVSI/ Acuity CiMatrix , которые были приобретены Siemens AG в октябре 2005 года и Microscan Systems в сентябре 2008 года. Сегодня Data Matrix подпадает под действие нескольких стандартов ISO / IEC и находится в открытом доступе для многих приложений, что означает, что ее можно использовать без каких-либо лицензий или лицензионных отчислений.
Коды Data Matrix используют коррекцию ошибок Рида-Соломона над конечным полем (или GF(2 8 ) ), элементы которого кодируются как байты по 8 бит ; байт со стандартным числовым значением кодирует элемент поля , где принимается за примитивный элемент, удовлетворяющий . Примитивный многочлен равен , что соответствует полиномиальному числу 301, с начальным корнем = 1. Код Рида-Соломона использует один из 37 различных многочленов над со степенями в диапазоне от 7 до 68, в зависимости от того, сколько байтов исправления ошибок добавляет код.
Процесс кодирования описан в стандарте ISO/IEC 16022:2006. [10] Опубликовано программное обеспечение с открытым исходным кодом для кодирования и декодирования варианта ECC-200 Data Matrix. [11] [12]
Диаграммы ниже иллюстрируют размещение данных сообщения в символе Data Matrix. Сообщение — «Википедия», и оно организовано в довольно сложном диагональном узоре, начинающемся около верхнего левого угла. Некоторые символы разделены на две части, например, начальная W, а третья «i» находится в «угловом узоре 2», а не в обычном L-образном расположении. Также показаны код конца сообщения (обозначенный как End), байты заполнения (P) и исправления ошибок (E), а также четыре модуля неиспользуемого пространства (X).
Для хранения различных типов сообщений используются несколько режимов кодирования. Режим по умолчанию сохраняет один символ ASCII на 8-битное кодовое слово. Для переключения между режимами предусмотрены управляющие коды, как показано ниже.
Режимы C40, Text и X12 потенциально более компактны для хранения текстовых сообщений. Они похожи на DEC Radix-50 , используя коды символов в диапазоне 0–39, и три из этих кодов объединяются, чтобы создать число до 40 3 =64000, которое упаковывается в два байта (максимальное значение 65536) следующим образом:
Результирующее значение B1 находится в диапазоне от 0 до 250. Специальное значение 254 используется для возврата в режим кодирования ASCII.
Интерпретации кодов символов показаны в таблице ниже. Режимы C40 и Text имеют четыре отдельных набора. Набор 0 является набором по умолчанию и содержит коды, которые временно выбирают другой набор для следующего символа. Единственное отличие состоит в том, что они меняют местами заглавные и строчные буквы. C40 в основном заглавные, а строчные буквы находятся в наборе 3; Text — наоборот. Набор 1, содержащий управляющие коды ASCII, и набор 2, содержащий символы пунктуации, идентичны в режимах C40 и Text.
Режим EDIFACT использует шесть бит на символ, при этом четыре символа упакованы в три байта. Он может хранить цифры, заглавные буквы и множество знаков препинания, но не поддерживает строчные буквы.
Данные режима Base 256 начинаются с индикатора длины, за которым следует ряд байтов данных. Длина от 1 до 249 кодируется как один байт, а более длинные длины хранятся как два байта.
Желательно избегать длинных строк нулей в закодированном сообщении, поскольку они становятся большими пустыми областями в символе Data Matrix, что может привести к потере синхронизации сканера. (По этой причине кодировка ASCII по умолчанию не использует ноль.) Чтобы сделать это менее вероятным, длина и байты данных скрываются путем добавления псевдослучайного значения R(n), где n — позиция в потоке байтов.
До истечения срока действия патента США 5,612,524 [13] в ноябре 2007 года компания Acacia Technologies, занимающаяся интеллектуальной собственностью, утверждала, что Data Matrix частично покрывается ее содержимым. Как владелец патента, Acacia якобы связывалась с пользователями Data Matrix, требуя лицензионные сборы, связанные с патентом.
Cognex Corporation , крупный производитель устройств для считывания 2D-штрихкодов, подала декларативную жалобу на судебное решение 13 марта 2006 года после получения информации о том, что Acacia связалась со своими клиентами, требуя уплаты лицензионных сборов. 19 мая 2008 года судья Джоан Н. Эриксен из Окружного суда США в Миннесоте вынесла решение в пользу Cognex. [14] В решении говорилось, что патент '524, который, как утверждалось, охватывал систему захвата и считывания 2D-кодов символики, является недействительным и неисполнимым из-за несправедливого поведения ответчиков во время получения патента.
Хотя решение было вынесено после истечения срока действия патента, оно исключило возможность подачи исков о нарушении прав, основанных на использовании Data Matrix до ноября 2007 года.
Немецкая патентная заявка DE 4107020 была подана в 1991 году и опубликована в 1992 году. Этот патент не упоминается в приведенных выше патентных заявках США и может сделать их недействительными. [ необходима ссылка ]