Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何检测图像中的二维码模式?_Matlab_Image Processing_Qr Code - Fatal编程技术网

Matlab 如何检测图像中的二维码模式?

Matlab 如何检测图像中的二维码模式?,matlab,image-processing,qr-code,Matlab,Image Processing,Qr Code,我正在处理QR探测器代码,我需要在图像上找到查找模式(FP)。我创建了一个二进制模板,类似于您在二维码角上找到的正方形,如下所示: 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探测器代码,我需要在图像上找到查找模式(FP)。我创建了一个二进制模板,类似于您在二维码角上找到的正方形,如下所示:

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
在图像中查找与此模板具有最大相关性的点。我的问题很明显:与二维码在图像上的实际尺寸相比,我的模板非常小

有没有一种方法可以在不调整图案/遮罩大小的情况下查找图案/遮罩?有没有其他办法解决这个问题

举个例子,这是一张带有二维码的图像


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

参考检测算法的说明见第60页,共页

此外,还有一个开源库,用于实现二维码检测/识别。你可以查阅他们的代码以供参考

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

然后从最大的黑暗子序列开始,观察其侧面。如果暗子序列长度为300,则其相邻的亮子序列的长度应为50-150,其相邻的暗子序列的长度也应为50-150(这是由于标准中建议的公差为0.5)

如果你找到这样一个序列,你就用300号来标记它。然后尝试下一个最大的暗子序列,以此类推


为了澄清,应使用上述方法查找3个标记的角。

请您也发布一个带有二维码的图像示例,好吗?应用遮罩的实际图像。完成!我编辑了我的帖子并上传了一张测试图像一些关键词可能会有所帮助:“缩放不变模板匹配”好的,我会试试这个,但是如果我正在处理一张像我上传的那样的图像呢?在这种情况下,我无法查找该模式(假设它是基于像素的),因为序列中涉及更多像素,对吗?我认为您必须缩放模式或参考图像。但是,由于你是在一维而不是二维中进行此操作,速度会快得多。@alvaro.delaserna我认为在图像中查找二维码和在二维码中查找角是两个不同的问题。如果您首先尝试检测图像中的二维码(如果卡在图像中,然后询问与您的二维码相关的特定问题),裁剪二维码,然后检测裁剪图像中的角点,您可能会取得更大的进步。这可能不是检测角点的最快算法,但可能更容易获得帮助。这正是我需要的,能够裁剪二维码