如何检测图像中的QR码图案?

alv*_*rna 8 matlab qr-code image-processing

我正在研究QR探测器代码,我需要在图像上找到寻找模式(FP).我创建了一个类似于你在QR码角上找到的方块的二进制模板:

FP = ones(9);
FP(2:8,2:8)=0;
FP(3:7,3:7)=1;
FP(4:6,4:6)=0;
figure;imshow(FP)
Run Code Online (Sandbox Code Playgroud)

我尝试使用与该模板最大相关性来查找图像中的点xcorr2.我的问题很明显:与QR码可能在图像上的实际尺寸相比,我的模板非常小.

有没有办法寻找图案/面具而不必调整大小?还有另一种解决这个问题的方法吗?

例如,这是带有QR码的图像

在此输入图像描述

Mic*_*vin 11

你不需要使用xcorr2.您应该使用扫描线在1d中寻找1:1:3:1:1(暗光 - 暗 - 暗 - 暗 - 暗的宽度)图案.

标准的第60页上有参考检测算法的描述.

此外,ZXing是一个实现QR码检测/识别的开源库.您可以查看他们的代码以供参考.

编辑:在每条扫描线上,计算后续的暗色和后续亮像素.您将获得表示序列长度的整数列表.

然后从最大的黑暗子序列开始,并看向它的两侧.如果暗子序列长度为300,则其相邻的光子序列长度应为50-150,其相邻的暗子序列长度应为50-150(这是由于标准中提出的0.5的容差). .

因此,如果您找到这样的序列,则将其标记为大小为300.然后您尝试下一个最大的黑暗子序列,依此类推.

只是为了澄清,上面的方法应该用于找到3个标记​​的角落.

  • @ alvaro.delaserna我认为在图像中寻找QR码并找到QR码中的角是两个不同的问题.如果您第一次尝试检测图像中的QR码(然后在遇到问题时询问与您的代码相关的具体问题),您可能会取得更多进展,裁剪出QR码,然后检测裁剪图像中的角落.它可能不是检测角落的最快算法,但可能更容易获得帮助. (2认同)