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 machinereadable; 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.