【问题标题】:"Barcode" reading from scanned image从扫描图像读取“条形码”
【发布时间】:2015-02-24 09:58:09
【问题描述】:

我想从我打印的扫描图像中读取条形码。图像格式不相关。我发现扫描的图像质量非常低,可以理解为什么普通条形码会失败。

我的想法是在打印的每页顶部创建一个非标准且非常简单的条形码。它将是20 squares 连续形成一个简单的二进制代码。Filled = 1, open = 0。它将在 aA4 上足够大,以便于检测。

在这个阶段,我需要加载图像并在顶部的某处找到条形码。它不会与扫描的位置完全相同。进入每个块并构建 ID。

任何知识或信息链接都会很棒。

【问题讨论】:

  • [processing] 标签应该只用于关于处理语言的问题。
  • 不要使用非标准条形码,只需使用标准条形码并将其放大,使其足够大,不会被您的扫描仪损坏。
  • 这是我可以尝试的一个想法。 @MarkRansom。我想给客户发一封信,需要他们签名、扫描并寄回。如果我放大条形码,它可能最终会出现在自己的页面上。
  • 我能够创建一个简单的二进制条形码。扫描后,我可以进行边缘检测以消除大部分噪音。我的想法是,我的条形码比页面上的任何文本高 3 倍,如果我找到一条这样的长度,我可以假设这是条形码开始的地方。效果很好。

标签: image image-processing processing barcode


【解决方案1】:

如果您可以预设一个包含代码而没有其他内容的感兴趣区域,那么检测非常容易。扫描该区域的几条光线并找到白/黑和黑/白过渡。然后,知道“细胞”应该在哪里,你就知道了它们的极性。

为此,您需要在两端用两个黑色的单元格框住单元格,以确保知道它的开始/停止位置(如果比例固定,您可以只使用一个起始单元格,但我会不推荐这个)。

【讨论】:

    【解决方案2】:

    你可以看看https://github.com/zxing/zxing。我建议使用一维条码,但宽度足以匹配扫描仪的低分辨率。

    您还可以发明自己的条形码编码并尝试自己解析它。对 1 使用粗条,对 0 使用细线。例如,粗条是 2 个白色像素,4 个黑色像素。一条细线将是 2 个白色像素、2 个黑色像素和 2 个白色像素。最后两个像素对位值进行编码。 像素应该是扫描图像像素的大小。

    然后您逐行处理图像扫描线,试图定位条形码。

    我们通过将给定的像素值序列与图案进行比较来定位条形码。这是通过计算得分函数来执行的。平方差之和是一个不错的选择。在计算分数时,我们忽略了编码位值的两个像素。

    当分数低于阈值时,我们发现了匹配模式。最好在编码值中添加奇偶校验位,以便检查其有效性。

    可以优化在滑动窗口上计算平方和。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多