Кіріспе
Матрицалық штрих-кодтың түрі
Ацтек коды — 1995 жылы Эндрю Лонгакер және Роберт Хасси тапқан матрицалық код. Код 1997 жылы AIM, Inc. ұйымы жариялаған. Ацтек коды патенттелгенімен, ол патент ресми түрде қоғамдық доменге жатқызылды. Ацтек коды ISO/IEC 24778:2008 стандарты ретінде де жарияланды. Орталық іздеу үлгісінің ацтек пирамидасына ұқсас болуынан аталған Ацтек коды, басқа матрицалық штрих-кодтарға қарағанда аз орынды пайдалану мүмкіндігіне ие, себебі оған сыртқы бос "тыныш аймақ" қажет емес.
Құрылымы
Символ квадраттық торға салынған, оның ортасында кодты анықтау үшін бұқаның көзі суреті бейнеленген. Деректер бұқаның көзінің айналасындағы концентрлі шаршы сақиналарда кодталады. Орталық бұқаның көзі 9×9 немесе 13×13 пикселден тұрады, ал негізгі кодтау параметрлерін кодтайтын пикселдердің бір қатары 11×11 немесе 15×15 квадраттан тұратын "өзекті" құрайды. Деректер "қабаттар" түрінде қосылады, әрқайсысы екі пикселдік сақинадан тұрады, соның нәтижесінде 15×15, 19×19, 23×23 сияқты өлшемдерге жетеді. Өзектің бұрыштарында бағдар белгілері бар, бұл кодты айналдырғанда немесе көлденең кергенде оқуға мүмкіндік береді. Декодтау үш қара пиксел бар бұрыштан басталады және сағат тілі бойынша екі, бір және нөл қара пиксел бар бұрыштарға қарай жалғасады. Орталық өзектің өзгермелі пикселдері өлшемді кодтайды, сондықтан кодтың шекарасын бос "тыныш аймақпен" белгілеудің қажеті жоқ, бірақ кейбір штрихкод оқырман құрылғылары мұны қажет етеді. Ацтек кодының ықшам өзегі 1-ден 4 қабатқа дейін қоршалуы мүмкін, бұл 15×15 (13 цифрға немесе 12 әріпке орын) дейін 27×27 өлшемдегі символдарды құрайды. Сонымен қатар, бір байт ақпаратты кодтайтын арнайы 11×11 "руна" бар. Толық өзектің 32 қабатқа дейін, 151×151 пикселге дейін қолдау көрсететін мүмкіндігі бар, ол 3832 цифрды, 3067 әріпті немесе 1914 байт деректерді кодтай алады. Символдың негізгі деректер үшін пайдаланылмаған бөлігі Рид-Соломон қатесін түзету үшін қолданылады, ал бөлу 1 дерек сөзі мен 3 тексеру сөзі арасындағы шектерде толыққанды конфигурацияланады. Тексеру сөздерінің ұсынылатын саны – символ сыйымдылығының 23%-ы плюс 3 кодты сөз. Ацтек коды әртүрлі басып шығару технологияларын қолдана отырып, оқылатын кодтарды жасауға арналған. Сондай-ақ, ол ұялы телефондар мен басқа да мобильді құрылғылардың дисплейлеріне де өте қолайлы.
Бiрiктеп толтыру
Дерек биттері кодты сөздерге бөлінеді, мұндағы бірінші бит ең маңызды коэффициентке сәйкес келеді. Осы кезде, барлық нөлдерден немесе барлық бірліктерден тұратын кодты сөздер біттерді қосымша енгізу арқылы болдырмайды: егер кодты сөздің алғашқы b-1 биті бірдей мәнге ие болса, дерек ағынына оған толықтыратын қосымша бит енгізіледі. Бұл енгізу, кодты сөздің соңғы биті сол мәнге ие болса да, болмаса да орындалады. Сондай-ақ, бұл ереже тек кодты сөздің басындағы b-1 биттік тізбектерге ғана қатысты екенін ескеріңіз. Бірдей биттерден тұратын ұзақ тізбектерге рұқсат етіледі, егер олар кодты сөз шекарасынан өтетін болса. Декодтау кезінде барлық нөлдерден немесе барлық бірліктерден тұратын кодты сөз жойылған деп есептелуі мүмкін және жалпы қатеге қарағанда тиімдірек түзетілуі мүмкін. Бұл процесс хабарламаны ұзартады, ал режим хабарламасындағы дерек кодты сөздерінің соңғы саны толыққанға дейін белгісіз болады. Сирек жағдайларда, ең аз тексеру сөздерін сақтау үшін келесі үлкен символға өту және процесті қайтадан бастау қажет болуы мүмкін.
Қаптама
Битті толтырудан кейін деректер тізбегі келесі кодты сөз шекарасына жету үшін 1 битпен толықтырылады. Егер осыдан кодты сөздің барлығы біліктерден тұратын болса, соңғы бит нөлге өзгертіледі (және декодер оны біт толтыру биті ретінде қарастырмайды). Декодтау кезінде толықтыру биттері жылғастыру және құлыптау кодтары ретінде декодталуы мүмкін, бірақ бұл хабарлама мазмұнына әсер етпейді. Оқырман хабарлама соңындағы толық емес кодты, ол барлығы біліктерден тұрса, қабылдап, елемеуі керек. Сонымен қатар, егер символ ішіндегі деректер битінің жалпы саны кодты сөздің мөлшеріне бөлінбесе, деректер тізбегінің басына қосымша орынды толтыру үшін тиісті санында 0 биттер қосылады. Бұл биттер тексеру сөзін есептеуге қатыстырылмайды.
Кодты сөздерді тексеру
Режим сөзі де, деректер де қол жетімді орынды толықтыру үшін тексеру сөздерімен толықтырылуы керек. Бұл K тексеру сөздерін қосу арқылы есептеледі, нәтижесінде бүкіл хабар Рид-Соломон полиномы (x-2)(x-4)(x-2K)-ның еселігіне ие болады. Тексеру сөздері биттерді толтыруға жатпайды және олардың барлығы нөл немесе барлығы бір болуы мүмкін. Сондықтан, тексеру сөзінің жойылуын анықтау мүмкін емес.
Хабарды жеткізу
Толық ацтек кодтық символының өзегінен басқа, әрбір 16-шы қатар мен бағанды алып тұратын қара және ақ пиксельдердің "анықтамалық желісі" бар. Бұл белгілі пиксельдер оқырманға үлкен символдар үстінде пиксельдік тормен сәйкестікті сақтауға мүмкіндік береді. 4 қабатқа дейін (31×31 пиксел) бұл тек өзектен сыртқа қарай созылатын, кезектесіп орналасқан бірнеше сызықтардан тұрады. Алайда, 5-ші қабатта қосымша қатарлар мен бағандар, ортадан ±16 пиксел қашықтықта, кезектесіп пікселдермен енгізіледі, сондықтан 5-ші қабат ортадан ±17 және ±18 пиксел қашықтықта орналасқан, ал 5-ші қабат символы 37×37 пикселге тең. Сол сияқты, қосымша анықтамалық желі қатарлары мен бағандары ортадан ±32 пиксел қашықтықта енгізіліп, 12 қабатты символ 67×67 пикселге айналады. Бұл жағдайда 12-ші қабат ортадан ±31 және ±33 пиксел қашықтықта орналасқан. Үлгі шексіз жалғасады, 15 пикселдік дерек блоктары анықтамалық желінің қатарлары мен бағандарымен бөлінеді. Символды құрудың бір жолы – анықтамалық желіні толығымен жою және 2×2 пикселді ақ шаршыға ортақталған 14×14 пикселдік өзекті пайдалану. Содан кейін оны 15×15 пикселдік блоктарға бөліп, олардың арасына анықтамалық желіні енгізу. Режим хабарламасы өзектің жоғарғы сол жақ бұрышында басталады және оны 1 бит қалың қабатпен сағат тілі бойынша айналып қоршайды. Ол қабаттар санының ең маңызды битінен басталып, тексеру сөздерімен аяқталады. Ацтек кодының ықшам нұсқасы үшін, ол бағдар белгілеріне орын қалдыру үшін 7 биттен тұратын төрт бөлікке бөлінеді. Толық ацтек коды үшін ол 10 биттен тұратын төрт бөлікке бөлінеді, ал бұл бөліктердің әрқайсысы анықтамалық желімен екіге бөлінеді. Кейбір жағдайларда матрицаның жалпы сыйымдылығы толық кодтық сөздерге бірдей бөлінбейді. Мұндай жағдайларда негізгі хабардың басында 0 биттерімен толтырылады. Бұл биттер тексеру сөзін есептеуге қатыстырылмайды және декодтау кезінде өткізіп тасталуы тиіс. Толық символдың жалпы матрицалық сыйымдылығы толық ацтек коды үшін (112+16*L)*L, ал ықшам ацтек коды үшін (88+16*L)*L формуласымен есептеледі, мұнда L – символдың қабаттардағы өлшемі. Мысалы, 1 қабатты ықшам ацтек кодының жалпы матрицалық сыйымдылығы 104 бит. Кодтық сөздер алты биттен тұрғандықтан, бұл 17 кодтық сөз және екі қосымша бит береді. Екі нөлдік бит хабарламаға төсем ретінде қосылады және декодтау кезінде өткізіп тасталуы тиіс. Толтырылған негізгі хабарлама бүкіл символдың сыртқы сол жақ бұрышынан басталады және оны 2 бит қалың қабатпен сағат тіліне қарсы айналып қоршайды, өзектің жоғарғы сол жақ бұрышынан тікелей жоғары аяқталады. Бұл деректерді сақтау үшін арналған биттерді орналастырады, олардың жоғалуын анықтауға болады, символдың ең сыртқы қабаттарында, олар жоғалуға бейім. Тексеру сөздері өзектің жанында сақталады. Соңғы тексеру сөзі үгіттің көзінің жоғарғы сол жақ бұрышынан жоғары аяқталады. Стандартты бағытта, бірінші дерек сөзінің бірінші биті жоғарғы сол жақ бұрышта орналастырылады, ал қосымша биттер 2 бит ені бар бағанға солдан оңға және жоғарыдан төменге орналастырылады. Бұл символдың төменгі жағынан 2 қатарға дейін жалғасады, онда үлгі 90 градусқа сағат тіліне қарсы айналады және 2 бит биіктігі бар қатарда, төменнен жоғарыға және солдан оңға жалғасады. 4 тең өлшемді ширек қабаттан кейін спираль келесі ішкі қабаттың жоғарғы сол бұрышымен жалғасады, ақырында өзектің жоғарғы сол бұрышынан бір пиксел жоғары аяқталады. Соңында 1 бит қара түспен, ал 0 бит ақ түспен басылып шығарылады.
Көлік
Ацтек кодтары көлік билеттерін шығаруда кеңінен қолданылады. Авиакомпания тармағы электрондық билеттер үшін Ацтек кодын таңдады (IATA BCBP стандарты). Көптеген авиакомпаниялар жолаушылардың ұялы телефондарына Ацтек кодтарын жібереді, олар билет ретінде қолданылады. Бұл кодтар көбінесе жолаушылардың телефондарындағы қолданбалармен, соның ішінде Apple Wallet-пен интеграцияланады. Ацтек кодтары теміржол саласында да қолданылады, оның ішінде Тегеран метрополитені, Ұлыбритания Ұлттық теміржолы, Eurostar, Deutsche Bahn, TCDD Taşımacılık, DSB, SJ, České dráhy, Словакия теміржолдары, Словения теміржолдары, Хорватия теміржолдары, Trenitalia, Nederlandse Spoorwegen, Pasažieru vilciens, PKP Intercity, VR Group, Via Rail, Швейцария Федералдық теміржолдары, SNCB және SNCF компаниялары онлайн сатылған және клиенттер басып шығарған немесе ұялы телефон экранында көрсетілген билеттер үшін пайдаланылады. Ацтек кодын пойыз қызметкерлері немесе турникеттегі қолмен ұсталатын сканер арқылы билетті тексеру үшін скандейді.
Мемлекеттік
Польшадағы автомобильдерді тіркеу құжаттарында NRV2E алгоритмімен қысқартылған және Aztec Code түрінде кодталған қысқаша мағлұмат бар. Автокөлік сақтандыру компанияларына жаңа сақтандыру шартын жасаудың бірінші қадамы ретінде құжаттың цифрлық суретіне сүйене отырып, қажетті ақпаратты автоматты түрде толтыруға мүмкіндік беру жұмыстары жүргізілуде. Ресей Федералды салық қызметі салық есептемелерінде төлем туралы ақпаратты Aztec Code түрінде кодтайды.
Коммерциялық
Канададағы көптеген есептеу қызметтері осы технологияны қолданып жүр, оның ішінде EastLink, Shaw Cable және Bell Aliant.