Aztécký kód - Aztec Code

Image
Kódování: „Toto je příklad aztéckého symbolu pro Wikipedii.“

Aztécký kód je typ 2D čárového kódu, který vynalezli Andrew Longacre, Jr. a Robert Hussey v roce 1995. Kód byl publikován společností AIM, Inc. v roce 1997. Ačkoli byl aztécký kód patentován, tento patent byl oficiálně zveřejněn. Aztécký kód je také publikován jako norma ISO/IEC 24778: 2008. Pojmenovaný podle podobnosti centrálního vyhledávacího vzoru s aztéckou pyramidou , má aztécký kód potenciál využít méně místa než jiné maticové čárové kódy, protože nevyžaduje okolní prázdnou „tichou zónu“.

Struktura

Symbol je postaven na čtvercové mřížce se vzorem býčího oka ve středu pro lokalizaci kódu. Data jsou zakódována v soustředných čtvercových prstencích kolem vzoru býčí oko. Centrální býčí oko má 9 × 9 nebo 13 × 13 pixelů a jedna řada pixelů kolem toho kóduje základní parametry kódování a vytváří „jádro“ čtverců 11 × 11 nebo 15 × 15. Data jsou přidávána ve „vrstvách“, z nichž každá obsahuje dva prstence pixelů, což dává celkové velikosti 15 × 15, 19 × 19, 23 × 23 atd.

Rohy jádra obsahují orientační značky, které umožňují čtení kódu při otočení nebo odrazu. Dekódování začíná v rohu třemi černými pixely a pokračuje ve směru hodinových ručiček do rohů dvěma, jedním a nulovým počtem černých pixelů. Proměnné pixely v centrálním jádru kódují velikost, takže není nutné označovat hranici kódu prázdnou „tichou zónou“, ačkoli některé čtečky čárových kódů to vyžadují.

Kompaktní aztécké kódové jádro může být obklopeno 1 až 4 vrstvami, které vytvářejí symboly od 15 × 15 (prostor pro 13 číslic nebo 12 písmen) až po 27 × 27. K dispozici je navíc speciální „runa“ 11 × 11, která kóduje jeden bajt informací. Plné jádro podporuje až 32 vrstev, 151 × 151 pixelů, které mohou kódovat 3832 číslic, 3067 písmen nebo 1914 bytů dat.

Jakákoli část symbolu není použita pro základní data, je použita pro opravu chyb Reed -Solomon a rozdělení je zcela konfigurovatelné, mezi limity 1 datové slovo a 3 kontrolní slova. Doporučený počet kontrolních slov je 23% kapacity symbolu plus 3 kódová slova.

Aztec Code má produkovat čitelné kódy pomocí různých tiskových technologií. Je také vhodný pro displeje mobilních telefonů a dalších mobilních zařízení.

Kódování

Proces kódování se skládá z následujících kroků:

  1. Převod zdrojové zprávy na řetězec bitů
  2. Výpočet potřebné velikosti symbolu a zprávy režimu, která určuje velikost kódového slova Reed – Solomon
  3. Bitová náplň zprávy do kódových slov Reed – Solomon
  4. Padding the message to a codeword boundary
  5. Připojování kontrolních kódových slov
  6. Uspořádání kompletní zprávy ve spirále kolem jádra

Veškerá konverze mezi řetězci bitů a jinými formami se provádí podle konvence big-endian (nejvýznamnější bit nejprve).

Znaková sada

Lze kódovat všechny 8bitové hodnoty plus dva únikové kódy:

  • FNC1, únikový symbol používaný k označení přítomnosti identifikátoru aplikace, stejným způsobem jako ve standardu GS1-128 .
  • ECI, únik následovaný 6místným kódem interpretace rozšířeného kanálu , který určuje znakovou sadu použitou k interpretaci následujících bajtů.

Standardně jsou kódy 0–127 interpretovány podle ANSI X3.4 ( ASCII ) a 128–255 jsou interpretovány podle ISO 8859-1 : Latinská abeceda č. 1. To odpovídá ECI 000003.

Bajty jsou přeloženy do 4- a 5bitových kódů na základě aktuálního režimu dekódování s kódy posunu a západky pro změnu režimů. Hodnoty bajtů, které nejsou tímto způsobem k dispozici, mohou být kódovány pomocí obecného kódu „binárního posunu“, za nímž následuje délka a počet 8bitových kódů.

Pokud jde o změnu režimů, posun ovlivní pouze interpretaci jednoho následujícího kódu, zatímco západka ovlivní všechny následující kódy. Většina režimů používá 5bitové kódy, ale režim Digit používá 4bitové kódy.

Kódování znaku aztéckého kódu
Kód Režim Kód Režim
Horní Dolní Smíšený Punct Číslice Horní Dolní Smíšený Punct
0 P/S P/S P/S FLG ( n ) P/S 16 Ó Ó ^\ +
1 SP SP SP ČR SP 17 P p ^] ,
2 A A ^A CR LF 0 18 Otázka 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 PROTI proti _ <
8 G G ^G # 6 24 W w ` =
9 H h ^H $ 7 25 X X | >
10 ^Já % 8 26 Y y ~ ?
11 J. j ^J & 9 27 Z z ^? [
12 K k ^K ' , 28 L/L NÁ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 ^[ * NÁS 31 B/S B/S B/S U/L
  • Počáteční režim je "Horní"
  • x/S = Přepnout do režimu x pro jeden znak; B/S = přechod na 8bitové binární
  • x/L = Západka do režimu x pro následující znaky
  • Punktové kódy 2–5 zakódují po dvou bajtech
  • Tabulka uvádí znaky ASCII, ale jsou kódovány bajtové hodnoty, i když je používá znak, který není ASCII

Po B/S (binárním posunu) následuje 5bitová délka. Pokud je nenulová, znamená to, že následuje 1–31 8bitových bytů. Pokud je nula, 11 dalších bitů délky kóduje počet následujících bytů menší než 31. (Všimněte si, že pro 32–62 bytů jsou dvě posloupnosti 5bitového posunu bajtů kompaktnější než jedna 11bitová.) Na konci binární sekvence předchozí režim se obnoví.

Za FLG ( n ) následuje 3bitová n hodnota. n = 0 kóduje FNC1. n = 1–6 následuje 1–6 číslic (v režimu číslic), které jsou nulové, aby vytvořily 6bitový identifikátor ECI. n = 7 je vyhrazeno a v současné době je nezákonné.

Zpráva režimu

Zpráva režimu kóduje počet vrstev (vrstvy L kódované jako celé číslo L −1) a počet datových kódových slov ( kódová slova D , kódovaná jako celé číslo D −1) ve zprávě. Všechna zbývající kódová slova se použijí jako kontrolní kódová slova.

U kompaktních aztéckých kódů je počet vrstev kódován jako 2bitová hodnota a počet datových kódových slov jako 6bitová hodnota, což má za následek slovo v 8bitovém režimu. U úplných aztéckých kódů je počet vrstev zakódován v 5 bitech a počet datových kódových slov je zakódován v 11 bitech, což vytváří slovo v 16bitovém režimu.

Režimové slovo je rozděleno na 2 nebo 4 4bitová kódová slova v GF (16) a k nim jsou připojena kontrolní slova 5 nebo 6 Reed-Solomon, což vytváří 28- nebo 40bitovou zprávu režimu, která je zabalena do 1 pixelu vrstva kolem jádra.

Protože kompaktní aztécký kód L+1 vrstvy pojme více dat než plný kód L vrstvy, úplné kódy s méně než 4 vrstvami se používají jen zřídka.

A co je nejdůležitější, počet vrstev určuje velikost použitých kódových slov Reed – Solomon. To se pohybuje od 6 do 12 bitů:

Aztécký kód polynomy konečného pole
Bity Pole Polynom Používá
4 GF (16) x 4 + x +1 Zpráva režimu
6 GF (64) x 6 + x +1 1–2 vrstvy
8 GF (256) x 8 + x 5 + x 3 + x 2 +1 3–8 vrstev
10 GF (1024) x 10 + x 3 +1 9–22 vrstev
12 GF (4096) x 12 + x 6 + x 5 + x 3 +1 23–32 vrstev

Velikost kódového slova b je nejmenší sudé číslo, které zajišťuje, že celkový počet kódových slov v symbolu je menší než limit 2 b −1, který lze opravit pomocí Reed -Solomonova kódu.

Jak bylo uvedeno výše, doporučuje se, aby alespoň 23% dostupných kódových slov, plus 3, bylo vyhrazeno pro opravu a velikost symbolu byla zvolena tak, aby se zpráva vešla do dostupného prostoru.

Bitová nádivka

Datové bity jsou rozděleny do kódových slov, přičemž první bit odpovídá nejvýznamnějšímu koeficientu. Přitom se bitovým nádivkám vyhýbají kódová slova od nuly a od všech : pokud mají první b -1 bity kódového slova stejnou hodnotu, je do datového proudu vložen další bit s doplňkovou hodnotou. Toto vkládání probíhá bez ohledu na to, zda by poslední bit kódového slova měl stejnou hodnotu nebo ne.

Všimněte si také, že to platí pouze pro řetězce b −1 bitů na začátku kódového slova . Jsou povoleny delší řetězce identických bitů, pokud překračují hranici kódového slova.

Při dekódování lze předpokládat, že kódové slovo celé nuly nebo celé jedno bude vymazáno a opraveno efektivněji než obecná chyba.

Tento proces prodlužuje zprávu a konečný počet datových kódových slov zaznamenaných ve zprávě režimu není znám, dokud není kompletní. Ve vzácných případech může být nutné přeskočit na další největší symbol a začít celý proces znovu, aby byl zachován minimální zlomek kontrolních slov.

Polstrování

Po bitovém plnění je datový řetězec vyplněn na další hranici kódového slova připojením 1 bitu. Pokud by to vedlo ke kódovému slovu všech jedniček, poslední bit se změní na nulu (a bude dekodérem ignorován jako bit vycpávky bitů). Při dekódování mohou být výplňové bity dekódovány jako kódy shift a latch, ale to neovlivní obsah zprávy. Čtenář musí přijmout a ignorovat částečný kód na konci zprávy, pokud je all-ones.

Navíc pokud celkový počet datových bitů dostupných v symbolu není násobkem velikosti kódového slova, datový řetězec má předponu s odpovídajícím počtem 0 bitů, aby zabíral místo navíc. Tyto bity nejsou zahrnuty ve výpočtu kontrolních slov.

Zkontrolujte kódová slova

Slovo režimu i data musí mít připojená kontrolní slova, aby vyplnily dostupné místo. To se vypočítá připojením K kontrolních slov tak, že celá zpráva je násobkem polynomu Reed – Solomon ( x −2) ( x −4) ... ( x −2 K ).

Všimněte si, že kontrolní slova nejsou předmětem bit nádivkou, a může to být all-nula nebo all-one. Není tedy možné detekovat vymazání kontrolního slova.

Rozložení zprávy

Image
9vrstvý (53 × 53) aztécký kód ukazující referenční mřížku.

Úplný aztécký kódový symbol má kromě jádra také „referenční mřížku“ střídajících se černobílých pixelů zabírajících každý 16. řádek a sloupec. Tyto známé pixely umožňují čtenáři udržovat zarovnání s mřížkou pixelů nad velkými symboly. Až pro 4 vrstvy (31 × 31 pixelů) se skládá pouze z jednotlivých řádků vybíhajících ven z jádra a pokračuje ve střídajícím se vzoru. Uvnitř 5. vrstvy jsou však vloženy další řádky a sloupce střídajících se pixelů ± 16 pixelů od středu, takže 5. vrstva je umístěna ± 17 a ± 18 pixelů od středu a symbol 5 vrstev je 37 × 37 pixelů .

Podobně jsou ze středu vloženy další řádky a sloupce referenční mřížky ± 32 pixelů, což vytváří 12vrstvý symbol 67 × 67 pixelů. V tomto případě zaujímá 12. vrstva prstence ± 31 a ± 33 pixelů od středu. Vzorec pokračuje neurčitě směrem ven, s 15 pixelovými bloky dat oddělenými řádky a sloupci referenční mřížky.

Jedním ze způsobů, jak vytvořit symbol, je úplné odstranění referenční mřížky a začátek s jádrem 14 × 14 pixelů se středem na bílém čtverci 2 × 2 pixely. Poté jej rozlomte na bloky 15 × 15 pixelů a vložte mezi ně referenční mřížku.

Zpráva režimu začíná v levém horním rohu jádra a obtéká ji ve směru hodinových ručiček v 1bitové silné vrstvě. Začíná nejvýznamnějším bitem z počtu vrstev a končí kontrolními slovy. U kompaktního aztéckého kódu byl rozdělen na čtyři 7bitové kousky, aby zbylo místo pro orientační značky. Úplný aztécký kód je rozdělen na čtyři 10bitové kousky a tyto kousky jsou rozděleny na polovinu referenční mřížkou.

V některých případech se celková kapacita matice nerozděluje rovnoměrně plnými kódovými slovy. V takových případech je hlavní zpráva na začátku vyplněna 0 bity. Tyto bity nejsou zahrnuty ve výpočtu kontrolního slova a měly by být během dekódování vynechány. Celkovou kapacitu matice pro plný symbol lze vypočítat jako (112+16*L)*L pro úplný aztécký kód a (88+16*L)*L pro kompaktní aztécký kód, kde L je velikost symbolu ve vrstvách . Celková kapacita matice kompaktního aztéckého kódu s 1 vrstvou je například 104 bitů. Protože kódová slova jsou šest bitů, dává to 17 kódových slov a dva další bity. Dva nulové bity jsou před zprávu vloženy jako odsazení a musí být během dekódování vynechány.

Polstrovaná hlavní zpráva začíná v levém horním rohu celého symbolu a točí se kolem ní proti směru hodinových ručiček ve 2bitové tlusté vrstvě a končí přímo nad levým horním rohem jádra. Tím se bitově nacpaná datová slova, u nichž lze detekovat výmaz, umístí do nejvzdálenějších vrstev symbolu, který je na mazání nejnáchylnější. Kontrolní slova jsou uložena blíže k jádru. Poslední kontrolní slovo končí těsně nad levým horním rohem volského oka.

S jádrem ve standardní orientaci je první bit prvního datového slova umístěn v levém horním rohu, další bity jsou umístěny ve 2bitovém sloupci zleva doprava a shora dolů. To pokračuje, dokud se 2 řádky ze spodní části symbolu, když se vzor otáčí o 90 stupňů proti směru hodinových ručiček, a pokračuje ve 2bitové vysoké řadě, zdola nahoru a zleva doprava. Po 4 čtvrtinových vrstvách stejné velikosti pokračuje spirála levým horním rohem další vnitřní vrstvy a nakonec končí o jeden pixel nad levým horním rohem jádra.

Nakonec se 1 bit vytiskne jako černé čtverečky a 0 bitů se vytiskne jako bílé čtverečky.

Používání

Image
Online jízdenka od Deutsche Bahn. Všimněte si, že aztécký čárový kód v tomto ukázkovém lístku není čitelný u normální aplikace, protože střed je jiný.

Doprava

Aztécké kódy jsou široce používány pro prodej jízdenek.

Aztécký kód byl vybrán leteckým průmyslem ( standard BCBP IATA ) pro elektronické palubní lístky. Několik leteckých společností zasílá aztécké kódy na mobilní telefony cestujících, aby fungovaly jako palubní lístky. Ty jsou často integrovány s aplikacemi na telefonech cestujících, včetně Apple Wallet .

Aztécké kódy se používají také v železniční dopravě, včetně společností Tehran Metro , Eurostar , Deutsche Bahn , TCDD Taşımacılık , DSB , České dráhy , Slovenské dráhy , Slovinské železnice , Chorvatské železnice , Trenitalia , Nederlandse Spoorwegen , PKP Intercity , VR Group , National Rail , Via Rail , Swiss Federal Railways , SNCB a SNCF pro lístky prodávané online a vytištěné zákazníky nebo zobrazené na obrazovkách mobilních telefonů. Aztécký kód naskenuje ruční skener vlakovým personálem nebo na turniketu k ověření jízdenky.

Vládní

Registrační dokumenty automobilů v Polsku obsahují souhrn komprimovaný algoritmem NRV2E zakódovaným jako aztécký kód. Probíhají práce, které pojišťovacím společnostem umožní automaticky vyplnit příslušné informace na základě digitálních fotografií dokumentu jako první krok uzavření nové pojistné smlouvy.

Federální daňová služba v Rusku kóduje informace o platbě v daňových oznámeních jako aztécký kód.

Komerční

Mnoho bankovek v Kanadě nyní používá tuto technologii také, včetně EastLink (společnost) , Shaw Cable , Bell Aliant a mnoho dalších.

Reference

externí odkazy