Algorithm PDF417条形码解码如何从损坏的标签中恢复?

Algorithm PDF417条形码解码如何从损坏的标签中恢复?,algorithm,encoding,image-processing,Algorithm,Encoding,Image Processing,我最近了解了PDF417条形码,我很惊讶,在我把它撕成两半,只扫描了原始标签的一部分后,我仍然可以读取条形码 条形码解码怎么能如此稳健?在编码和解码过程中使用哪些(类型的)算法 编辑:我了解引入冗余以创建健壮性的一般原理,但我对更多细节感兴趣,即如何使用PDF417实现这一点 我不知道PDF417。我知道二维码使用。这是一种过采样技术。得到这个概念:假设你有一个6次方的多项式。从技术上讲,你需要七个点来唯一地描述这个多项式,所以你可以用七个点完美地传递整个多项式的信息。但是,如果这七个选项中有一

我最近了解了PDF417条形码,我很惊讶,在我把它撕成两半,只扫描了原始标签的一部分后,我仍然可以读取条形码

条形码解码怎么能如此稳健?在编码和解码过程中使用哪些(类型的)算法


编辑:我了解引入冗余以创建健壮性的一般原理,但我对更多细节感兴趣,即如何使用PDF417实现这一点

我不知道PDF417。我知道二维码使用。这是一种过采样技术。得到这个概念:假设你有一个6次方的多项式。从技术上讲,你需要七个点来唯一地描述这个多项式,所以你可以用七个点完美地传递整个多项式的信息。但是,如果这七个选项中有一个已损坏,则会丢失整个信息。为了解决这个问题,需要从多项式中提取更多的点,并将它们写下来。只要你至少有七个,就足以重建你的原始信息


换句话说,通过引入越来越多的冗余,您可以用空间换取健壮性。这里没有什么新内容。

pdf417格式允许在其内容中进行不同程度的复制/冗余。使用的冗余级别将影响条形码的模糊程度或移除程度,同时仍保持内容可读性

我不认为在空间和鲁棒性之间进行权衡的概念与其他任何地方有任何不同。考虑一下RAID,比如RAID 5—您可以从阵列中拉出一个磁盘,数据仍然可用。价格是多少一张额外的磁盘。或者就条形码而言,标签占用的额外空间PDF417不使用任何东西。它是数据编码的规范

我认为条形码格式和它传递的数据之间存在混淆

各种条形码格式(
PDF417
Aztec
DataMatrix
)指定了数据编码方式,可以是数字、字母或二进制。。。但具体内容尚未确定

据我所见,Reed-Solomon通常是用于冗余的算法。这个算法的确切冗余级别取决于您,根据我所处理的,至少在
Java
C
中有库

现在,由您指定条形码的确切内容,包括用于冗余的算法和该算法使用的参数。当然,你还需要与解码者携手合作:)


注意:
QR
似乎略有不同,有明确的冗余数据区域。

如何使用多项式表示字符串数据?是否有一些通用多项式可以使用某些字节值“参数化”呢?这是完全不同的。如果缺少x%的代码,PDF417仍然可读。无论缺少哪个x%。RAID5无法做到这一点:假设每个RAID驱动器上的前1 MB已损坏-RAID无法从中恢复,数据丢失。@nikie我不同意。RAID也不例外—当然,它可以从中恢复的损失是有限的—如果您丢失了所有磁盘怎么办?但PDF也是如此——如果x%=100%呢?同时,没有“特殊”的磁盘,你可以拉任何-但只有一个。Regardless—这两种方法的工作方式都是将整个数据序列分成多个组,每个组都注入一些冗余。冗余越多,在不丢失数据的情况下可能遭受的损害就越大。如果RAID5还不够-请使用RAID6为不精确的公式感到抱歉:PDF417可以从高达x%的数据丢失中恢复,对于某些x>0的情况,这取决于代码中选择的冗余级别,而不管数据的哪个子集丢失。无论您使用多少个驱动器,RAID都无法做到这一点。如果每个驱动器上的前1%丢失(即总数据的1%),则无法恢复该数据。即使您将RAID0与20个驱动器一起使用。