【问题标题】:Barcode reader program: barcode Identification methods条码阅读器程序:条码识别方法
【发布时间】:2010-12-31 20:03:46
【问题描述】:

我是图像处理的新手,我想识别图像中的二维码。 实际上有三种查找模式,首先我需要找到它们。

所以我尝试了一些方法,首先是与二值化有关,但是当图像有阴影和光照差异很大时,很难做出好的二值图像。 实际上自适应阈值取决于滑动窗口的大小,这对于大条形码可能并不好。因此,即使我制作了一个好的二进制图像,您能否建议我找到条形码的查找器模式和条形码本身的方法。如果我们谈论 QRCode,最简单的方法是找到图像的所有轮廓,并选择那些是正方形的并且在里面包含两个正方形轮廓。

另一种方法是扫描图像的每条水平线以找到正确的取景器模式,这取决于二值图像的制作程度。

所以我看到了解决这个问题的方法,但我想知道是否有其他不同的方法可以找到条形码的查找器模式?我认为模式匹配在这里不好。您是否还可以建议一种不依赖于照明的良好二值化方法。我尝试了很多自适应阈值二值化方法,但它们都有一个共同的问题,如果图像包含一个大的黑色正方形,那么二值图像将不是一个完整的正方形,而是一个正方形,正方形中间有一些白色的部分,这个是因为自适应阈值法中滑动窗口的大小不够大。

【问题讨论】:

  • 有点重复...但我不确定。 stackoverflow.com/questions/1580251/…
  • 不完全是,我读过那个主题,他们正在讨论识别条形码的软件,但我想从零开始制作条形码阅读器程序,而不使用其他库。
  • 好的,可能有人可以告诉我任何自适应阈值二值化算法,以便动态选择其窗口大小?例如:“只要像素邻域窗口大小设置正确,Bernsen 算法就可以正常工作。窗口应该适合图像中存在的对象的大小。只要可以预测对象的尺寸,所有的物体几乎相等,这不是主要缺点。”因此,在 QRCode 中有 3 种查找模式,并且窗口大小必须大于这些模式的大小。谁能说说这个问题?

标签: image-processing barcode barcode-scanner


【解决方案1】:

大家可以看看ZXing使用的方法:core/src/com/google/zxing/qrcode/Detector.java下的http://code.google.com/p/zxing/source/browse/trunk

基本上,它会以大约 1:1:3:1:1 的模式在图像中查找黑白 - 黑 - 白 - 黑。除非旋转角度接近 45、135、225 或 315 度,并且除非代码严重透视失真,否则此方法将找到查找器图案。然后它会交叉检查几种方法——垂直查看图像中的那个点,以确认它也找到了这样的模式。它还进行了一些检查以排除误报,然后确定哪种模式是哪种模式。

【讨论】:

    【解决方案2】:

    您还可以尝试使用变化率控制的阈值滞后。这是普通Threshold Hysteresis 的链接。将第一个阈值设置为典型的白色值。将第二个阈值设置为小于角落中的最低白色值。

    不同之处在于您要检查第一个和第二个阈值之间所有值的像素之间的差异。理想情况下,如果差异为正,则正常行事。但是如果它是负数,你只想在差异很小的时候设置阈值。

    这将能够补偿照明变化,但会忽略背景和条形码之间的巨大变化。最终结果是二进制对象图像,而不是边缘图像。也没有自适应窗口可以尝试正确调整大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-24
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多