A cheap and not terribly ugly computer-readable barcode

For a project at CIID we needed as the title say, a cheap and not terribly ugly computer-readable barcode. Yes I know Microsoft is looking at the same stuff. No, I don’t really care. I’m in design school, I don’t need to care too much. Ok, I’m joking. But only half. Why did we need these? There were a few reasons for this:

we needed something for when the code itself was around 6-8 pixels tall and 40 pixels wide
we needed something that wasn’t ugly
we needed something that was space efficient

We had a few advantages too:

all people reading these things would be using color cameras
all cameras would be attached to things with reasonable computational power
they only needed to encode a single URL

So I came with a very simple encoding scheme:

The small bar on the left encodes a few things:

the color spectrum of the cameras CCD chip
the width of each block of data
the height of each block of data
the number of rows in the code

Are there drawbacks? You bet:

Huge barcodes won’t scan well if there’s really significant color variation across them. That’s probably the biggest one.
No checksum. Also big.
It’s in color. And that’s a significant one.

Still though, I think there’s something to be said for these. Writing up a Cinder app that scans these took me all of about 30 minutes. It doesn’t rely on anything so heavy duty that you couldn’t do it in JavaScript, ActionScript, or whatever your coding language of choice. Finding them in a scene using OpenCV SURF took all of about an hour or so. Again, not the most robust solution. You’d want to train up a model for detection and everything, but I only started this last night, and we’ve got a ton of design to do, so that’s something I’ll do over my summer break :) As for the Cinder code, once I get that code cleaned up a little and the rest of the documentation I’ll post it.

Leave a Reply

Your email address will not be published. Required fields are marked *