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.
Every Data Matrix is composed of two solid adjacent borders in an "L" shape (called the "finder pattern") and two other borders consisting of alternating dark and light "cells" or modules (called the "timing pattern").
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 (0.003 or 0.005 sq in) and the fact that the code can be read with only a 20% contrast ratio.
[1] A Data Matrix is scalable; commercial applications exist with images as small as 300 micrometres (0.012 in) (laser etched on a 600-micrometre (0.024 in) silicon device) and as large as a 1 metre (3 ft) square (painted on the roof of a boxcar).
[2] 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.
Data Matrix codes are usually verified using specialist camera equipment and software.
Codes are maintained internally on a food manufacturers database and associated with each unique product, e.g. ingredient variations.
[citation needed] In May 2006 a German computer programmer, Bernd Hopfengärtner, created a large Data Matrix in a wheat field (in a fashion similar to crop circles).
[4] In June 2011 the Parisian tattoo artist K.A.R.L., as part of a promotion for Ballantine's scotch whisky,[5] created the world's first animated tattoo utilizing a Data Matrix code in a collaborative process streamed live on Facebook.
[6][7] Data Matrix symbols are made up of modules arranged within a perimeter finder and timing pattern.
Each data region is delimited by a finder pattern, and this is surrounded on all four sides by a quiet zone border (margin).
ECC 200, the newer version of Data Matrix, 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.
All symbols using the ECC 200 error correction can be recognized by the upper-right corner module being the same as the background color.
For error detection at decode time, even in the case of ECC 000, each of these versions also encode a cyclic redundancy check (CRC) 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.
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."
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.
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 (marked End), the padding (P) and error correction (E) bytes, and four modules of unused space (X).
To obtain the error correction bytes, the following procedure may be carried out: The generator polynomial specified for the (24,12,6) code, is:
, which may also be written in the form of a matrix of decimal coefficients: The 12-byte long message "Wikipedia" including 'End', P1 and P2, in decimal coefficients (see the diagrams below for the computation method using ASCII values), is: Using the procedure for Reed-Solomon systematic encoding, the 12 error correction bytes obtained (E1 through E12 in decimal) in the form of the remainder after polynomial division are: These error correction bytes are then appended to the original message.
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.
Prior to the expiration of US patent 5,612,524[13] in November 2007, intellectual property company Acacia Technologies claimed that Data Matrix was partially covered by its contents.
Cognex Corporation, a large manufacturer of 2D barcode devices, filed a declaratory judgment complaint on 13 March 2006 after receiving information that Acacia had contacted its customers demanding licensing fees.
On 19 May 2008 Judge Joan N. Ericksen of the U.S. District Court in Minnesota ruled in favor of Cognex.
While the ruling was delivered after the patent expired, it precluded claims for infringement based on use of Data Matrix prior to November 2007.