matlab - 如何检测图像中的二维码图案?

标签 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 码在图像上可能具有的实际尺寸相比,我的模板非常小。

有没有一种无需调整大小即可查找图案/ mask 的方法?有没有其他方法可以解决这个问题?

例如,这是一张带有二维码的图片

enter image description here

最佳答案

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

the standard 的第 60 页上有一个引用检测算法的描述。 .

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

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

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

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

澄清一下,上面的方法应该用来找到 3 个标记的角。

关于matlab - 如何检测图像中的二维码图案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24136345/

相关文章:

python - 如何在 Python 3 中转换 MATLAB 单元格?

python - fminunc 在 numpy 中交替

python - 使用多个条件进行 numpy 切片,其中一个条件搜索元素的邻域

opencv - 与移动机器视觉和 OpenCV 等工具一起使用时,哪种条码类型最稳健?

Matlab-将每隔一列替换为另一个向量

matlab - MATLAB 中两个字符串元胞数组的交集

image - OpenCV imwrite 给出了 jpeg 图像的褪色结果

java - 在 AWT 应用程序中处理图像解密 key

android - 如何在 Android 的 QR Code Scanner 中更改相机屏幕?

java - zxing - 生成自定义二维码模板