Aztécký kód
Aztécký kód (anglicky Aztec Code) je druh dvojrozměrného kódu, který si v roce 1995 patentovali Andrew Longacre a Robert Hussey[1], v roce 1997 ho zveřejnila Asociace pro automatickou identifikaci a mobilitu (AIM) a později se stal standardem Mezinárodní organizace pro normalizaci a Mezinárodní elektrotechnická komise ISO/IEC 24778:2008.[2] Název je odvozen od Aztéků pro vnější podobnost kódu s půdorysem stupňovitých mezoamerických pyramid.
Aztécký kód je široce používán na jízdenkách v železniční dopravě, například ho začaly v roce 2012 současně s přechodem na termotisk používat České dráhy[3][4], od roku 2013 ho používá Železničná spoločnosť Slovensko.[5]
Princip
Kód má čtvercový tvar, jehož jádro má podobu čtvercového terče. Jedná se o středový bod obklopený dvěma nebo třemi soustřednými čtverci, rozměry vnitřku tohoto „terče“ jsou 9×9 (kompaktní verze) nebo 13×13 pixelů (plná verze) a ze všech stran je ještě jedna řada pixelů pro parametry kódování, celé jádro má tedy rozměry 11×11 nebo 15×15 pixelů. V rozích této řady jsou především orientační značky, které umožňují rozpoznat otočení nebo zrcadlení. Dekódování začíná v plném rohu s třemi pixely a pokračuje po směru hodinových ručiček k rohu s dvěma pixely, pak k rohu s jedním pixelem, pak k rohu bez pixelu, a pak zpět k rohu se třemi pixely.
Podoba jádra v kompaktní verzi: Červeně šrafované je jádro, zeleně políčka určená k uložení informace o kódování (28 políček – bitů) a modře rohy sloužící k správnému zorientování symbolu
Plná verze nabízí ke stejnému účelu 40 bitů
Dále čtení pokračuje v hranaté spirále, přičemž datové čtverce jsou přidávány ve vrstvách po dvou, takže rozměry celého kódu jsou 15×15, 19×19, 23×23, a tak dále. Kompaktní verze kódu podporuje 1 až 4 datové vrstvy (rozměry 15×15 až 27×27), plná verze až 32 vrstev (rozměr 151×151 pixelů). To představuje 1914 bajtů binárních dat, nebo 3832 číslic, nebo 3067 písmen. Libovolně velká část datové oblasti může být použita pro samoopravné kódování pomocí Reedových–Solomonových kódů.
Postup kódování
Kódování do aztéckého kódu se skládá z následujících kroků:
- Převedení zdrojové zprávy na řetězec bitů
- Spočítání potřebné velikosti symbolu a parametrů, včetně určení velikosti kódového slova pro Reedův–Solomonův kód
- vložení bitů do kódových slov Reedova–Solomonova kódu
- Vycpání bity na hranici kódového slova
- Připojení kontrolních kódových slov
- Namotání zprávy do spirály kolem jádra
Převod do bitových řetězů je přitom prováděn od nejvýznačnějších bitů.
Znakové sady
Při zápisu dat existuje pět režimů:
- Upper pro zápis velkých písmen
- Lower pro zápis malých písmen
- Mixed pro kontrolní znaky
- Punct pro interpunkci atp.
- Digit pro zápis číslic
Při zápisu číslic mají znaky délku čtyři bity, v ostatních režimech pět bitů, jak ukazuje následující tabulka:
kód | režim | kód | režim | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Upper | Lower | Mixed | Punct | Digit | Upper | Lower | Mixed | Punct | |||
0 | P/S | P/S | P/S | FLG(n) | P/S | 16 | O | o | ^\ | + | |
1 | SP | SP | SP | CR | SP | 17 | P | p | ^] | , | |
2 | A | a | ^A | CR LF | 0 | 18 | Q | q | ^^ | - | |
3 | B | b | ^B | . SP | 1 | 19 | R | r | ^_ | . | |
4 | C | c | ^C | , SP | 2 | 20 | S | s | @ | / | |
5 | D | d | ^D | : SP | 3 | 21 | T | t | \ | : | |
6 | E | e | ^E | ! | 4 | 22 | U | u | ^ | ; | |
7 | F | f | ^F | " | 5 | 23 | V | v | _ | < | |
8 | G | g | ^G | # | 6 | 24 | W | w | ` | = | |
9 | H | h | ^H | $ | 7 | 25 | X | x | | | > | |
10 | I | i | ^I | % | 8 | 26 | Y | y | ~ | ? | |
11 | J | j | ^J | & | 9 | 27 | Z | z | ^? | [ | |
12 | K | k | ^K | ' | , | 28 | L/L | U/S | L/L | ] | |
13 | L | l | ^L | ( | . | 29 | M/L | M/L | U/L | { | |
14 | M | m | ^M | ) | U/L | 30 | D/L | D/L | P/L | } | |
15 | N | n | ^[ | * | U/S | 31 | B/S | B/S | B/S | U/L |
Hodnoty x/S znamenají změnu režimu na x pro následující znak, x/L přepínají na režim x na neurčito. Výchozím režimem je Upper.
Hodnota B/S předznamenává zápis binárních bajtů, jehož podoba je určena následujícími pěti bity. Pokud jsou nenulové, pak udávají počet binárních bajtů, které budou následovat (1—32). Pokud jsou nulové, tak je počet binárních bajtů bez 31 určen z dalších 11 bitů. (Ve skutečnosti je pro 32-62 bajtů tedy prostorově úspornější přejít do režimu dvakrát).
Hodnota FLG(n) je následována tříbitovou hodnotou. Je-li nulová, pak je interpretováno jako FNC1 ze standardu GS1-128. Po hodnotách 1-6 následuje 1-6 číslic znamenajících patřičné kódy ECI
Informace o kódování
Informace o kódování, zahrnuté na nejvnitřnějším okruhu spirály, zahrnují počet vrstev (uložený zmenšený o 1) a počet kódových slov samotné zprávy – zbylá kódová slova jsou určena pro samoopravný kód.
V případě kompaktní verze aztéckého kódu je počet vrstev jen dvoubitovou hodnotou a počet kódových slov šestibitovou, což dohromady dává osm bitů. V případě plného aztéckého kódu je počet vrstev uložen v pěti bitech a počet kódových slov v jedenácti bitech, což dává dohromady šestnáct bitů.
Tyto bity jsou rozděleny do dvou, respektive čtyř kódových půlslabik představujících prvky šestnáctiprvkového konečného tělesa, a je k nim přidáno pět, respektive šest kontrolních půlslabik Reedova–Solomonova kódu. Čímž vznikne 28, respektive 40 bitů do vnitřní kontrolní vrstvy kompaktního, respektive plného aztéckého kódu.
Počet vrstev zároveň určuje použitý Reedův–Solomonův kód, tedy jeho polynom a délku kontrolních slov, podle následující tabulky:
Bitů | Těleso | Polynom | Používá se pro |
---|---|---|---|
4 | GF(16) | x4+x+1 | kontrolní informace ve vnitřní vrstvě |
6 | GF(64) | x6+x+1 | 1–2 vrstvy |
8 | GF(256) | x8+x5+x3+x2+1 | 3–8 vrstev |
10 | GF(1024) | x10+x3+1 | 9–22 vrstev |
12 | GF(4096) | x12+x6+x5+x3+1 | 23–32 vrstev |
Odkazy
Reference
V tomto článku byl použit překlad textu z článku Aztec Code na anglické Wikipedii.
- ↑ Two dimensional data encoding structure and symbology for use with optical readers [online]. [cit. 2013-11-29]. Dostupné online.
- ↑ ISO/IEC 24778:2008: Information technology -- Automatic identification and data capture techniques -- Aztec Code bar code symbology specification [online]. Mezinárodní organizace pro normalizaci [cit. 2013-11-29]. Dostupné online.
- ↑ SVAČINA, Gracián. České dráhy slibují kratší fronty. Nakoupí moderní tiskárny na jízdenky. iHNed.cz [online]. 2012-03-07 [cit. 2013-11-29]. Dostupné online.
- ↑ Projekt 2D kódů na jízdenkách ČD bodoval v soutěži „IT projekt roku 2012“. Parlamentní listy [online]. 2013-02-27 [cit. 2013-11-29]. Dostupné online.
- ↑ MOJŽIŠ, Marcel. Novinka na železnici: Pozrite sa, s akým lístkom budeme cestovať. dnes24.sk [online]. 2013-02-27 [cit. 2013-11-29]. Dostupné online.
Externí odkazy
- Obrázky, zvuky či videa k tématu Aztécký kód na Wikimedia Commons
- Specifikace ISO/IEC 24778:2008 (zpoplatněná)
- (anglicky) Medium.com, Two-dimensional barcodes robustness analysis through the example of QR code and Aztec code (srovnání QR a Aztéckého kódu)
Média použitá na této stránce
Aztec Code with description
(below translated by http://translate.google.com)
Construction of a compact Aztec Code bar code
Diagonal red lines - the core
Blue grid - patterns indicative
Green bars - the designation procedure and error correction code words
Black lines - the first data layer
An example of the information technology: Aztec code, a two dimensional barcode or matrix code developed in the United States. Aztec Code was invented and patented by Andrew Longacre, Jr. of Welch Allyn Inc. in 1995 and used commercially from 1997, though later released into the public domain. When decoded this image contains "This is an example Aztec symbol for Wikipedia."
Autor: Rustam Abdullaev, Licence: CC BY-SA 3.0
Aztec full barcode core
Black - always black
Red striping - always white
Blue striping - alignment marks (always white)
Green hatching - mode message (starts at top left, clockwise, 1-bit wide)
Grey - first data ring (starts at top left, counter-clockwise, 2-bits wide)Vlaková jízdenka s novým kódem