TinyTag logo

TinyTag

TinyTag is a 2-dimensional bar code recogniser written in standard C. It is designed for use in embedded systems such as mobile phones with cameras. TinyTag recognises barcodes from images taken with conventional video camera. Its features include:

  • Arbitrary amounts of unconstrained data may be stored on each tag;
  • Data are protected by an error detecting code (based on a CRC) of strength chosen at compile time
  • Only integer arithmetic is used throughout the codebase (ideal for embedded systems without floating point units)
  • Available under the  GNU GPL
  • Fast, optimised barcode recognition and decoding

Some examples of TinyTag tags:

Example Tag 1:  16x16 cell data area, four 8-bit CRCs Example Tag 2: 25x25 cell data area, four 15-bit CRCs

The larger capacity tag (right) is a 25x25 cell data area split into four quadrants, each protected by a 15 bit CRC. This leaves 564 bits of payload data which is enough for a 80 characters (encoded 7-bits per character).

Availability

Nightly snapshots of TinyTag from our svn repository are available for download:  Download snapshot. As yet, there are no official releases available.

Example Programs

codegen

This program will generate an image of a tag and save it to disk. The data to be coded should be given in hexadecimal.

./codegen 0123456789ABCDEF output.pnm

imagetest

This program will load an image from disk, search for a tag and output the decoded tag data.

./imagetest output.pnm

codetest

Integrated test harness. This program will generate a tag image in memory and then attempt to recognise it. The decoded data are then compared to the input data to ensure no errors have occurred.

./codetest 0123456789ABCDEF

v4ltest

Video4Linux test program. This program will open the specified Video4Linux device (currently only cameras supporting YUV palettes devices are supported) and recognise images from it:

./v4ltest /dev/video0

Attachments