> 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.
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.
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).
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.
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.
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
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.
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...
www.cyberjobsonline.comᴵᴵᴵᴵᴵᴵᴵᴵᴵᴵ
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
www.cyberjobsonline.comᴵᴵᴵᴵᴵᴵᴵᴵᴵᴵ
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.
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.
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?
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).
"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.
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.
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.
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.
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.
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
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).
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.
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.
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.
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)
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).
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.
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).
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.
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?
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.
Thanks for doing this research! I've long dreamed of making a "print to binary to paper" backup system, but all the 2D barcodes I considered had patent encumbrances.
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.
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.
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.
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.)
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.
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)
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.
182 comments
[ 2.4 ms ] story [ 134 ms ] threadEdit: ok, found the docs/description of the finder patterns: https://imgur.com/a/ZXXLtQ0
Seems to work in Chrome, so not sure what's wrong with the implementation to make it not work.
If the colors are quantized into a constellation, even significant error could be corrected.
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.
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.
[1] https://www.nayuki.io/page/creating-a-qr-code-step-by-step
> The technical specification of the barcode is available as BSI TR03137 - Part 2[0]
It's apparently research done by the German Federal Office for Information Security.
[0] https://www.bsi.bund.de/EN/Publications/TechnicalGuidelines/...
This was in Chrome.
(The above is based on my quick exploration with it on Safari, YMMV)
nooo
Wikipedia: https://en.wikipedia.org/wiki/High_Capacity_Color_Barcode
Note that isn't just one of many independent implementations as both the repository links to BSI and vice versa.
https://en.wikipedia.org/wiki/Slavery_in_the_21st_century
Spatial relationship aside, there are plenty of less problematic ways to depict who is in charge.
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.
Now watch me be angrily downvoted for no other reason than someone got upset and offended.
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?
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).
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.
The term "machine" is perfectly fine. You're actually choosing to be offensive for the sake of being offensive. Please stop.
You're finding offense for the sake of finding offense and being censorious for the sake of being censorious. Please stop.
Why would the machines continue to feed us if we're dead weight to the economy?
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.
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.
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.
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."
Slavery in humans is bad. Slavery in software applications it not.
Good luck finding a country with people of any color that hasn't experienced some level of slavery.
Correct use of words is important if those words have been misused in the past.
https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publicat...
"Beacon" and "frame" would describe them better, or even "lord" and "serf" if you really need there to be a power dynamic
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.
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).
Every JAB code has four registration patterns in the corners, as well as multiple color pallets at fixed locations.
Edit: I should have said untrained humans.
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.
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).
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.
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.
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...
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.
[0] https://crowdmark.com/
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.
Mostly, I trust QR codes about as much as I trust random bit.ly links, i.e. not much at all.
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.
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.
But National Express does them, right?
- 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...
* https://neodynamic.com/barcodes/JAB-Code-Barcode.aspx
Using colored high-capacity encoding should yield much better results, given the decoder is as fast as QR one.
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...
https://youtu.be/2VmtPaiOBwI
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.)
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...
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)
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).
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.
[1] https://en.wikipedia.org/wiki/Esoteric_programming_language#...