182 comments

[ 2.4 ms ] story [ 134 ms ] thread
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?
It doesn't appear to have anything to correct for orientation like the 3 corners in a QR code.

Edit: ok, found the docs/description of the finder patterns: https://imgur.com/a/ZXXLtQ0

> A JAB Code contains one master symbol and optionally multiple slave symbols. Master symbol contains four finder patterns located at the corners of the symbol, while slave symbol contains no finder pattern
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.

To add to this, I am getting vague error messages with any text of a certain length (longer than 100 characters or so) if I tweak any, or at least several, of the advanced settings.
Thanks for reporting, Firefox for Android should work now.
Every screen and printer will display/print colors differently. This is not a good idea.
Every HN comment thread is full of armchair critics. Maybe the designer actually thought of this!

If the colors are quantized into a constellation, even significant error could be corrected.

Well, I hope the designer accounted for multiple colors failing to displayer properly. The pink and red are impossible to discern for me. My bank uses colored QR style codes and they're impossible to use with (very common) blue light filters active in the evening hours.
Except if said colors fade over time or change their hue due to UV exposure like most pigments used for printing.
QR codes printed on thermal paper also fade over the course of a year and would be unreadable. There are always uncorrectable adverse conditions.
Sure. And if you light the paper on fire even 24pt Helvetica becomes unreadable.

But I’m sure you too feel that the failure modes of this colored barcode form a proper subset of the failure modes of its monochromatic counterpart.

Well, if your machine-readable color key fades as well, maybe it's not so much of a showstopper if the colors fade.

The primary problem I see is that so many industrial cameras today are black and white. B&W cameras can send at a higher framerate and you don't need to convert to greyscale as your first step in your algorithm, so it saves time to use b&w cameras.

Every HN submission is treated as if it's a breakthrough discovery to herald in a new era of human society. Constructive criticism (like the parent comment of your comment) is helpful, considering that the author of JAB Code makes no mention of this obvious issue (that I could find).
You should read the specification. It more than mentions this. It is discussed in sections 3.3.8, 5.5, 6.5, and annex F.
Depends on the chromatic differential it’s using, along with its error correction.
Yes but you don't need exact colors. Just a limited set of colors that can be matched up, especially after correcting for white balance.
This would fail if the decoding algorithm was trying to match exact RGB or YUV values. But in reality, all it has to do is disambiguate 8 (in the case of the example) colors.
I went to the sample page and you can generate one with up to 256 colors.
The full color palette is embedded in every code, so the reader need only compare a cell's color to the colors in the palette region.
Printed colors fade at different rates and shift color in different ways.
The palette is embedded in the barcode which would presumably fade the same way the rest of the barcode does.
Why wouldn't/couldn't this thing just disambiguate colorspace the same way it does rotation/position with predefined locator patterns?
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

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.
She has been unemployed for eight months but last month her income with big fat bonus was over Bucks 9000 just working on the laptop for a few hours. <3 :) https://www.cyberjobsonline.com
(comment deleted)
People print codes on glossy papers or try to scan them in various light conditions. This is not alternative for outdoor placement.
All barcodes can be printed on glossy papers, so that's not a unique challenge. Various light conditions aren't terribly difficult to account for, especially when known colors are involved (as they are here).
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.

With Advanced Settings you control the format and capacity of the code, so if you specify too many characters or too high of an error correction level it will fail (with that rather unhelpful error). Try increasing the version (which adds more pixels in the X or Y direction), or adding a few slave blocks.

(The above is based on my quick exploration with it on Safari, YMMV)

Without the advanced settings, it seems to automatically grow the code as needed. You need to manually add "slave" boxes though (to the right of the sliders). The interface is nonintuitive.
It seems to stop working at particular text lengths. Sort of a bummer when you want to see how much text it can accommodate in a square, compared to a QR code.
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ᴵᴵᴵᴵᴵᴵᴵᴵᴵᴵ
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ᴵᴵᴵᴵᴵᴵᴵᴵᴵᴵ
> master symbol and slave symbol

nooo

Microsoft comes up with a lot of neat little ideas. And also some bad ones. But mostly good ones.
Their "Household of the future" lab consistently shows off amazing tech that could be world changing, but the number that actually seem to come to production always seems remarkably low.
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.

I wonder if the 'Master'/'Slave' terminology is necessary here? Aside from being problematic, does it really describe the setup more than 'Primary'/'Secondary'?
Is it problematic outside of the US? That said, possibly not the most immediately illustrative choice of terms; master/slave usually implies who's in charge, not a spatial relationship.
> master/slave usually implies who's in charge, not a spatial relationship.

Spatial relationship aside, there are plenty of less problematic ways to depict who is in charge.

Why is that problematic?
Because people cannot separate the abstract concept of slavery to the actual historical happening.

Personally, I want to be a master to my mechanical slaves (tools, dishwashers, computers, robots) and can't wait for a future where machine-slavery is so pervasive that no humans need to work anymore.

Yup, it's censorship for the sake of censorship. We've had zero problems with master/slave terminology for decades because everyone dealing with it was cognizant enough to realize we weren't talking about human bondage. Then people who are incapable of compartmentalizing word connotations came in and declared their use "problematic" and demand everyone conform to their worldview and to waste time changing code comments, lest you want to be called racist/sexist/fascist/anti-Semite/Trump supporter/etc (mind you, all over words). At the end of the day, nothing changes except the vocal minority's frivolous complaining temporarily ceases.

Now watch me be angrily downvoted for no other reason than someone got upset and offended.

There was a similar discussion a while back and I can't find the exact comment, but the commenter I'm paraphrasing posed this example:

What if database rows marked for deletion were marked with a "Jew" flag and to process the deleted rows you ran a "holocaust' function? Would you be able to compartmentalize those words? Would you insist that people shouldn't be offended? If you think these situations are different, why?

(comment deleted)
It's bad to "exterminate" Jews but not bad to exterminate termites (well, at least in the human value system). The "final solution" to the Jewish question is bad, but the final solution to an exam math problem is good.

Same words can mean different things in different contexts. "Master" means someone who rules, gives orders, has people working for him. "Slave" is someone or something that follows master's orders without capacity to resist or deviate from that order (well, that's the idea... we'll see how AI turns out).

(comment deleted)
Please don't take an HN thread further into pointless flamewar. This is a classic of that hellish genre.
"We've had zero problems with master/slave terminology for decades because everyone dealing with it was cognizant enough to realize we weren't talking about human bondage."

That's a pretty big assumption. Maybe people did have a problem but felt uncomfortable voicing that opinion or maybe having an industry overwhelming white no one had the experience necessary to notice that it might be problematic.

That it's "censorship for the sake of censorship" is just the most bad faith assumption you could make. Word choices change with the culture, it's a fact of life.

I'm downvoting you not because I'm upset and offended, but because you're breaking the rules of this site with this post. One of the rules here is that you must assume "good faith" in conversation with people, but instead you're accusing people of wanting "censorship for the sake of censorship". While you may not agree with the reasons people advocate for this change, they are presenting reasons and there is no evidence that those reasons are made up simply to mask a desire to censor people.
Why on earth would you choose to use the term mechanical slave for your dishwasher except to be deliberatively provocative?

The term "machine" is perfectly fine. You're actually choosing to be offensive for the sake of being offensive. Please stop.

I prefer the term "slave" because it implies (hopefully) no free will (and hence no capacity to disobey). At least I hope that's how AI turns out.

You're finding offense for the sake of finding offense and being censorious for the sake of being censorious. Please stop.

You're breaking a rule of this site- you should assume good faith when talking to other people on here. There is no evidence that anyone wants to be "censorious for the sake of being censorious"- even if you don't agree with the reasoning behind this discussion it doesn't change the fact that people have put forward reasons.
Yes, but I'd say the GP comment broke that same rule as well.
I'm not rooting for a future where human labor is obsolete.

Why would the machines continue to feed us if we're dead weight to the economy?

I am. Why do the washing machines keep washing pensioners' clothes, if they're dead weight to the economy? Because we (the intelligent / sentient / human civilisation) decided so.
Institutionalized care for the weaker members of society actually makes productive members more productive.

Likewise for social security and state-run unemployment insurances.

AI is coming in the form of industry automatization, in a very competitive, capitalist framework. Agriculture and resource extraction is also being automated.

Capital is literally growing a brain, and once it doesn't need us it will stop feeding us, and we'll be powerless against it because we are so dependent on it. Think of a spider shedding its dead skin after molting.

There's a number of flaws in your argument.

If automation will make agriculture more competitive, then food will get cheaper. Governments will be able to subsidise it.

Capital needs consumers to make a profit.

Politics will solve any kind of food crisis. Otherwise there will be a revolution.

> Capital needs consumers to make a profit.

Fundamentally, demand is survival instinct, which develops under Darwinian pressure. B2B is already growing faster than B2C. Wages are globally stagnating while capital keeps on growing. The industry as a self-maximizer can be its own consumer.

> Governments will be able to subsidise it. [...] Otherwise there will be a revolution.

This assumes that humans will still have some kind of power. Being somewhat competitive in the job market is the only power most people have today.

Agreed. It's unfortunate but understandable we still use this terminology for existing technologies... but we absolutely should not be propagating it to new ones.

Embarrassing story time: I was working in Brazil on a database, and used the Portuguese translations for "master" and "slave" in a technical meeting (I speak Portuguese). The whole room looked at me in shock, and my manager politely corrected me: "um, we just use the English terms 'master' and 'slave'... if you translate them, it's pretty racist."

My wife is Brazilian and I showed her this comment. She says the Brazilians were just giving you a hard time and that they don't find those terms offensive.
This is "retarded" all over again.

Slavery in humans is bad. Slavery in software applications it not.

At a family dinner I once jokingly described my gluten-free girlfriend as "glutarded," which was our inside joke way to refer to her dietary restrictions. I forgot that my aunt's husband, who has some congenital language issues that leave him with a speech impediment, had grown up being bullied and called 'retard,' until he gasped when he heard my words. I felt horrible, and have since been more conscious with my words. I share this story here because I think it points to a similar issue--the tech world is often a homogenous environment without much representation for African Americans. Can you imagine walking into a classroom full of African American students and casually throwing around the phrase "master and slave" without evoking discomfort in that audience? If we continue to use this language comfortably it implies to me that we aren't inviting to the table the community for whom slavery is still very much an open wound.
You seem to be under the impression that black people imported to America were history's only slaves.

Good luck finding a country with people of any color that hasn't experienced some level of slavery.

No part of taylorfinley's argument implies or requires that the American/African slave trade was the only ever instance of slavery.
The focus should be on building environments where those pasts can be discussed and the sounds healed. I can absolutely imagine correctly using the terms master and slave in an environment where some of the people have a darker skin tone than I have.

Correct use of words is important if those words have been misused in the past.

it doesn't really even describe the relationship accurately- the "slave" symbols aren't doing anything for the "master" symbols, they aren't being delegated to or controlled by the "master" symbols.

"Beacon" and "frame" would describe them better, or even "lord" and "serf" if you really need there to be a power dynamic

Is it just me or is that uglier than a QR code?
on a phone with average brightness, it's okay. on a big monitor, it hurts my eyes looking at it, like green text on a red background. so i genuinely hope these never get used.
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.

I've seen worse: some machine had a built-in camera recognizing QR code, but it couldn't really control exposure so I had to manually set my phone's brightness low to get the code detected. Quick Response? Screw that.
This is pretty easily fixed by doing white balance correction. One piece of the barcode is always kept white, and it is used for color calibration. assuming the color transformation is constant across the entire code (which is the case in your example) you can undo some pretty large color shifts.
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).

Technical specification is here: https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publicat...

Every JAB code has four registration patterns in the corners, as well as multiple color pallets at fixed locations.

I think OP's point was that humans can't recognize those features.

Edit: I should have said untrained humans.

OP did also say that the registration marks had machine benefits, for which it's worth noting that they are defined, even if humans can't spot them.
I can recognize those features. Sure, you need to look for them, but why would anyone care to? Surely after encountering only a few RGB codes the average person will have no trouble inferring that a jumble of colored blocks against a white background is likely to be encoded data. Same "training process" as needed for QR codes - although in this case the quiet zone is not needed, so you _could_ use these in a deliberately obscure fashion if you wanted, which isn't a shortcoming.
Yes, you're able to realize that any given RGB mess-of-pixels printed somewhere is "likely to be encoded data", but maybe, you'll think, there might be multiple standards for RGB-encoded data (there are) and so, what standard does this code obey? Is it one your phone can parse?

QR codes are able to be recognized as QR codes, which means you're able to think "I could definitely scan that", rather than thinking "that is some data there, that I could maybe read or maybe not."

It's the same as the difference between saying that data on the wire is "a TCP packet" vs saying it's "HTTP." Yes, either way, you know that you've got some packets—but if you want to parse them, you'd better be able to recognize the format of those packets.

We're thankfully not cursed with a multitude of competing standards for bilevel monochrome 2D codes (they do exist, but 90+ percent of everything out in the wild is QR). I don't think an end user is going to be competent to understand the differences between them in any case. The standard operating procedure will continue to be "point the scanner at it and hope for the best." If multiple competing standards do become popular, the most likely result is that scanners support all of them and we just eat the software bloat.
There are also multiple standards for black and white 2d bar codes.

This is backed by the Fraunhofer Society and the German government, and on tracks to become an ISO standard. It will be implemented in scanners (hardware and software).

Yes, and most people are not aware that there are multiple barcode standards, even with 1D barcodes. Ask anyone what the difference is between Interleaved 2of5, Code 39, Code128, UPC/EAN, PostNet, etc. and they'll be hard-pressed to identify any of the distinguishing characteristics that are immediately obvious to the trained eye.
(comment deleted)
Hey on page 29 does anyone see a pattern that resembles.. historical German symbology used by to represent national pride and a government party that rose to power in the 1920's? Am I the only one? Sorry, just popped out at me.
Yeah, but I'd give them the benefit of a doubt unless it's visible on actual codes or there is evidence this was intentional.

You end up with that pattern all the time when you try to efficiently pack rectangles around a different sized rectangle. I remember trying to avoid that back when placing fields in age of empires 2.

You could have an optional border around it.

A black border containing a colour spectrum centered on each side would make for a distinctive "this is one of those JAB thingies" appearance.

A border might be required anyway if tightly packing codes makes it too difficult to tell where one code ends and another begins.

A black border with two tiny transparent, black-outlined squares next to the NE corner, one on each side. A system like this would allow different protocols and versions to use different symbols in different corners so that phones and people could recognize which it is at a glance.
There are many instances where the iconography of QR codes is a problem.
It has finder patterns and alignment patterns, and the finder patterns are surrounded by metadata that specify the colour palette for decoders to use.
QR codes also will always work in grayscale.
they also work in two tone colors, so they don't ruin a billboard/leaflet aesthetic (even if there are a lot of reader out there that get confused by a white pattern on dark background code, even if the spec allows it)
I use Alipay on a daily basis, all scanning QR codes.
What's the capacity of this thing? Don't see it anywhere obvious.
It's on page 13 of the spec. Up to 27kb.
It's actually indefinite by adding more slave blocks, the spec example shows how this works up to 60 blocks, but the algorithm holds beyond that.
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?
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...

I think it's the same for the Americas, but just because the average person doesn't use QR codes very much that doesn't mean that such technologies aren't being used in ways that aren't widely reported. For instance, I know someone who placed small barely-visible QR codes in videos that get passed off to editors so that each clip and frame number(and other info) can be detected programmatically despite editing software stripping out metadata. I think QR is one of those things that solves very niche problems that even the average engineer might not be made aware of.

People are quick to point out "nobody uses QR" but it's not exactly fair to expect ubiquity from something like that. My response would be the same for those in this thread saying "people can't recognize JAB codes like they can with QR." Well, those who find a use for JAB codes are probably going to be the people using them 99% of the time(maybe more than QR because of data density), thus they're almost certainly know to know how to recognize them.

Another interesting use case: Crowdmark[0], a digital grading platform uses QR codes printed on test pages to match these up to the correct student when they are scanned without the need for any manual matching process.

[0] https://crowdmark.com/

People are quick to point out "nobody uses QR" but it's not exactly fair

I think everyone uses them, but they just don't know it.

Pretty much every label on every consumer good (in America, at least) from cough syrup to Coca-Cola to computer chips has a tiny QR code on it. But since people don't actively engage with the code, they don't realize that it's there, and is a big part of the process of getting things from raw material to store shelves.

QR code is pretty minimal in the US too. When they first hit it big, there was lots of talk, and they started to pop up all over the place, but it never really solidified in the market.

Mostly, I trust QR codes about as much as I trust random bit.ly links, i.e. not much at all.

They aren't used much in the US. I'm a bit surprised they aren't used more for storing/communicating keys. An app I was contemplating would use them to pass around ed25519 keys (public for others, private for yourself AES'd).
Every single container, crate, item and slab of raw material at work has a QR code attached.

They are fantastic for that use case as with high levels of error correction you can read them in a rain storm when one corner is missing.

That and every UPC scanner in existence seems to read them no problems.

On the other hand, this requires color ink. Traditional QR only needs black and white.
At my work everything has a bar code on it. It seems carry have enough information.

High capacity code have probably different applications. I haven't seem them anywhere yet, but there are several products around them. I think printing a public key with such a code on a business card would be cool.

I blame previous dev he’d apparently never heard of primary keys so he had to put way too much date in the QR code.
Facebook and Google use QR codes to link phones and desktops. It shows the QR code and your point your phone at it and that's it. I can't think of anything quicker. People sometimes say they're ugly. Who cares? You'd rather type a load of random crap instead?
In Germany and UK they are used for train and bus tickets.
In the U.K. we actually use Aztec codes for train tickets, rather than QR. Not entirely sure why.
Oh, my mistake.

But National Express does them, right?

Yes, I think National Express print QR codes on their tickets but very rarely actually read them.
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...

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.

Cool. How does Apple's iPhone-to-Watch pairing animated graphic work? Maybe their technique has higher bandwidth.
Unlikely. I skimmed through both patents [1][2], and I don't recall any numbers on throughput. But the general principle is super cool – they analyze the change in luminance of the picture, and chrominance can be whatever you wish (so they can replace particle cloud with any custom animation). The idea is that human eye is much more perceptible to changes in color than to changes in luminance, but for image processing software it's quite different - they can decode luminance changes quite reliably :)

So my guess is that Apple's approach is optimized for coolness, rather than transfer speed.

[1] http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=H...

[2] http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=H...

Speaking of screen-to-watch data transfer, the Timex Data Link watch somehow accomplished this in the mid-90s. There must have been some dark magic to make it work on a watch-battery powered processor at the time.

https://youtu.be/2VmtPaiOBwI

That’s definitely a dark magic! Thanks for sharing this.
Neat! I've always been a fan of these "low-tech" (not involving complicated radio protocols like Bluetooth that inevitably seem to never work) transmission protocols. I kinda wish something like what you built was more widely supported, so I could transfer files between my phone and OS X. (Which both have Bluetooth, yet it never works. So I upload to Drive.)

Similarly, but with audio[1]: http://www.whence.com/minimodem/

[1]: (and yes, I know this is how it "used" to be done / I am old enough to remember it.)

What if you used high capacity code like HCCB or CQR Code-9. CQR has a capacity of 3KB per square inch [1], based on your formula of 11 frames per second, you could easily do 33KB/s.

And that is just a square inch, I think you could reach pretty good transfer speeds with higher resolution and wider dimensions.

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

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)

Information is not encoded in pixels, it is encoded in so-called modules, which are more than 1 pixel in either dimension (and square when printed).
This is an interesting point, but it assumes perfect optics. If the image is slightly out of focus, I think three lower resolution images in different spectral regions is a big win.
I think it depends on the context - if you're designing the whole system from bar code to camera, I'm not sure that the color will help. But in that case you can assume close to perfect optics and I'm not sure if you would find an improvement or the opposite over a monochrome setup with better SNR.

On the other hand if you're stuck with things like mobile phone cameras, and can only control the bar code side, then Id imagine you'd see some improvements as you say.

An interesting middle ground would be if you could get the raw image from the sensor before a generic debayer algorithm gets applied.

Good luck, keep up the good work... i've worked commercially on optical barcode systems and it's a super interesting topic (tho looks like my post has been downvoted out of existence so maybe you wont see this).

I don't want to represent myself as one of the inventors! I just saw this on HN, skimmed the technical report, and found a bunch of comments on HN that could be answered with my cursory knowledge thus gained.

What I can offer is that it is now possible to get memory buffers containing "raw" sensor data from mobile phones. I've only done it on iPhone so far, but the "camera2" API on Android looks to support this as well. It only works in single-shot photo mode - I suspect there isn't the bandwidth to do 30 fps streaming, and they rely on the ISP for debayering and color space conversion in video mode.

iPhones seem to have negligible chromatic aberration in their raw output, weirdly, so that isn't a blocker for full sensor resolution grayscale imaging. Someone could exploit this to write the world's greatest mobile phone QR reader app.