KC-Code (kinetic color code) is our newest invention. After all those years struggling to make computers more human, we thought it is time to make our world more computer-friendly! If we really want machines to read, maybe we should create an alphabet THEY easily understand.



Following Louis Braille (1824), we took a matrix code and set the following goals:

  • Capture and decode optimally the kc-code using a phone camera,
  • Capture and decode one or several kc-codes even as the objects move,
  • Capture and decoding should be designed for optimal performance.

The solution we found is easy to understand, mathematically beautiful, and -yes!- optimal. In statistical physics terms our matrix code is a nearest neighbor exclusion q-state Potts model. In computer science it corresponds to a generalization of the graph coloring problem. The map coloring problem asks for the minimal number of colors one needs to color a map so that no neighboring states display the same color. Coloring a map in this way helps you see at once the borders of a state and even estimate its size. Would that help computers to see also ‘at once’? Yes, it does! In order to store additional information on these maps, we must use more than 4 colors (actually we use 8). One type of visual reference tags is shown in the picture below.


visual tagThis kc-code uses six real colors + black and white and can store up to 70 bits. Note that a full GPS co-ordinate (for 30 cm spatial resolution) needs less than 64 bits. This tag stores information already in rotational invariant form, no alignment is necessary.

Locating the kc-code is easy because the first layer obeys specific restrictions and generates a specific signature.

The honeycomb structure is both the one most densely covering the plane and for topological reasons also the structure most robust against noise of any kind.

The picture below is part of a low resolution video frame and shows two persons being recognized based on their badges.

visual tag

The smallest (core) kc-code can store up to 1440 ID’s, larger ones have a capacity around 180 bits, while the „secure paper“ has unlimited storage capacity. One could argue that whatever a kc-code can, an RFID can also do. That is true. But consider this: kc-code can be printed on any color printer and can be captured by any digital camera, no need for additional hardware. The main obstacle for using RFID’s is data and privacy protection. If you do NOT want to be recognized, just remove the kc-code badge! Furthermore, with a good camera you can capture kc-codes at greater distances than a RFID signal will travel.

What does our kc-code make more attractive compared with usual matrix (2D) codes, like the QR-code?

  1. It has a 2-3 times larger storage capacity per unit,
  2. The kc-code can be freely captured from a large distance,
  3. Even if the kc-code or the mobile phone camera is in motion.
  4. Several kc-codes can be captured at once – up to hundreds of them!
  5. And they might all move in quite different directions!
  6. This allows for searching for a particular kc-code among many.



Kc-codes store just a pointer (reference) to a location where further data is kept (web-servers, databases, etc.). For storing large amounts of information per se, the same technology can be applied - see the „secure paper“ page. Since the encoding-decoding procedure supports cryptographic methods, such applications are also secure.