[go: up one dir, main page]

ES2985426T3 - Determinación del tamaño de módulo de un código óptico - Google Patents

Determinación del tamaño de módulo de un código óptico Download PDF

Info

Publication number
ES2985426T3
ES2985426T3 ES22176561T ES22176561T ES2985426T3 ES 2985426 T3 ES2985426 T3 ES 2985426T3 ES 22176561 T ES22176561 T ES 22176561T ES 22176561 T ES22176561 T ES 22176561T ES 2985426 T3 ES2985426 T3 ES 2985426T3
Authority
ES
Spain
Prior art keywords
code
module size
frequency distribution
image data
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES22176561T
Other languages
English (en)
Inventor
Romain Müller
Pascal Schüler
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sick AG
Original Assignee
Sick AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sick AG filed Critical Sick AG
Application granted granted Critical
Publication of ES2985426T3 publication Critical patent/ES2985426T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • G06T7/62Analysis of geometric attributes of area, perimeter, diameter or volume
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1447Methods for optical code recognition including a method step for retrieval of the optical code extracting optical codes from image or text carrying said optical code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/10544Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
    • G06K7/10821Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices
    • G06K7/1098Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices the scanning arrangement having a modular construction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14172D bar codes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1452Methods for optical code recognition including a method step for retrieval of the optical code detecting bar code edges
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1456Methods for optical code recognition including a method step for retrieval of the optical code determining the orientation of the optical code with respect to the reader and correcting therefore
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • G06K7/1486Setting the threshold-width for bar codes to be decoded
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/40Image enhancement or restoration using histogram techniques
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/28Quantising the image, e.g. histogram thresholding for discrimination between background and foreground patterns
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/761Proximity, similarity or dissimilarity measures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Electromagnetism (AREA)
  • Toxicology (AREA)
  • Multimedia (AREA)
  • Quality & Reliability (AREA)
  • Geometry (AREA)
  • Databases & Information Systems (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Character Input (AREA)
  • Image Analysis (AREA)

Abstract

Se describe un método para determinar el tamaño del módulo de un código óptico (20), en el que se registran datos de imagen con el código (20) y el tamaño del módulo se estima a partir de las distancias entre transiciones de luz a oscuridad en los datos de imagen. Se forma al menos una distribución de frecuencia, en particular un histograma, que indica con qué frecuencia se producen secuencias de píxeles oscuros y/o claros de un número respectivo a lo largo de al menos una línea a través del código (20), y el tamaño del módulo se estima a partir de la distribución de frecuencia. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Determinación del tamaño de módulo de un código óptico
La invención se refiere a un procedimiento para determinar el tamaño de módulo de un código óptico y un lector de códigos según el preámbulo de las reivindicaciones 1 y 14, respectivamente.
Los lectores de códigos se conocen de las cajas de los supermercados, para la identificación automática de paquetes, clasificación de envíos postales, tratamiento de equipaje en aeropuertos y otras aplicaciones logísticas. En un escáner de códigos se guía un haz de lectura a través del código mediante un espejo giratorio o una rueda de espejos poligonales. Un lector de códigos basado en cámara utiliza un sensor de imagen para tomar imágenes de los objetos con los códigos situados sobre ellos y unsoftwarede evaluación de imágenes extrae la información de código de estas imágenes. Los lectores de códigos basados en cámaras también pueden trabajar fácilmente con tipos de códigos distintos de los códigos de barras unidimensionales, que, como un código matricial, también tienen una estructura bidimensional y proporcionan más información.
En un grupo de aplicaciones importante, los objetos que llevan un código pasan por el lector de códigos. Un escáner de códigos registra a este respecto uno tras otro en cada caso los códigos que llegan a su región de lectura. Alternativamente, en un lector de códigos basado en cámara, una cámara lineal lee las imágenes de objeto con la información del código sucesivamente y línea por línea con el movimiento relativo. Se utiliza un sensor de imagen bidimensional para capturar periódicamente datos de imágenes, que se superponen más o menos en función de la frecuencia de captura y de la velocidad de transporte. Para que los objetos puedan disponerse en cualquier orientación sobre el transportador, a menudo están previstos varios lectores de códigos en un túnel de lectura para captar objetos desde varios o todos los lados.
Preferiblemente, los datos de imagen se procesan previamente, sobre la marcha directamente, en una FPGA (matriz de puerta programable en campo) y se puede almacenar información o metadatos adicionales con los datos de imagen para un microprocesador de procesamiento adicional. Los pasos típicos de procesamiento previo implican la binarización, que convierte una imagen en escala de gris en una imagen en blanco y negro, o la segmentación, en la que se encuentran regiones de interés (ROI) con candidatos de código. El documento EP 2003599 A1 describe un sensor optoelectrónico y un procedimiento para registrar códigos, en el que un binarizador está configurado para convertir una imagen en color o en escala de gris en una imagen binaria durante la recepción y/o en tiempo real, al binarizarse una sección leída en cada caso mientras se siguen leyendo las secciones adicionales. El documento EP 2 555 160 B1 encuentra regiones de interés o candidatos de código utilizando una medida de contraste en el procesamiento previo en una FPGA. En el documento EP 3916633 A1 ya se recorren durante la lectura en una FPGA las primeras capas de una red neuronal para la segmentación. El documento EP 1 365 577 A1 divulga un procedimiento para el funcionamiento de un sensor optoelectrónico, en el que ya se comprime una imagen durante la recepción. A este respecto, se aprovecha la capacidad de la FPGA para realizar muchas operaciones aritméticas simples, como multiplicaciones de matrices, en paralelo y en tiempo real. Las operaciones aritméticas secuenciales y más complejas, como las de un decodificador para leer códigos ópticos, están reservadas a un microprocesador, que recurre a los datos de imagen proporcionados y a los posibles resultados de procesamiento previo.
Un tamaño característico de un código óptico es el tamaño de módulo. Un módulo es el elemento más pequeño del código y los elementos o caracteres de código están compuestos por uno o más módulos. El tamaño de módulo es una medida de la extensión del módulo y se especifica en píxeles por módulo (ppm). Por consiguiente, una barra en un código de barras tiene una anchura que corresponde a uno o un múltiplo del tamaño de módulo y esto se aplica de forma análoga a las dos dimensiones de un campo oscuro o claro en un código bidimensional. Un tamaño de módulo grande significa que el código se registra en los datos de la imagen o en los perfiles de valores de gris con alta resolución. En consecuencia, cuanto más pequeño sea el tamaño de módulo, más difícil será la decodificación, especialmente cuando alcanza un intervalo de dos ppm o incluso menos.
Sería una ventaja que el decodificador conociera una buena estimación ya desde el principio, especialmente en el caso de tamaños de módulo pequeños. Entonces se podrían tomar medidas para garantizar que incluso el código con mala resolución se siga leyendo. Un ejemplo es la llamada superresolución. Esto se refiere a procedimientos que compensan varias imágenes de menor resolución formando una imagen de mayor resolución. Por el contrario, es posible prescindir de un procedimiento de decodificación complejo para un código ya registrado en alta resolución con un tamaño de módulo grande. En general, para una lectura exitosa del decodificador, es útil conocer de antemano los parámetros que caracterizan el código, como el tamaño del módulo en este caso. De este modo, se puede ajustar de forma óptima el espacio de parámetros del decodificador, pero solo si el tamaño de módulo está disponible a tiempo.
Pero de hecho, con los procedimientos convencionales, el tamaño de módulo solo se conoce después de que el proceso de decodificación haya sido exitoso. Entonces queda claro qué caracteres contiene el código y el tamaño de módulo también se puede calcular con gran precisión en función del tamaño total del código en los datos de imagen. Para un código de barras, por ejemplo, el número total de módulos entre los patrones de inicio y parada se determina en función de los caracteres y la extensión del código en píxeles se divide por este número total. Por lo tanto, el tamaño de módulo es un resultado de la decodificación y no su soporte.
En principio, el tamaño de módulo no es otra cosa que la distancia más pequeña entre dos bordes del perfil de valores de gris capturado. Estos bordes, es decir, las transiciones entre los elementos de código claros y oscuros, se pueden encontrar a través de los extremos en la derivación del perfil de valores de gris. Sin embargo, el resultado depende en gran medida de la precisión con la que se localicen las posiciones de bordes. Esto resulta especialmente difícil en el caso de tamaños de módulo muy pequeños, ya que las posiciones de bordes inicialmente solo son discretas y, por tanto, no se presentan con precisión de subpíxeles. Además, las posiciones de bordes son susceptibles al ruido. En principio, un procedimiento puramente basado en bordes es una binarización con la que la información de valores de gris original se reduce normalmente de ocho bits o incluso más a solo un bit, y también esta pérdida de información limita la posible precisión en la determinación del tamaño de módulo.
El documento US 5053609 determina la extensión física de un código 2D. En su borde se encuentra una secuencia alterna de elementos de código claros y oscuros, que se cuentan para determinar la densidad de información. A partir de esto, se puede reconstruir el tamaño de módulo, pero solo si los elementos de código alternos están presentes en el borde y están registrados de manera contable como tales.
Se conoce en la región de la lectura de códigos generar un histograma de valores de gris de los datos de imagen. Sin embargo, esto normalmente se usa para propósitos completamente diferentes, por ejemplo, para obtener o emular una iluminación más uniforme o para determinar un umbral de binarización adecuado. El documento EP 3789906 A1 utiliza un histograma de valores de gris para determinar el tamaño de módulo.
El documento CN 112329495 A revela un procedimiento de lectura de códigos de barras, que captura imágenes de los códigos de barras y los ajusta a escala a un tamaño de módulo predeterminado. Para determinar el tamaño de módulo original requerido de los códigos de barras capturados, se crea un histograma de los anchos de los elementos de código individuales. El ancho en el primer pico de este histograma se utiliza como tamaño de módulo.
El documento JP H06 325 197 A presenta un procedimiento de lectura de código de barras, en el que también se determina la anchura de módulo. Para ello, se crea y evalúa una estadística de las frecuencias de reconocimiento de los anchos de las barras y de los huecos.
El documento EP 1580683 A1 se refiere inicialmente al documento JP H06325197 A, pero encuentra problemas en el caso de capturas de baja resolución y códigos de barras con una pluralidad de anchos. Luego utiliza un ancho unitario y lo compara con un patrón de código de barras especificado, en donde el ancho unitario puede variar en varios ensayos.
Por lo tanto, el objetivo de la invención es proporcionar una posibilidad mejorada para determinar el tamaño de módulo.
Este objetivo se logra mediante un procedimiento para determinar el tamaño de módulo de un código óptico y un lector de códigos según las reivindicaciones 1 y 14, respectivamente. Los pasos para determinar el tamaño de módulo y también los demás pasos opcionales, como, por ejemplo, los de lectura de un código de barras se desarrollan de forma automática, es un procedimiento implementado por ordenador. El código óptico puede ser un código de barras, pero también un código bidimensional según uno de los diversos estándares conocidos. En esta descripción, el término código de barras se utiliza como sinónimo de un código óptico unidimensional, a diferencia de partes de la bibliografía que a veces también denominan códigos de barras a los códigos bidimensionales.
Se generan datos de imagen que contienen el código y que preferiblemente están adaptados al menos de forma aproximada a la región de código. Los datos de imagen normalmente se capturan con un sensor de imagen de un lector de códigos basado en cámara, pero el perfil de intensidad de un escáner de código de barras también se incluye en este caso con el término datos de imagen. Los datos de imagen se encuentran preferiblemente en una cuadrícula de píxeles con m x n píxeles, que se capturan con un sensor matricial en una captura o alternativamente de forma sucesiva en varias filas alineadas entre sí. El tamaño de módulo se determina a partir de las distancias entre las transiciones claro-oscuras en los datos de imagen. Esto significa transiciones en ambas direcciones, de claro a oscuro o de oscuro a claro, que definen los bordes entre los elementos de código.
La invención se basa en la idea básica de formar una distribución de frecuencia de los anchos de las regiones claras y oscuras que aparecen en los datos de imagen. Para ello, el código evalúa la secuencia de píxeles a lo largo de al menos una línea, donde en cada caso se cuenta cuántos píxeles claros se suceden entre sí y cuántos píxeles oscuros se suceden entre sí. La longitud de dicha secuencia de píxeles corresponde a la distancia entre dos transiciones o bordes claro-oscuros en los datos de imagen; cada secuencia de píxeles comienza en un borde y termina en el siguiente borde a lo largo de la línea. En otras palabras, la distribución de frecuencia cuenta cuántos píxeles individuales claros u oscuros, filas de dos hasta n filas de píxeles de la misma clase de brillo hay, es decir, píxeles oscuros o claros. La línea a lo largo de la cual se enfilan los píxeles sucesivos es preferiblemente recta, alternativamente puede ser curvada deliberadamente, por ejemplo, para seguir una base de código no plana. Cuanto mayor sea el elemento de código que cubre la línea en cada caso, más largas serán las secuencias de píxeles de una clase de brillo. La distribución de frecuencia recoge así todas las secuencias de píxeles que aparecen. Por lo tanto, la información sobre el tamaño del módulo a menudo se incluye en la distribución de frecuencia y puede estimarse estadísticamente de esta manera.
Dado que los datos subyacentes a la distribución de frecuencia son píxeles, originalmente es una distribución de frecuencia discreta que puede describirse mediante un histograma. Es por eso que el término histograma se utiliza a menudo en esta descripción para representar la distribución de frecuencia. Pero con ello no se puede descartar que se abandone el nivel de descripción discreto y, por ejemplo, se sustituya una distribución de frecuencia originalmente discreta o se aproxime mediante una función suave, por ejemplo, para continuar la evaluación analíticamente. El histograma se puede denominar claramente histograma de ancho, porque en los intervalos se cuenta con qué frecuencia aparece una yuxtaposición de píxeles oscuros o claros de un número respectivo a lo largo de la línea, y este número corresponde al ancho del elemento de código en la dirección de la línea. Para estar seguros, hay que destacar que la distribución de frecuencia determinada según la invención no es una distribución de brillo o un histograma de valores de gris como en el estado de la técnica citado en la introducción.
La invención tiene la ventaja de que es posible un cálculo sencillo y rápido del tamaño de módulo, lo que puede tener lugar en fases muy tempranas de la cadena de procesamiento de imágenes y, en particular, no requiere una decodificación exitosa. El procedimiento es especialmente adecuado en una arquitectura de dos partes con procesamiento previo, por ejemplo, mediante una FPGA, y posterior decodificación basada en metadatos del procesamiento previo, por ejemplo, en un microprocesador. El microprocesador puede estimar el tamaño de módulo basándose en los metadatos, preferiblemente, metadatos en forma de distribución de frecuencia, sin tener que dedicar mucho tiempo a volver a acceder a los datos de imagen. Generalmente se estima mejor un tamaño de módulo grande. Con tamaños de módulo pequeños, es mucho más difícil registrar un resultado preciso debido a efectos de desenfoque y similares. Sin embargo, incluso la información de que se trata de un tamaño de módulo pequeño, sin una cuantificación más precisa, es de gran valor para el procedimiento de decodificación posterior. Finalmente, el procedimiento según la invención permite obtener información adicional, por ejemplo, la valencia de un código de barras, lo que permite una selección selectiva de algoritmos de decodificación adecuados o la orientación exacta del código con respecto a la cuadrícula de píxeles de los datos de imagen.
Preferiblemente, se forma una distribución de frecuencia oscura para secuencias de píxeles oscuros y una distribución de frecuencia clara para secuencias de píxeles claros. La distribución de frecuencia oscura y la distribución de frecuencia clara deben entenderse en este caso únicamente como los nombres de las distribuciones de frecuencia correspondientes. Las frecuencias se registran y evalúan por separado para los dos posibles elementos de código oscuro y claro, en particular, las barras y espacios en los códigos de barras. Esto da como resultado una base de información más amplia y resultados precisos. La estimación del tamaño de módulo se basa en ambas distribuciones de brillo, aunque son posibles varias variantes. Se puede seleccionar la más adecuada de las dos distribuciones de frecuencia y descartar la otra, se pueden evaluar ambas distribuciones de frecuencia y comparar o combinar los resultados, y en el caso más simple, se pueden sumar las frecuencias de las dos distribuciones de frecuencia para así combinarlas en una única distribución de frecuencia.
Se forma una distribución de frecuencia horizontal a lo largo de al menos una línea horizontal y se forma una distribución de frecuencia vertical a lo largo de al menos una línea vertical. Estas son dos distribuciones de frecuencia separadas además de la distribución de frecuencia oscura y la distribución de frecuencia clara. Ambas subdivisiones se pueden combinar; existen entonces cuatro distribuciones de frecuencia compuestas por combinaciones de oscuridad y luz, así como de horizontal y vertical. A pesar de la denominación horizontal y vertical, el requisito para la línea horizontal y la línea vertical inicialmente no es tan estricto; pueden discurrir en diagonal y en un ángulo distinto del perpendicular entre sí. Sin embargo, preferiblemente, en realidad son líneas al menos mutuamente perpendiculares y de manera más preferida horizontales y verticales en el sentido geométrico, que siguen las filas y columnas de la cuadrícula de píxeles. Entonces el acceso a los píxeles a lo largo de las líneas es particularmente fácil y se evitan los artefactos de discretización de líneas oblicuas a lo largo de una retícula discreta.
A continuación, se explican de muchas maneras otros pasos relacionados con la distribución de frecuencia. Con ello, según la forma de realización, esto se refiere en cada caso a la distribución de frecuencia única al menos una, varias o todas las distribuciones de frecuencia formadas.
Comparando una primera estimación del tamaño de módulo a partir de la distribución de frecuencia horizontal y una segunda estimación del tamaño de módulo a partir de la distribución de frecuencia vertical, se determina una orientación del código en los datos de imagen. La orientación describe el ángulo en la medida en que los elementos del código y especialmente las barras se giran con respecto a la cuadrícula de píxeles. Dependiendo de la orientación, elementos de código objetivamente de la misma extensión parecen tener diferente ancho a lo largo de la línea horizontal y de la línea vertical, los dos tamaños de módulo estimados horizontal y verticalmente difieren entre sí. La orientación se puede recalcular a partir de la diferencia. Como comparación, es especialmente adecuada la relación, la formación de cocientes, con el cálculo de una función trigonométrica. Específicamente, la orientación se puede calcular como la tangente del cociente del tamaño del módulo determinado a lo largo de una línea horizontal y el tamaño de módulo determinado a lo largo de una línea vertical.
El tamaño de módulo se corrige preferiblemente con una orientación del código en los datos de imagen. Para ello, es adecuada una función trigonométrica, en particular, el coseno de la orientación como factor de corrección. La orientación se determina preferiblemente como se describe en el párrafo anterior, pero la información sobre la orientación también se puede obtener de cualquier manera completamente diferente. Dado que el factor decisivo para la decodificación de un código es cuántos píxeles están disponibles por cada elemento de código más pequeño en el perfil de valores de gris concreto que va a evaluarse, no es absolutamente necesaria una corrección del tamaño de módulo. El tamaño de módulo relativo con respecto a las líneas seleccionadas puede tener más importancia para el éxito de la decodificación que un tamaño de módulo absoluto corregido.
La al menos una distribución de frecuencia está formada preferiblemente a lo largo de una pluralidad de líneas paralelas entre sí mediante el código. Esto aumenta las estadísticas de la distribución de frecuencia y, por lo tanto, logra un resultado más sólido, ya que cada línea paralela adicional permite contar más secuencias de píxeles con información sobre el mismo tamaño de módulo. Preferiblemente, se evalúan una pluralidad o incluso todas las filas o columnas de la cuadrícula de píxeles.
Preferiblemente, la al menos una distribución de frecuencia no tiene en cuenta secuencias de píxeles con un número mayor que un umbral máximo. En otras palabras, en caso de secuencias de píxeles demasiado largas que superan el umbral máximo, la distribución de frecuencia se acorta, ya sea durante la evaluación de la distribución de frecuencia o durante su generación.
Esto se basa en el supuesto de que secuencias de píxeles tan largas ya no corresponden a elementos de código, sino a áreas de fondo homogéneas.
En la al menos una distribución de frecuencias, se tienen en cuenta preferiblemente solo las frecuencias por encima de un umbral mínimo. Esto deja solo frecuencias significativas. Si una determinada longitud de una secuencia de píxeles solo aparece una o varias veces hasta el umbral mínimo, esto se considera un valor atípico y la distribución de frecuencia en este punto ya no se tiene en cuenta en una evaluación posterior; por ejemplo, esta frecuencia se establece en cero. Si en toda la distribución de frecuencia no hay frecuencias por encima del umbral mínimo, no es posible una determinación significativa del tamaño de módulo, por ejemplo, debido a una fuerte borrosidad o a un tamaño de módulo muy por debajo de la resolución óptica, y se puede cancelar la evaluación posterior. Es posible que la línea a lo largo de la cual se forma la distribución de frecuencia sea paralela a las barras de un código de barras. Es posible que el tamaño del módulo pueda determinarse con una distribución de frecuencia a lo largo de otra línea con diferente orientación. De lo contrario, es posible que no haya ningún código en los datos de la imagen e incluso si lo hubiera, es probable que este código no sea legible. No obstante, la decisión de si se realizan intentos de decodificación sin determinar el tamaño de módulo también se puede tomar en otro lugar basándose en otros criterios.
El tamaño de módulo se determina preferiblemente a partir de una posición de un primer máximo en la al menos una distribución de frecuencia. El tamaño del módulo corresponde al elemento de código más pequeño y, por tanto, a la primera acumulación de secuencias de píxeles de longitud más pequeña, es decir, al primer máximo o pico. El máximo se puede localizar de todas las formas conocidas, por ejemplo, mediante un umbral, un ajuste de función o parabólico, y similar. Más adelante se describirán formas de realización particularmente preferidas con coincidencia de plantillas o procedimientos de aprendizaje automático. Como ya se ha explicado, el tamaño del módulo así determinado depende todavía de la orientación de la línea a lo largo de la cual se formó la distribución de frecuencia.
Preferiblemente, una valencia del código se determina a partir del número y/o la posición de los máximos en la al menos una distribución de frecuencia. La valencia se refiere al número de tamaños de módulo sobre los que se extiende un elemento de código. Para un código de barras con una valencia de dos, las barras tienen uno o dos tamaños de módulo de ancho. La valencia corresponde al número de máximos o picos en la distribución de frecuencia. A este respecto, es posible que todavía haya máximos que surjan de efectos disruptivos, o que los máximos puedan no ser lo suficientemente pronunciados para identificarlos como tales. Por tanto, son concebibles controles de plausibilidad, por ejemplo, basándose en la distancia uniforme requerida. Además, el tamaño de módulo también se puede confirmar o corregir de nuevo mediante los picos adicionales, ya que los picos están espaciados entre sí en el tamaño de módulo. Si se determinan varias distribuciones de frecuencia con secuencias de píxeles claros y oscuros o líneas horizontales y verticales, es posible comprobar la plausibilidad mediante una evaluación múltiple. La valencia del código permite sacar conclusiones sobre el tipo de código y, con ello, seleccionar previsiblemente los decodificadores adecuados.
El tamaño del módulo se determina preferiblemente comparando la al menos una distribución de frecuencia con distribuciones de frecuencia de referencia para diferentes clases de tamaños de módulo. Las distribuciones de frecuencia de referencia se pueden ver como plantillas y se asigna una distribución de frecuencia mediante la coincidencia de plantillas. Por ejemplo, existen distribuciones de frecuencia de referencia para tamaños <1, [1, 1,5[, ..., >5 de módulo en pasos discrecionales o en este caso preferiblemente iguales a 0,5. Una gradación más precisa para tamaños de módulo pequeños y grandes no tiene sentido, porque para códigos con tamaños de módulo inferiores a uno de todos modos se deben realizar todas las mejoras concebibles y, por el contrario, los códigos con tamaños de módulo superiores a cinco se leen con bastante facilidad. Los valores numéricos mencionados son ejemplos útiles, pero no están fijados así. Preferiblemente, las distribuciones de frecuencia de referencia generadas anteriormente y las respectivas distribuciones de frecuencia registradas y comparadas con ellas en cada caso están estandarizadas. Cualquier procedimiento de correlación es adecuado para la comparación o coincidencia de plantillas; se trata de dos curvas discretas unidimensionales para las cuales se conocen numerosos criterios de similitud. En una forma de realización especialmente sencilla, se forma la diferencia respectiva entre la distribución de frecuencia que va a compararse y las diferentes distribuciones de frecuencia de referencia. La distribución de frecuencia se asigna a la distribución de frecuencia de referencia con la diferencia más pequeña.
El tamaño de módulo se determina preferiblemente evaluando la al menos una distribución de frecuencia, usando un procedimiento de aprendizaje automático, en particular, con una red neuronal. Esta evaluación es extremadamente potente y flexible, de modo que incluso a las distribuciones de frecuencia que no son adecuadas para procedimientos convencionales, como la evaluación de umbrales, en muchos casos se les asigna el tamaño de módulo correcto. La red neuronal presenta preferiblemente capas ocultas (aprendizaje profundo). Las distribuciones de frecuencia no representan datos demasiado complejos, por lo que una pequeña red neuronal con una o dos capas ocultas puede ser suficiente. Existe una enorme cantidad de paquetes de paquetes desoftwareutilizables y, si es necesario,hardwarededicado disponible para redes neuronales. El procedimiento de aprendizaje automático se entrena preferiblemente mediante aprendizaje supervisado(supervised learning).Un conjunto de datos de entrenamiento con ejemplos de entrenamiento de una evaluación correcta (anotación, etiquetado) pre determinada se generaliza entonces a datos de imagen o distribuciones de frecuencia registrados posteriormente durante el funcionamiento.
El procedimiento se aprende preferiblemente con ejemplos de entrenamiento con datos de imagen o distribuciones de frecuencia y tamaños de módulo asociados. A partir de estos ejemplos de entrenamiento, se pueden derivar las distribuciones de frecuencia de referencia para la coincidencia de plantillas o se puede entrenar el procedimiento de aprendizaje automático o la red neuronal. Preferiblemente, la base de los ejemplos de entrenamiento son imágenes con códigos legibles. El tamaño de módulo se puede determinar de forma fiablea posterioria partir de un código decodificado. Esto permite asignar de forma automática y confiable los ejemplos de entrenamiento a una clase de distribuciones de frecuencia de referencia o anotarlos para el entrenamiento supervisado de un procedimiento de aprendizaje automático. De esta manera, es muy fácil obtener una gran cantidad de ejemplos de entrenamiento de aplicaciones de lectura de códigos existentes. Alternativa o adicionalmente, las imágenes pueden crearse artificialmente y también alterarse con códigos de diferentes contenidos y tipos de códigos.
Los datos de imagen se segmentan preferiblemente en un procesamiento previo para encontrar una región de imagen con el código (ROI, región de interés). Como se ha descrito en la introducción, de esto se encarga preferiblemente una FPGA. Los datos de la imagen se pueden dividir en regiones de tamaño fijo o casillas y se pueden ensamblar casillas, por ejemplo con alto contraste para formar las ROl. La generación de distribuciones de frecuencia se puede realizar por casilla y, a continuación, se pueden sumar las distribuciones de frecuencia de varias casillas. Preferiblemente, solo el último paso se realiza en un microprocesador, que por lo tanto para determinar el tamaño del módulo solo tiene que acceder a los metadatos proporcionados por la FPGA, es decir, a las distribuciones de frecuencia para formar las distintas casillas y ya no tiene que acceder a los datos de imagen originales.
Los datos de imagen se binarizan preferiblemente. Esto significa que se toma una decisión unívoca sobre oscuro y claro antes de que se formen las distribuciones de frecuencia. La binarización se limita preferiblemente a las ROl y ya puede tener lugar en la FPGA.
Preferiblemente, el código óptico se lee después de determinar el tamaño de módulo. Por lo tanto, determinar el tamaño de módulo es un paso anticipado en el procesamiento de imágenes para leer el código y no puede recurrir a los resultados de la decodificación. Como se ha descrito en la introducción, también están disponibles procedimientos alternativos convencionales muy precisos para determinar el tamaño de módulo después de la decodificación. Sin embargo, un tamaño de módulo determinado posteriormente, naturalmente, no permitiría la decodificación.
Preferiblemente, el código óptico se lee usando un procedimiento de codificación seleccionado en función del tamaño de módulo y/o parametrizado por el tamaño de módulo. Por lo tanto, el tamaño de módulo es un parámetro que está disponible durante la decodificación y posiblemente para pasos preparatorios adicionales, como una segmentación precisa de las regiones de código. La decodificación y, en su caso, la segmentación, en particular, una segmentación precisa se apoyan, simplifican, aceleran, mejoran o incluso permiten, en primer lugar, mediante el conocimiento previo del tamaño del módulo. Un ejemplo es la superresolución, es decir, la creación de datos de imagen de mayor resolución a partir de varios conjuntos de datos de imagen de menor resolución. El tamaño de módulo puede ser una indicación de para qué códigos se necesita realmente la superresolución. Además, el tamaño de módulo también es un parámetro muy útil para un algoritmo de superresolución. Por otra parte, también es posible determinar el tamaño de módulo según la invención solo después de un algoritmo de superresolución, para lo cual hay que tener en cuenta entonces el factor de escala para un tamaño de módulo absoluto. Otro ejemplo de la influencia del tamaño de módulo en la decodificación es el conocimiento de que la decodificación no será posible en absoluto, porque el tamaño de módulo es demasiado pequeño para los procedimientos de decodificación existentes. Actualmente, un límite práctico para los códigos de barras es 0,6 ppm. Luego ahorra recursos para clasificar el código como ilegible directamente según el tamaño de módulo, en lugar de permitir que fallen varios procedimientos todavía complejos de decodificación.
El tamaño de módulo se determina preferiblemente solo en términos binarios como tamaño de módulo pequeño o mayor, donde en particular un tamaño de módulo pequeño se sitúa por debajo de dos o por debajo de uno y un tamaño de módulo mayor correspondientemente asciende al menos a dos o a al menos uno. Como siempre en esta descripción, los tamaños de módulo se miden en la unidad ppm (píxeles por módulo). En este contexto, un tamaño de módulo mayor no debe entenderse como una indicación numérica vaga, sino más bien como el opuesto binario de un tamaño de módulo “ no pequeño” . El tamaño de módulo pequeño puede ser el mejor resultado que el procedimiento según la invención es capaz de lograr, porque la calidad de los datos de la imagen y las distribuciones de frecuencia no permiten una determinación cuantitativa. Por otro lado, también es posible convertir un tamaño de módulo determinado cuantitativamente en pequeño o mayor comparándolo con un valor límite. Los tamaños de módulo pequeños son especialmente exigentes para el decodificador, por lo que solo se utiliza un algoritmo de superresolución complejo para este fin. También se puede establecer un límite estricto como 0,6 ppm y luego se puede emitir un error de lectura directamente para tamaños de módulo pequeños sin un intento de decodificación.
El lector de códigos según la invención para la lectura de códigos ópticos puede ser un escáner de códigos de barras, por ejemplo, con un fotodiodo como elemento receptor de luz. Se trata preferiblemente de un lector de códigos basado en una cámara con un sensor de imagen como elemento receptor de luz. El sensor de imagen puede ser a su vez un sensor lineal para registrar una línea de código o una imagen de código plano mediante la composición de líneas de imagen o un sensor matricial, donde también se pueden combinar las capturas de un sensor matricial para formar una imagen de salida más grande. También es concebible una red de varios lectores de códigos o cabezales de cámara. Una unidad de control y evaluación puede formar parte de un escáner de códigos de barras o de un lector de códigos basado en cámara o estar conectada a él como dispositivo de control. Esto implementa un procedimiento según la invención para determinar el tamaño de módulo de un código óptico y preferiblemente una lectura del código inmediatamente posterior utilizando el tamaño de módulo ahora conocido.
La invención también se explica con más detalle a continuación con respecto a otras características y ventajas a modo de ejemplo con ayuda de formas de realización y con referencia al dibujo adjunto. Las ilustraciones del dibujo muestran en: figura 1 una representación esquemática tridimensional del ejemplo de montaje de un lector de códigos encima de una cinta transportadora, sobre la que se transportan objetos con códigos que van a leerse;
figura 2 una representación esquemática de una arquitectura heterogénea para el procesamiento previo con una FPGA y una CPU para su posterior procesamiento o como decodificador;
figura 3 una imagen de ejemplo con códigos ópticos, una subdivisión en casillas y una región de interés con un código óptico; figura 4a un ejemplo de casilla con una sección de un código;
figura 4b la sección de un código según la figura 4a después de una binarización;
figura 5a un histograma con frecuencias de secuencias horizontales de píxeles claros y oscuros de diferentes longitudes en la sección de la figura 4b;
figura 5b un histograma con frecuencias de secuencias verticales de píxeles claros y oscuros de diferentes longitudes en la sección de la figura 4b;
figura 6a un ejemplo de casilla con una sección de un código capturado adicional, pequeño y borroso;
figura 6b la sección de un código según la figura 6a después de una binarización;
figura 7a un histograma con frecuencias de secuencias horizontales de píxeles claros y oscuros de diferentes longitudes en la sección de la figura 6b;
figura 7b un histograma con frecuencias de secuencias verticales de píxeles claros y oscuros de diferentes longitudes en la sección de la figura 6b;
figura 8a un ejemplo de casilla con una sección de un código adicional;
figura 8b la sección de un código según la figura 8a después de una binarización;
figura 9a un histograma con frecuencias de secuencias horizontales de píxeles claros y oscuros de diferentes longitudes en la sección de la figura 8b;
figura 9b un histograma con frecuencias de secuencias verticales de píxeles claros y oscuros de diferentes longitudes en la sección de la figura 8b;
figura 10a un histograma con frecuencias de secuencias horizontales de píxeles claros y oscuros de diferentes longitudes para un ejemplo de código adicional, no mostrado con tamaño de módulo 2,31 ppm;
figura 10b un histograma con frecuencias de secuencias verticales de píxeles claros y oscuros de diferentes longitudes para el ejemplo de código de la figura 10a;
figura 11a un histograma con frecuencias de secuencias horizontales de píxeles claros y oscuros de diferentes longitudes para un ejemplo de código adicional, no mostrado con tamaño de módulo 0,82 ppm;
figura 11b un histograma con frecuencias de secuencias verticales de píxeles claros y oscuros de diferentes longitudes para el ejemplo de código de la figura 11 a;
figura 12a un ejemplo de matriz de confusión para el tamaño de módulo estimado usando coincidencia de plantillas basada en secuencias de píxeles claros;
figura 12b un ejemplo de matriz de confusión para el tamaño de módulo estimado usando coincidencia de plantillas basada en secuencias de píxeles oscuros;
figura 13a una comparación entre el valor predeterminado (verdad fundamental) y la predicción de una red neuronal para el tamaño de módulo;
figura 13b una comparación similar a la figura 13a para una red neuronal con menos neuronas en las capas ocultas;
figura 14a un ejemplo de predicción del tipo de código mediante una red neuronal y
figura 14b una comparación entre el valor predeterminado (verdad fundamental) y la predicción de la red neuronal según la figura 14a.
La figura 1 muestra un lector 10 de códigos optoelectrónico en una situación de aplicación preferida, montado encima de una cinta 12 transportadora, que transporta objetos 14, como indica la flecha 16, a través de la región 18 de registro del lector 10 de códigos. Los objetos 14 llevan regiones 20 de código en sus áreas exteriores, que se registran y evalúan mediante el lector 10 de códigos. Estas regiones 20 de código solo pueden ser reconocidas por el lector 10 de códigos si están fijadas en la parte superior o al menos son visibles desde arriba. Por lo tanto, a diferencia de la ilustración de la figura 1, se puede montar una multitud de lectores 10 de códigos desde diferentes direcciones para leer un código 22 fijado aproximadamente en los laterales o a la parte inferior, para permitir la llamada lectura omnidireccional desde todas las direcciones. En la práctica, la disposición de los distintos lectores 10 de códigos para formar un sistema de lectura se realiza normalmente como un túnel de lectura. Esta aplicación estacionaria del lector 10 de códigos sobre una cinta transportadora es muy común en la práctica. Sin embargo, la invención se refiere inicialmente al propio lector 10 de códigos o al procedimiento implementado en él para determinar un tamaño de módulo, preferiblemente, con la posterior decodificación de códigos, por lo que este ejemplo no debe entenderse como restrictivo.
El lector 10 de códigos registra con un elemento 24 receptor de luz datos de imagen de los objetos 14 transportados y las regiones 20 de código que se procesan posteriormente por una unidad 26 de control y evaluación usando procedimientos de evaluación y decodificación de imágenes. El procedimiento de obtención de imágenes específico no es importante para la invención, de modo que el lector 10 de códigos puede construirse según cualquier principio conocidoper se.Por ejemplo, en cada caso solo se registra una línea, ya sea mediante un sensor de imagen en forma de línea o mediante un procedimiento de escaneo, en cuyo último caso basta un fotodiodo como elemento 24 receptor de luz. Se puede intentar leer directamente el código de una línea de imagen o la unidad 26 de control y evaluación combina las líneas registradas durante el movimiento de transporte para formar los datos de imagen. Con un sensor de imagen en forma de matriz se puede registrar una región mayor en una captura, donde también es posible en este caso la combinación de capturas tanto en la dirección de transporte como transversalmente a esta. Las distintas capturas se realizan sucesivamente y/o mediante varios lectores 10 de códigos, que con sus regiones 18 de registro cubren, por ejemplo, solo conjuntamente toda la anchura de la cinta 12 transportadora, en donde cada lector 10 de códigos, por así decirlo, solo captura una casilla de la imagen general y las casillas se combinan mediante procesamiento de imágenes (cosido). También es concebible solo una decodificación fragmentaria dentro de casillas individuales y la posterior combinación de los fragmentos de código.
La tarea principal del lector 10 de códigos es reconocer las regiones 20 de códigos y leer los códigos adjuntos a estas. El tamaño de módulo del código 20 respectivo se determina como un paso secundario, preferiblemente, lo más pronto posible en la cadena de procesamiento y antes de la lectura de código propiamente dicho. Esto se explicará en detalle a continuación con referencia a las figuras 4a a 14b.
El lector 10 de códigos genera información a través de una interfaz 28, como códigos de lectura o datos de imágenes. También es concebible que la unidad 26 de control y evaluación no esté dispuesta en el propio lector 10 de códigos, es decir, en la cámara representada en la figura 1, sino que esté conectada a uno o varios lectores 10 de códigos como dispositivo de control propio. Entonces la interfaz 28 sirve también como conexión entre el control y la evaluación internos y externos. La funcionalidad de control y evaluación se puede distribuir prácticamente de manera discrecional entre componentes internos y externos, en donde los componentes externos también se pueden conectar a través de la red o la nube. En este caso, no se hace ninguna distinción adicional y la unidad 26 de control y evaluación se considera parte del lector 10 de códigos, independientemente de la implementación específica.
La figura 2 muestra la unidad 26 de control y evaluación y su conexión en una representación esquemática. Esta representación muestra una forma de realización ventajosa; en general, una unidad 26 de control y evaluación de cualquier estructura interna puede leer los datos de imagen del elemento 24 receptor de luz y procesarlos de la manera que se describirá. La unidad 26 de control y evaluación en la realización preferida según la figura 2 comprende una primera unidad 30 de procesamiento y una segunda unidad 32 de procesamiento. La segunda unidad 32 de procesamiento presenta preferiblemente un decodificador 36 para leer códigos ópticos basados en datos de imagen. La primera unidad 30 de procesamiento se explica a continuación usando el ejemplo de una FPGA (matriz de puerta programable en campo), la segunda unidad 32 de procesamiento en el ejemplo de un microprocesador o una CPU (unidad central de procesamiento). También son posibles otros componentes digitales y adicionales, incluida una forma de realización con un solo componente de evaluación de la unidad 26 de control y evaluación, incluidos DSP (procesador de señal digital), ASIC (circuito integrado de aplicación específica), procesador IA, NPU (unidad de procesamiento neuronal), GPU (unidad de procesamiento de gráficos) o similar.
La primera unidad 30 de procesamiento está unida, por un lado, al elemento 24 receptor de luz y, por otro lado, presenta una interfaz en dirección a la segunda unidad 32 de procesamiento, preferiblemente, una interfaz de alta velocidad (PCI, PCIE, MIPI). Ambas unidades 30, 32 de procesamiento pueden acceder a una memoria 34 para datos de imágenes e información adicional, metadatos o resultados de procesamiento. Las correspondientes operaciones de lectura y escritura se llevan a cabo preferiblemente mediante DMA (acceso directo a memoria). La memoria 34 puede entenderse al menos funcionalmente y, según la forma de realización, también estructuralmente como parte de la segunda unidad 32 de procesamiento.
Durante el funcionamiento, el elemento 24 receptor de luz captura ahora en cada caso una nueva imagen o una nueva sección de imagen. Puede tratarse de una imagen rectangular de un sensor matricial, pero también son concebibles una o varias líneas de imagen de un sensor lineal, que en el transcurso del movimiento relativo entre el lector 10 de códigos y el objeto 14 generan sucesivamente una imagen global. Los datos de imagen del elemento 24 receptor de luz se leen mediante la primera unidad 30 de procesamiento y se transfieren o transmiten continuamente a la memoria 34. A este respecto, la información adicional o los metadatos se determinan preferiblemente al mismo tiempo, ventajosamente “ sobre la marcha” , es decir, directamente durante la transferencia a la memoria 34 y mientras otros datos de imagen de la imagen deben leerse o se leen mediante el elemento 24 receptor de luz. Los metadatos pueden referirse a diversos procesamientos previos que no se describen en este caso con más detalle. En relación con la invención, es de particular importancia determinar distribuciones de frecuencia de secuencias de píxeles claros u oscuros de diferentes longitudes como preparación para determinar un tamaño de módulo y posiblemente subdividir una imagen en casillas y encontrar regiones de interés de una imagen, por ejemplo, con códigos 20 de interés. Esto último se explicará más adelante con referencia a la figura 3.
La segunda unidad 32 de procesamiento accede a los datos de imagen en la memoria 34 para su posterior procesamiento. De manera especialmente preferida, un decodificador 36 de la segunda unidad 32 de procesamiento lee el contenido de los códigos 20 ópticos capturados con los datos de imagen. La segunda unidad 32 de procesamiento también puede evaluar metadatos guardados en la memoria 34 por parte de la primera unidad 30 de procesamiento. La evaluación de los metadatos puede realizarse al menos parcialmente ya en la primera unidad 30 de procesamiento, por lo que en la figura 2 este paso de procesamiento está entre paréntesis en cada caso debido a las diferentes distribuciones de tareas posibles.
La figura 3 muestra una imagen de ejemplo con códigos ópticos, según lo capturado por el lector 10 de códigos. La imagen se subdivide horizontal y verticalmente en una pluralidad de casillas 38, preferiblemente, en una cuadrícula uniforme como se muestra. Se pueden determinar metadatos para cada casilla 38, por ejemplo, promedio o varianza, que se pueden usar para evaluar si la casilla 38 respectiva contiene una estructura interesante tal como un código óptico. Para la determinación del tamaño de módulo según la invención, para las casillas 38 se determina al menos una distribución de frecuencia respectiva, en particular, en forma de un histograma, que representa las posibles longitudes de secuencias de píxeles claros u oscuros en sus intervalos y cuenta con qué frecuencia se produce una secuencia de píxeles de esta longitud en una casilla 38. Como se explica en la figura 2, dichos pasos de procesamiento son posibles sobre la marcha durante la transmisión continua.
Una región 40 de interés con un código óptico se determina basándose en metadatos y/u otra información, tal como mediciones de geometría de un sensor adicional. La búsqueda de regiones 40 de interés puede utilizar los metadatos mencionados en el párrafo anterior, pero también se conocen otras segmentaciones. Depende de la imagen si existen una o varias de estas regiones 40 de interés o posiblemente ninguna región 40 de interés, por ejemplo, porque la imagen no contenga ningún código óptico. En la imagen de ejemplo de la figura 3 se pueden ver otros códigos ópticos, que no están marcados para mayor claridad. Un subconjunto 42 de las casillas 38 corresponde a la región 40 de interés. A este respecto, en el borde se decide, por ejemplo, basándose en una proporción de superposición, si la casilla 38 todavía pertenece al subconjunto 42 o no. El procedimiento adicional puede referirse a este subconjunto de casillas 38, a la región 40 de interés determinada independientemente de las casillas 38 o a otra sección con el código óptico.
La figura 4a muestra una casilla de ejemplo con una sección de un código. Por ejemplo, consta de 24x24 píxeles. Utilizando algoritmos de superresolución, la resolución original se puede aumentar opcionalmente hasta, por ejemplo, 48x48 píxeles. La Figura 4b muestra la misma sección después de la binarización, es decir, como imagen en blanco y negro con solo un bit de profundidad de color en lugar de la imagen de valor de gris original con, por ejemplo, ocho bits de profundidad de color.
Para determinar el tamaño de módulo, a partir de dicha casilla o, alternativamente, otra sección de imagen con al menos partes del código, se forma un histograma como una implementación discreta de una distribución de frecuencia, que cuenta con qué frecuencia aparecen secuencias de píxeles claros u oscuros de una determinada longitud. En principio, estas secuencias de píxeles pueden extenderse en cualquier dirección, es decir, seguir una línea en dirección discrecional a través del código. Las secuencias de píxeles a lo largo de direcciones horizontales o verticales, es decir, filas o columnas de la casilla son particularmente fáciles de evaluar y sin artefactos de discretización. Para obtener mejores estadísticas, se deben incluir todas las filas y columnas, pero también es posible una selección parcial.
Las Figuras 5a-b muestran un tal histograma que pertenece a la figura 4b con secuencias de píxeles horizontales o verticales. Los intervalos representan la longitud de una secuencia de píxeles, el recuento de cada intervalo representa el número de veces que ocurre esta longitud. A este respecto, los números o frecuencias de las secuencias de píxeles claros se muestran en gris claro y las secuencias de píxeles oscuros se muestran en gris oscuro, por lo que se superponen en cada caso dos histogramas y se muestran un total de cuatro histogramas en las Figuras 5a-b para las posibles combinaciones de horizontal y vertical, así como claro y oscuro. Este tipo de representación comprimida se mantiene en las siguientes figuras con histogramas. Por lo tanto, una secuencia de píxeles horizontales claros de longitud dos se contaría en gris oscuro en el segundo intervalo de la figura 5a de la izquierda.
En el ejemplo comentado, el código con sus barras está orientado casi horizontalmente. Por lo tanto, el histograma de la figura 5a, que cuenta secuencias de píxeles en dirección horizontal, no puede evaluarse de manera significativa. Por otro lado, el histograma de la figura 5b muestra máximos claros y sin secuencias de píxeles excesivamente largas que no son plausibles para un código óptico. A partir de esto, se puede leer de forma fiable un tamaño de módulo de tres a cuatro, es decir, por un lado a partir de la posición del primer máximo o pico, así como de la distancia entre los picos, de modo que estos criterios pueden apoyarse mutuamente y hacerse plausibles. Esto no solo es posible a simple vista, sino también algorítmicamente, por ejemplo, mediante una valoración de umbral o un ajuste funcional. Si la imagen de salida se ha ampliado como en el ejemplo (superresolución, muestreo ascendente), el tamaño de módulo se puede corregir mediante el factor de escala y, por lo tanto, es de 1,5-2,0 ppm. Adicionalmente al tamaño de módulo, incluso puede leerse la valencia del código, que en este ejemplo es tres porque hay tres picos.
Se pueden utilizar varios criterios para decidir qué histograma se evalúa. Por ejemplo, se pueden cortar grandes longitudes de secuencias de píxeles por encima de un umbral máximo o los intervalos correspondientes se pueden establecer en cero. De esta manera, se eliminarían las secuencias de píxeles excesivamente largas, por ejemplo, de más de doce, en el histograma de la figura 5a. Por lo tanto, el histograma generado en una dirección desfavorable contiene muchos menos eventos que el otro y por ello puede reconocerse. De esta manera, también se filtraría un histograma con áreas homogéneas poco interesantes. Como criterio adicional, las frecuencias por debajo de un umbral mínimo se pueden establecer en cero. La longitud de una secuencia de píxeles correspondiente al tamaño de módulo debería aparecer con mucha frecuencia. Por otro lado, eventos independientes como los de la Figura 5a se deben a valores atípicos, a una orientación desfavorable o a una falta de código en la sección de imagen evaluada. Con este criterio, no quedaría nada en el histograma de la figura 5a, por lo que está claro que, en su lugar, el histograma de la Figura 5b debería procesarse más. El umbral máximo y el umbral mínimo deberían establecerse en relación con el tamaño de la sección de imagen evaluada.
Las figuras 6a-b y 7a-b muestran, de manera análoga a las figuras 4a-b y 5a-b, otro ejemplo de casilla con una sección de un código, la binarización asociada y los histogramas obtenidos a partir del mismo en las direcciones horizontal y vertical. Este es un ejemplo negativo con un código muy pequeño y borroso, que tampoco ocupa una casilla completa. No hay ningún resultado significativo aquí. En particular, los criterios expuestos anteriormente clasificarán ambos histogramas. Al menos todavía se puede concluir que se trata de estructuras pequeñas. Esto por sí solo puede ser valioso para el decodificador 36 dispuesto aguas abajo, que por lo tanto, debería utilizar sus recursos para procesar códigos pequeños. Otra cuestión es si será posible leer un código en la captura extremadamente pobre en la que se basa la figura 6a, pero todavía existe la posibilidad de que esto ocurra en casos dudosos.
Las figuras 8a-b y 9a-b muestran, de manera análoga a las figuras 4a-b y 5a-b, otro ejemplo de casilla con una sección de un código, la binarización asociada y los histogramas obtenidos a partir del mismo en las direcciones horizontal y vertical. Este código es más fácil de evaluar nuevamente. Como en el ejemplo de la figura 4a, opcionalmente se podría realizar una dispersión del contraste antes de la binarización, ya que los valores de gris reales no aprovechan en absoluto los valores de gris posibles.
En este ejemplo, el código está orientado de forma oblicua y ambos histogramas de líneas de orientación horizontal y de orientación vertical permiten una evaluación adicional. El histograma de la figura 9a muestra picos en 1, 10 y 19, el histograma de la figura 9b en 4 y 7. El pico en 1 debe rechazarse porque este pico podría indicar en principio un ancho de módulo de uno, pero dadas las distancias a los otros picos esto no es plausible. Esto da como resultado un tamaño de módulo de 9-10 en dirección horizontal y un tamaño de módulo de 3-4 en dirección vertical. Los diferentes resultados no son un error, porque la longitud de las secuencias de píxeles en realidad difiere dependiendo de la orientación de las líneas a lo largo de las cuales se determinan. El decodificador dispuesto aguas abajo puede funcionar con tamaños de módulo no ajustados, dependiendo de cómo estén orientados los perfiles de valores de gris con los que el decodificador intenta leer.
También es posible determinar la orientación del código dentro de la casilla o la sección de imagen o su cuadrícula de píxeles a partir de los diferentes tamaños de módulo en las direcciones horizontal y vertical. Si esta orientación se define por su ángulo a con respecto a la horizontal, el tamaño de módulo absoluto o corregido se designará como Tamañomod, y los tamaños de módulo medidos horizontal o verticalmente como Tamañomodhor y Tamañomodvert, entonces se aplica
TamañoMod = cos<( a ) *>TamañoModvert;;TamañoMod = sen(a)<*>TamañoModhor
tan(a) = TamañoModvert / TamañoModho
La orientación se puede determinar a partir de la tercera ecuación y el tamaño del módulo corregido se puede determinar con esta orientación a partir de la primera o segunda ecuación. Opcionalmente, es concebible alinear el código según la orientación con la cuadrícula de píxeles, siempre que esto signifique tener que volver a leer los datos de imagen.
Aquí se presentan algunos ejemplos de cómo se puede determinar el tamaño de módulo, y, dado el caso, también la valencia y la orientación, a partir de distribuciones de frecuencia o histogramas sobre las longitudes de secuencias de píxeles. Preferiblemente, la primera unidad 30 de procesamiento calcula los histogramas por casilla 38 y los transmite a la segunda unidad 32 de procesamiento como metadatos a través de la memoria 34. Las regiones 40 de interés se determinan mediante segmentación realizada en paralelo o de otro modo, de manera que a continuación se pueda encontrar el subconjunto 42 de las casillas 38 que corresponde a una región 40 de interés. Después, los histogramas para las casillas 38 pueden sumarse a través del subconjunto 42 para formar histogramas para la región 40 de interés.
Las figuras 10a-b y 11a-b muestran, esta vez sin representar una imagen de partida subyacente, más histogramas horizontales y verticales para un tamaño de módulo de 2,31 y 0,82, respectivamente. A partir de los histogramas de la figura 10ab, el tamaño de módulo e incluso la valencia se pueden averiguar de forma sólida en función de los picos. En cualquier caso, la orientación del código en este caso es en gran medida vertical; una posición del primer pico en 5 se puede leer en el histograma inferior asociado de la figura 10b. Debido al aumento de la resolución en un factor de dos, el tamaño de módulo estimado es, por lo tanto, 2,5 en buena concordancia con el tamaño de módulo real de 2,31.
También se pueden ver picos claros en los histogramas de las figuras 11a-b para el tamaño de módulo pequeño de 0,82. Sin embargo, en este caso el tamaño de módulo de 5 o al volverse a ajustar a escala 2,5 leído en el histograma según la figura 11b sería engañoso. Este tipo de picos amplios en la región inicial no es adecuado para una determinación directa del tamaño de módulo como en el párrafo anterior, por ejemplo, seleccionando picos mediante valoración de umbral.
Por lo tanto, en formas de realización preferidas, se utilizan evaluaciones más potentes para también hacer justicia a un caso como el de las figuras 11a-b. En dos ejemplos, la coincidencia de plantillas y luego una red neuronal se presentan como representantes de un procedimiento de aprendizaje automático.
Para una forma de realización con coincidencia de plantillas, se requieren plantillas o histogramas de referencia o distribuciones de frecuencia de referencia. Para ello, se recopilan ejemplos de entrenamiento para distintos tamaños de módulo y, preferiblemente, distintos tipos de códigos. Pueden ser imágenes reales de códigos de cualquier aplicación de lectura de códigos y, además o alternativamente, imágenes artificiales de códigos generadas a partir de un contenido de código, dado el caso, alteradas o impresas y leídas de nuevo. Si se conoce el contenido de código mediante una lectura exitosa, el tamaño de módulo se puede determinar fácilmente con posterioridad. Por tanto, los ejemplos de entrenamiento se pueden clasificar en clases de tamaños de módulo, por ejemplo [1, 1.5], [1.5, 2], ... y, dado el caso, separarlos por tipo de código. Ahora se forman histogramas para cada clase utilizando los ejemplos de entrenamiento de la clase. Si ahora se suman en cada caso los recuentos en los intervalos de los histogramas de una clase y esto se estandariza preferiblemente a un total de uno, se ha encontrado la plantilla para esta clase.
Durante el funcionamiento, se estandariza en cada caso preferiblemente en primer lugar un histograma registrado para el código actual. Luego se forma la diferencia entre este histograma y los distintos histogramas de referencia. Esta diferencia es una medida de correlación o similitud, más concretamente lo inverso, es decir, una medida de la desviación o error. El histograma y, por tanto, el código actual se asigna al histograma de referencia con el menor error. El tamaño de módulo estimado es el de la clase asignada.
Las Figuras 12a-b muestran matrices de confusión(confusión matrix)de una coincidencia de plantillas, una vez para elementos de código oscuro y otra para elementos de código claro al evaluar un ejemplo de conjunto de datos con códigos 2D. Para cada código evaluado, se realiza una entrada en la matriz de confusión en una posición X de los tamaños de módulo reales y una posición Y de los tamaños de módulo averiguados. Una coincidencia de plantilla perfecta solo produciría entradas en diagonal. En cualquier caso, las matrices de confusión mostradas se acercan más a esta situación. El tipo de código también se puede determinar hasta cierto punto. Estos resultados se pueden recopilar en una matriz de confusión similar, que sin embargo no se muestra.
A través de sus clases, la coincidencia de plantillas especifica un cierto error dependiendo del tamaño de las clases, el tamaño de módulo no se puede estimar con mayor precisión de esta manera. También existen ciertas dificultades a la hora de cubrir toda la variedad de posibles escenarios de lectura de código con histogramas de referencia.
En otra forma de realización, se utiliza un procedimiento de aprendizaje automático en lugar de la coincidencia de plantillas, lo que se explica en este caso con el ejemplo de una red neuronal. Los ejemplos de entrenamiento explicados para la coincidencia de plantillas también se pueden utilizar para el aprendizaje supervisado(supervised learning)de la red neuronal, porque de esta manera se dispone de una gran cantidad de conjuntos de datos con un alto grado de automatización, incluido el tamaño de módulo correcto correspondiente (etiqueta, anotación).
Para simplificar, se supone que la dirección preferida se conoce horizontal o verticalmente, por lo que solo los dos histogramas para elementos de código claros y oscuros forman los datos de entrada. Con 20 intervalos cada uno, esto da como resultado un vector de captura de 1x40 de la red neuronal. La red neuronal se puede construir con capas completamente conectadas(fully connected)y bastan pocas capas ocultas. En el lado de la salida, solo se requiere un escalar para el tamaño de módulo, posiblemente un vector con variables de salida adicionales como la valencia o el tipo de código.
Las figuras 13a-b muestran en cada caso una comparación entre el valor predeterminado (verdad fundamental) y la predicción de una red neuronal para el tamaño de módulo. Lo ideal sería que todos los puntos estuvieran sobre una recta con pendiente uno. En la Figura 13a, se utilizó una red neuronal con una capa de entrada de 40 neuronas, una primera capa oculta de 80 neuronas, una segunda capa oculta de 40 neuronas y una neurona de salida. En la Figura 13b, se utilizó una red neuronal más pequeña con solo 10 neuronas en la primera capa oculta y solo 5 neuronas en la segunda capa oculta. Esto reduce el número de pesos que aprender de aproximadamente 6000 a aproximadamente 600, con las correspondientes menores exigencias en los ejemplos de entrenamiento y el tiempo de entrenamiento. En cualquier caso, el poder predictivo de la red normal más pequeña es igual de bueno a simple vista. Esto significa que la implementación es posible incluso con recursos informáticos limitados y requisitos en tiempo real.
Finalmente, las Figuras 14a-b ilustran la predicción adicional del tipo de código en una segunda neurona de salida. La Figura 14a muestra los cuatro grupos correspondientes a los tipos de código C128, ITL25, 2D y PDF41. La Figura 14b es una representación asociada de los tamaños de módulo predichos frente a los reales de forma similar a las figuras 13a-b, en donde los puntos están dibujados en los mismos tonos de gris correspondientes al tipo de código de la figura 14a. El conjunto de datos de entrenamiento utilizado en este caso contenía una cantidad diferente de ejemplos de entrenamiento para cada tipo de código. Esto se debe tener en cuenta durante el entrenamiento, por ejemplo, mediante repetición de entrenamiento preferida con tipos de códigos más raros. Es incluso mejor entrenar con un conjunto de datos más equilibrado

Claims (14)

  1. REIVINDICACIONES
    i.Procedimiento para determinar el tamaño de módulo de un código (20) óptico, en el que se captan datos de imagen con el código (20) y el tamaño de módulo se estima a partir de distancias entre transiciones clarooscuras en los datos de imagen, en donde al menos se forma una distribución de frecuencia, en particular, un histograma, que indica con qué frecuencia aparecen secuencias de píxeles oscuros y/o claros de un número respectivo a lo largo de al menos una línea a través del código (20), y el tamaño de módulo se estima a partir de la distribución de frecuencia,
    caracterizado
    por quecomo la al menos una distribución de frecuencia, mediante el código (20) se forma una distribución de frecuencia horizontal a lo largo de al menos una línea horizontal y se forma una distribución de frecuencia vertical a lo largo de al menos una línea vertical mediante el código (20).
  2. 2. Procedimiento según la reivindicación 1,
    en donde para la distribución de frecuencia horizontal y la distribución de frecuencia vertical se forma una distribución de frecuencia oscura para secuencias de píxeles oscuros y una distribución de frecuencia clara para secuencias de píxeles claros de modo que existen entonces cuatro distribuciones de frecuencia.
  3. 3. Procedimiento según la reivindicación 1 o 2,
    en donde una orientación del código (20) en los datos de la imagen se determina comparando una primera estimación del tamaño de módulo a partir de la distribución de frecuencia horizontal y una segunda estimación del tamaño de módulo a partir de la distribución de frecuencia vertical.
  4. 4. Procedimiento según una de las reivindicaciones anteriores,
    en donde el tamaño de módulo se corrige con una orientación del código (20) en los datos de imagen.
  5. 5. Procedimiento según una de las reivindicaciones anteriores,
    en donde la al menos una distribución de frecuencia se forma a lo largo de una pluralidad de líneas paralelas entre sí mediante el código (20).
  6. 6. Procedimiento según una de las reivindicaciones anteriores,
    en donde la al menos una distribución de frecuencia no tiene en cuenta secuencias de píxeles de un número mayor que un umbral máximo
    y/o en donde solo se tienen en cuenta frecuencias por encima de un umbral mínimo en la al menos una distribución de frecuencia.
  7. 7. Procedimiento según una de las reivindicaciones anteriores,
    en donde el tamaño de módulo se determina a partir de una posición de un primer máximo en la al menos una distribución de frecuencia
    y/o en donde un valor del código (20) se determina a partir del número y/o posición de los máximos en la al menos una distribución de frecuencia.
  8. 8. Procedimiento según una de las reivindicaciones anteriores,
    en donde el tamaño de módulo se determina comparando la al menos una distribución de frecuencia con distribuciones de frecuencia de referencia para distintas clases de tamaños de módulo.
  9. 9. Procedimiento según una de las reivindicaciones anteriores,
    en donde el tamaño de módulo se determina evaluando la al menos una distribución de frecuencia usando un procedimiento de aprendizaje automático, en particular, con una red neuronal.
  10. 10. Procedimiento según la reivindicación 8 o 9,
    en donde el procedimiento se aprende con ejemplos de entrenamiento con datos de imágenes o distribuciones de frecuencia y tamaños de módulo asociados.
  11. 11. Procedimiento según una de las reivindicaciones anteriores,
    en donde en un procesamiento previo, los datos de imagen se segmentan para encontrar una región (42) de imagen con el código (20) y/o los datos de la imagen se binarizan.
  12. 12. Procedimiento según una de las reivindicaciones anteriores,
    en donde el código (20) se lee después de determinar el tamaño de módulo, en donde en particular el código (20) se lee con un procedimiento de decodificación seleccionado en función del tamaño de módulo y/o parametrizado por el tamaño de módulo.
  13. 13. Procedimiento según una de las reivindicaciones anteriores,
    en donde el tamaño de módulo se determina solo en términos binarios como tamaño de módulo pequeño o mayor, en donde en particular un tamaño de módulo pequeño es inferior a dos o inferior a uno y un tamaño de módulo mayor asciende a al menos dos o al menos uno.
  14. 14. Lector (10) de códigos para leer códigos (20) ópticos, que presenta un elemento (24) receptor de luz para registrar datos de imagen con el código (20) y una unidad (26) de control y evaluación, que está configurada para leer el código (20) con un proceso de decodificación,
    caracterizado
    por quela unidad (26) de control y evaluación está configurada para determinar el tamaño de módulo del código (20) con un procedimiento según una de las reivindicaciones anteriores.
ES22176561T 2022-05-31 2022-05-31 Determinación del tamaño de módulo de un código óptico Active ES2985426T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP22176561.3A EP4287066B1 (de) 2022-05-31 2022-05-31 Bestimmen der modulgrösse eines optischen codes

Publications (1)

Publication Number Publication Date
ES2985426T3 true ES2985426T3 (es) 2024-11-05

Family

ID=81854480

Family Applications (1)

Application Number Title Priority Date Filing Date
ES22176561T Active ES2985426T3 (es) 2022-05-31 2022-05-31 Determinación del tamaño de módulo de un código óptico

Country Status (4)

Country Link
US (1) US20230386068A1 (es)
EP (1) EP4287066B1 (es)
CN (1) CN117151131A (es)
ES (1) ES2985426T3 (es)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102023134454A1 (de) * 2023-12-08 2025-06-12 MTU Aero Engines AG Verfahren zum Bereitstellen einer Identifikationsinformation eines Bauteils

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5053609A (en) 1988-05-05 1991-10-01 International Data Matrix, Inc. Dynamically variable machine readable binary code and method for reading and producing thereof
JPH06325197A (ja) * 1993-05-14 1994-11-25 Fujitsu Ltd バーコード認識方法
JP3640573B2 (ja) * 1999-07-27 2005-04-20 日立コンピュータ機器株式会社 バーコード読取り方法及びバーコード読取りシステム
DE10222281A1 (de) 2002-05-18 2003-11-27 Sick Ag Verfahren zum Betrieb eines optoelektronischen Sensors und Sensor
CN100458827C (zh) * 2002-12-17 2009-02-04 夏普株式会社 条形码识别装置
JP4618058B2 (ja) * 2005-09-01 2011-01-26 株式会社日立製作所 背景画像生成方法とその装置及び画像監視システム
EP2003599A1 (de) 2007-06-14 2008-12-17 Sick Ag Optoelektronischer Sensor und Verfahren zur Erfassung von Codes
US8333326B2 (en) * 2010-10-07 2012-12-18 Nidec Sankyo Corporation Stacked barcode reader and stacked barcode reading method
EP2555160B1 (de) 2011-08-05 2013-10-09 Sick Ag Erzeugung eines in interessante und uninteressante Bereiche vorsegmentierten Bildes
US9076076B1 (en) * 2012-03-30 2015-07-07 Google Inc. Image similarity determination
JP6355908B2 (ja) * 2013-09-30 2018-07-11 国立大学法人広島大学 シンボル認識装置および車両用標識認識装置
US10303913B2 (en) * 2016-12-28 2019-05-28 Datalogic Ip Tech S.R.L. Virtual wave decoder for blurred images and subpixel performance
EP3789906B1 (de) 2019-09-05 2021-07-07 Sick Ag Bestimmen der modulgrösse eines optischen codes
EP3916633A1 (de) 2020-05-25 2021-12-01 Sick Ag Kamera und verfahren zum verarbeiten von bilddaten
CN112329495B (zh) * 2020-11-02 2022-08-05 杭州海康威视数字技术股份有限公司 一种条形码识别方法、装置及系统
US11960966B2 (en) * 2022-05-16 2024-04-16 Abbyy Development Inc. Decoding of two-dimensional barcodes under unfavorable conditions

Also Published As

Publication number Publication date
CN117151131A (zh) 2023-12-01
EP4287066C0 (de) 2024-05-15
EP4287066A1 (de) 2023-12-06
US20230386068A1 (en) 2023-11-30
EP4287066B1 (de) 2024-05-15

Similar Documents

Publication Publication Date Title
JP7649339B2 (ja) 2次元マトリックスシンボルを復号するためのシステムおよび方法
US11878327B2 (en) Methods and arrangements for sorting items, useful in recycling
US10032058B2 (en) Decoding barcodes
US8152070B2 (en) Two-dimensional symbol and method for reading same
US5616905A (en) Two-dimensional code recognition method
US7949187B2 (en) Character string recognition method and device
KR102419540B1 (ko) 광학 코드의 모듈 크기의 결정
US9286501B2 (en) Method and device for identifying a two-dimensional barcode
CN108573184B (zh) 一种二维码定位方法、模块及计算机可读存储介质
US7050631B2 (en) Barcode detection system
US9652652B2 (en) Method and device for identifying a two-dimensional barcode
ES2985426T3 (es) Determinación del tamaño de módulo de un código óptico
CN113312937A (zh) 条形码识别方法及装置、存储介质、计算机设备
ES2991352T3 (es) Lectura de un código óptico unidimensional
US20030059099A1 (en) Optical character recognition system
CN118823789A (zh) 扫描设备文档图像自动倾斜校正的方法及装置
JP7427427B2 (ja) 解像度不足のシンボルをデコードするための方法と装置
JP7522168B2 (ja) コードリーダ及び光学コード読み取り方法
Bessmeltsev et al. High-speed OCR algorithm for portable passport readers
CN113033234B (zh) 条码检测方法及系统
JP3567904B2 (ja) 2次元コード読み取り装置
Dwinell et al. Robust recognition of 1D barcodes using Hough transform
JPH0425986A (ja) 文字読取装置及び文字読取方法
Fawzi Image based barcode reader