Error correction in reading QR codes - decode

I am working with a client to promote their site via QR Codes. They would like to put a QR code on floor decal in a grocery store.
I am concerned about how well this will perform as the floor decal is worn down over time via walking, spills, etc.
One of the considerations would be how its printed (material and ink) and the size of the QR code itself. But how do the decoding algorithms error correct? Is this even an issue that needs to be considered?

It is an implementation of Reed-Solomon coding, so it's fairly robust. The application used to generate a QR code for you can be configured, see a blog post here:
http://shkspr.mobi/blog/index.php/2010/10/qr-codes-and-error-correction/

I'm the author of the post on error correction.
For best results, you need to set the Error Correction to "H" that's "Hight".
That will allow up to 30% of the code to be damaged.
Note: The three corner squares are the most crucial - once they are obscured, most scanners won't be able to see the code.

Related

Is it appropriate to pass in a complex structure when using vitis hls

I am currently doing code testing in sdaccel2018.2. When transmitting between the host and the device, I use a custom data structure. The current results show that the results of the software simulation are completely correct, but the same code is used in the hardware simulation, under the environment, the result of the operation is completely wrong, and there is even a situation where the data on the device side is not read. (Here I think it can be ruled out the problem of the host-side code, because there is no problem with software emulation). Since the emulation doesn't give any hints about errors, I'm not sure where the problem is. I even just did data in and data out, but still couldn't get the correct result. Not sure if anyone can give some advice?

QR Code Recognition in AGV (Auto Guided Vehicle)

I have some questions.
The first question is which equipment should be used to recognize QR Code.
I'm thinking of two things.
The first is the QR code Scanner used in the industrial field.
The second is the camera module. (opencv will be used)
However, the situation to consider is that it should be recognized at the speed of 50cm/s.
What do you think about?
And if I use a camera, is there a library that you can recommend to recognize QR Code? (C/C++ only)
Always start with the simplest solution and then go more complex if needed. If you're using ROS/OpenCV, OpenCV has a QR Code scanner, ex. Other options include ZBar, quirc, and more, found by searching github or the internet.
As for a camera, if you don't need the intrinsic matrix, then you only need to decide on the resolution: more resolution takes (non-linearly) longer to compute, but less resolution prohibits seeing the objects well.
Your comment about "recognize at 50cm/s" doesn't make much sense. I assume you mean that you want to be able to decode a QR code that's up-to 50 cm away, and do it in less than a second (to have time to stop). First you'll have to check if the algorithm, running on your hardware, can detect the QR code at different desired distances, and how that changes with scaling the image up/down in OpenCV. Then you'll have to time how long it takes to detect/decode it at those distances/resolutions/scales. If it fails to be good enough, you can try another algorithm, try different compilation settings, perhaps give it it's own thread, change the scaling on the image, accept the limitations, or change the hardware.

Black-Box for example

I read about black-box testing on wikipedia.
I would love to try to learn Black-Box testing techniques but the problem is that I can not find any site that provides Black-Box examples.
Is there a site that does this? Perhaps websites like (only with Black-Boxes)?
Thank you in advance.
As you probably learned, BlackBox testing is a technique that you can apply to anything, not just software.
From your question, it looks like you are looking for real-life examples where you can see this technique in action. I recommend continuing your research and googling more examples, such as here, or here.
The best way to get a grasp of this technique is to use it on software you have wrote yourself! (just pretend to be testing from an outsider's perspective)
Black box testing is a method of testing where you don't know how the features were implemented. You can black box test any piece of software. This site for instance or Microsoft Word.
The "Black Box" refers to the piece of software.
Black-box test for example
User name input field,displays “username”by default
Password input field, displays “password”by default
Login button - when pressed validate :
Both fields filled in
Username exits in system
Password at least 6 characters

QR detection parameters

What are the parameters/factors that a QR detector need to detect/check before(during) decoding the QR code itself.
From what I know:
1. it need to find/locate three finder patterns
2. need to locate alignment patterns (if there is any)
3. need to check luminance
Is there anything else that need to be determined/checked?
I suppose that there are many ways to detect a QR code, and it's not required to do it one particular way or the other as long as the detection succeeds. There is a reference algorithms in the QR code specification, though in my opinion it is too slow to be practical, though it's quite thorough.
I can tell you how zxing does it. Yes, it first locates the three finder patterns. This is done by looking for 1:1:3:1:1 black/white/black/white/black crossings horizontally and vertically. It figures out which one is which by looking at the vectors between them.
Then it needs a fourth point since four points are needed to correct for perspective distortion. It uses the location of the 3 finder patterns to guess about where it is and scans for it similarly (looking for 1:1:1:1:1). You don't need to find all alignment patterns, though doing so would allow you to correct for warping in the QR code, which is very rare.
Then you can sample the image to get the black/white modules by computing the perspective transform and reversing it. Then the decoding proceeds, the processing of those black/white modules, which is a fair bit of work too but nothing to do with detection or image processing anymore.
Looking at luminance is really a step before all this, so you even have a notion of black and white in the image to begin with. That's different.

QRcode encoding indepth explaination

I'm looking for an thorough explanation of how data is encoded into qr codes. The explanation should be specific enough that one could encode a qr code manually (as by drawing)
The complete specificion is available from ISO, as ISO/IEC 18004:2006. It is not free. You can find some partial information on the internet, but not enough to create an encoding process. If you really need the detail, buy the spec.
I can tell you that the process is far too complex to carry out by hand -- the Reed-Solomon error correction calculation alone would take days and you'd not get it right :)
zxing has a complete QR code encoder implementation which may show you enough of how the process is carried out for your purpose.

Resources