相关疑难解决方法(0)

如何在大图中定位二维码以提高解码性能?

背景

我需要在 Raspberry Pi 上的大图像(2500x2000)中检测和解码相对较小的二维码(110x110 像素)。二维码可以在框架中的任何位置,但方向应该是正常的,即充值。我们使用高质量的工业相机和镜头,因此图像通常质量好且对焦清晰。

目前,pyzbar当我使用大约 600x500 的窗口裁剪 QR 码周围的图像时,我能够可靠地检测和解码图像。如果我尝试解码完整图像,则不会检测/解码该符号。

我试过的

我写了一个循环,在图像上滑动一个裁剪窗口,并尝试分别解码每个裁剪的帧。我每次迭代都将窗口移动 50%,以确保不会遗漏窗口边缘的任何符号。

我也尝试过使用 OpenCV 进行检测/解码,但性能并不比使用 pyzbar

我的解决方案的问题

影响我当前项目的问题:

滑动窗口方法难以调优,效率低下,b/c 速度慢:

  1. 它导致整个区域被分析近 4 次;将窗口移动 50% 的副作用,
  2. 最可靠的窗口尺寸往往很小,需要多次迭代,
  3. 符号大小可能会因离相机更近/更远而有所不同。

可能会影响我将使用这种方法的其他项目的问题:

  1. 滑动窗口可能会多次捕获一个符号,因此很难确定该符号是否出现多次。

问题

如何找到二维码的大概位置,以便相应地裁剪图像?

我对提高检测/解码性能的任何解决方案感兴趣,但更喜欢 (a) 使用机器学习技术(我是 ML 新手但愿意学习),(b) 使用 OpenCV 图像预处理或 (c ) 改进我的基本裁剪算法。

示例图像

这是我用于测试的示例图像之一。为了近似最坏的情况,故意降低照明质量,但是在裁剪时各个代码仍然可以正确检测和解码。

二维码测试​​图001

python qr-code image-processing computer-vision

10
推荐指数
1
解决办法
4228
查看次数