Warning: session_start(): open(/tmp/sess_7dtrugaab6k9a0he5ps2d5i3c3, O_RDWR) failed: Disk quota exceeded (122) in /home/virtualw/public_html/session.php on line 1

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/virtualw/public_html/session.php:1) in /home/virtualw/public_html/session.php on line 1

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/virtualw/public_html/Resources/Hosted/Resource.php on line 9
Augmented Reality Basics: Magic Symbol
Not a member yet? Register for full benefits!

Augmented Reality Basics: Magic Symbol

In myth and legend, a magic symbol is a pattern drawn on a physical object which possesses otherworldly powers; able to alter reality by creating protective circles, summon creatures to do the artist's bidding, or alter the structure of reality itself.

This theme was the perfect draw for a technology that marries virtual data with physical reality: drawing on the power of the virtual to reshape how we perceive the reality all around us.

Magic symbol, originally created by the firm Inition in 2006, is the backbone of mixed reality object interaction. The symbols are high contrast printed squares, framed in black. Anything that is not black, is bright white. The reason for this is simple: the squares work via symbol recognition machine vision.

In order to enable the easiest recognition of magic symbols, they are the highest contrast possible in unpowered print media - black and white. The black framing is as much a part of the symbol as the pattern inside it, at a minimum one centimetre thickness it acts like a barcode frame, identifying the purpose of the pattern inside in a familiar manner.

The original magic squares were like miniature texturemaps, consisting of initially a 5x5 grid of squares, some of which were filled in black, others that were left white. These were held upright in front of the camera system, which identified them based on pattern recognition. Turned side-on or upside down, they registered as different patterns.

A 10x10 Magic Symbol with a to-scale grid overlaid

The augmented reality software searches through its databanks for a match to the symbol, and then superimposes a virtual image on top of it in a predefined orientation, in the output video stream.

As the paper is moved, so long as the magic symbol remains flat - say printed on stiff card - the computer is able to intelligently recognise that it is the same symbol, and adjust for rotation. The virtual image stays centred on the magic symbol, and as the symbol's orientation changes, the virtual image also alters to maintain the same perspective.

If the magic symbol leaves the camera's field of view and comes back on, it has to be re-calibrated, as the augmented image will not reappear - its treated as a new symbol. This may change in the near future as pattern matching algorithms improve.

What has changed is the fidelity of the pattern. First the 5x5 grid was increased in complexity to 10 x 10, as camera resolution and processing speeds increased, although the dimensions of the square remained constant. It was just possible to make out more detail in real-time. Then, square size shrank further, approaching 100x100 or lower, and at time of writing, fairly complex shapes such as birds, or symbols can be created on the cards, again formed out of squares, in much the same way as a computer texture.

Regardless of the new-found resolution, shapes are still kept relatively simple, large and uncluttered to maximise the ease of recognisability by machine vision. It is still especially important that the camera continue to recognise the pattern as the angle continuously alters.

200 x 200 Magic Symbol allows simple shapes

Inition is no-longer the sole manufacturer of these symbols, with multiple libraries and engines from different vendors able to recognise them, and custom written detection software springing up. However, the technology standard has remained.

Year on year, the smoothness of the virtual data moving with the symbol has improved - in 2006 the images were jerky, not able to keep up in real-time. By 2007, the jerkiness had been cut in half thanks to improved algorithms, and improvements in PC processing power. In early 2009, simple objects animate in real-time, smoothly.

Inition Promotional Montage showing a handful of uses over the period 2006-2009

Its not just static images of course. Once virtual data is involved, a menagerie of effects can be created. Animating figures, cars that drive around, full motion video centred on a physical page, and even entire synthetic, dynamic landscapes, all are possible. In each and every case of such virtual and physical object collaborations, a magic symbol can be found embedded and visible, on the physical counterpart.

Known Problems with the Technology

If the paper the symbol is on, becomes bent or furled, the symbol is transformed in complex ways, and no-longer registers as the same symbol. Under current machine vision algorithms, the symbol breaks, and reverts back to a pattern on paper only. This problem prevents widespread uptake on flimsy printed media.

Whilst some of the younger generations of recognition software can recognize the same complex symbol if it is turned on its side when presented to the camera, currently all symbols need to be presented vertically to the camera to initialize. Technology does not yet exist, to auto-translate the geometry of what appears to be a symbol lying in the road.



AR Development > ARToolkit

AR Development > NyARToolKit

AR Development > FLARToolKit

Further Reading / Further Viewing

Resource List: Visual AR Development

Magazine Ad Displays 3D Car in Augmented Reality

Lego AR Kiosks: Colour Magic Symbol

Staff Comments


Untitled Document .

Warning: Unknown: open(/tmp/sess_7dtrugaab6k9a0he5ps2d5i3c3, O_RDWR) failed: Disk quota exceeded (122) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0