We live in an increasingly connected world, but we're still surrounded by "dumb" objects that cannot provide any data. If you want to know where that unlabeled table came from, your only way forward is to do a reverse image search and hope it comes up in the results. But what if the table could tell you its manufacturer and model using data hidden in its joints? Or if a pot could give you watering instructions for the flowers it contains? That's possible thanks a new method of encoding data called StructCode.
StructCode is the result of a cooperative effort between engineers from MIT, Cornell, and Berkeley. It is a standard for embedding small amounts of data into physical objects. But unlike other standards, the embedded code is unobtrusive to the human eye while being very visible to computer vision. That's because the data "hides" within the patterns created by certain kinds of woodworking joints.
This works with two types of joints: finger joints and kerfed bends. Finger joints are very popular in traditional woodworking and you've likely seen them before. Two adjoining panels have interlocking fingers that looks like the crenellations on castle walls, providing a friction fit. StructCode works on those joints by encoding data as slight differences in the lengths of the fingers. A normal finger represents a "1," but a short finger represents a "0" and a long finger represents a "2." The variances in length aren't obvious to people, but machines can identify them with ease.
StructCode can store data in a similar manner within the kerf cuts of living hinges. Laser-cut kerfs are popular for creating bent panels of wood. The kerfs prevent any continuous and unbroken sections of panel, so the wood can bend without splintering. Those kerfs appear as a repetitive pattern along kerfs and StructCode alters the pattern just enough to produce a machine-readable code.
In both cases, StructCode hides data within plain sight. The capacity is small and depends on the design of the object, but will often be enough for a short string of information or at least a unique identifier. In the latter case, the user's device (like a smartphone) can use the identifier to look up additional relevant information.