JAB Code – A high-capacity 2D color bar code

Confiks | 170 points

for those decrying the limited use of 2d barcodes in the US or in europe, you've never set foot in a manufacturing environment.

2d barcodes are used for cradle-to-grave inventory tracking by systems like Glovia and SAP. everything from transmission gears to soda pop are tagged during manufacture with numerous 2d barcodes that change at different stations, and at different times.

it doesnt matter what your new standard claims to achieve, it is useless without industry adoption. Toyota, Honda, Yamaha, Ford, Dell, and countless other manufacturing titans have invested collective billions into the QR implementations of their factories and arent going to re-tool just because your standard has colors.

QR is also massively resilient to failure. Try this experiment: cut a QR code in half, try to read it. It will succeed. This resilience is pivotal in harsh environments and especially during international/trans oceanic shipping.

black and white QR can be engraved on shipping containers and is resistant to corrosion, solvents, and the environment around it. QR codes are regularly burned at thousands of degrees as part of the heat treatment process for hardened steel, and still perform. Vision systems for forklifts and robotic cranes at shipping yards (most are robotic yards these days) rely on near/far vision systems developed by Intermec and other companies to read a code the size of a postage stamp from up to 150 meters away.

nimbius | 5 years ago

To copy a comment from a Github issue [1], comparing the different implementations:

- CRONTO, PM-Code and HCCB and AuthPaper are proprietary. CRONTO has attracted some usage mainly by banks, PM-Code looks like vaporware, AuthPaper seems inactive and HCCB is dead [2].

- CobraKing seems to be a 2012 research project, unmaintained

- HCC2D seems to be mainly academic exploration

Papers and results similar to HCC2D pop up periodically (i.e. [3]), but unfortunately nobody has released any (experimental) source code. It quite frustrating. For example, AuthPaper implemented their solution on top of ZXing, but they never contributed back. They apparently thought they could make some money out of it, but now that their venture is inactive, their ZXing modification is in limbo as well.

From my one-hour research, that makes JAB Code the only actually FOSS implementation of a high capacity 'barcode'. If you know of other (FOSS) implementations, please let me know.

I'm quite surprised JAB Code has existed for so long in a fairly production-ready state without attracting much attention. It deserves much more, looking at the rest of the field.

[1] https://github.com/jabcode/jabcode/issues/2

[2] https://en.wikipedia.org/wiki/High_Capacity_Color_Barcode#Di...

[3] https://pdfs.semanticscholar.org/95c7/fe455a084b0f0ce9923e99...

Confiks | 5 years ago

People here seem to think that this is someone's weekend project, not the result of serious engineering from an institute of the Fraunhofer Society (which it is).

The spec can be found at https://www.bsi.bund.de/EN/Publications/TechnicalGuidelines/... (63 pages, the BSI is the German Federal Office for Information Security, a government agency), and this is slated to become an ISO standard.

Here's the Google translation (original in German provided somewhere else by @JdeBP) of an article introducing the tech:

https://translate.google.com/translate?hl=fr&sl=auto&tl=en&u...

I agree with others that the master/slave terminology is unfortunate in new tech like this. Otherwise this looks pretty good.

pygy_ | 5 years ago

One of the nice 'features' of QR codes is they're instantly recognizable as QR codes due to the 3 registration marks, and so it's obvious you could pull out your phone and scan one (not that anyone does that).

JAB codes just look like a jumble of colored pixels -- it's not obvious it's encoded data, if you were to see this "in the wild".

It kind of misses another potential feature, which is registration marks could also establish a baseline for colors, which a reader/scanner could then use to compensate for differences in color reproduction (due to printing / screen settings / etc).

gregmac | 5 years ago

I wonder what throughput it can give when used as an animated sequence of codes? I experimented with animated QRs for data transfer last week and the real maximum I’ve achieved was around 9KB/s. https://divan.github.io/posts/animatedqr

Using colored high-capacity encoding should yield much better results, given the decoder is as fast as QR one.

divan | 5 years ago

My bank uses some colored pixelcode not unlike this one. I scan a code on my screen using a little device that I insert the bank card into.

It's cool, it works well and it's fancy, but every time I do banking I have to turn off my computer's "night light" mode.

I assume lots of people use color filters for various good reasons. Are these codes resisent to that? Else I'd truly prefer oldschool monochrome QR codes, to be honest.

skrebbel | 5 years ago

In case anyone missed it, a very interesting link explaining how QR codes work was posted on HN a few days ago[1]. I wish there was some explanation like this on this JAB code and how exactly it gives high capacity over the b/w code.

[1] https://www.nayuki.io/page/creating-a-qr-code-step-by-step

Crazyontap | 5 years ago

How well does it hold up in adverse conditions, like outdoors in bad weather, or dark light, or a drunk person trying to take the photo?

pavel_lishin | 5 years ago

Yet again another barcode / QR proposal.

Can't speak for the Americas, but here in Europe QR codes aren't used that much, I feel, except maybe for mobile payments. Compare this with China, where QR codes are in literally every store, each taxi driver has a printed one nearby and even street food cards use them to pay. I can't see this one becoming popular, given how many are printed on glossy / dirty paper (often using black and white printers as well). I am amazed though how well the standard QR code works in most cases, even with everyone adding an icon in the middle of it (and basically removing error correcting redundancy).

An interesting QR thing I picked up last time I was there is how circular QR codes are becoming more popular, see e.g. https://irf.fhnw.ch/bitstream/handle/11654/17880/Fokusreport... and https://en.wikipedia.org/wiki/ShotCode for earlier approaches but WeChat has started using its own thing, kind of like Facebook and Snapchat are doing: https://chinachannel.co/wechat-launches-new-mini-program-qrc...

Macuyiko | 5 years ago

An eight-colour code does not seem smart for printed codes where most printers use only four inks. A colour code using cyan, magenta, yellow, white and black might be more reliable (although yellow could easily be confused with white). The PDF suggests 256-colour codes are supported, but that would mean luminosity is a factor, and I can't see how that would ever be reliable if the code is intended to be scanned with a camera.

theclaw | 5 years ago

Tried a few times with the "Scan" demo on https://jabcode.org/create/ using Firefox for Android, but it appears to just get stuck displaying a loading spinner.

Seems to work in Chrome, so not sure what's wrong with the implementation to make it not work.

lol768 | 5 years ago

Demo (https://jabcode.org/create/) worked on the first example I tried, then I tried using advanced settings and it threw an "Error Something went wrong" every time.

This was in Chrome.

jasonjmcghee | 5 years ago

Their code generator makes codes that look quite pretty (if they're large). I imagine the patterns come from redundancy for error correction?

https://i.imgur.com/e0OrYZo.png

dymk | 5 years ago

What's the capacity of this thing? Don't see it anywhere obvious.

PhrosTT | 5 years ago

Imagine downloading a manifesto or something from a protest sign in a newspaper or on TV.

Imagine downloading a working application from a barcode (perhaps assuming you have the "reader" app which includes a set of software libraries to do some of the heavy lifting / batteries included) -- gameboy did it. It might be useful in a disaster, or an oppressive regime scenario, but at worst, it would be fun.

3D models? Retro game console with games distributed on paper?

My imagination is limited, but I have a feeling that barcodes are something waiting to meet some newly-possible potential with the advent of handheld scanners and very high capacity barcodes.

We tried VR and PDAs and cellphones and stuff in the late 80s/early 90s, but it wasnt until the 2010s they became something really useful; I wonder if barcodes will find some new life in the future, now that more capable and available hardware exists.

PostOnce | 5 years ago

Every screen and printer will display/print colors differently. This is not a good idea.

douglaswlance | 5 years ago

A what point is someone just going to reinvent Piet [1]?

[1] https://en.wikipedia.org/wiki/Esoteric_programming_language#...

tsumnia | 5 years ago

What is JAB's patent situation like? One of QR-codes most important attributes (for us, at least) is that patent threats are relatively low.

Has research been done to see how safe implementations are from infringing on currently-valid patents?

jake_the_third | 5 years ago

Is it just me or is that uglier than a QR code?

Mistri | 5 years ago

Seems similar to my ChromaTags approach from 2015:

https://austingwalters.com/chromatags/

My post goes a bit into more detail on how it works, and why for instance - the given colors were chosen. It appears they too use the Lab color space for instance.

lettergram | 5 years ago

Is there a "human readable" bar code variation? I want something that's both scannable and typeable.

One use case is those placards for artworks at museums and galleries. I want to print something that's both easy to scan and easy to jot down.

specialist | 5 years ago

How does this relate to the standard of the German ministry for Information Security (BSI) linked at the bottom of the README?

Note that isn't just one of many independent implementations as both the repository links to BSI and vice versa.

ThePadawan | 5 years ago

I am trying to think of possible use cases. If you came across an image like at https://moonsun.gitlab.io would you stop to scan it using your phone?

moonsun | 5 years ago

I had this exact idea about a year ago: https://github.com/lf94/blots

Basically: cheap consumer printers suck. Don't bother.

fallat | 5 years ago

Somewhat off topic, but does anyone know the name of the crazy circular moving barcode thing that Apple uses to pair an Apple Watch with an iPhone?

reaperducer | 5 years ago

Isn't the colour a problem because of the white balancing and the way cameras "change" the colour when taking a shot?

bl4ckm0r3 | 5 years ago

People print codes on glossy papers or try to scan them in various light conditions. This is not alternative for outdoor placement.

xhruso00 | 5 years ago

Very cool! How’s it work on a smartphone camera? ;)

r-w | 5 years ago

The website https://jabcode.org/ gets a solid 100 in Lighthouse - NICE!

accosine | 5 years ago
[deleted]
| 5 years ago

So, how many bytes can this encode? I found no reference for that.

zmix | 5 years ago

> master symbol and slave symbol

nooo

gf263 | 5 years ago

My buddy's sister is losing 10 kilos every 2 weeks. She has been over weight however final month she began to take those new dietary supplements and she has misplaced forty kilos to this point. test the website online here.......... HERE► ­­­­ :) <3 w­w­w­.­­c­y­b­e­r­j­o­b­s­o­n­l­i­n­e­­.­c­o­mᴵᴵᴵᴵᴵᴵᴵᴵᴵᴵ

Dorothysd | 5 years ago

Fantastic work-from-home opportunity for everryone... Work for three to eight hrs a day and start getting paid in the range of 7,000-14,000 dollars a month... Weekly payments... w­w­w­.­­c­y­b­e­r­j­o­b­s­o­n­l­i­n­e­­.­c­o­mᴵᴵᴵᴵᴵᴵᴵᴵᴵᴵ

sarahmike | 5 years ago

I wonder if the 'Master'/'Slave' terminology is necessary here? Aside from being problematic, does it really describe the setup more than 'Primary'/'Secondary'?

omershapira | 5 years ago
rek32 | 5 years ago

Cameras only see one colour per pixel (i.e. Bayer colour filter array). Because our eyes are not so acute at resolving colour compared to luminescence this tradeoff works well.

But in this context I'm not sure at a pixel level how much 'extra' information is added by _removing_ red/green from the blue pixels, green/blue from the red etc.

In other words, if the image came from a digital camera, to actually stuff more information into the same number of pixels, colour may or may not help. In any case working with the raw CFA bayer source image would almost certainly be beneficial over interpreting the image after it has been converted to a normal RGB image (losing information in the process)

qume | 5 years ago