Recent from talks
Nothing was collected or created yet.
JAB Code
View on Wikipedia
JAB Code (Just Another Barcode) is a colour 2D matrix symbology made of colour squares arranged in either square or rectangle grids. It was developed by Fraunhofer Institute for Secure Information Technology SIT.[1]
The code contains one primary symbol and optionally multiple secondary symbols. The primary symbol contains four finder patterns located at the corners of the symbol.[2]
The code uses either four or eight colours.[3] The four basic colours (cyan, magenta, yellow, and black) are the four primary colours of the subtractive CMYK colour model, which is the most widely used system in the industry for colour printing on a white base such as paper. The other four colours (blue, red, green, and white) are secondary colours of the CMYK model and each originates as an equal mixture of a pair of basic colours.
The barcode is not subject to licensing and was submitted to ISO/IEC standardization as ISO/IEC 23634 expected to be approved at the beginning of 2021[4] and finalized in 2022.[3] The software is open source and published under the LGPL v2.1 license.[5] The specification is freely available.[2]
Because the colour adds a third dimension to the two-dimensional matrix, a JAB Code can contain more information in the same area than two-colour (black and white) codes; a four-colour code doubles the amount of data that can be stored, and an eight-colour code triples it. This increases the chances the barcode can store an entire message, rather than just partial data with a reference to a full message somewhere else (such as a link to a website), which would eliminate the need for additional always-available infrastructure beyond the printed barcode itself. It may be used to digitally sign encrypted digital versions of printed legal documents, contracts, certificates (e.g., diplomas, training), and medical prescriptions or to provide product authenticity assurance, increasing protection against counterfeits.[3]
References
[edit]- ^ "JAB Code website". jabcode.org. 2019. Archived from the original on 23 May 2019. Retrieved 13 October 2019.
- ^ a b "JAB Code technical specification" (PDF). www.bsi.bund.de. 2019. Archived (PDF) from the original on 6 August 2020. Retrieved 13 October 2019.
- ^ a b c Küch, Oliver (2020-06-26). "Color barcode becomes ISO standard" (Press release). Darmstadt: Fraunhofer Institute for Secure Information Technology. Archived from the original on 20 January 2021. Retrieved February 17, 2021.
- ^ "ISO/IEC DIS 23634 Information technology — Automatic identification and data capture techniques — JAB Code polychrome bar code symbology specification". ISO/IEC. Archived from the original on 12 January 2023. Retrieved February 17, 2021.
- ^ "jabcode". GitHub. 2019. Archived from the original on 26 May 2019. Retrieved 13 October 2019.
JAB Code
View on GrokipediaHistory and Development
Origins at Fraunhofer Institute
The development of JAB Code was initiated by the German Federal Office for Information Security (BSI) and conducted by the Fraunhofer Institute for Secure Information Technology (SIT) in Darmstadt, Germany, during the period from approximately 2016 to 2018.[6] The project was originally commissioned by the German Ministry of the Interior for applications in ID documents and passport photos. This effort was led by key researchers Waldemar Berchtold and Huajian Liu at Fraunhofer SIT, who assembled a team to design a next-generation barcode symbology.[6] Their work built on existing 2D barcode technologies but sought to enhance them through innovative use of color. The core motivation behind JAB Code stemmed from the inherent limitations in data density of conventional black-and-white 2D barcodes, such as QR codes, which struggle to encode sufficient information for modern security applications in compact spaces.[7] By introducing color as a "third dimension" alongside position and size, the researchers aimed to multiply storage capacity—potentially up to three times that of monochrome equivalents—while preserving scannability using everyday devices like smartphone cameras under typical lighting conditions.[7] This approach was particularly driven by the demand for reliable, high-capacity encoding in secure information transfer scenarios, including the integration of digital signatures for offline authenticity verification of physical documents and products without requiring internet access or centralized databases. Early prototypes of JAB Code were showcased in 2018, including presentations at international standards meetings, where the polychrome structure demonstrated improved robustness to common distortions from printing imperfections, scanning angles, and environmental factors.[6] In 2018, the JAB Code symbology was presented at the ISO/IEC JTC 1/SC 31 Plenary meeting, leading to the assignment of project reference NP 23634 to Working Group 1 (WG1). These initial implementations emphasized the code's flexibility in shape and size, laying the groundwork for its subsequent pursuit of formal standardization.[6]Standardization Process
The international standardization process for JAB Code was initiated in 2018 following its presentation at the ISO/IEC JTC 1/SC 31 Plenary meeting, which led to the assignment of project number NP 23634. The BSI published an initial national technical guideline, TR-03137 Part 2, on July 30, 2020.[8] This document defines the core requirements for the JAB Code symbology, including its characteristics, symbol structure, symbol dimensions, cascading rules, data character encodation, and error correction mechanisms, primarily to support secure information applications within German federal contexts.[8] Fraunhofer SIT had submitted JAB Code for international standardization in 2018, which progressed to adoption as ISO/IEC 23634:2022.[9][6] Published in April 2022 by the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC), this standard specifies the requirements for JAB Code as a polychrome 2D matrix symbology, encompassing symbology characteristics, structure, dimensions, data encoding, and error correction rules to ensure consistent global implementation.[4] Key milestones in this process include the 2018 initiation of the ISO project, the 2020 BSI guideline, which facilitated its initial deployment for German security applications such as document authentication and data protection, and the 2022 ISO standardization, which promotes worldwide interoperability and adoption in diverse sectors like logistics and digital verification.[8][4][6] The standards incorporate features such as cascading symbols for linking multiple codes and variable color modes to accommodate different printing and scanning environments, thereby ensuring backward compatibility with earlier implementations and extensibility for future enhancements.[8][4]Symbol Structure
Primary and Secondary Symbols
JAB Code symbols are divided into primary and secondary types, enabling flexible layouts for encoding varying data capacities while ensuring reliable detection and decoding. The primary symbol serves as the foundational element, featuring four finder patterns positioned at its corners to facilitate initial detection and orientation determination. These symbols are arranged in square or rectangular grids composed of square modules, where the module dimension (X = Y) is user-defined to suit printing or display constraints. Primary symbols can be square, ranging from 21×21 modules (Side-Version 1×1) to 145×145 modules (Side-Version 32×32), or rectangular with independent horizontal and vertical Side-Versions from 1 to 32, such as 21×25 to 141×145 modules. Unlike many traditional barcodes, JAB Code primary symbols do not require a quiet zone, enhancing their adaptability to diverse printing environments.[8] Secondary symbols extend the capacity of the primary symbol by attaching as optional modules, lacking finder patterns but incorporating alignment patterns for precise positioning. These extensions dock horizontally or vertically to the primary symbol or adjacent secondary symbols, sharing the same Side-Version on the docking side to maintain compatibility. This docking mechanism supports cascading arrangements, where multiple secondary symbols can be added—potentially forming arbitrary shapes—while preserving decodability through recursive processing. Decoding proceeds from the primary symbol first, followed by secondary symbols in a top-to-bottom, left-to-right order, ensuring systematic data retrieval. The design inherently supports orientation independence and mirror imaging, as the finder and alignment patterns allow robust recovery regardless of rotation or reflection during scanning.[8]Finder and Alignment Patterns
The finder patterns in JAB Code serve as synchronization elements located exclusively in the corners of primary symbols to enable initial detection, orientation, and scaling of the barcode under various capture conditions. Each finder pattern consists of two overlapping 3×3 module squares sharing a central core module, forming a distinctive L-shaped structure that facilitates robust identification even in noisy images. The four finder patterns—upper-left (UL), upper-right (UR), lower-right (LR), and lower-left (LL)—employ unique color combinations derived from the CMYK palette: the UL pattern uses blue and yellow layers with a blue core, the UR pattern incorporates green and magenta with a green core, the LR pattern features magenta and yellow with a magenta core, and the LL pattern combines blue and yellow with a yellow core. These specific color orders and orientations not only distinguish each pattern but also provide inherent rotation invariance up to 360 degrees and correction for mirroring, allowing decoders to accurately determine the symbol's pose without prior knowledge of its alignment.[8] Alignment patterns, introduced in primary symbols starting from Side-Version 6 to support larger and more complex symbols, assist in refining the module grid extraction and compensating for distortions such as those arising from off-axis camera perspectives. There are four types of alignment patterns: U (upper), L (left), X0 (central), and X1 (extended), each comprising two 2×2 module references connected by a core module and rendered in two layers for simplicity. The U and L patterns, used near the upper and left edges respectively in secondary symbols or docking regions, feature a white outer layer with a black core, while the X0 and X1 patterns, positioned centrally or extended along diagonals, reverse this with a black outer layer and white core to ensure contrast against surrounding modules. Their predefined positions—such as (4,20) for U in Side-Version 10 or central coordinates for X0—allow decoders to resynchronize the sampling grid after initial finder detection, effectively handling affine transformations and perspective distortions in high-resolution captures.[8] Guide lines further enhance the alignment process by dividing the primary symbol into distinct metadata and data regions, ensuring precise module boundary extraction during decoding. These internal lines—labeled AB (horizontal through upper finder centers), CD (vertical through left finder centers), EF (diagonal), and GH (perpendicular diagonal)—are derived from the centers of the finder patterns and serve as reference axes for constructing the overall sampling grid. By calculating module sizes along these lines (e.g., horizontal module size M_X as the distance d_AB divided by 3), the decoder establishes a uniform grid that integrates with both primary and secondary symbols, where alignment patterns in the latter refine docking and extension alignments. The combined use of finder and alignment patterns, along with guide lines, enables the detection process to locate the symbol via scanlines across these references, decode embedded metadata for version and palette information, and adapt to real-world imaging challenges like rotation and distortion without requiring multiple scans.[8]Encoding and Data Capacity
Character Encoding Modes
JAB Code supports several character encoding modes to accommodate different types of input data, optimizing for efficiency in bit representation. These modes include Numeric for digits 0-9, space, comma, and period, Uppercase Alphanumeric for A-Z and space, Lowercase Alphanumeric for a-z and space, Punctuation for 16 special characters, Mixed Alphanumeric for umlauts, additional punctuation, and control characters, Byte for 8-bit binary data, Extended Channel Interpretation (ECI) for specifying character sets such as UTF-8, and FNC1 for GS1-compliant applications requiring structured data like application identifiers.[8][10] The encoding process begins by analyzing the input data to select the most compact sequence of modes, converting characters into a binary stream while inserting mode indicators, shifts, or latches as needed to transition between modes. Metadata, encoded separately, specifies the encoding mode, data length, symbol shape, size, and error correction level, typically requiring 22-40 bits in the primary symbol and 3-27 bits in secondary symbols if present. This metadata is placed in designated areas of the symbol before the data bits are processed further.[8][10] Bit allocation for data varies by mode and symbol size, with each mode assigning a fixed number of bits per character to minimize overhead: 4 bits for Numeric and Punctuation, 5 bits for Uppercase, Lowercase, and Mixed, 6 bits for Alphanumeric, and 8 bits for Byte. For example, in a Side-Version 1 symbol (21×21 modules), the message "JAB Code 2016!" encodes into 78 bits using a combination of Uppercase, Numeric, and Punctuation modes. These bits are then represented using the symbol's color palette, where each color corresponds to bit values.[8] The default character set is ISO/IEC 8859-15, supporting Western European languages, while ECI allows switching to UTF-8 or other encodings for international text, ensuring broader compatibility without altering the core encoding modes.[8][10]| Mode | Bits per Character | Typical Characters |
|---|---|---|
| Numeric | 4 | 0-9, space, comma, period |
| Uppercase Alphanumeric | 5 | A-Z, space |
| Lowercase Alphanumeric | 5 | a-z, space |
| Punctuation | 4 | 16 special chars |
| Mixed Alphanumeric | 5 | Umlauts, punct., controls |
| Alphanumeric | 6 | A-Z, a-z, 0-9, space |
| Byte | 8 | Binary data |
Color Palette and Module Assignment
JAB Code employs two configurable color modes—4 or 8 colors per module—as defined in ISO/IEC 23634:2022, allowing for variable data density based on the selected palette size (2 or 3 bits per module). The default 8-color mode encodes 3 bits per module. This flexibility enables efficient binary data representation, with input bit streams from various encoding modes mapped to color indices within the palette.[10][4] The color palette is defined in RGB color space and embedded redundantly within the symbol using dedicated palette modules for the 4 or 8 reference colors to facilitate robust decoding under varying imaging conditions, with guidelines in Annex G of the standard. The reference modules are sampled from 3×3 pixel areas during encoding to account for printing and scanning imperfections.[10] A representative example of the 8-color palette, commonly used as the default, consists of the following RGB values (0 or 255 per channel for primary and secondary colors):| Index | Color Name | RGB Values |
|---|---|---|
| 0 | Black | (0, 0, 0) |
| 1 | Blue | (0, 0, 255) |
| 2 | Green | (0, 255, 0) |
| 3 | Cyan | (0, 255, 255) |
| 4 | Red | (255, 0, 0) |
| 5 | Magenta | (255, 0, 255) |
| 6 | Yellow | (255, 255, 0) |
| 7 | White | (255, 255, 255) |
