我正在处理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码的图片
答案 0 :(得分:10)
您不需要使用xcorr2
。您应该使用扫描线在1d内寻找1:1:3:1:1(深暗 - 暗 - 暗 - 暗 - 暗的宽度)图案。
the standard第60页上有参考检测算法的说明。
此外,ZXing是一个实现QR码检测/识别的开源库。您可以查看他们的代码以供参考。
编辑:在每条扫描线上,计算后续的暗色和后续亮像素。您将获得一个表示序列长度的整数列表。
然后从最大的黑暗子序列开始,并看向它的两侧。如果暗子序列长度为300,则其相邻的光子序列长度应为50-150,其相邻的暗子序列长度应为50-150(这是由于标准中提出的0.5的容差)。
因此,如果您找到这样的序列,则将其标记为300.然后尝试下一个最大的黑暗子序列,依此类推。
为了澄清,上述方法应该用于找到3个标记的角落。