아즈텍 코드
Aztec Code아즈텍 코드는 1995년 [1]앤드류 롱악어와 로버트 허시에 의해 발명된 2D 바코드의 일종이다.이 코드는 AIM, Inc.에 의해 1997년에 발행되었다.아즈텍 법전은 [1]특허를 받았지만,[2] 그 특허는 공식적으로 공개되었다.Aztec 코드는 ISO/IEC 24778:2008 표준으로도 발행됩니다.중앙 파인더 패턴이 Aztec 피라미드와 비슷하다고 해서 명명된 Aztec 코드는 주위에 공백의 "조용한 영역"이 필요하지 않기 때문에 다른 매트릭스 바코드보다 공간을 적게 사용할 수 있습니다.
구조.
이 기호는 코드를 찾기 위한 불스아이 패턴이 중앙에 있는 정사각형 그리드에 제작됩니다.데이터는 불스아이 패턴 주위에 동심원 사각 링으로 부호화됩니다.중앙 불스아이는 9×9 또는 13×13 픽셀이며, 기본 코딩 파라미터를 인코딩하는 픽셀의 한 행이 11×11 또는 15×15 정사각형의 "코어"를 생성합니다.데이터는 각각 2개의 픽셀 링을 포함하는 "레이어"로 추가되며, 총 크기는 15×15, 19×19, 23×23 등입니다.
코어의 모서리에는 방향 표시가 포함되어 있어 회전 또는 반사 시 코드를 읽을 수 있습니다.디코딩은 3개의 검은색 픽셀로 코너에서 시작하여 2개, 1, 0개의 검은색 픽셀로 코너까지 시계 방향으로 진행됩니다.중앙 코어의 가변 픽셀은 크기를 인코딩하기 때문에 일부 바코드 리더는 크기를 필요로 하지만 빈 "quiet zone"으로 코드의 경계를 표시할 필요가 없습니다.
콤팩트한 Aztec 코드 코어는 1~4개의 레이어로 둘러싸여 15×15(13자리 또는 12자리의 방)부터 27×27까지의 기호를 생성할 수 있습니다.또한 1바이트의 정보를 인코딩하는 특별한 11×11 "rune"가 있습니다.풀코어는 최대 32층 151×151픽셀을 지원하며 3832자리, 3067자 또는 1914바이트의 데이터를 인코딩할 수 있습니다.
기본 데이터에 사용되지 않는 기호 부분은 Reed-Solomon 오류 수정에 사용되며, 데이터 워드 1개와 체크 워드 3개 사이에서 분할을 완전히 구성할 수 있습니다.체크 워드의 권장 수는 기호 용량의 23%에 코드 [3]워드를 3개 더한 값입니다.
Aztec 코드는 다양한 프린터 기술로 판독 가능한 코드를 생성하도록 되어 있습니다.그것은 또한 휴대폰과 다른 모바일 기기들의 디스플레이에 매우 적합하다.
부호화
부호화 프로세스는, 다음의 순서로 구성됩니다.
- 소스 메시지를 비트 문자열로 변환
- Reed-Solomon 코드워드 크기를 결정하는 필요한 기호 크기 및 모드 메시지 계산
- 메시지를 Reed-Solomon 코드워드에 비트 입력
- 코드워드 경계에 메시지 패딩
- 체크 코드워드 추가
- 전체 메시지를 핵심을 중심으로 나선형으로 배열
비트 문자열과 다른 형식 간의 모든 변환은 빅 엔디안(가장 중요한 비트 우선) 규칙에 따라 수행됩니다.
문자 집합
모든 8비트 값과 2개의 이스케이프 코드를 부호화할 수 있습니다.
- FNC1은 GS1-128 표준과 같은 방법으로 애플리케이션 식별자의 존재를 마크하기 위해 사용되는 이스케이프 기호입니다.
- ECI: 이스케이프 뒤에 이어지는6자리 확장 채널인터프리테이션 코드.이 코드는 다음 바이트의 해석에 사용되는 문자 세트를 지정합니다.
디폴트로는 코드0 ~ 127은 ANSI X3.4(ASCII)에 따라 해석되며 128 ~255는 ISO/IEC 8859-1: 라틴 알파벳 번호1에 따라 해석됩니다.이것은 ECI 000003에 대응합니다.
바이트는 현재 디코딩 모드에 따라 4비트 및 5비트 코드로 변환되며 모드 변경 시 시프트 및 래치 코드가 사용됩니다.이 방법으로 사용할 수 없는 바이트 값은 일반적인 "바이너리 시프트" 코드를 사용하여 인코딩할 수 있으며, 그 뒤에 길이와 다수의 8비트 코드를 사용할 수 있습니다.
모드를 변경할 경우 시프트는 단일 다음 코드 해석에만 영향을 미치지만 래치는 다음 코드 모두에 영향을 미칩니다.대부분의 모드에서는 5비트 코드를 사용하지만 디지트모드에서는 4비트 코드를 사용합니다.
코드 | 모드 | 코드 | 모드 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
위쪽의 | 더 낮게 | 혼재 | 구두점 | 숫자 | 위쪽의 | 더 낮게 | 혼재 | 구두점 | |||
0 | P/초기화 | P/초기화 | P/초기화 | FLG(n) | P/초기화 | 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 | ^나 | % | 8 | 26 | Y | y | ~ | ? | |
11 | J | j | ^J | & | 9 | 27 | Z | z | ^? | [ | |
12 | K | k | ^K | ' | , | 28 | 신용장 | 미국 | 신용장 | ] | |
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 | ^[ | * | 미국 | 31 | B/S | B/S | B/S | U/L |
- 초기 모드는 "Upper"입니다.
- x/S = 한 문자에 대해 모드 x로 전환, B/S = 8비트 이진수로 전환
- x/L = 다음 문자의 경우 모드 x에 래치
- 펑크 코드 2 ~5는 각각2 바이트를 부호화합니다.
- 이 표에는 ASCII 문자가 나열되어 있지만 ASC 이외의 경우에도 인코딩된 바이트 값입니다.II 문자 집합 사용 중
B/S(바이너리 시프트) 뒤에 5비트 길이가 이어집니다.0이 아닌 경우 1~31의 8비트바이트가 계속됨을 나타냅니다.0인 경우 11개의 추가 길이 비트가 후속 바이트 수에서 31을 줄인 값을 인코딩합니다(32~62바이트의 경우 2개의 5비트 바이트 시프트 시퀀스가 1개의 11비트보다 콤팩트합니다).바이너리 시퀀스가 끝나면 이전 모드가 재개됩니다.
FLG(n) 뒤에 3비트n 값이 이어집니다.n=0은 FNC1을 인코딩합니다. n=1–6은 6비트 ECI 식별자를 만들기 위해 0자리 숫자인 1~6자리(자리 모드에서) 뒤에 나옵니다.n=7은 예약되어 있으며 현재 불법입니다.
모드 메시지
모드 메시지는 메시지 내의 레이어 수(정수 L-1로 부호화된L 레이어) 및 데이터 코드워드 수(정수 D-1로 부호화된D 코드워드)를 부호화합니다.나머지 모든 코드워드는 체크 코드워드로 사용됩니다.
콤팩트한 Aztec 코드의 경우 레이어 수는 2비트 값으로, 데이터 코드 워드의 수는 6비트 값으로 부호화되어 8비트 모드 워드가 된다.풀 Aztec 코드의 경우 레이어 수는 5비트로 부호화되며 데이터 코드 워드의 수는 11비트로 부호화되어 16비트 모드 워드가 됩니다.
모드 워드는 GF(16)에서 2비트 또는4비트의 4비트코드워드로 분할되어 5개 또는6개의 Reed-Solomon 체크워드가 추가되어 코어 주위의 1픽셀 레이어로 둘러싸인28비트 또는 40비트모드 메시지가 생성됩니다.
L+1 레이어 콤팩트한 Aztec 코드는 L 레이어 풀코드보다 많은 데이터를 저장할 수 있기 때문에 4 레이어 미만의 풀코드는 거의 사용되지 않습니다.
가장 중요한 것은 레이어 수에 따라 사용되는 리드-솔로몬 코드 워드의 크기가 결정됩니다.이 값은 6 ~12비트로 다양합니다.
비트 | 들판 | 다항식 | 사용처 |
---|---|---|---|
4 | GF(16) | x4+x+1 | 모드 메시지 |
6 | GF(64) | x6+x+1 | 1 ~ 2층 |
8 | GF(256개) | x8+x5+x3+x2+1 | 3~8층 |
10 | GF(1024) | x10+x3+1 | 9~22층 |
12 | GF(4096) | x12+x6+x5+x3+1 | 23~32층 |
코드워드 크기 b는 기호 내의 코드워드의 총수가 리드-솔로몬 코드로 수정할 수 있는 제한치b 2-1보다 작음을 보증하는 최소 짝수입니다.
앞에서 설명한 바와 같이 사용 가능한 코드워드의 최소 23%와 3을 수정용으로 예약하는 것이 권장되며, 메시지가 사용 가능한 공간에 맞도록 기호 크기를 선택할 수 있습니다.
비트 스터핑
데이터 비트는 코드워드로 분할되며 첫 번째 비트는 가장 유의한 계수에 대응합니다.이 동안 비트 스터핑에 의해 모두 제로 및 모두 1의 코드 워드가 회피됩니다.코드 워드의 첫 번째 b-1 비트가 같은 값을 가지면 데이터 스트림에 상보적인 값을 가진 추가 비트가 삽입됩니다.이 삽입은 코드 워드의 마지막 비트가 동일한 값을 갖는지 여부에 관계없이 수행됩니다.
또, 이것은 코드 워드의 선두에 있는 b-1 비트의 문자열에만 적용되는 것에 주의해 주세요.동일한 비트의 긴 문자열은 코드 워드 경계를 가로지르는 한 허용됩니다.
디코딩 시 0 또는 1의 코드 워드는 모두 소거된 것으로 간주되어 일반적인 오류보다 효율적으로 수정될 수 있습니다.
이 프로세스에 의해 메시지가 길어지고 모드메시지에 기록된 데이터 코드워드의 최종 개수는 완료될 때까지 알 수 없습니다.드물게 체크 워드의 최소 비율을 유지하기 위해 두 번째로 큰 기호로 점프하여 프로세스를 처음부터 다시 시작해야 하는 경우가 있습니다.
패딩
비트 스터핑 후 데이터 스트링은 1비트를 부가함으로써 다음 코드워드 경계에 패딩된다.이로 인해 모두 1의 코드 워드가 생성될 경우 마지막 비트는 0으로 변경됩니다(그리고 디코더는 비트를 채우는 비트로 무시합니다).디코딩 시 패딩 비트는 시프트 및 래치코드로 디코딩될 수 있지만 메시지 내용에는 영향을 주지 않습니다.독자는 메시지 끝에 있는 부분 코드를 모두 1인 한 수락하고 무시해야 합니다.
또한 심볼에서 사용 가능한 데이터 비트의 총수가 코드워드 크기의 배수가 아닐 경우 데이터 문자열에 0비트의 적절한 수를 프리픽스하여 여분의 공간을 차지한다.이러한 비트는 체크워드 계산에 포함되지 않습니다.
코드워드 체크
모드 워드와 데이터 모두 사용 가능한 공간을 채우려면 체크 워드를 추가해야 합니다.이것은 전체 메시지가 리드-솔로몬 다항식(x-2)(x-4)의 배수인 K 체크 워드를 추가하여 계산된다.(x−2K).
체크 워드는 비트스탬핑의 영향을 받지 않으며 모두 제로 또는 모두1일 수 있습니다.따라서 체크 워드의 소거를 검출할 수 없습니다.
메시지 레이아웃
완전한 Aztec 코드 기호는 코어 외에 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비트 두께 레이어로 시계 방향으로 감깁니다.레이어 수의 최상위 비트로 시작하여 체크 워드로 끝납니다.콤팩트한 Aztec 코드의 경우 오리엔테이션 마크에 여유가 있도록 7비트 4개로 분할되어 있습니다.완전한 Aztec 코드는 4개의 10비트 조각으로 분할되며, 각 조각은 참조 그리드에 의해 절반으로 분할됩니다.
경우에 따라서는 매트릭스의 총 용량이 완전한 코드 워드로 균등하게 분할되지 않을 수 있습니다.이 경우 메인 메시지는 처음에 0비트로 채워집니다.이러한 비트는 체크 워드 계산에 포함되지 않으므로 디코딩 중에 건너뜁니다.전체 기호의 총 매트릭스 용량은 (112+16*L)로 계산할 수 있습니다.* 전체 Aztec 코드 및 (88+16*L)* 콤팩트한 Aztec 코드의 경우 L, 여기서 [4]L은 레이어 단위의 기호 크기입니다.예를 들어 1개의 레이어를 가진 콤팩트한 Aztec 코드의 총 매트릭스 용량은 104비트입니다.코드 워드는 6비트이므로 17개의 코드 워드와 2개의 추가 비트를 얻을 수 있습니다.2개의 제로 비트가 메시지 앞에 패딩으로 추가되므로 디코딩 중에는 건너뛸 필요가 있습니다.
패딩된 메인메시지는 전체 심볼의 왼쪽 상단 바깥쪽에서 시작하여 2비트 두께의 레이어로 시계 반대 방향으로 나선형을 그리며 코어의 왼쪽 상단 바로 위에서 끝납니다.이렇게 하면 소거를 검출할 수 있는 비트 입력 데이터 워드가 소거되기 쉬운 심볼의 가장 바깥쪽 레이어에 배치됩니다.체크 워드는 핵심에 더 가깝게 저장됩니다.마지막 체크 워드는 과녁의 왼쪽 상단 모서리 바로 위에서 끝납니다.
코어가 표준 방향에 있는 경우 첫 번째 데이터 워드의 첫 번째 비트는 왼쪽 상단 모서리에 배치되며 추가 비트는 왼쪽에서 오른쪽으로, 위에서 아래로 2비트 폭의 열에 배치됩니다.패턴이 시계 반대 방향으로 90도 회전할 때 기호 아래쪽에서 2줄까지 계속되며, 2비트의 높은 행, 아래쪽에서 위쪽 및 왼쪽에서 오른쪽으로 계속됩니다.4개의 동일한 크기의 1/4 레이어 후, 나선은 다음 내부 레이어의 왼쪽 상단 모서리에서 계속되며, 최종적으로 코어의 왼쪽 상단 모서리에서 1픽셀 위로 끝납니다.
마지막으로, 1비트를 검은 정사각형으로 인쇄하고, 0비트를 흰색 정사각형으로 인쇄한다.
사용.
운송
아즈텍 코드는 교통 티켓팅에 널리 사용된다.
항공업계(IATA의 BCBP 표준)는 Aztec 코드를 전자 탑승권으로 선정하였다.몇몇 항공사들은 탑승권 역할을 하기 위해 승객들의 휴대전화에 아즈텍 코드를 보낸다.이것들은 종종 Apple Wallet을 포함한 승객들의 핸드폰에 있는 앱들과 통합된다.
Aztec 코드는 Tehran Metro, Eurostar, Deutsche Bahn, TCDD Taımacillik, DSB, SJ, Cheské drahy, 슬로바키아 철도, 슬로베니아 철도, 크로아티아 철도, Trenitalia, Nederlandse Spoorwegen, Pken, PKP, VR, 도이 포함된 철도에서도 사용되고 있습니다.고객 또는 휴대폰 화면에 표시됩니다.Aztec 코드는 열차 내 직원 또는 개찰구에서 휴대용 스캐너에 의해 스캔되어 티켓의 유효성을 확인합니다.
정부 기관
폴란드의 자동차 등록 문서에는 NRV2E 알고리즘으로 압축된 요약이 Aztec Code로 인코딩되어 있습니다.새로운 보험계약 체결의 첫 단계로 자동차보험회사가 문서의 디지털 사진을 바탕으로 관련 정보를 자동으로 기입할 수 있도록 하는 작업이 진행 중이다.
러시아 연방세무청은 세금 고지서의 납부 정보를 Aztec Code로 인코딩합니다.
상업의
현재 EastLink(회사), Show Cable, Bell Aliant 등 캐나다의 많은 청구서에서도 이 기술을 사용하고 있습니다.
레퍼런스
- ^ a b *US 5591956, Longacre, Jr., Andrew & Hussey, Robert, "광학 리더와 함께 사용하기 위한 2차원 데이터 인코딩 구조와 심볼로지", 1997-01-07 출판
- ^ Official Gazette. United States Patent Office. 17 June 1997.
Hereby dedicates to the public the entire term of said patent.
공용 도메인에 대한 전용 정보를 보려면 "이미지" 및 "수정"을 클릭하십시오. - ^ Adams, Russ. "2-Dimensional Bar Code Page". Archived from the original on 30 April 2010. Retrieved 14 July 2022.
- ^ "Спецификация Aztec Code (без Small Aztec)" [Aztec Code Specification (without Small Aztec)] (in Russian). Archived from the original on 25 February 2020.