Introducing a new circular-shaped design for barcode and QRCode! Beyond its aesthetic, the Ring code is adapted to tor geometry. It is also a real challenge of implementation.
You can use the Streamlit app to generate your own RingCode encoded messages! Please note that the decoding module is still under development.
- python > 3.6
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
streamlit run app.py
You can play with 3 hyperparameters to change the data capacity and the shape of the barcode, in src/encoder.py
:
module_size_pixel
: the size of each tile (aka module)min_radius_pixels
: the size of the inner band of the ring, in pixelmax_radius_pixels
: the size of the outer band of the ring, in pixel
The development of this RingCode follows the thesis of Robin Brügger, so hat tips to him for this impressive work.
Encoding
- Create encoder
- Simple Streamlit App to display the encoding
Decoding
- Barcode recognition (finding the center)
- Find the perspective correction markers and startmarker
- Rough perspective correction
- Accurate perspective correction
- Read vertical timing information
- Evaluation of the payload modules
- Encoding data using Reed Solomon algorithm