2014-03-03 140 views
1

我扫描激光或喷墨印刷,其我猜测是由于到小于固体油墨/调色剂覆盖率的组合QR码,并且当运行到故障在我控制的两个转换步骤中,我正在使用的图像处理参数。我想出了一个各种各样的“解决方案”,但我不知道它是多么强大,我想了解双方发生了什么事情,以及是否有一个更可靠的方法。与QR码图像内的“白色斑点”处理斑马线

我没有过,我会接受输入的PDF文件控制和我不知道的任何工具,以可靠地让我检查的PDF样我内的图像,但我敢肯定的样本是某种灰度图像。例如,这里是使用Acrobat Reader的QR码单元的一个角落的屏幕快照,其放大倍数开始上升。我假设黑色内部的模糊圆圈表示图像内的单个“光”像素。

enter image description here

要打开PDF成PNG文件,我用ghostscript的与sDevice=pnggrey。斑马线无法识别与200dpi的输出分辨率的QR码后,我改变输出分辨率为100个dpi和它成功了,通过大概是因为光的像素与周围的黑色像素更大数目的平均,将得到的水平低于随后用于将图像转换为ZXing工作的单色图像的阈值。

后续的图像处理步骤来自ZXing.rb Ruby宝石,包括来自ZXing的LuminanceSourceGlobalHistogramBinarizer的调用。后者使用一个单一的,全球性的黑点,二值化,并提出了桌面应用程序HybridBinarizer,但因为图像是在斑马线的在线版本失败,以及,我没有刻意用`HybridBinarizer”试验。

200 DPI(失败)图像:

200 dpi image

100 DPI(后续)图像:

enter image description here

更新:我试图扫描以600dpi的PDF转换和那也是成功的。出于好奇,我取了打印图像的图片与我的手机和这里的一个模块中产生的JPEG一个炸毁版本:

enter image description here

正如预期的那样,手机QR码的应用程序有没有任何问题从任何角度和距离识别图像。

更新2下面来看看一对夫妇从(成功)为600dpi(PNG)图像代码:

enter image description here

回答

0

的问题是真正的抖动和灰度的区别。图书馆有一个深刻的假设,即图像像照片一样,黑白边界看起来像是从灰色到灰色的不断变化。其中黑色,白色边框已经成为抖动的黑色和白色棋盘图案来表示灰度图像效果不好,因为当只有一个,这些都被解释为许多微小的黑白色过渡。

最好的办法是避免抖动阶段发生在管道中的任何地方,但它可能超出了你的控制范围。如果是这样,那么你最好的选择是下采样或模糊滤波器,这是你已经看到。由于斑点区域崩溃,100 dpi图像起作用。

我不认为二进制文件会对这种情况产生很大的影响。

+0

一如既往,我感谢您迅速而周到的回应,肖恩。由于越来越多的印刷材料是由数字设备产生的,这些数字设备真正采用二元成像和半色调相结合的方式实现灰度/颜色变化,所以我认为您所指的照片的半连续性更多取决于相机的功能 - 运动引起的或合成的模糊,而不是它是基础图像的属性。更多信息查看更新的问题。 –

+0

是的,来自手持相机的图像将始终具有足够的低级别运动模糊和不精确的焦点来清除半色调。降采样或光模糊滤波器是在需要时达到相同效果的廉价方法。肖恩, –

+0

+1。降采样似乎是最便宜/最简单的,但是您能否提供有关如何设置以降低分辨率同时仍能消除半色调问题的任何指导原则?另外,你能否解释为什么将分辨率从200增加到600也同样适用? –