如何检测图像中的QR码模式?

时间:2014-06-10 08:32:55

标签: matlab image-processing qr-code

我正在处理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)

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

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

例如,这里有一张带QR码的图片

enter image description here

1 个答案:

答案 0 :(得分:10)

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

the standard第60页上有参考检测算法的说明。

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

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

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

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

为了澄清,上述方法应该用于找到3个标记​​的角落。