“条形码”从扫描图像中读取

时间:2015-02-24 09:58:10

标签: image image-processing processing barcode

我想从我打印的扫描图像中读取条形码。图像格式不相关。我发现扫描的图像质量很低,可以理解正常条形码失败的原因。

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

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

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

2 个答案:

答案 0 :(得分:1)

如果您可以预设包含代码的感兴趣区域,那么检测非常简单。在该区域扫描几条光线,找到白/黑和黑/白过渡。然后,知道"细胞"应该是,你知道它们的极性。

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

答案 1 :(得分:1)

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

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

然后,您将按扫描线处理图像扫描线,尝试找到条形码。

我们通过将给定的像素值序列与模式进行比较来找到条形码。这是通过计算得分函数来执行的。平方差的总和是一个很好的选择。在计算分数时,我们忽略编码比特值的两个像素。

当分数低于阈值时,我们找到了匹配的模式。最好将奇偶校验位添加到编码值,以便检查它的有效性。

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