Export (0) Print
Expand All

Tagged Objects and Tag Visualizations

The Microsoft Surface vision system captures and processes raw images of the interactive surface device (such as the display screen of a device made for Surface) and can "see" the actual outlines of physical objects that are placed on the screen. (For an example of how to see object outlines, see Capturing and Rendering a Raw Image.)

However, if you want your Surface application to be driven by objects, the Surface vision system also recognizes special tagged objects that are marked with a special pattern of dots called tags.


Three tags, of values 0xC1, 0xC2, and 0xC3

Using tagged objects

A Surface application that uses objects (two clear cylinders) that have tags affixed to the bottom

A tag consists of a geometric arrangement of infrared reflective and absorbing areas. Currently, a tag can represent one of 256 values. Tagged objects give your application several advantages over processing raw images:

  • Tagged objects are more computation-efficient. The tags are small and well-defined, so specialized code in the Vision System can locate and track them quickly, accurately, and efficiently.

  • The Surface platform inherently recognizes tags, so it is easy to write an application that uses tags. (In contrast, an application that uses raw images must include its own image-recognition algorithms.)

  • Each tag stores a distinct binary code value, so an application can distinguish one object from another.

For more information, see Tagged Object Recognition. To learn about the requirements for creating and printing tags, see Printing Tags.

For best results, don’t use more than one tag of the same value in your application. Additionally, if a user moves a tagged object too fast, or places tags too close together, the Surface vision system cannot track the object successfully. If you're writing a Microsoft Windows Presentation Foundation (WPF) application, you can create an on-screen visual object that tracks the tag motion by using the TagVisualizer control.

How to Use Tagged Objects

A Surface application can use tagged objects in several ways:

  • Recognize objects: An application can use tags to recognize an object or distinguish among a collection of objects. For example, a board game might use different tags to represent the players and trace their positions on the interactive surface device. Similarly, a chess application might use eight instances of one tag to represent the white pawns, two instances of another tag for the two rooks, two instances of another tag for the knights, two instances of another tag for the bishops, one tag for the queen, and another tag for the king. Therefore, the application would use six unique tags for the white pieces, and another set of six unique tags for the black pieces.

  • Start a command: An application might use a tag to start a command or action. For example, placing a tagged object on the interactive surface device might open a menu or start a video.

  • Point and orient applications: An application might require precise movement with absolute orientation. For example, an application might enable a user to move in sequence through a series of video clips, turn the pages in a virtual book, or adjust the volume of a video or audio clip. To adjust the volume, the application might enable the user to turn a tagged object in a circular motion, like the dial on a radio or television. (Surface applications enable users to move and rotate an object with their fingers. But tags provide a more precise absolute location than fingers, so applications can use tagged objects as pointing devices.)

  • Start or display an application: Applications can register a particular tag value. When a user places the relevant tag on the interactive surface device, it displays a menu that enables the user to start or display any application that has registered the tag. If a user selects an application by using a tagged object, the application designer can use that tag's location on the screen as the starting point for the user's experience with that application. This feature is called object routing.

    Object routing - Example

    An example of an object routing menu that appears next to a tagged loyalty card

Because tags have a range of possible values, they also enable additional scenarios:

  • Casino rewards promotions: A casino marketing department produces an offer for $100 in free slot play. The printed offer includes the tag with the offer code, such as a casino chip. The customer brings this offer to the venue and places it on an interactive surface device. The customer is presented with a log-in window that they use to log into their account, and the $100 credit is added to their account.

  • Hotel loyalty cards: Tags are placed on loyalty cards and given to premier customers. Premier customers have access to more services and applications on a device made for Surface than typical customers or those without a loyalty card.

  • Fast food kids' toys: Tags are placed on kids' toys. A user places the toy on an interactive surface device and the application responds to the toy in some way.

Any application that uses tagged objects should register the tags that it uses. For more information, see Registering Standard Applications.

Security Considerations for Tagged Objects

Do not use tagged objects to access private data. Tags are not sufficiently secure to use as a method of authentication. You can use tagged objects to identify a user, but you should require the user to enter a password, personal identification number (PIN), or other secure data for authentication purposes.

When you use tags, consider the following important security issues:

  • A tag does not have enough bits to be cryptographically secure. Do not use a tag as a password equivalent.

  • Tag bits are not encrypted when they are in memory. For example, they are not equivalent to the SecureString class in the .NET Framework. When you write code that works with tags, imagine that you are working with strings. That is, in your application, is String sufficiently secure, or would you need to use SecureString? If you would use SecureString, do not use a tag for the data.

  • Depending on how tags are printed, photocopiers, digital cameras, and other devices can capture the tags so they are easy to duplicate.

Overall, we recommend that you can use tags for identification but you should not use them for authentication. A tag is simply a way to enter shorthand, intended to save you from having to type something into a text box or click through a series of menus. It's the equivalent of having a hyperlink that you can click, instead of forcing you to enter a URL, or the equivalent of pressing CTRL+R to respond to an e-mail, instead of entering the recipient's address manually. The contents of a tag are not more secure than a URL or an e-mail address.

The following topics provide more information about how to create and use tagged objects:

Did you find this information useful? Please send us your suggestions and comments.

© Microsoft Corporation. All rights reserved.
© 2014 Microsoft