A Data Matrix code is a two-dimensional matrix barcode consisting of black and white "cells"
or modules arranged in either a square or rectangular pattern. The information to be
encoded can be text or numeric data. Usual data size is from a few bytes up to 1556 bytes.
The length of the encoded data depends on the number of cells in the matrix. Error correction
codes are often used to increase reliability: even if one or more cells are damaged so it
is unreadable, the message can still be read. A Data Matrix symbol can store up to 2,335
alphanumeric characters. Data Matrix symbols are rectangular in shape
and usually square and are composed of "cells": little squares that represent bits. Depending
on the coding used, a "light" cell represents a 0 and a "dark" cell is a 1, or vice versa.
Every Data Matrix is composed of two solid adjacent borders in an "L" shape and two other
borders consisting of alternating dark and light "cells" or modules. Within these borders
are rows and columns of cells encoding information. The finder pattern is used to locate and orient
the symbol while the timing pattern provides a count of the number of rows and columns
in the symbol. As more data is encoded in the symbol, the number of cells increases.
Each code is unique. Symbol sizes vary from 10×10 to 144×144 in the new version ECC
200, and from 9×9 to 49×49 in the old version ECC 000 - 140.
Applications
The most popular application for Data Matrix is marking small items, due to the code’s
ability to encode fifty characters in a symbol that is readable at 2 or 3 mm2 and the fact
that the code can be read with only a 20% contrast ratio. The Data Matrix is scalable,
with commercial applications as small as 300 micrometres and as large as a 1 metre square.
Fidelity of the marking and reading systems are the only limitation.
The United States of America's Electronic Industries Alliance recommends using Data
Matrix for labeling small electronic components. Data Matrix codes are becoming common on printed
media such as labels and letters. The code can be read quickly by a barcode reader which
allows the media to be tracked, for example when a parcel has been dispatched to the recipient.
For industrial engineering purposes, Data Matrix codes can be marked directly onto components,
ensuring that only the intended component is identified with the Data Matrix encoded
data. The codes can be marked onto components with various methods, but within the aerospace
industry these are commonly industrial ink-jet, dot-peen marking, laser marking, and electrolytic
chemical etching. These methods give a permanent mark which can last up to the lifetime of
the component. Data Matrix codes are usually verified using
specialist camera equipment and software. This verification ensures the code conforms
to the relevant standards, and ensures readability for the lifetime of the component. After the
component enters service, the Data Matrix code can then be read by a reader camera,
which decodes the Data Matrix data which can then be used for a number of purposes, such
as movement tracking or inventory stock checks.
Data Matrix codes, along with other Open Source codes such as 1D Barcodes can also be read
with mobile phones by downloading code specific mobile applications. Although the majority
of these mobile readers are capable of reading Data Matrix, few extend the decoding to enable
mobile access and interaction, whereupon the codes can be used securely and across media;
for example, in track and trace, anti-counterfeit, e.govt, and banking solutions.
Food industry Data matrix codes are used in the food industry
in autocoding systems to prevent food products being packaged and dated incorrectly. Codes
are maintained internally on a food manufacturers database and associated with each unique product,
e.g. ingredient variations. For each product run the unique code is supplied to the printer.
Label artwork is required to allow the 2D data matrix to be positioned for optimal scanning.
For black on white codes testing isn't required unless print quality is an issue, but all
colour variations need to be tested before production to ensure they are readable.
Art In May 2006 a German computer programmer,
Bernd Hopfengärtner, created a large data matrix in a wheat field. The message read
"Hello, World!". In June 2011 the Parisian tattoo artist K.A.R.L., as part of a promotion
for Ballantine's scotch whisky, created the world's first animated tattoo utilizing a
Data Matrix code in a collaborative process streamed live on Facebook.
Technical specifications
Data Matrix symbols are made up of modules arranged within a perimeter finder and timing
pattern. It can encode up to 3,116 characters from the entire ASCII character set. The symbol
consists of data regions which contain modules set out in a regular array. Large symbols
contain several regions. Each data region is delimited by a finder pattern, and this
is surrounded on all four sides by a quiet zone border.
Data Matrix ECC 200 ECC 200 is the newest version of Data Matrix
and uses Reed-Solomon codes for error and erasure recovery. ECC 200 allows the routine
reconstruction of the entire encoded data string when the symbol has sustained 30% damage,
assuming the matrix can still be accurately located. Data Matrix has an error rate of
less than 1 in 10 million characters scanned. Symbols have an even number of rows and an
even number of columns. Most of the symbols are square with sizes from 10×10 to 144×144.
Some symbols however are rectangular with sizes from 8×18 to 16×48. All symbols utilizing
the ECC 200 error correction can be recognized by the upper right corner module being the
same as the background color.. Additional capabilities that differentiate
ECC 200 symbols from the earlier standards include:
Inverse reading symbols Specification of the character set
Rectangular symbols Structured append
Data Matrix ECC 000–140 Older versions of Data Matrix include ECC
000, ECC 050, ECC 080, ECC 100, ECC 140. Instead of using Reed-Solomon codes like ECC 200,
ECC 000–140 use a convolution based error correction. Each of these varies in the amount
of error correction they offer, with ECC 000 offering none, and ECC 140 offering the greatest.
For error detection at decode time, even in the case of ECC 000, each of these versions
also encode a Cyclic Redundancy Check on the bit pattern. As an added measure, the placement
of each bit in the code is determined by bit-placement tables included in the specification. These
older versions always have an odd number of modules, and can be made in sizes ranging
from 9×9 to 49×49. All symbols utilizing the ECC 000 through 140 error correction can
be recognized by the upper right corner module being the inverse of the background color..
According to ISO/IEC 16022, "ECC 000–140 should only be used in closed applications
where a single party controls both the production and reading of the symbols and is responsible
for overall system performance." Standards
Data Matrix was invented by International Data Matrix, Inc. which was merged into RVSI/Acuity
CiMatrix, who were acquired by Siemens AG in October, 2005 and Microscan Systems in
September 2008. Data Matrix is covered today by several ISO/IEC standards and is in the
public domain for many applications, which means it can be used free of any licensing
or royalties. ISO/IEC 16022:2006—Data Matrix bar code
symbology specification ISO/IEC 15415—2-D Print Quality Standard
ISO/IEC 15418:2009—Symbol Data Format Semantics ISO/IEC 15424:2008—Data Carrier Identifiers
[IDs for distinguishing different bar code types]
ISO/IEC 15434:2006—Syntax for high-capacity ADC media
ISO/IEC 15459—Unique Identifiers Encoding
The encoding process is described in documents published by ISO web site. Open source software
for encoding and decoding the ECC-200 variant of Data Matrix has been published
The diagrams below illustrate the placement of the message data within a Data Matrix symbol.
The message is "Wikipedia", and it is arranged in a somewhat complicated diagonal pattern
starting near the upper-left corner. Some characters are split in two pieces, such as
the initial W, and the third 'i' is in "corner pattern 2" rather than the usual L-shaped
arrangement. Also shown are the end-of-message code, the padding and error correction bytes,
and four modules of unused space. There are multiple encoding modes used to
store different kinds of messages. The default mode stores one ASCII character per 8-bit
codeword. Control codes are provided to switch between modes, as shown below.
Text modes The C40, Text and X12 modes are potentially
more compact for storing text messages. They are similar to DEC Radix-50, using character
codes in the range 0–39, and three of these codes are combined to make a number up to
40³=64000, which is packed into two bytes as follows:
V = C1*1600 + C2*40 + C3 + 1 B1 = floor(V/256)
B2 = V mod 256 The resulting value of B1 is in the range
0–249. The special value 254 is used to return to ASCII encoding mode.
Character code interpretations are shown in the table below. The C40 and Text modes have
four separate sets. Set 0 is the default, and contains codes that temporarily select
a different set for the next character. The only difference is that they reverse upper-and
lower-case letters. C40 is primarily upper-case, with lower-case letters in Set 3. Text is
the other way around. Set 1, containing ASCII control codes, and set 2, containing punctuation
symbols are identical in C40 and Text mode. EDIFACT mode
EDIFACT mode uses six bits per character, with four characters packed into three bytes.
It can store digits, upper-case letters, and many punctuation marks, but has no support
for lower-case letters. Base 256 mode
Base 256 mode data starts with a length indicator, followed by a number of data bytes. A length
of 1 to 249 is encoded as a single byte, and longer lengths are stored as two bytes.
L1 = floor(length / 250) + 249, L2 = length mod 250
It is desirable to avoid long strings of zeros in the coded message, because they become
large blank areas in the Data Matrix symbol, which may cause a scanner to lose synchronization.
In order to make that less likely, the length and data bytes are obscured by adding a pseudorandom
value R(n), where n is the position in the byte stream.
R(n) = mod 255 + 1 Patent issues
Prior to the expiration of U.S. Patent 5,612,524, intellectual property company Acacia Technologies
claimed that Data Matrix was partially covered by its contents. As the patent owner, Acacia
allegedly contacted Data Matrix users demanding license fees related to the patent.
Cognex Corporation, a large manufacturer of 2D barcode devices, filed a declaratory judgment
complaint on March 13, 2006 after receiving information that Acacia had contacted its
customers demanding licensing fees. On May 19, 2008 Judge Joan N. Ericksen of the U.S.
District Court in Minnesota ruled in favor of Cognex. The ruling held that the '524 patent,
which claimed to cover a system for capturing and reading 2D symbology codes, is both invalid
and unenforceable due to inequitable conduct by the defendants during the procurement of
the patent. Notably, since the '524 patent expired in
November 2007, a ruling against Cognex wouldn't have affected current use of Data Matrix codes.
However, it would have established that use of Data Matrix prior to November 2007 could
potentially be covered by the '524 patent. A German Patent Application DE 4107020 was
filed in 1991, and published in 1992. This patent is not cited in the above US patent
applications and might invalidate them. See also
Aztec Code High Capacity Color Barcode
MaxiCode Nintendo e-Reader
QR Code Semacode
SPARQCode Trusted paper key
References
External links GS1 DataMatrix: An introduction and technical
overview of the most advanced GS1 Application Identifiers compliant symbology