Halftone QR Codes

ACM Transactions on Graphics (Proc. of SIGGRAPH Asia 2013)

Abstract

QR code is a popular form of barcode pattern that is ubiquitously used to tag information to products or for linking advertisements. While, on one hand, it is essential to keep the patterns machine readable; on the other hand, even small changes to the patterns can easily render them unreadable. Hence, in absence of any computational support, such QR codes appear as random collections of black/white modules, and are often visually unpleasant. We propose an approach to produce high quality visual QR codes, which we call halftone QR codes, that are still machine-readable. First, we build a pattern readability function wherein we learn a probability distribution of what modules can be replaced by which other modules. Then, given a text tag, we express the input image in terms of the learned dictionary to encode the source text. We demonstrate that our approach produces high quality results on a range of inputs and under different distortion effects.

Algorithm


Results


Video

Acknowledgement

We are grateful to the anonymous reviewers for their comments and suggestions; Jr-Iang Chiou for generating the results; all the participants of the user study for their time of scanning QR codes; and Gerardo Figueroa for video narration. We are thankful to Luis Sousa for granting permission to use the panda photo. The Cat and Arc de Triomphe are image courtesy of David Corby and Benh LIEU SONG, respectively. The project was supported in part by the National Science Council of Taiwan (NSC- 102-2221-E-007-055-MY3 and NSC-102-2220-E-007-023), Ministry of Economic Affairs of Taiwan (MOEA-102-EC-17-A-02-S1- 202), an Adobe research gift and an UCL impact award.

Bibtex

@article{Chu:2013:HQRC,
 author = {Chu, Hung-Kuo and Chang, Chia-Sheng and Lee, Ruen-Rone and Mitra, Niloy J.},
 title = {Halftone QR Codes},
 journal = {ACM Trans. Graph. (Proc. SIGGRAPH Asia)},
 volume = {32},
 number = {6
},
 year = {2013},
 pages = {217:1--217:8},
 articleno = {217},
 numpages = {8}
}
  

Links