2010-02-13 42 views
8

Hace poco aprendí sobre los códigos de barras PDF417 y me asombró que aún pueda leer el código de barras después de haberlo cortado a la mitad y haber escaneado solo un fragmento de la etiqueta original.¿Cómo se recupera la decodificación de códigos de barras PDF417 de las etiquetas dañadas?

¿Cómo puede la decodificación de códigos de barras ser tan robusta? ¿Qué (tipos de) algoritmos se usan durante la codificación y decodificación?

EDIT: entiendo la filosofía general de la introducción de redundancia para crear robustez, pero estoy interesado en más detalles, es decir, cómo esto se hace con PDF417.

Respuesta

2

el formato pdf417 permite diferentes niveles de duplicación/redundancia en su contenido. el nivel de redundancia utilizado afectará la cantidad de código de barras que se puede ocultar o eliminar al mismo tiempo que deja el contenido legible

1

No conozco el PDF417. Sé que los códigos QR usan Reed Solomon correction. Es una técnica de sobremuestreo. Para obtener el concepto: supongamos que tiene un polinomio en el poder de 6. Técnicamente, necesita siete puntos para describir este polinomio de forma única, de modo que puede transmitir perfectamente la información sobre el polinomio completo con solo siete puntos. Sin embargo, si uno de estos siete está dañado, pierde la información completa. Para evitar este problema, extrae una mayor cantidad de puntos del polinomio y anótelos. Siempre que tenga al menos siete del grupo, será suficiente para reconstruir su información original.

En otras palabras, intercambia espacio por solidez, al introducir más y más redundancia. Nada nuevo aquí.

+0

¿Cómo puedo representar datos de cadena utilizando un polinomio? ¿Hay algún polinomio genérico que pueda ser "parametrizado" usando algunos valores de bytes? –

-1

No creo que el concepto de intercambio entre espacio y robustez sea diferente aquí y en ningún otro lado. Piensa en RAID, digamos RAID 5: puedes sacar un disco de la matriz y los datos aún están disponibles. ¿El precio? - un disco extra O en términos del código de barras: espacio adicional que ocupa la etiqueta

+0

Es bastante diferente. PDF417 todavía es legible si falta el x% del código. No importa qué x% falta.RAID5 no puede hacer eso: imagine que los primeros 1 MB en cada una de sus unidades RAID están dañados: RAID no se puede recuperar; los datos se pierden. – Niki

+0

@nikie No estoy de acuerdo. RAID no es diferente; por supuesto, hay límites respecto a la cantidad de pérdida de la que se puede recuperar, ¿y si pierde todos sus discos? pero lo mismo es cierto para PDF, ¿qué pasa si x% = 100%? al mismo tiempo, no hay ningún disco "especial" que pueda extraer, pero solo uno. Sin tener en cuenta: la forma en que ambos funcionan es que toda la secuencia de datos se divide en grupos y cada grupo se inyecta con cierta redundancia. Cuanta más redundancia, más daño puede sufrir sin pérdida de datos. Si RAID5 no es suficiente, opte por RAID6 – mfeingold

+1

Disculpe la formulación imprecisa: PDF417 puede recuperarse de hasta x% de pérdida de datos, para algunos x> 0 que depende del nivel de redundancia elegido en el código, * no importa qué subconjunto de los datos se pierden *. RAID nunca puede hacer eso, no importa cuántas unidades use. Si se pierde el primer 1% en cada unidad (es decir, se pierde el 1% de los datos totales), no se podrán recuperar esos datos. Incluso si usa RAID0 con 20 unidades. – Niki

2

PDF417 no utiliza nada. Es una especificación de codificación de datos.

Creo que hay una confusión entre el formato del código de barras y los datos que transmite.

Los diversos formatos de código de barras (PDF417, Aztec, DataMatrix) especifican una manera de codificar los datos, ya sea numérica, alfabética o binario ... el contenido exacto, aunque no se especifica.

Por lo que he visto, Reed-Solomon a menudo es el algoritmo utilizado para la redundancia. El nivel exacto de redundancia depende de usted con este algoritmo y hay bibliotecas al menos en Java y C de lo que he estado tratando.

Ahora, depende de usted especificar cuál debe ser el contenido exacto de su código de barras, incluido el algoritmo utilizado para la redundancia y los parámetros utilizados por este algoritmo. Y, por supuesto, tendrá que trabajar de la mano con los que se va a decodificar :)

Nota:QR parece ligeramente diferente, con zonas explícitas de datos de redundancia.

Cuestiones relacionadas