IP Library Granted Patent US 9,177,239
Granted Patent B1
US 9,177,239 · App. 14/682,480 · Granted Nov 3, 2015

Generating machine-readable optical codes with aesthetic component

Inventor: Andrew Stein (San Francisco, CA)
Assignee: Anki, Inc.
G06K19/06056G06K7/12G06K19/0614G06K19/06037G06K19/06103
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,177,239
App. No.
14/682,480
Granted
Nov 3, 2015
Kind
B1
Abstract

Techniques are provided for generating machine-readable optical codes that have an aesthetic component that is integrated into the codes themselves. In this manner, the machine-readable optical codes can be designed to be aesthetically pleasing and/or can convey information to human viewers, and can even be disguised so that they do not appear to be machine-readable optical codes at all. Such information can be (but need not be) distinct from the information encoded for reading by a machine, even when the information is integrated into the code itself. The techniques described herein can be applied to any type of machine-readable optical code.

Claims (63)

1. A computer-implemented method for generating a machine-readable optical code having an aesthetic component, comprising:

at a processor of a hardware device, determining a fiducial;

at the processor, determining locations for a plurality of cells within the fiducial;

at the processor, determining a probe location within each determined cell, wherein at least one of the probe locations is smaller than its corresponding cell;

at the processor, establishing a machine-readable color for each determined probe location, based on data to be encoded in the machine-readable optical code;

at the processor, based on a desired aesthetic design, establishing a color pattern for areas within the fiducial but not within probe locations, wherein the color pattern is consistent with the established machine-readable color for each determined probe location;

at the processor, generating a machine-readable optical code within the determined fiducial using the established color pattern, wherein the machine-readable optical code contains the established machine-readable color at each probe location to encode the data; and

at an output device, outputting the generated machine-readable optical code.

2. The computer-implemented method of claim 1 , wherein each probe location is smaller than its corresponding cell.

3. The computer-implemented method of claim 1 , wherein the aesthetic design of the generated machine-readable optical code is representative of a piece of artwork that is different from the data encoded in the machine-readable optical code.

4. The computer-implemented method of claim 1 , wherein the aesthetic design of the generated machine-readable optical code comprises human-readable text that is different from the data encoded in the machine-readable optical code.

5. The computer-implemented method of claim 1 , wherein generating a machine-readable optical code within the determined fiducial comprises generating a machine-readable optical code comprising an orientation marker to establish correct orientation of the code.

6. The computer-implemented method of claim 5 , wherein the orientation marker comprises a corner marker.

7. The computer-implemented method of claim 5 , wherein the same machine-readable optical code has different meanings depending on its orientation.

8. The computer-implemented method of claim 1 , wherein generating a machine-readable optical code comprises generating a machine-readable optical code wherein at least a subset of the probe locations encode data specifying positions for the remainder of the probe locations.

9. The computer-implemented method of claim 1 , wherein generating a machine-readable optical code comprises generating a machine-readable optical code wherein at least a subset of the probe locations encode data specifying positions for the remainder of the probe locations.

10. A computer-implemented method for decoding a machine-readable optical code contained in a detected fiducial, comprising:

at an image capture device, capturing an input image;

at a processor, detecting a fiducial within the input image, the fiducial comprising a machine-readable optical code;

at the processor, obtaining a canonical fiducial containing canonical probe locations;

at the processor, determining a perspective transformation of the detected fiducial as compared with the canonical fiducial;

at the processor, applying the perspective transformation to the canonical probe locations to obtain transformed probe locations;

at the processor, determining at least one probe value for each transformed probe location;

at the processor, determining binary probe values from the determined probe values;

at the processor, comparing the determined binary probe values with a code library to identify a matched code; and

at an output device, outputting the matched code.

11. The computer-implemented method of claim 10 , wherein determining at least one probe value for each transformed probe location comprises, for each transformed probe location:

determining a plurality of probe values; and

averaging the probe values.

12. The computer-implemented method of claim 10 , wherein comparing the determined binary probe values with a code library to identify a matched code comprises determining an orientation based on at least one orientation marker.

13. A system for generating a machine-readable optical code having an aesthetic component, comprising:

a hardware processor, configured to perform the steps of:

determining a fiducial;

determining locations for a plurality of cells within the fiducial;

determining a probe location within each determined cell, wherein at least one of the probe locations is smaller than its corresponding cell;

establishing a machine-readable color for each determined probe location, based on data to be encoded in the machine-readable optical code;

based on a desired aesthetic design, establishing a color pattern for areas within the fiducial but not within probe locations, wherein the color pattern is consistent with the established machine-readable color for each determined probe location; and

generating a machine-readable optical code within the determined fiducial using the established color pattern, wherein the machine-readable optical code contains the established machine-readable color at each probe location to encode the data; and

an output device, communicatively coupled to the hardware processor, configured to output the generated machine-readable optical code.

14. The system of claim 13 , wherein each probe location is smaller than its corresponding cell.

15. The system of claim 13 , wherein the aesthetic design of the generated machine-readable optical code is representative of a piece of artwork that is different from the data encoded in the machine-readable optical code.

16. The system of claim 13 , wherein the aesthetic design of the generated machine-readable optical code comprises human-readable text that is different from the data encoded in the machine-readable optical code.

17. The system of claim 13 , wherein the hardware processor generating the machine-readable optical code within the determined fiducial comprises generating a machine-readable optical code comprising an orientation marker to establish correct orientation of the code.

18. The system of claim 17 , wherein the orientation marker comprises a corner marker.

19. The system of claim 17 , wherein the same machine-readable optical code has different meanings depending on its orientation.

20. The system of claim 13 , wherein the hardware processor generating a machine-readable optical code comprises generating a machine-readable optical code wherein at least a subset of the probe locations encode data specifying positions for the remainder of the probe locations.

21. The system of claim 13 , wherein the hardware processor generating a machine-readable optical code comprises generating a machine-readable optical code wherein at least a subset of the probe locations encode data specifying positions for the remainder of the probe locations.

22. A non-transitory computer-readable medium for generating a machine-readable optical code having an aesthetic component, comprising instructions stored thereon, that when executed on a processor, perform the steps of:

determining a fiducial;

determining locations for a plurality of cells within the fiducial;

determining a probe location within each determined cell, wherein at least one of the probe locations is smaller than its corresponding cell;

establishing a machine-readable color for each determined probe location, based on data to be encoded in the machine-readable optical code;

based on a desired aesthetic design, establishing a color pattern for areas within the fiducial but not within probe locations, wherein the color pattern is consistent with the established machine-readable color for each determined probe location;

generating a machine-readable optical code within the determined fiducial using the established color pattern, wherein the machine-readable optical code contains the established machine-readable color at each probe location to encode the data; and

causing an output device to output the generated machine-readable optical code.

23. The non-transitory computer-readable medium of claim 22 , wherein each probe location is smaller than its corresponding cell.

24. The non-transitory computer-readable medium of claim 22 , wherein the aesthetic design of the generated machine-readable optical code is representative of a piece of artwork that is different from the data encoded in the machine-readable optical code.

25. The non-transitory computer-readable medium of claim 22 , wherein the aesthetic design of the generated machine-readable optical code comprises human-readable text that is different from the data encoded in the machine-readable optical code.

26. The non-transitory computer-readable medium of claim 22 , wherein generating a machine-readable optical code within the determined fiducial comprises generating a machine-readable optical code comprising an orientation marker to establish correct orientation of the code.

27. The non-transitory computer-readable medium of claim 26 , wherein the orientation marker comprises a corner marker.

28. The non-transitory computer-readable medium of claim 26 , wherein the same machine-readable optical code has different meanings depending on its orientation.

29. The non-transitory computer-readable medium of claim 22 , wherein generating a machine-readable optical code comprises generating a machine-readable optical code wherein at least a subset of the probe locations encode data specifying positions for the remainder of the probe locations.

30. The non-transitory computer-readable medium of claim 22 , wherein generating a machine-readable optical code comprises generating a machine-readable optical code wherein at least a subset of the probe locations encode data specifying positions for the remainder of the probe locations.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 28, 2022
From: DIGITAL DREAM LABS, LLC
To: DIGITAL DREAM LABS, INC.
Reel/Frame 059819/0720 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 24, 2020
From: DSI ASSIGNMENTS, LLC
To: DIGITAL DREAM LABS, LLC
Reel/Frame 052211/0235 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 19, 2020
From: ANKI, INC.
To: DSI ASSIGNMENTS, LLC
Reel/Frame 052190/0487 →
RELEASE OF SECURITY INTEREST Recorded Jan 6, 2020
From: SILICON VALLEY BANK
To: ANKI, INC.
Reel/Frame 051485/0600 →
SECURITY INTEREST Recorded Apr 4, 2018
From: ANKI, INC.
To: SILICON VALLEY BANK
Reel/Frame 046231/0312 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 9, 2015
From: STEIN, ANDREW
To: ANKI, INC.
Reel/Frame 035371/0301 →
Continuity (1)
Provisional Application 61978113 · Apr 10, 2014