Press "Enter" to skip to content

Hogyan készítsünk QR-kódot olvashatatlanul

QR-kód generációs algoritmus

A QR-kód egy monokróm kép, amelyen egyes eszközök (például egy speciális alkalmazással rendelkező okostelefon) felismerik a szöveget. Ez a szöveg nemcsak egyszerű kifejezés lehet, hanem bár nem szerepel a hivatalos specifikáció, link, telefonszám vagy névjegykártya. Az ilyen kódokat leggyakrabban a link kódolására használják, és poszterre vagy névjegykártyára nyomtatják.

Ez a cikk egy részletes használati létre egy QR-kód példákkal minden lépést, amely előírja, csak az alapvető készség, hogy a munka a bináris adatokkal és rendelkezik olyan programozási nyelvet (ha azt szeretnénk, hogy hozzon létre egy automatikus QR kód generátor).

E cikk alapjaként a “QR Code Demystied” Jason Brown (Jason Brown) ciklusa (Jason Brown). Ezekben a cikkekben sok árnyalat hiányzott, ami problémákat okozott nekem. Mindezen árnyalatokat figyelembe veszik és itt említik.

A QR-kód létrehozásának folyamata számos egyértelmű lépésre oszlik:

  1. Adatkódolás.
  2. Szolgáltatási információk hozzáadása és kitöltése.
  3. Az információk szétválasztása a blokkokról.
  4. Bytes korrekció létrehozása.
  5. Uniós blokkok.
  6. Információk a QR-kódra.

Adatkódolás

A QR-kód több adatkódolási módszert támogat, attól függően, hogy mely szimbólumokat használják: Digitális, alfanumerikus, Kanji (Sino-japán hieroglifák) és a túlterhelt kódolás. A digitális kódolás csak 0 és 9 közötti számjegyeket jelent, a latin ábécé, a számok és a szimbólumok $% *+-./: És a tér, nem fogom figyelembe venni Kanji-t, és a kódolási bájtok egyáltalán nem igényelnek. Először létre kell hoznia egy üres bitszekvenciát, amely tovább fog kitölteni.

Digitális kódolás

Ez a típusú kódolás 10 bitet igényel 3 karakterhez. A karakterek teljes sorozata 3 számjegycsoportba kerül, és minden csoport (háromjegyű szám) egy kicsit bináris számra kerül, és hozzáadódik a bitszekvenciához. Ha a karakterek száma nem több 3, akkor ha 2 karakter van a végén, a kapott kétjegyű szám 7 bitgel van kódolva, és ha 1 szimbólum, akkor 4 bit.

Például van egy karakterlánc “”, amelyet kódolni kell. Számokba illesztjük, és 78-at, akkor mindegyiküket bináris megjelenésbe fordítjuk: és egy szálba egyesítjük:

Alfanumerikus kódolás

Ebben az esetben 2 karakter szükséges 11 bit információt. A bemeneti folyam karakterekből oszlik csoport 2, a csoport minden egyes szimbólum szerint van kódolva az alábbi táblázat, az értéke az első karakter a csoport szorozva 45, és hozzáadjuk az érték a második szimbólum. A kapott számot egy kicsit bináris számra fordítják, és hozzáadjuk a bitszekvenciához. Ha az utolsó 1. csoportban van, akkor az értéke azonnal 6 bites számmal van kódolva, és hozzáadódik a bitszekvenciához.

Asztal 1. Szimbólumértékek alfanumerikus kódolásban.

0 1 2 3 4 5 6 7 nyolc kilenc A B C D E
0 1 2 3 4 5 6 7 nyolc kilenc tíz tizenegy 12 13 tizennégy
F G H ÉN J K L M N O P Q R S T
15 16 17 tizennyolc 19 húsz 21 22 23 24 25 26 27 28 29
U V W X Y Z Tér $ % * + . / :
harminc 31 32 33 34 35 36 37 38 39 40 41 42 43 44

Például a “Hello” karakterlánc a következőképpen kódolódik. Csoportokra osztjuk: Ő, Ll, O; Megtaláljuk a szimbólumok megfelelő jelentését az egyes csoportokban: (17, 14), (21, 21), (24); Megtaláljuk az értéket minden csoporthoz: 17 * 45 + 14 =, 21 * 45 + 21 =, 24 = 24; Minden értéket bináris formába fordítjuk: =, =, 24 =; És mindezeket egy bitsorozatban kombináljuk:

Válogatás kódolás

Ez egy univerzális kódolási módszer, amely bármilyen karaktert kódolhat. A módszer egyetlen hátránya az információ viszonylag alacsony sűrűsége. Ebben az esetben a szöveget bármely kódolásban kódolják (az UTF-8-ban ajánlott), és a kapott bájtszekvenciát változatlanul veszik.

Például, a sorban „Habr”, által kódolt UTF-8 kódolással, az alábbi bájtok: ,,,,,, szükséges egyszerűen egyesítjük a bit be egy szál:

Szolgáltatási információk hozzáadása

Ebben a szakaszban meg kell szintjének meghatározása korrekció: minél magasabb ez az érték, annál nagyobb a megengedett szintet kár, hogy a kép és a kevesebb információt azonos méretű. A Corps 4 szintje van: L (megengedett legnagyobb 7% -os károsodás), m (15%), Q (25%) és H (30%). Leggyakrabban az m szint. Ha hozzáadni szeretné a rajzot a QR-kódhoz (a Habré-on több cikk van ezen a témában), akkor használja a H szintet.

Egy másik tulajdonság QR-kód a verziója (mint több, annál nagyobb méretű). 40 verzió van. A verziószám a kódolt információk számától és a korrekció szintjétől függ. A 2. táblázat a hasznos információ maximális mennyiségét mutatja a szolgáltatás (bitek) mellett, amely e verzió QR-kódjában kódolható. QR-kódunk verziója meghatározza ebből a táblázatból.

2. táblázat. Maximális információmennyiség.Sor – korrekciós szint, oszlop – verziószám.

1 2 3 4 5 6 7 nyolc kilenc tíz
L
M
Q
H 72
tizenegy 12 13 tizennégy 15 16 17 tizennyolc 19 húsz
L
M
Q
H
21 22 23 24 25 26 27 28 29 harminc
L
M
Q
H
31 32 33 34 35 36 37 38 39 40
L
M
Q
H

Segédprogramok hozzáadása

Ekkor a korrekció szintjét már ki kell választani, és meghatározzák a verziót. Most van szükség, mielőtt az elsősorban a bit kapott az előző bekezdésben, hozzá az elején két területen: a módszer a kódolás és az adatmennyiség. A kódolási módszer egy 4 bites mező, amely a következő értékekkel rendelkezik: a digitális kódoláshoz, alfanumerikus és posty. Az adatok mennyisége az a szám, a kódolt szimbólumokat, és a fényes – a bájtok számát (és nem bit a kapott szekvencia), egy bináris számot egy bizonyos hosszúságú (határozza meg 3. táblázat).

3. táblázat. Az adatok adatszámának hossza.

1-9-es verzió 10-26 27-40-es verzió
Digitális 10 bit 12 bit 14 bit
Alfanumerikus 9 bit 11 bit 13 bit
Válogatós 8 bit 16 bit 16 bit

Például egy “korrekcióhoz” kódolt bájt hosszúságú karakterlánc. A vonal szekvencia hossza – bit. A 2. táblázat használatával megállapítható, hogy a 6. verzió a legoptimálisabbat használja. A mező mennyiségének meghatározása a mi esetünkben 8 bit (3. táblázat). A kódolás módjának meghatározása az adatmennyiség mezője – (bináris formában). Ennek eredményeképpen a bitforrás szekvencia sorrendje>.

Ha a beérkezett szekvencia hossza a kiválasztott változat megengedett, akkor a verziót meg kell növelni, és elfogadja a szolgáltatási területek hozzáadását.

A specifikáció lehetővé teszi a vegyes kódolás használatát. Ez azt jelenti, hogy több adatcsoportot különböző módon kódolhatunk, és egy sorozatot kombinálhat. Ezt az alábbiak szerint: Az adatok kódoló eljárás 1> adatok száma 1> Adatok 1> Adatok kódoló eljárás 2> adatok száma 2> Adatok 2>, és így tovább.

Töltő

Ebben a szakaszban van egy adatbitszekvencia, a bitek száma, amelyek valószínűleg nem többszörös 8. A nullákkal kell kiegészíteni, hogy a hossza 8-ra festett legyen. Most a bit sorozata 8 bites csoportokra osztható, és beadja egy bájtos sorrend formájában (itt fogjuk ezt megtenni). Ha az aktuális bájt sorrendben lévő bitek száma kisebb, mint amennyire szüksége van a kiválasztott verzióra, hozzá kell adni a váltakozó bájtokhoz, és így van egy sor bájt, amelynek hossza megfelel a kiválasztott QR-kódnak.

Példa. Van egy sorrend: a bitek sorozata, amelynek hossza többszörös 8>; A nullákkal kiegészítjük, hogy hossza több mint 8: a bit szekvenciája, amelynek hossza több 8>; Most tegyük fel, hogy annak hossza egy kicsit, és a kiválasztott verziót, meg kell egy kicsit, akkor meg kell adni 24 „kitöltés” ​​bit „(3 bájt): sorozata egy kicsit, amelynek hossza többszöröse 8> Kész.

Elkülönítése információ blokkok

A szekvenciát a byte, szerezhetők be az előző szakaszban, (a továbbiakban: az adatok) van osztva az összeg a blokkok hívja a változata és a szint a korrekció, amely a 4. táblázat mutatja. Ha a blokkok száma eggyel egyenlő, akkor ebben a szakaszban is kimarad.

4. táblázat. Blokkok száma.Sor – Javítás szinten oszlop – verziószám.

1 2 3 4 5 6 7 nyolc kilenc tíz
L 1 1 1 1 1 2 2 2 2 4
M 1 1 1 2 2 4 4 4 5 5
Q 1 1 2 2 4 4 6 6 nyolc nyolc
H 1 1 2 4 4 4 5 6 nyolc nyolc
tizenegy 12 13 tizennégy 15 16 17 tizennyolc 19 húsz
L 4 4 4 4 6 6 6 6 7 nyolc
M 5 nyolc kilenc kilenc tíz tíz tizenegy 13 tizennégy 16
Q nyolc tíz 12 16 12 17 16 tizennyolc 21 húsz
H tizenegy tizenegy 16 16 tizennyolc 16 19 21 25 25
21 22 23 24 25 26 27 28 29 harminc
L nyolc kilenc kilenc tíz 12 12 12 13 tizennégy 15
M 17 17 tizennyolc húsz 21 23 25 26 28 29
Q 23 23 25 27 29 34 34 35 38 40
H 25 34 harminc 32 35 37 40 42 45 48
31 32 33 34 35 36 37 38 39 40
L 16 17 tizennyolc 19 19 húsz 21 22 24 25
M 31 33 35 37 38 40 43 45 47 49
Q 43 45 48 51 53 56 59 62 65 68
H 51 54 57 60 63 66 70 74 77 81

Meghatározása a bájtok számát az egyes blokkokban

Ehhez a bájtok teljes számát meg kell osztani (meghatározhatja az adatokból származó bájtok mennyiségét, vagy a számot a 2. táblázatban nyolcra oszthatja) az adatblokkok számával. Ha ez a szám nem egész, akkor meg kell határoznia a divízió egyenlegét. Ez a maradék határozza meg, hogy hány blokkot kiegészítenek (ilyen blokkok, a bájtok száma, amelyek több, mint a többieknél). A várakozással ellentétben a kiegészített blokkok nem lehetnek az első blokkok, hanem az utolsó.

Például, a 9-es verzió és a szintje a korrekció M az adatmennyiség – bájt, a blokkok száma – 5. Az adatbájt összegének a blokkok számát, 36 bájtot és 2 bájtot kapunk a fennmaradó részben. Ez azt jelenti, hogy az adatblokkok a következő méretekkel rendelkeznek: 36, 36, 36, 37, 37 (BYTE). Ha a maradék nem volt, hogy mind az 5 blokk 36 bájt méretű lenne.

Töltőblokkok

A blokk teljesen az adatokból származó bájtokkal van kitöltve. Amikor az aktuális blokk teljesen kitöltött, a sor a következőkre kerül. Az adatbájtoknak elegendőnek kell lenniük pontosan minden blokkhoz, sem több és nem kevesebb.

Bytes korrekció létrehozása

A következő algoritmust minden egyes adatblokkra (ha az adatblokk egy, akkor egyszerűen az adatokhoz).

Ez az algoritmus alapján a Reda-Solomon algoritmus. Az első dolog az, hogy meghatározza, hogy hány bájt a korrekciós értéket kell létrehozni (5. táblázat). A korrekciós bájtok számával meghatározzák az úgynevezett generáló polinomot (6. táblázat). Ez egy polinomnak nevezik, mert az eredeti módszer ugyanazon együtthatókkal rendelkező polinomot használ.

5. táblázat. A beállítási bájtok száma egységenként.Sor – korrekciós szint, oszlop – verziószám.

1 2 3 4 5 6 7 nyolc kilenc tíz
L 7 tíz 15 húsz 26 tizennyolc húsz 24 harminc tizennyolc
M tíz 16 26 tizennyolc 24 16 tizennyolc 22 22 26
Q 13 22 tizennyolc 26 tizennyolc 24 tizennyolc 22 húsz 24
H 17 28 22 16 22 28 26 26 24 28
tizenegy 12 13 tizennégy 15 16 17 tizennyolc 19 húsz
L húsz 24 26 harminc 22 24 28 harminc 28 28
M harminc 22 22 24 24 28 28 26 26 26
Q 28 26 24 húsz harminc 24 28 28 26 harminc
H 24 28 22 24 24 harminc 28 28 26 28
21 22 23 24 25 26 27 28 29 harminc
L 28 28 harminc harminc 26 28 harminc harminc harminc harminc
M 26 28 28 28 28 28 28 28 28 28
Q 28 harminc harminc harminc harminc 28 harminc harminc harminc harminc
H harminc 24 harminc harminc harminc harminc harminc harminc harminc harminc
31 32 33 34 35 36 37 38 39 40
L harminc harminc harminc harminc harminc harminc harminc harminc harminc harminc
M 28 28 28 28 28 28 28 28 28 28
Q harminc harminc harminc harminc harminc harminc harminc harminc harminc harminc
H harminc harminc harminc harminc harminc harminc harminc harminc harminc harminc

6. táblázat. Gegorizáló polinomok.

A bájtok korrekciószáma Polinom létrehozása
7 87 ,,,,,, 21
tíz , 67, 46, 61, 70, 64, 94, 32, 45
13 74 ,,,, 86 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
15 8, 61, 91, 37, 51, 58, 58 ,,,, 5, 99,
16 , , , , , , 76, 3, 91, , , , , , ,
17 43 ,,,, 24 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, , ,
tizennyolc , , , 94, 97 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
húsz 17, 60, 79, 50, 61 ,,6 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, , , , , , ,
22 , , , , 93, 14 ,, 53, 74, 8, 98, 80, , , , , ,
24 , , , 48 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, II
26 , , , 2 ,,,,,,,,,,,,,,,,,,, y
28 , , , , , , , , , , , , , 27 ,, 21, 43, 87, 42 ,,,, 37, 9,
harminc 41 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,

A ciklus végrehajtása előtt egy tömb elkészítéséhez szükséges, amelynek hossza megegyezik az aktuális blokkban lévő bájtok számával és a beállítási bájtok számával, és töltse ki az aktuális bájtok kezdetét egység, és a nullák vége.

Az ebben a listában leírt ciklust többször is megismételjük, mivel az adatbájtokat az aktuális blokk tartalmazza.

  1. A tömb első elemét elkészítjük, az értéket egy A változóban mentjük, és eltávolítjuk azt a tömbből (az alábbi értékek balra tolódnak balra, az utolsó elem nulla) van kitöltve).
  2. Ha az ASNA nulla, akkor hagyja ki a következő műveleteket (a lista végéig), és menjen a ciklus következő iterációjához.
  3. Megtaláljuk a megfelelő számot és a 8. táblázatban szereplő számot, írja be a B változóba.
  4. Ezután n első elemek esetén, ahol n a korrekciós bájtok száma, i – a ciklusszámláló:
    • Az i-MU értékét előállító polinom hozzá kell adni a b érték, és írja le ezt az összeget a változó (a polinom maga nem változik).
    • Ha több, akkor a maradékot kell használni, ha elosztása (pontosan, nem).
    • Keresse meg a megfelelő értéket a 7. táblázatban és végezze el a felvert hozzáadásával a modul 2 (XOR, sok programozási nyelvek üzemeltető ^) a IM értéket az elkészített tömbben, és levelet az eredő érték az i-edik cella az előkészített sor.

Az előkészített tömb első N bájtja a ciklus után – és vannak korrekciós bájtok. Minden egyes adatblokk esetében a megfelelő korrekciós bájt blokkot kapunk.

Nem tud semmit megérteni? Én is. Nézd meg a példát, és minden világos lesz.

7. táblázat. Galois Field.Ez a táblázat – a Galois mező hosszának értékei automatikusan vycheslit lehet.

0 1 2 3 4 5 6 7 nyolc kilenc tíz tizenegy 12 13 tizennégy 15
1 2 4 nyolc 16 32 64 29 58 19 38
16 17 tizennyolc 19 húsz 21 22 23 24 25 26 27 28 29 harminc 31
76 45 90 3 6 12 24 48 96
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
39 78 37 74 53 35
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
70 5 tíz húsz 40 80 93
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
95 97 47 94 15 harminc 60
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
91
96 97 98 99
67 17 34 68 13 26 52
31 62 59 51
23 46 92 79 33 66 21 42 84
77 41 82 85 73 57
99 63
75 49 98 55 87 65
25 50 7 tizennégy 28 56 83
81 89 43 86 69 kilenc
tizennyolc 36 72 61 tizenegy 22
44 88 27 54 71 1

8. táblázat. Az inverz galois mező.Ez a táblázat kiszámítható a 7. táblázatból.

0 1 2 3 4 5 6 7 nyolc kilenc tíz tizenegy 12 13 tizennégy 15
0 1 25 2 50 26 3 51 27 75
16 17 tizennyolc 19 húsz 21 22 23 24 25 26 27 28 29 harminc 31
4 tizennégy 52 28 nyolc 76
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
5 47 36 15 33 53 tizennyolc 69
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
29 39 kilenc 77
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
6 98 48 37 16 34
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
54 19 92 56 70 64
96 97 98 99
harminc 66 72 58 40 84 61
94 tíz 21 43 78 87
7 99 13 74 49 24
38 17 68 35 32 46
55 63 91 97
86 húsz 42 93 60 57 83 71 65
31 45 67 23 73 12
59 82 41 85 96 62 90
89 95 81 tizenegy 22 44
79 80 88

Példa. Itt minden byte én lesz bemutató formájában decimális számok 0-tól a forrás blokk az adatokat:

Használt 2. változat Javítás szint H. Ebben az esetben, akkor létre kell hozni 28 byte-korrekció (5. táblázat), és a termelő polinom (6. táblázat):

Létrehozása array (elkészített tömb), hogy 28 elemeket és töltse meg adatok byte:

Írok majd részletesen az első lépés a ciklus, a többi formájában kész tömb. Az első elem a tömb – akkor azt eltávolítjuk az előkészített tömb:

A 8. táblázatban, azt látjuk, hogy betartását – 6; Mi hozzá a modult a modul egyes számú generáló polinom:

A generáló polinom minden egyes számához a 7. táblázatban megfelelünk:

És javítási művelet vert összeadást 2 egy előkészített tömböt:

Ismételjük ezeket az intézkedéseket 16-szor (16 bájt adat). Ennek eredményeképpen a következő korrekciós bájtokat kapják:

Minden lépcső létrehozási byte korrekció a példában.

    Uniós blokkok

    Számos adatblokkot és ugyanazt a korrekciós bájt blokkot tartalmazunk, azokat egy bájtáramba kell kombinálni. Ez a következőképpen zajlik: egy byte információt veszünk minden adatblokkot, amikor a sorban jön az utolsó blokk, bájt veszünk, és felváltva az első blokk. Így tovább folytatódik, amíg a bájtok minden blokkban elfogynak. Ha nincs bájt az aktuális blokkban, akkor kihagyják (ez történik, ha a szokásos blokkok már üresek, és a kiegészítésben még egy bájt van). Hasonlóképpen, korrekciós bájt blokkokat kell készítenie. Ezek ugyanabban a sorrendben vannak, mint a megfelelő adatblokkok.

    Ennek eredményeképpen valami ilyesmi: az 1. adatblokk 1. bájtja> 1. bájtja az 1. bájlás 1. bájtja az 1. adatblokk N-TH DATA blokkjának 1. bájtja> (M – 1) edik bájt az 1. adatblokk> (M – 1) -edik bájtja az N-edik adat blokk> Mr. byte K-edik adat blokk> Mr. byte N-edik adat blokk> 1. byte az 1. blokk a A 2. korrekciós bájt első bájtja> 1. bájtja a korrekciós bájt 1. bájlásának 1. blokkjának 1. bájlásának 1. bájtja> Az 1. blokkbájt korrekciós bájtjának 1. bájtjának 1. blokkja> L-TH bájtja BYTE N-TH blokk byte korrekció>. Itt n az adatok száma blokkok, M – a bájtok számát az adatblokk hagyományos tömb, L a száma korrekciós bájt, k – az adatok száma blokkok mínusz a száma komplementer adatblokkok (azok, akiknek 1 bájt több).

    Információk a QR-kódra

    Van egy soros byte, amely készen áll annak érdekében, hogy a vászonra kerüljön. A vászon modulokból áll – elemi négyzetek.

    Alapvető elemek

    A QR-kód csak a verziótól függ. Az első verzióhoz ez 21 modul, és a vezetői változatok méreteit a 9. táblázat határozza meg. Általában tartalmazza az összehangolási minták (egy kicsit később) helyét, de a vászon mérete az utolsó + 7 modulok szerint definiálható. Szeretném felhívni a figyelmet arra, hogy a francia bekezdés, a fehér modulok kerete 4 modul szélessége, – a QR-kód teljes része, és nem vehető figyelembe. Ennek ellenére a fekete modulok pontos részének magasságát jelöljük, és indítsa el a jelentést a bal felső sarokban ((0, 0) – a bal felső sarkában lévő bal felső sarkában).

    9. táblázat. A kiegyenlítési minták helye.Top String – Verziószám.

    1 2 3 4 5 6 7 nyolc
    tizennyolc 22 26 harminc 34 6, 22, 38 6, 24, 42
    kilenc tíz tizenegy 12 13
    6, 26, 46 6, 28, 50 6, 30, 54 6, 32, 58 6, 34, 62
    tizennégy 15 16 17 tizennyolc
    6, 26, 46, 66 6, 26, 48, 70 6, 26, 50, 74 6, 30, 54, 78 6, 30, 56, 82
    kilenc húsz 21 22 23
    6, 30, 58, 86 6, 34, 62, 90 6, 28, 50, 72, 94 6, 26, 50, 74, 98 6, 30, 54, 78,
    24 25 26 27 28
    6, 28, 54, 80, 6, 32, 58, 84, 6, 30, 58, 86, 6, 34, 62, 90, 6, 26, 50, 74, 98,
    29 harminc 31 32
    6, 30, 54, 78, , 6, 26, 52, 78, , 6, 30, 56, 82, , 6, 34, 60, 86, ,
    33 34 35 36
    6, 30, 58, 86, , 6, 34, 62, 90, , 6, 30, 54, 78, , , 6, 24, 50, 76, , ,
    37 38 39 40
    6, 28, 54, 80, , , 6, 32, 58, 84, , , 6, 26, 54, 82, , , 6, 30, 58, 86, , ,

    Keresési minták

    Ezek olyan minták, amelyek egy olyan fekete négyzetméteres mérés modulonként, amelyet fehér modulok keretével vesznek körül, amelyeket fekete modulok keretében vesznek körül, amelyeket a fehér modulok kerete vesz körül, csak az oldalról, ahol nincs ferde. A keresési minták a felső és a bal sarkokban találhatók (3).

    igazítása minták

    A 2. verzióból kiindulva 1-től 1-es méretű fekete négyzetet jelent, amelyet fehér modulok keretével vesznek körül, amelyet egy fekete modulok keretében vesznek körül, ennek eredményeként ez a minta 5-5-ös méretű. Olyan helyek, ahol a szintezési minták találhatók a 9. táblázatban. Pontosabban, a rács függőleges és vízszintes csomópontjait jelzik, ahol a minták központi moduljai találhatók. Például, ha a táblázat van írva 6, 22, 38, ez azt jelenti, hogy a modul központokat kell elhelyezni a következő pontokban: (6, 6), (6, 22), (6, 38), (22, 6 ), (22 22), (22, 38), (38, 6), (38, 22), (38, 38). Van egy fontos állapot: a szintezési mintákat nem szabad keresési mintákra. Ez az, amikor a verzió nagyobb, mint 6, a pontokon (első, első), (első, utolsó) és (az utolsó, az első, első) szintezési minták nem lehetnek. Példánkban ez (6, 6), (6, 38) és (38, 6).

    Szinkronizálási sávok

    Minden egyszerű itt. A csíkok a bal felső burkolat legalacsonyabb fekete-fekete moduljától kezdve, váltakozó fekete-fehér modulok, lefelé és jobbra a keresési mintákkal szemben. A szintezési minta rétegezésénél változatlanul kell maradnia.

    Verziószám

    Ezeket az elemeket a 7. verzióból használják. A verzió kódja 2 helyen van, és a tükör, azaz a modul színének meghatározása a koordinátákban (X, Y), az egyik biztonságosan jelezheti ugyanezt a színt a koordinátákban (Y, X). A helyszíneken lévő modulok az alábbi ábra és a 10. táblázat szerint épülnek fel (1 – fekete, 0 – fehér).

    Táblázat-verzió kódok.

    Változat Verziószám
    7
    nyolc
    kilenc
    tíz
    tizenegy
    12
    13
    tizennégy
    15
    16
    17
    tizennyolc
    19
    húsz
    21
    22
    23
    24
    25
    26
    27
    28
    29
    harminc
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40

    Maszk kód és korrekciós szint

    Ezt a kódot, valamint az előzőt 2 helyen duplikálja: a bal felső keresési minta mellett és az alsó és jobb keresési minták mellett (az elem szenved a rést). Különösen titkosítva van egy maszkkóddal (egy kicsit később) és a korrekciós kóddal. Az asztali maszkot az utolsó lépésben határozzák meg, amikor minden más szabad hely tele van adatokkal. Annak a ténynek köszönhetően, hogy a maszk egy jobb opció alapján van kiválasztva (ehhez át kell mennie az összes maszkon keresztül), hogy hozzáadjon egy maszk kódot, és a korrekció szintje többször is vissza kell térnie. Eddig nem adja hozzá ezt az elemet. Az ábra azt mutatja, hogy pontosan az elem modulja épült, valamint a piros modul, amely mindig fekete.

    Asztali maszk kódok és szint korrekció.

    Korrekciós szint Maszk kód Kód
    L 0
    L 1
    L 2
    L 3
    L 4
    L 5
    L 6
    L 7
    M 0
    M 1
    M 2
    M 3
    M 4
    M 5
    M 6
    M 7
    Q 0
    Q 1
    Q 2
    Q 3
    Q 4
    Q 5
    Q 6
    Q 7
    H 0
    H 1
    H 2
    H 3
    H 4
    H 5
    H 6
    H 7

    Adatok hozzáadása

    A vászon összes fennmaradó szabad helyét az oszlopok lebontják: minden 2 modul, nem számít, hogy mi van ezeken a modulokban, a szinkronizálás időzítőcsíkján, amelyet egyszerűen kihagyott. A kitöltés a jobb alsó sarokban kezdődik, az oszlopon jobbra halad, az alulról felfelé. Ha az aktuális modul elfoglalt (például szinkronizációs sáv vagy szintezési minta), akkor egyszerűen kihagyott. Ha eléri az oszlop tetejét, a mozgás folytatódik az oszlop jobb felső sarkából, amely balra helyezkedik el, és a felülről lefelé halad. Miután elérte a Nizát, a mozgás folytatódik az oszlop jobb alsó sarkából, amely balra helyezkedik el, és felfelé halad. És így tovább, amíg az összes szabad hely kitölti.

    A bit kitöltése az adatbájtok bitén kívül történik, és 1 fekete modul, és 0 – fehér. Ha az adatok nem elég, a fennmaradó hely tele van nulla modulokkal.

    Ugyanakkor az egyik maszk minden egyes modulon van. Összes maszkok 8 darab (0 és 7 között), a listájuk az asztalnál Ha az asztalról származó kifejezés nulla, akkor a modul színe invertálódik, különben változatlan marad. A maszk csak adatmodulokra vonatkozik.

    Asztal maszkok.X – oszlop, Y – String,% – egyenleg a divízióból, / – egész szám.

    Maszk szám Maszk
    0 (X + y)% 2
    1 Y% 2
    2 X% 3
    3 (X + y)% 3
    4 (X / 3 + y / 2)% 2
    5 (X * y)% 2 + (x * y)% 3
    6 ((X * y)% 2 + (x * y)% 3)% 2
    7 ((X * y)% 3 + (x + y)% 2)% 2

    A maszk különböző módon van kiválasztva: egyesek mindig ugyanazokat használják, a többiek véletlenszerűek, de a specifikáció ragaszkodik ahhoz, hogy minden maszkot értékeljék és a legoptimálisabb. Az értékelési módszer több időt igényel, de semmi szörnyű, ha nem az optimális maszk kiválasztásra kerül, így nem szükséges használni, de még mindig beszélek róla. A kiválasztott maszkból a maszk kódja és a korrekció szintje függ (lásd. a fenti), most az a tétel hozzáadása.

    A legjobb maszk kiválasztása

    Ez a rész nem kötelező, és ha már döntött a maszkok megválasztásáról és hozzáadott adatokat a vászonra, akkor a QR-kód készen áll.

    Ennek az eljárásnak a lényege, hogy QR-kódot generáljon a nyolc maszkok mindegyikéből, hogy minden egyes büntetőüveget egy adott szabályok szerint töltsük fel, és válasszon ki egy legkisebb szemüveggel rendelkező maszkot. Ne feledje, hogy az adatokkal a maszk kódja és a korrekció szintje hozzáadódik a vászonhoz.

    1. szabály

    Vízszintesen és függőlegesek minden 5 és több egymást követő egymást követő, azonos színű, egymást követő egymást követő modulok felhalmozódott a mínusz 2 ponttal egyenlő pontok számával. Ebben és minden más szabályban a francia bekezdés nem tekinthető figyelembe, minden a fő területre korlátozódik.

    2. szabály

    Az azonos színű modulok mindegyik négyzetére a 2-2.

    3. szabály

    A CHBCHCHCHCHBCH modulok minden egyes sorrendjében 4 fehér modul, az egyik oldala (vagy a 2. azonnal) 40 pontot adunk hozzá (függőlegesen vagy vízszintesen). Egyszerűen tegye ezeket az elemeket:

    Példánkban csak 3 ilyen elem, amelyre további pontokat kap (nem feltétlenül ezeknek az elemeknek a keresési mintával kell metszeniük):

    4. szabály

    Az ezen a lépcsőn lévő pontok száma a fekete-fehér modulok számától függ. A közelebb az 50% -os arány 50% -kal, annál jobb. Az első dolog, hogy meg kell osztani a fekete modulok számát a modulok teljes számához (ismét a francia bekezdés nem tekinthető).

    Ezután megszorozzák a kapott eredményt, és elveszik

    Dobja ki a tizedes részt, és vegye figyelembe a számot a modulban.

    Szorozzuk meg a kapott számot 2-en.

    Adja hozzá ezt a számot a büntetőpontok teljes számához.

    Eredmény

    Végül minden maszk esetében megkapja a büntetőpont számát, csak kevesebb pontot kell választania, és a QR-kódod teljesen készen áll. Ami a gyakorlatban azt mutatja, minél alacsonyabb a maszk száma, annál nagyobb a valószínűsége, hogy jobb lesz, ezért lehet kiválasztani egy jobb maszkot az optimalizáláshoz, de például 4-től.

    A cikkek alapjául szolgáltak

    Comments are closed, but trackbacks and pingbacks are open.