// the find
sz3/cimbar
color-icon-matrix barcodes. Proof of concept implementation.
cimbar is a Python proof of concept for a 2D barcode format that encodes data as grids of icons and colors instead of black and white modules. It is a research reference for the format rather than something to deploy, and the README says so: the faster, better-tested implementation is the C++ libcimbar.
Each tile is classified by comparing its image hash against a dictionary of 16 reference icons by Hamming distance, and its color is matched against a small palette, so the decoding model is explicit and readable in cimbar/encode and cimbar/deskew. The bitstream is interleaved across the grid so neighboring tiles never carry neighboring data, which turns a patch of glare or blur into scattered, correctable errors instead of one unrecoverable block. The README publishes real capacity numbers (9300 raw bytes per mode B image, 7500 at default ECC), and cimbar.grader measures bit errors against a clean reference, so behavior under noise can be tested rather than taken on faith.
The author calls the decoder slow and says it handles error cases without much grace, and the last push was in March 2024, so expect rough edges and no recent fixes. The default ECC setting spends roughly a fifth of raw capacity on Reed-Solomon parity (1800 of 9300 bytes), which is generous and matters if you are sizing payloads. Decoding needs about 700x700 pixels, a sharp image, and camera-side color correction, so anything short of a clean phone photo of a screen is a gamble. The tests/sample directory holds only two images, which suggests the decode pipeline sees very little real camera data in CI.