ES2214662T3 - Metodo y aparato para descodificar simbolos de codigo de barras para analisis independientes utilizando barras y espacios. - Google Patents

Metodo y aparato para descodificar simbolos de codigo de barras para analisis independientes utilizando barras y espacios.

Info

Publication number
ES2214662T3
ES2214662T3 ES98111652T ES98111652T ES2214662T3 ES 2214662 T3 ES2214662 T3 ES 2214662T3 ES 98111652 T ES98111652 T ES 98111652T ES 98111652 T ES98111652 T ES 98111652T ES 2214662 T3 ES2214662 T3 ES 2214662T3
Authority
ES
Spain
Prior art keywords
signal
gradient
blackening
whitening
gradients
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.)
Expired - Lifetime
Application number
ES98111652T
Other languages
English (en)
Inventor
Christopher E. Smith
Mihael Klancnik
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.)
United Parcel Service of America Inc
United Parcel Service Inc
Original Assignee
United Parcel Service of America Inc
United Parcel Service Inc
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 United Parcel Service of America Inc, United Parcel Service Inc filed Critical United Parcel Service of America Inc
Application granted granted Critical
Publication of ES2214662T3 publication Critical patent/ES2214662T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/1443Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/10851Circuits for pulse shaping, amplifying, eliminating noise signals, checking the function of the sensing device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/1465Methods for optical code recognition the method including quality enhancement steps using several successive scans of the optical code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Electromagnetism (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Image Processing (AREA)
  • Character Input (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Error Detection And Correction (AREA)
  • Image Analysis (AREA)

Abstract

LA INVENCION SE REFIERE A UN PROCEDIMIENTO PARA LEER UN SIMBOLO DE UN CODIGO DE BARRAS EN UNA IMAGEN COMPUESTA DE PIXELES, QUE INCLUYE LOS PASOS DE GENERAR UNA PRIMERA SEÑAL REPRESENTATIVA DE LAS TRANSICIONES DE OSCURO A CLARO EN CADA SIMBOLO, GENERAR UNA SEGUNDA SEÑAL REPRESENTATIVA DE LAS TRANSICIONES DE CLARO A OSCURO EN DICHO SIMBOLO, Y DECODIFICAR DICHO SIMBOLO DE ACUERDO CON DICHA PRIMERA Y DICHA SEGUNDA SEÑAL, PREFERIBLEMENTE SEGMENTANDO DICHA PRIMERA SEÑAL EN AL MENOS UN PRIMER SEGMENTO, SELECCIONANDO UNA PRIMERA POSICION EN DICHO PRIMER SEGMENTO, CORRESPONDIENTE A UNA TRANSICION DE OSCURO A CLARO, SEGMENTANDO DICHA SEGUNDA SEÑAL EN AL MENOS UN SEGUNDO SEGMENTO, Y SELECCIONANDO UNA SEGUNDA POSICION EN DICHO SEGUNDO SEGMENTO, CORRESPONDIENTE A UNA TRANSICION DE CLARO A OSCURO, MEDIANTE LO CUAL DICHAS POSICIONES PRIMARIAS Y SECUNDARIAS SE UTILIZAN COMO UNA BASE PARA GENERAR UNA SEÑAL RECONSTRUIDA RESULTANTE DEL PROCESO DE DECODIFICACION.

Description

Método y aparato para descodificar símbolos de código de barras para análisis independientes utilizando barras y espacios.
Antecedentes de la invención Ámbito de la invención
La presente invención se refiere al procesamiento de imágenes, en particular, a un método y un aparato para procesar las líneas de barrido de una imagen de píxeles de símbolos de código de barras para transformar las líneas de barrido y descodificar el símbolo.
Técnica anterior
Son muy conocidos los sistemas de barrido con láser unidimensional para leer los símbolos de código de barras. Son menos conocidos los sistemas de procesamiento de imágenes para localizar y descodificar símbolos de código de barras en imágenes de píxeles bidimensionales. La descodificación de los símbolos de código de barras requiere una medición precisa de las distancias de un borde a otro, en la cual un borde corresponde a una transición de barra a espacio o desde espacio a barra dentro del símbolo de código de barras.
Encierra una dificultad particular la lectura de símbolos de código de barras de densidad elevada en imágenes de facsímil, es decir, imágenes de símbolos de código de barras generadas por máquinas de telerreproducción y similares. Se debiera poder adaptar un lector de código de barras que pueda localizar y descodificar símbolos de código de barras en una imagen generada por una máquina de telerreproducción para que lea símbolos de código de barras en una imagen generada por cualquier otra fuente de imágenes tales como un escáner o una cámara.
La publicación de la Patente Europea Nº 0449645A1 describe como se obtienen datos de líneas de barrido de un símbolo de código de barras y se almacenan los datos de dichas líneas de barrido en una memoria para imágenes. Se desvían los datos de las líneas de barrido mediante la desviación real de los datos de las líneas de barrido en el interior de la memoria de imágenes y mediante la desviación virtual de los datos de las líneas de barrido utilizando un vector de equilibrio que se añada al emplazamiento de valores secuenciales extraídos de la memoria. Se toma la media de los puntos de muestra correspondientes desde las líneas desviadas de los datos de líneas de barrido.
Resumen de la invención
La invención es un método para procesar una imagen de píxeles de un símbolo de código de barras para descodificar un carácter tal como define la reivindicación 1. La invención se refiere asimismo a un aparato según la reivindicación 15.
Breve descripción de los dibujos
La figura 1 es un diagrama de bloques de funciones de un sistema de lectura de símbolos de código de barras;
La figura 2 es un diagrama de flujos de bloques del procesamiento llevado a cabo por el localizador de símbolos del sistema de la figura 1 para localizar símbolos de código de barras en imágenes de píxeles;
La figura 3 es un diagrama de flujo de bloques del procesamiento llevado a cabo por el localizador de símbolos de la figura 2 para localizar posibles símbolos de código de barras en imágenes binarias;
La figura 4 es una imagen de un símbolo de código de barras localizado por un localizador de símbolos de la figura 2;
La figura 5 es una imagen de un símbolo de código de barras cuya barra trasera está rota en dos segmentos;
La figura 6 es un diagrama de flujo de bloques de un método lento llevado a cabo por un generador de señales compuestas del sistema de la figura 1 para generar una señal compuesta de un símbolo de código de barras;
La figura 7 es una imagen de un símbolo de código de barras que representa el rectángulo de muestra sobre el cual el símbolo es analizado por los generadores de señales compuestas y de gradientes del sistema de la figura 1;
La figura 8 es una imagen de una porción del símbolo del código de barras de la figura 7 que muestra algunas de las líneas de barrido utilizadas por el generador de señales compuestas del sistema de la figura 1 cuando lleva a cabo el método lento de la figura 6;
La figura 9 es un diagrama de flujo de bloques de un método lento llevado a cabo por un generador de señales compuestas del sistema de la figura 1 para generar una señal compuesta de un símbolo de código de barras;
La figura 10 es una imagen del símbolo del código de barras de la figura 7 que muestra líneas de barrido utilizadas por el generador de señales compuestas del sistema de la figura 1 al llevar a cabo el método rápido de la figura 9;
La figura 11 es un diagrama de flujo de bloques del procesamiento llevado a cabo por el formador de umbrales de señales compuestas del sistema de la figura 1 para formar un umbral para la señal compuesta de un símbolo de código de barras;
La figura 12 es la representación binaria de parte de la señal del símbolo de código de barras con una barra espuria;
La figura 13 es la representación binaria de parte de la señal del símbolo de código de barras con una barra o un espacio espurio;
La figura 14 es un diagrama de flujo de bloques del procesamiento llevado a cabo por el descodificador de señales compuestas del sistema de la figura 1 para descodificar los caracteres de un símbolo de código de barras de Código 39;
La figura 15 es un diagrama de flujos de bloques del procesamiento llevado a cabo por el generador de señales de gradientes del sistema de la figura 1 para generar las señales de gradientes de blanqueamiento y de ennegrecimiento para un símbolo de código de barras; y
La figura 16 es un diagrama de flujo de bloques del procesamiento llevado a cabo por el procesador de señales de gradientes del sistema de la figura 1 para tratar las señales de gradientes de blanqueamiento y de ennegrecimiento.
Descripción detallada de la invención
Con referencia a la figura 1, se representa un diagrama de bloque de funciones del sistema de lectura de símbolos de código de barras 100. El sistema 100 localiza y descodifica los símbolos de código de barras con posiciones y orientaciones desconocidas en imágenes de píxeles bidimensionales. El sistema 100 puede estar destinado a la localización y descodificación de símbolos de código de barras en imágenes binarias o en imágenes en escalas de grises.
La entrada de datos 102 del sistema 100 recibe los datos de una imagen de píxeles y el localizador de símbolos 104 localiza los símbolos de código de barras contenidos en la imagen de píxeles. El sistema 100 trata de descodificar cada símbolo de código de barras localizado en la imagen de píxeles mediante dos procesos paralelos.
Según uno de los procesos, el generador de señales compuestas 106 genera una señal compuesta que corresponde al símbolo del código de barras. El formador de umbrales 108 de la señal compuesta forma entonces umbrales y filtra la señal compuesta para generar una señal binaria que corresponda a la señal compuesta. El descodificador de señales compuestas 110 descodifica entonces el símbolo del código de barras descodificando la señal binaria. Si el descodificador de señales 110 descodifica con éxito el símbolo del código de barras, el descodificador 110 transmite la señal descodificada al selector de salida 118. En caso contrario, el descodificador de señales 110 transmite una señal al selector de salida 118 que indique que no se ha logrado la descodificación.
Según el otro proceso para descodificar cada símbolo de código de barras localizado, el generador de señal de gradientes 112 genera dos señales de gradientes desde el símbolo de código de barras localizado. El procesador de señal de gradientes 114 procesa las dos señales de gradientes para generar una señal binaria reconstruida. El descodificador de señal de gradientes 116 descodifica entonces el símbolo de código de barras mediante la descodificación de la señal reconstruida. Si el descodificador de señales 116 descodifica con éxito el símbolo del código de barras, el descodificador 116 transmite la señal descodificada al selector de salida 118. En caso contrario, el descodificador de señales 116 transmite una señal al selector de salida 118 que indica que no se ha logrado la
descodificación.
El descodificador de señales compuestas 110 y el descodificador de señal de gradientes 116 realiza algoritmos de descodificación idénticos en las señales binarias recibidas del formador de umbrales de señal compuesta 108 y del procesador de señal de gradientes 114, respectivamente.
El selector de salida 118 recibe las señales descodificadas de los descodificadores de señal 110 y 116 y selecciona la salida apropiada para la transmisión de salida de datos 120. Si uno o ambos descodificadores de señales 110 y 116 descodifican satisfactoriamente el símbolo del código de barras, el selector de salida 118 transmite la señal descodificada a la salida de datos 120. En caso contrario, no se descodifica el símbolo del código de barras y el selector de salida 118 transmite una señal adecuada a la salida de datos 120.
Localización de símbolos de código de barras
Con referencia a la figura 2, se representa un diagrama de flujo de bloques para el procesamiento llevado a cabo por el localizador de símbolos 104 del sistema 100. El localizador de símbolos 104 localiza un símbolo de código de barras en una imagen de píxeles mediante la búsqueda de una zona tranquila de símbolo de código de barras que esté seguida por un número mínimo de transiciones entre barras de símbolos y espacios. En cada final de símbolo de código de barras en una imagen de píxeles se encuentra una zona de píxeles claros que se llama zona tranquila. El propio símbolo está comprendido en una secuencia de barras oscuras separadas por espacios claros.
Según un modo de realización preferido, un medio 202 del selector de símbolos 104 selecciona una nueva línea de búsqueda en la imagen de píxeles. Una línea de búsqueda puede ser una fila o una columna de la imagen de píxeles. Los medios 202 pueden seleccionar líneas de búsqueda empleando la búsqueda binaria tal como se describe en la Patente US nº 5.348.028 titulada "Métodos y aparatos para detectar y descodificar símbolos de código de barras", publicada el 30 de agosto de 1994 que es propiedad actualmente del presente cesionario. Un sistema adecuado para seleccionar las líneas de búsqueda utilizando una búsqueda binaria está descrito en la sección de la solicitud 910 titulada "Detección y descodificación de símbolos de código de barras". En general, como un símbolo de código de barras normalmente extiende múltiples filas y columnas en la imagen de píxeles, los medios 202 de preferencia seleccionan filas en una secuencia que emplee un amplio dibujo que se vuelve más fino a medida que se desarrolla el
proceso.
La Tabla I presenta una secuencia preferida para seleccionar filas (o, de forma análoga, columnas) en una imagen de píxeles que tenga por ejemplo 2048 columnas y 4096 filas. En la secuencia preferida, la selección de filas como líneas de búsqueda se inicia en la fila número 64 con un tamaño de paso de 64. Después de seleccionar las filas (64, 128, 192 ... 4032, 4096) la secuencia vuelve a la fila número 32 con el mismo tamaño de paso de 64 filas. La selección continúa como se indica en la Tabla I. Después de seleccionar las filas (4, 12, 20 ...4084, 4092) la secuencia total habrá selecciona cada cuatro filas en la imagen sin repetir ninguna fila dos veces.
TABLA I
Tamaño de paso de fila Número de fila de inicio Secuencia de filas
64 64 (64, 128 ... 4096)
64 32 (32, 96 ... 4064)
32 16 (16, 48 ... 4080)
16 8 (8, 24 ... 4088)
8 4 (4, 12 ... 4092)
Una secuencia de filas de búsqueda seleccionadas tales como en la Tabla I normalmente aumenta la velocidad y eficiencia del sistema 100. Los expertos en la materia entenderán que dicha secuencia puede variar dependiendo de las características de las imágenes de píxeles a procesar.
Si la imagen de píxeles contiene un numero conocido de símbolos de código de barras, la secuencia de búsqueda termina después de que el número requerido de símbolos de código de barras haya sido localizado y descodificado. Asimismo, el sistema 100 de preferencia mantiene localizadas las zonas de la imagen que contienen símbolos de código de barras que ya hayan sido localizados y descodificados. El localizador de símbolos 104 de preferencia omite aquellas zonas que ya hayan sido procesadas.
Los medios 204 empiezan buscando a lo largo de una línea de búsqueda seleccionada un posible (o potencial) símbolo de código de barras a partir de un borde de inicio de la imagen de píxeles. Cuando los símbolos del código de barras que se espera encontrar en la imagen de píxeles tienen una longitud mínima conocida, los medios 204 de preferencia no buscan la longitud total de cada línea de búsqueda seleccionada. Como el sistema 100 solamente descodifica los símbolos de código de barras "completos", los medios 204 omiten una porción de cada línea de búsqueda seleccionada adyacente al borde de parada de la línea de búsqueda. La porción de cada línea de búsqueda que se omite corresponde en distancia al símbolo de código de barras más corto esperado.
Los medios 204 reconocen un posible símbolo de código de barras como una secuencia continua de N1 píxeles "claros" (que corresponden a una zona tranquila esperada) seguida por una secuencia de N2 transiciones entre píxeles "claros" y "oscuros" (que corresponden a transiciones entre barras y espacios esperados), donde N1 y N2 son los umbrales primero y segundo especificados, respectivamente).
Los medios 204 pueden buscar posibles símbolos de código de barras en imágenes binarias o en imágenes en escala de grises. En las imágenes binarias, se puede definir que los píxeles claros tengan un valor de 1 y los píxeles oscuros tengan un valor de 0. En las imágenes en escala de grises, se puede definir que un píxel que tenga un valor mayor que un tercer umbral es un píxel claro; en caso contrario, es un píxel oscuro.
Los medios 204 funcionan mediante la búsqueda primeramente de una posible zona tranquila de símbolo de código de barras. Los medios 204 detectan una posible zona tranquila de símbolos de código de barras cuando encuentran una secuencia continua de píxeles claros N1 a lo largo de la línea de búsqueda seleccionada. En cuanto se haya detectado una posible zona tranquila de símbolo de código de barras, los medios 204 buscan a continuación a lo largo de la línea de búsqueda seleccionada una secuencia de transiciones de claro /oscuro N2, donde cada transición claro/oscuro corresponde a un borde de una barra en el posible símbolo de código de barras (es decir, una transición entre una barra y un espacio del símbolo). El término "transición claro/oscuro" se refiere colectivamente a ambas transiciones de claro a oscuro y de oscuro a claro.
Después de localizar el primer píxel oscuro siguiente a la posible zona tranquila, los medios 204 comprueban si dicho píxel oscuro está contenido en un símbolo de código de barras que ya haya sido localizado y descodificado por el sistema 100. Si así fuera, el posible símbolo de código de barras es rechazado pues ya había sido procesado.
Asimismo, mientras cuentan el número de transiciones claro/oscuro, los medios 204 comprueban el ancho de cada posible barra y espacio. Si cualquier posible barra/espacio es demasiado ancho (es decir, si excede un umbral especificado máximo de barra/espacio) se rechaza el posible símbolo y se inicia una nueva búsqueda de una posible zona tranquila de símbolo de código de barras.
Después de localizar un posible símbolo de código de barras a lo largo de una línea de búsqueda seleccionada (es decir, después de localizar una posible zona tranquila seguida de un número mínimo de posibles barras y espacios), los medios 204 comprueban el posible símbolo repitiendo la búsqueda de zona tranquila y la transición de barra/espacio contando a lo largo de una o más filas/columnas vecinas en la imagen de píxeles.
Búsqueda de imágenes binarias basadas en bytes
Con referencia ahora a la figura 3, se representa un diagrama de flujo de bloques del procesamiento llevado a cabo por los medios 204 del localizador de símbolos 104 para localizar posibles símbolos de código de barras cuando la imagen de píxeles es una imagen binaria. En una imagen binaria, cada píxel está representado por un sólo bit, donde, por ejemplo, un "1" corresponde a un píxel claro y un "0" corresponde a una píxel oscuro. Los medios 204 realizan una búsqueda de zonas tranquilas basada en los bytes y el recuento basado en los bytes de transiciones de barra/espacio, donde ocho píxeles binarios consecutivos en la imagen de píxeles son tratados como un solo byte de los datos de imagen.
Los medios 302 buscan a lo largo de la línea de búsqueda seleccionada un byte cada vez. Un byte que corresponda a ocho píxeles, todos los cuales localizados en una posible zona tranquila, tendrá normalmente ocho bits (es decir, píxeles) igual a 1. De este modo, si la longitud mínima de la zona tranquila equivale a 32 píxeles, entonces una línea de búsqueda a través de una zona tranquila tendrá al menos tres bytes consecutivos que son todos de 1. Si los medios 302 detectan tres bytes de zona tranquila consecutivos (es decir todos de 1), entonces se localiza una posible zona tranquila y los medios 304 ordenan que el proceso continúe en los medios 306. En caso contrario, el proceso vuelve a los medios 302 para seguir con la búsqueda basada en bytes de una posible zona tranquila.
Los medios 306 realizan un recuento basado en bytes de las transiciones de barra/espacio en el posible símbolo de código de barras. Cada byte que represente barras y espacios en un posible símbolo de código de barras facilita información específica con relación al número de transiciones de claro/oscuro en una porción del símbolo. Por ejemplo, el byte "01100110" contiene cuatro transiciones, dos de oscuro a claro (es decir, de 0 a 1) y dos de claro a oscuro (es decir, de 1 a 0). Aun más, si el último bit del byte anterior era "1", entonces existe una transición de claro a oscuro entre el anterior byte y el actual byte. De forma similar, si el primer bit en el próximo byte es un "1" entonces existe una transición de oscuro a claro entre el byte actual y el siguiente byte.
Los medios 306, de preferencia emplean dos tablas de comprobación para realizar el recuento basado en los bytes de las transiciones barra/espacio, una tabla se usa cuando el píxel anterior (es decir, el último bit del anterior byte) es un "1" y la otra tabla se utiliza cuando el anterior píxel es un "0". Cada tabla tiene 256 entradas, una para cada posible combinación de píxeles en un byte de ocho bits.
Cada entrada de cada tabla representa tres valores: (a) el número de píxeles delanteros (más a la izquierda) que son del mismo "color" (es decir,negros o blancos) que el píxel anterior, (b) el número de píxeles traseros (más a la derecha) (incluyendo el último píxel) que son del mismo color que el ultimo píxel del byte, y (c) el número de transiciones dentro del byte de ocho píxeles (incluyendo cualquier transición desde el píxel anterior).
Por ejemplo, en la tabla (anterior píxel = 1), el byte "01100110" tiene (a) "0" como número de píxeles delanteros que son del mismo color que el píxel anterior, (b) "1" como número de píxeles traseros que son del mismo color que el último píxel, y (c) "5" como el número de transiciones dentro del byte. En la tabla (píxel anterior = 0), el byte "01100110" tiene (a) "1" como número de píxeles delanteros que tienen el mismo color que el bit anterior. (b) "1" como el número de píxeles traseros que tienen el mismo color que el último píxel, y (c) "4" como el número de transiciones dentro del byte.
Los medios 306 utilizan los valores derivados de las entradas de la tabla para contar el número de transiciones y para determinar el tamaño de cada barra y espacio. Los medios 306 mantienen un recuento dinámico del número de transiciones a medida que procesa cada secuencia de bytes de imagen a lo largo de una línea de búsqueda seleccionada. Los medios 306 también determinan igualmente si alguna barra o espacio excede los umbrales especificados manteniendo un recuento dinámico del tamaño de barra/espacio actual. Los medios 306 realizan estos cómputos utilizando la información derivada de las dos tablas.
Por ejemplo, suponen que una secuencia de bytes de imagen a lo largo de una línea de búsqueda seleccionada es ("00011011", "01101101", "11001100", "00000111"). Suponen asimismo que el píxel anterior para el primer byte en la secuencia era "0". Después del primer byte, el recuento dinámico del número de transiciones es 3. El segundo byte añade otras 6 transiciones al recuento dinámico, por un total de 9. El tercer byte añade otras 3 transiciones, por un total de 12. El cuarto byte añade otra 1 transición por un total de 13.
A medida que se procesa cada byte, los medios 308 determinan si alguna barra o espacio es demasiado ancho mediante el incremento y el control continuos de contador de barra actual/tamaño de espacio. Para cualquier píxel determinado a lo largo de una línea de búsqueda seleccionada, este contador de tamaños representa el número de píxeles consecutivos que comparten el mismo color que el píxel dado y que es inmediatamente anterior al píxel dado a lo largo de la línea de búsqueda. Si el ancho de una barra/espacio es mayor que un ancho máximo especificado (es decir, si el contador de tamaños excede un determinado umbral) entonces el posible símbolo es rechazado y los medios 308 dirigen el proceso de vuelta a los medios 302 para reiniciar la búsqueda basada en bytes de una posible zona tranquila. En caso contrario, el proceso continúa hasta los medios 310.
Con referencia de nuevo al ejemplo de secuencia de bytes de imagen descrita en dos párrafos más arriba, cuando el color cambia de claro a oscuro entre el final del primer byte y el principio del segundo byte, el contador de tamaño de barra actual/tamaño de espacio es reajustado a cero en este punto a lo largo de la línea de búsqueda. Cuando se procesa el cuarto byte, el número de píxeles traseros del mismo color (2) a partir del tercer byte aumenta por el número de píxeles delanteros del mismo color que el píxel anterior (5) para conseguir la actual barra/tamaño de espacio de 7 píxeles.
Si en una aplicación particular, el ancho máximo especificado de barra/espacio es más grande que cinco píxeles, entonces se aplica la discusión que antecede. No obstante, si el ancho máximo especificado de barra/espacio es de cinco píxeles o inferior, entonces puede que sea necesario un procesamiento especial. Por ejemplo, si el ancho máximo de barra es de cinco píxeles, entonces el byte "10000001" corresponderá a un ancho de barra de seis píxeles. Los técnicos en la materia entenderán que esta situación puede arreglarse manipulando las entradas de las dos tablas de dicho byte. Por ejemplo, si los números de píxeles delanteros del mismo color que el píxel anterior almacenados en ambas tablas para el byte "10000001", fueran almacenados como seis, entonces el procesamiento antes descrito solucionaría esta particular situación.
A medida que se procesa cada byte, los medios 310 determinan si el recuento dinámico del número de transiciones excede de un umbral determinado, por ejemplo 30. Si así fuera, entonces se reconoce un posible símbolo de código de barras y continúa el procesamiento hasta los medios 312; en caso contrario, el proceso vuelve a los medios 306 para seguir con el recuento de transiciones basado en bytes.
El proceso alcanza los medios 312 cuando se reconoce un posible símbolo de código de barras. Los medios 312 comprueban el posible símbolo mediante la repetición de la búsqueda de la zona tranquila basada en bytes y el recuento de transición de los medios 302 a través de los medios 310 a lo largo de líneas de búsqueda vecinas seleccionadas. Los medios 312, de preferencia seleccionan tres líneas de búsqueda vecinas paralelas a cada lado de la línea de búsqueda original.
Cuando la línea de búsqueda original es una fila de imagen, las líneas de búsqueda vecinas son de preferencia cada segunda o tercera fila. Por ejemplo, si la fila 40 es la línea de búsqueda original, los medios 312 pueden seleccionar ahora las filas 31, 34, 37, 43, 46, 43 como las seis líneas de búsqueda vecinas.
Los medios 312 funcionan en primer lugar identificando el píxel a lo largo de la línea de búsqueda original que corresponde al inicio del posible símbolo. Este píxel es el primer píxel oscuro que sigue a la posible zona tranquila. Basándose en este primer píxel oscuro, los medios 312 seleccionan una columna de inicio en la imagen de píxeles para cada línea de búsqueda vecina. Cuando se realiza la búsqueda a lo largo de líneas de búsqueda de izquierda a derecha, se sitúa la columna de inicio en la izquierda del primer píxel oscuro a una distancia equivalente a la longitud de al menos dos zonas tranquilas mínimas. Por ejemplo, si el primer píxel oscuro a lo largo de la línea de búsqueda original está en la columna 1000 y si el tamaño mínimo de una zona tranquila es de 32 píxeles, entonces los medios 312 empezarán la búsqueda en la columna 936 de cada línea de búsqueda
vecina.
De forma similar, los medios 312 seleccionan la columna final de cada línea de búsqueda vecina desplazándose desde el primer píxel oscuro hacia la derecha a una distancia equivalente a la longitud del máximo símbolo de código de barras esperado más dos zonas tranquilas mínimas. Siguiendo con el ejemplo anterior, si la longitud máxima del símbolo es de 300 píxeles, entonces los medios 312 finalizarán la búsqueda en la columna (1000 + 300 + 64) ó 1364 de cada línea de búsqueda vecina. En un modo de realización preferido, se verifica un posible símbolo de código de barras si al menos tres de las seis líneas de búsqueda vecinas contienen el mismo posible símbolo. Para que una línea de búsqueda vecina contenga el mismo posible símbolo, el primer píxel oscuro de la línea de búsqueda vecina debe estar en una columna dentro de la mitad de una zona tranquila mínima partiendo de la columna que contenía el primer píxel negro a lo largo de la línea de búsqueda original.
Los técnicos en la materia entenderán que los medios 312 realizan selecciones análogas cuando las líneas de búsqueda son columnas. Entenderán igualmente que el procedimiento preferido de selección de líneas de búsqueda vecinas está destinado a procesar imágenes que tengan símbolos de código de barras de orientación desordenada. Los técnicos en la materia reconocerán que la búsqueda de zona tranquila basada en bytes y el recuento de transiciones pueden implantarse en sistemas que tengan otra cifra distinta de ocho bits (por ejemplo, píxeles) por byte.
Con referencia de nuevo a la Figura 2, si un símbolo de código de barras es localizado y verificado, los medios 206 del localizador de símbolos 104 dirigen el proceso al localizador de ángulos 208; en caso contrario, el proceso sigue hasta los medios 214.
El modo de realización particular de búsqueda basada en bytes para símbolos de código de barras en imágenes de píxeles descrito en esta sección de la presente descripción, pertenece al procesamiento de imágenes de píxeles binarias únicamente. Los técnicos en la materia entenderán que todas las demás particularidades del sistema 100 descrito en la presente descripción pertenezcan al procesamiento de imágenes de píxeles binarias o de imágenes en escala de
grises.
Localización de ángulos de un símbolo de código de barras
El localizador de ángulos 208 del localizador de símbolos 104 localiza los cuatro ángulos de un símbolo de código de barras localizado por los medios 204. El localizador de ángulos 208 recibe de los medios 206 las coordenadas del primer píxel oscuro a lo largo de la línea de búsqueda original y aplica un algoritmo de localización de ángulos. En un modo de realización preferido, el algoritmo de localización de ángulos implantado por el localizador 208 es similar al que se describe en la sección titulada "Localización de los cuatro ángulos de un símbolo de código de barras" y las tres secciones inmediatamente siguientes de dicha sección en la patente US 5.343.029.
Con referencia ahora a la figura 4, hay interferencias en una imagen de símbolo de código de barras 400 localizada por los medios 204 donde el píxel 402 es el primer píxel oscuro a lo largo de la línea de búsqueda original. Resumiendo, el algoritmo de localización de ángulos descrito en la Patente US Nº 5.343.029 comprende las fases siguientes:
(1)
"Arrastrandose" en dirección de la agujas de un reloj a lo largo del borde 408 de la barra delantera 410 del símbolo de código de barras 400 desde el primer píxel oscuro 402 hasta que se detecta el final de la barra 410. El final de la barra es detectado como un cambio en la dirección de arrastre mayor que un umbral especificado. Dicho cambio corresponde al arrastre alrededor de un ángulo en lugar de a lo largo de una línea. Esta fase localiza el ángulo superior izquierdo 408 del símbolo 400;
(2)
Arrastrarse en dirección opuesta a las agujas de un reloj a lo largo de la barra delantera 410 para localizar el ángulo inferior izquierdo 426 del símbolo 400;
(3)
Proyectar la línea perpendicular 412 desde el píxel del centro 404 de la barra delantera 410 a través del símbolo 400 tal como se determina desde los ángulos 408 y 426;
(4)
Buscar, a lo largo de la línea perpendicular 412 de izquierda a derecha empezando en el píxel del centro 404 la zona tranquila 418, en el extremo más alejado del símbolo 400;
(5)
Buscar a lo largo de la línea perpendicular 412 de derecha a izquierda empezando en la zona tranquila 418 el último píxel oscuro 420 en el extremo más alejado del símbolo 400;
(6)
Arrastrarse en dirección opuesta a las agujas de un reloj a lo largo del borde exterior 422 de la barra trasera 414 para localizar el ángulo superior derecho 416 del símbolo 400, y
(7)
Arrastrarse en dirección opuesta a las agujas de un reloj a lo largo de la barra trasera 414 para localizar el ángulo inferior derecho 424 del símbolo 400.
Además de estas siete fases del algoritmo de localización de ángulos descrito en la aplicación 910, el localizador de ángulos 208 comprueba de preferencia la precisión de los ángulos localizados realizando las siguientes fases adicionales, no descritas en la aplicación 910:
(8)
Comprobar que el segmento de línea definido por el primer píxel oscuro 402 y el ángulo 408 y el segmento de línea definido por el primer píxel oscuro 402 y el ángulo 426 son suficientemente colineales;
(9)
Comprobar que el segmento de línea definido por el último píxel oscuro 420 y ángulo 416 y el segmento de línea definido por el último píxel oscuro 420 y ángulo 424 estén suficientemente colineales; y
(10)
Comprobar que el segmento de línea definido por los ángulos 408 y 426 y el segmento de línea definido por los ángulos 416 y 424 son suficientemente paralelos.
El posible símbolo de código de barras es rechazado si los segmentos de línea correspondientes de las fases (8), (9) o (10) no están suficientemente paralelos. Dos segmentos de línea están suficientemente paralelos si la diferencia entre sus inclinaciones se encuentra dentro de un umbral especificado. Como los segmentos de líneas correspondientes (8) y (9) comparten un punto común (es decir, primer píxel oscuro 402 y un último píxel oscuro 420, respectivamente), la prueba del paralelismo equivale a la prueba de la colinealidad. El localizador de ángulos 208 determina las coordenadas (fila, columna) en la imagen de píxeles de los cuatro ángulos localizados 408, 426, 416 y 424 del símbolo de código de barras 400.
"Ajuste" del símbolo localizado
Después de que el localizador de ángulos 208 localice cuatro ángulos para el símbolo de código de barras, los medios 210 corrigen el emplazamiento de al menos uno de los cuatro ángulos. Los cuatro ángulos seleccionados por el localizador de ángulos 208 define un cuadrilátero. No obstante, se define idealmente un símbolo de código de barras como un rectángulo - un tipo particular de cuadrilátero. Por uno o varios motivos, el cuadrilátero definido por los cuatro ángulos identificados por el localizador de ángulos 208 puede no ser un rectángulo.
Por ejemplo, si se rompe la barra delantera o trasera en dos o más segmentos en la imagen, puede que un lado del cuadrilátero localizado sea más corto que el lado opuesto. El ruido de circuito en la transmisión de un facsímil codificado de longitud de recorrido puede dar por resultado dichas roturas de las barras. Dicho ruido de circuito puede igualmente dar por resultado prolongaciones en las barras. En cualquiera de los casos, el emplazamiento de los ángulos puede ser inexacto. Alternativamente, la etiqueta que lleva realmente el símbolo de código de barras representado puede estar materialmente deteriorada de modo que las barras no estén completas.
Con referencia ahora a la Figura 5, se representa una imagen de un símbolo de código de barras en el cual la barra trasera está rota en dos segmentos. El localizador de ángulos 208 localiza los ángulos A, B, C y D que tienen coordenadas (Xa, Ya), (Xb, Yb), (Xc, Yc) y (Xd, Yd), respectivamente. Los medios 210 corrigen el emplazamiento de al menos uno de los ángulos localizados construyendo un rectángulo "mejor" basado en al menos dos de los otros cuatro ángulos localizados.
Para cada uno de los cuatro ángulos, los medios 210 computan un valor de error E. Por ejemplo, para el ángulo B, el valor de error Eb está determinado por:
1
donde AC es la distancia entre los ángulos A y C, AB es la distancia entre los ángulos A y B, y BC es la distancia entre los ángulos B y C. Cuanta mayor sea la desviación de un ángulo de noventa grados en el ángulo B, mayor será el valor de error Eb. Utilizando ecuaciones similares, los medios 210 calculan igualmente los valores de error Ea, Ec y Ed para los ángulos A, C y D, respectivamente.
Los medios 210 seleccionan el ángulo que tenga el mayor error respecto al ángulo a corregir. Para el símbolo de la Figura 5, el valor de error Eb es el mayor de los cuatro valores de error y los medios 210 seleccionan el ángulo B para la corrección. Se define el emplazamiento corregido para el ángulo B mediante dichas coordenadas (Xb'; Yb') para las cuales el valor de error de la Ecuación (1) es cero. Normalmente, existen dos únicas soluciones a la Ecuación (1). Los medios 210 seleccionan la solución que más se acerque al ángulo localizado inicialmente.
Los técnicos en la materia entenderán que se pueden utilizar los medios 210 para corregir el emplazamiento de al menos dos ángulos. Cuando, como en el ejemplo anterior, los medios 210 utilizan los ángulos A y C para corregir el emplazamiento del ángulo B, los medios 210 pueden utilizar igualmente los ángulos A y B para corregir el emplazamiento del ángulo D, si se desea, utilizando una ecuación análoga a la Ecuación (1). En general, los medios 210 pueden corregir cualquiera de los dos ángulos diagonales utilizando los dos ángulos restantes.
Los técnicos en la materia entenderán que son métodos alternativos para corregir los emplazamientos de uno o más ángulos. Estos métodos alternativos pueden confiar en una o más de las siguientes propiedades de los rectángulos (es decir, la forma ideal del símbolo de código de barras):
- Los lados opuestos de un rectángulo son paralelos;
- Los lados opuestos tienen la misma longitud;
- Las diagonales tienen la misma longitud;
- Los ángulos tienen 90 grados; y
- Las diagonales y sus lados correspondientes cumplen el teorema de Pitágoras.
Además, los medios 210 realizan pruebas de geometría para comprobar que el tamaño y la forma del símbolo de código de barras ajustados se encuentran dentro de los umbrales especificados. Estas pruebas geométricas se basan en los emplazamientos relativos de los cuatro ángulos del símbolo.
Después de que los medios 210 ajusten el símbolo, los medios 212 transmiten las coordenadas (fila, columna) de los cuatro ángulos del símbolo "corregido" al generador de señales compuestas 106 y al generador de señal basada en gradientes 112 de la figura 1. Continúa entonces el procesamiento del localizador de símbolos 104 hasta los medios 214 para determinar si se ha alcanzado el final de la línea de búsqueda actual. Si así fuera, el proceso vuelve a los medios 202 para seleccionar una nueva línea de búsqueda. En caso contrario, el procesamiento vuelve a los medios 204 para continuar la búsqueda a lo largo de la línea de búsqueda actual. El localizador de símbolo 104 continua su intento de localizar símbolos de código de barras hasta que la secuencia de la línea de búsqueda especificada haya finalizado o que se haya realizado algún otro tipo de parada.
Método lento para generar señales compuestas de símbolos de código de barras
Con referencia ahora a la figura 6, se representa un diagrama de flujo de bloques de un método lento que realiza el generador de señales compuestas 600. El generador de señales compuestas 600 es un ejemplo de generador de señales compuestas 106 del sistema 100 representado en la figura 1, en el cual el generador 600 realiza el método lento para generar señales compuestas de los símbolos de código de barras. Se realiza el barrido del símbolo de código de barras a lo largo de múltiples líneas de barrido.
Se determinan las líneas de barrido a partir de los ángulos de símbolos determinados por el localizador de símbolos 104. Para el método lento de generación de señales compuestas, cada línea de barrido está paralela a las barras y espacios del símbolo. Además, líneas de barrido sucesivas están separadas entre sí por una distancia inferior al ancho de un píxel. Cuando un símbolo de código de barras no esté alineado con las filas y columnas de la imagen de píxeles, las líneas de barrido no corresponderán a las filas o columnas de la imagen. De este modo, las líneas de barrido del método lento de generación de señales compuestas son generalmente diferentes de las "líneas de búsqueda" utilizadas por el localizador de símbolos 104 que corresponde siempre a una fila o a una columna de la imagen de
píxeles.
Para cada línea de barrido, el generador 600 saca la media de las intensidades de píxeles a lo largo de la línea de barrido para generar un píxel en una señal compuesta unidimensional. Al hacer que la distancia entre las líneas de barrido sucesivas sea inferior a un píxel, el generador 600 realiza un sobremuestreo de la imagen de píxeles cuando genera la señal compuesta.
Con referencia ahora a la figura 7, se representa una imagen de símbolo de código de barras 700 procesada por el generador de señales compuestas 600. El generador 600 recibe las coordenadas de los ángulos 702, 704, 706 y 708 del localizador de símbolos 104. Para evitar errores de muestreo corrientes en los extremos de las barras de símbolos, el generador 600 identifica un rectángulo de muestra 710 definido por los ángulos 712, 714, 716 y 718. El rectángulo de muestra 710 está definido porque es ligeramente inferior (por ejemplo, el 3%) que la parte superior del símbolo 700, ligeramente más alto ( por ejemplo, 3%) que la parte inferior del símbolo 700, y ligeramente más largo que el símbolo 700 (por ejemplo, de una distancia especificada en cada zona tranquila). Las longitudes de cada línea de barrido están entonces definidas por los límites del rectángulo de muestra 710 y, como resultado, cada línea de barrido (que, por definición es paralela a las barras y espacios del símbolo 700) se inicia por encima de la parte inferior y por debajo de la parte superior del símbolo 700.
Con referencia de nuevo a la figura 6, los medios 602 del generador de señales compuestas 600 seleccionan una secuencia de líneas de barrido paralelas basada en el rectángulo de muestra 710. Los medios 602 empiezan con la línea de barrido definida por los ángulos 712 y 718 en un extremo del rectángulo de la muestra 710 y seleccionan cada nueva línea de barrido mediante la desviación de la línea de barrido anterior hacia el otro extremo del rectángulo de muestra 710 en una distancia especificada donde la distancia especificada es inferior al ancho de un píxel.
Con referencia ahora a la figura 8, se representa una porción del símbolo de código de barras 700 con varias líneas de barrido 802 superpuestas en el mismo. Para cada línea de barrido 802, los medios 604 barren la imagen del símbolo a lo largo de la línea de barrido seleccionada en ese momento y los medios 606 generan el valor medio de intensidad de los píxeles que descansan a lo largo de dicha línea de barrido. Los medios 608 salvan el valor medio como píxel en una señal compuesta unidimensional. Los medios 610 determinan si la línea de barrido actual es la última línea de barrido, es decir, si se ha alcanzado el extremo opuesto del rectángulo de muestra 710 definido por los ángulos 714 y 716. En caso contrario, entonces el procesamiento vuelve a los medios 602 para seleccionar la siguiente línea de barrido. En caso contrario, los medios 612 transmiten la señal compuesta completa al formador de umbrales 108 de señales compuestas del sistema 100 para seguir procesando. El procesamiento del formador de umbrales 108 está descrito más adelante en esta descripción en relación con la figura 11.
Método rápido para generar señales compuestas de símbolos de código de barras
Con referencia ahora a la figura 9, se representa un diagrama de flujo de bloques de un método rápido realizado por el generador de señales compuestas 900. El generador de señales compuestas 900 es un ejemplo del generador de señales compuestas 106 del sistema 100 representado en la figura 1, donde el generador 900 esta destinado a llevar a cabo el método rápido para generar señales compuestas de símbolos de código de barras. El método rápido es una alternativa al método lento anteriormente descrito en la presente descripción en relación con las figuras 6, 7 y 8.
Según el método rápido, el generador 900 selecciona un conjunto de líneas de barrido de las filas/columnas de la imagen de píxeles que cruzan el símbolo de código de barras. Hay que observar que, para el método rápido, las líneas de barrido corresponden siempre a una fila o a una columna de la imagen de píxeles. Tal como se ha descrito anteriormente, en la presente descripción, en relación con la figura 6, para los métodos lentos, no se necesita que las líneas de barrido coincidan, y generalmente no coincidirán, con una fila o columna de la imagen de píxeles.
Para cada línea de barrido, el generador 900 gira y estira los datos de la línea de barrido, utilizando los datos estirados, girados, el generador 900 actualiza un vector compuesto unidimensional y un vector de recuento unidimensional. Después de que todas las líneas de barrido seleccionadas hayan sido procesadas, el generador 900 "normaliza" el vector unidimensional para que dé una señal compuesta unidimensional para el símbolo del código de barras.
Con referencia ahora a la figura 10, se representa una imagen del símbolo de código de barras de la figura 7 con líneas de barrido 1-6 utilizadas por el generador de señales compuestas 900 para llevar a cabo el método rápido de generación de una señal compuesta superpuesta sobre el mismo. Los medios 902 seleccionan una secuencia de líneas de barrido. Tal como se representa en la figura 10, cada línea de barrido cruza el símbolo de código de barras y es parte de una fila (o columna) de la imagen de píxeles. Los medios 902 no necesitan seleccionar cada fila (o columna) que cruce el símbolo de código de barras. De este modo, pueden separarse las líneas de barrido sucesivas por más de un píxel. Además, una línea de barrido no necesita cruzar la totalidad del símbolo de código de barras. Por ejemplo, en la figura 10, solamente las líneas de barrido 3 y 4 cruzan la totalidad del símbolo.
Los medios 904 giran y estiran los datos de cada línea de barrido actual. El ángulo a través del cual los medios 904 giran los datos de la línea de barrido, está dictado por la orientación del símbolo de código de barras tal como se indica mediante los cuatro ángulos del símbolo identificados por el localizador de símbolos 104.Los técnicos en la materia entenderán que dicha rotación alinea efectivamente las barras del símbolo del código de barras con las columnas (o filas) de una imagen girada.
El grado hasta el cual los medios 904 estiran los datos de la línea de barrido está determinado por el porcentaje de sobremuestreo, un valor especificado de parámetro, por ejemplo, tres. El estiramiento de los datos en el método rápido es similar a la selección de líneas de barrido en el método lento que están separadas por distancias de subpíxeles. Tanto el método rápido como el lento están destinados al sobremuestreo de los datos de imágenes de píxeles originales.
Las tablas II a VI presentan un ejemplo del procesamiento llevado a cabo por el generador de señales compuestas 900. El propósito del estudio de dichas tablas es demostrar el procesamiento llevado a cabo por el generador 900 y no está necesariamente destinado a representar una situación real. Hay que observar que las listas (I), (J), (K) y (L) de las Tablas III, IV y V se discutirán más adelante en la presente descripción conjuntamente con el estudio de la figura 15 y el generador de señal de gradientes 112.
La Tabla II contiene los datos de intensidad de píxel original para tres líneas de barrido de una imagen de píxeles en escala de grises, donde la línea de barrido nº 1 corresponde a la fila 0 de la imagen, la línea de barrido nº 2 corresponde a la fila 2 y la línea de barrido nº 3 corresponde a la fila 4. En este ejemplo, cuanto mayor sea el valor de intensidad de píxel, más claro será el píxel. Cada línea de barrido de la Tabla II empieza en la columna 0 y termina en la columna 9 de la imagen de píxeles. De este modo, por ejemplo, la intensidad del píxel en (fila=2) y (columna =5) es 3. En este ejemplo, se ha determinado, basándose en los cuatro ángulos localizados por el localizador de símbolos 104 que el símbolo de código de barras está orientado en un ángulo de 45 grados, en dirección opuesta a las agujas de un reloj, de las filas de la imagen.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página siguiente)
Tabla II
Datos de la imagen original
Línea de barrido
Nº 1 Nº 2 Nº 3
Col. Fila 1 Fila 2 Fila 3
0 21 22 22
1 23 21 19
2 22 22 5
3 21 5 4
4 22 6 3
5 18 3 15
6 6 16 18
7 4 18 17
8 5 16 20
9 14 18 5
La Tabla III presenta los resultados del procesamiento por el generador 900 de la línea de barrido nº 1 (fila 0). La lista (A) de la Tabla III contiene el número de columnas originales para cada píxel en la imagen de píxeles a lo largo de la línea de barrido nº 1. La lista (B) contiene la intensidad de cada píxel original. La lista (C) contiene el número de columnas giradas (valor real) después de que los medios 904 giren 0 grados cada píxel original. La lista (C) contiene el número de columna girada (valor real) después que los medios 904 hayan girado 0 grados cada píxel original, donde en este ejemplo, 0 es 45 grados. La columna girada número C_{r} está determinada por:
(2)C_{r} = C_{o}cos\theta + R_{o}sen\theta,
donde C_{o} es el número de columna original y R_{o} es el número de fila original para el píxel en la imagen de píxeles.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página siguiente)
2
3
La lista (D) de la Tabla III contiene el número de columnas estiradas (valor real) después de que los medios 904 estiren cada píxel girado por el porcentaje de sobremuestreo. Este ejemplo se basa en un porcentaje de sobremuestreo de tres. La lista (D) es el producto de la lista (C) y el porcentaje de sobremuestreo (tres, en este ejemplo). La lista (E) contiene los números de columnas redondeadas (valores enteros) para los datos estirados y girados, tal como generan los medios 904. Por ejemplo, la columna estirada 8.49 de la lista (D) se ha redondeado a la columna redondeada 8 de la lista (E). De forma similar , la columna estirada 10.61 de la lista (D) se ha redondeado a la columna redondeada 11 de la lista (E). La lista (E) contiene igualmente los números de columna que se encuentran entre las columnas redondeadas. De este modo, la columna 7 se encuentra entre las columnas redondeadas 6 y 8, mientras que las columnas 9 y 10 se encuentran entre las columnas redondeadas 8 y 11. A los efectos de la siguiente discusión, todos los elementos de la lista (E) son denominados colectivamente columnas redondeadas.
La lista (F) contiene un valor de intensidad para cada columna redondeada en la lista (E). Para cada columna redondeada de la lista (E) los medios 904 repiten el valor de intensidad de la columna original de la lista (A) que corresponda a la misma. Por ejemplo, las columnas redondeadas 6 y 7 de la lista (E) corresponden a la columna 3 de la lista (A) y, por lo tanto, las intensidades correspondientes de la lista (F) para dichas columnas redondeadas son 21.
Los medios 904 se intercalan entre las columnas redondeadas para determinar los valores de intensidad en la lista (F). La intensidad de la lista (F) que corresponde a la columna redondeada 7 de la lista (E) sería 21.5, correspondiendo el punto medio de intensidades a las columnas redondeadas 6 y 8 de la lista (E).
Los técnicos en la materia entenderán que la rotación y el estiramiento llevados a cabo por los medios 904 puede ser realizado en un sólo cómputo basado en la multiplicación de la matriz donde la matriz de rotación es modificada para que incluya el porcentaje de sobremuestreo.
A medida que los medios 904 giran y estiran los datos para cada línea, los medios 906 actualizan un vector compuesto unidimensional y los medios 908 actualizan un vector de recuento unidimensional basándose en los datos girados y estirados. El vector compuesto representa la "suma" de todas las líneas de barrido anteriormente estiradas y giradas. El vector de recuento controla cuantas veces un elemento del vector compuesto ha sido actualizado. Con referencia nuevamente al ejemplo de la Tabla III, la lista (G) representa el vector compuesto y la lista (H) representa el vector de recuento después de que la línea de barrido nº 1 haya sido procesada.
Después de que los medios 908 actualicen el vector de recuento, los medios 910 determinan si la línea de barrido actual es la última línea de barrido a procesar. Si así fuera, continúa el proceso hasta los medios 912, en caso contrario, el proceso vuelve a los medios 902 para seleccionar la siguiente línea de barrido. Como, en el ejemplo de la Tabla II, la fila 0 (es decir, la línea de barrido nº 1) no es la última línea de barrido, los medios 910 ordenan al proceso que vuelva a los medios 902 para seleccionar la fila 2 como nueva línea de barrido.
La tabla IV presenta los resultados desde el generador 900 que procesa la línea de barrido nº 2 (fila 2) de la Tabla II. Las listas (A) a (H) de la Tabla IV son análogas a las de la Tabla III. Los medios 906 forman un vector compuesto actualizado (lista (G) de la Tabla IV) sumando valores de píxeles de la lista de vector compuesto anterior (lista (G) de la Tabla III) con los valores de intensidad correspondientes de la lista (F) de la Tabla IV. Los medios 908 actualizan el vector de recuento de la lista (H) mediante el incremento de aquellos elementos que correspondan a los elementos del vector compuesto de la lista (G) que fueron actualizados.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página siguiente)
4
5
Hay que observar que ninguno de los datos estirados, girados de la línea de barrido nº 2 coincide con las columnas redondeadas 0-3, pero algunos de los datos si que coinciden con las nuevas columnas redondeadas 21-24. El resultado es que algunos elementos del vector compuesto no se actualizan. El vector de recuento se utiliza para controlar las veces que se actualiza cada elemento del vector compuesto. Los técnicos en la materia entenderán que esta actualización no uniforme de los vectores compuesto y de recuento también ocurrirá cuando se procesen líneas de barrido que no crucen la totalidad del símbolo de código de barras, por ejemplo, la línea de barrido 1 de la figura 10.
Después de procesar la línea de barrido nº 2, los medios 910 ordenan al proceso que vuelva a los medios 902 para seleccionar la línea de barrido nº 3 (fila 4), la última línea de barrido de la Tabla II. La Tabla V presenta los resultados del generador 900 que procesa la línea de barrido nº 3 (fila 4) de la Tabla II. Una vez más, las listas (A) a (H) de la Tabla V son análogas a las de las Tablas III y IV.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página siguiente)
6
7
Después de procesar la línea de barrido nº 3, los medios 910 ordenan a los medios 912 que el procesamiento continúe. Los medios 912 "normalizan" el vector compuesto para generar una señal compuesta unidimensional al dividir cada elemento del vector compuesto por el elemento correspondiente en el vector de recuento. Los medios 914 transmiten entonces esta señal compuesta al umbral de señal compuesta 108 del sistema 100.
La Tabla VI presenta la señal compuesta unidimensional generada por los medios 912. Las listas (E), (C) y (H) son idénticas a las de las listas de la Tabla V. La lista (M) representa la señal compuesta generada por los medios 912 al dividir los elementos del vector compuesto de la lista (G) por los elementos correspondientes del vector de recuento de la lista (H). Los medios 914 transmiten la señal compuesta de la lista (M) al umbral 108.
TABLA VI
8
Formación de umbrales y filtración de la señal compuesta unidimensional
Con referencia ahora a la figura 11, se representa un diagrama de flujos de bloques del procesamiento llevado a cabo por el formador de umbrales 108 de señal compuesta del sistema 100 al umbral de una señal compuesta unidimensional de un símbolo de código de barras. El formador de umbrales 108 procesa una señal compuesta, tanto si la señal compuesta fue generada por el generador 600 utilizando el método lento descrito anteriormente en la presente descripción con relación a la figura 6 o por el generador 900 utilizando el método rápido descrito anteriormente en esta descripción con relación a la figura 9. El formador de umbrales 108 forma umbrales para la señal compuesta en los segmentos binarios negro ("0") y blanco ("1") que corresponden a las barras y espacios del símbolo de código de barras. El formador de umbrales 108 filtra entonces la señal ajustada a un umbral para eliminar las barras y espacios espurios. El formador de umbrales 108 transmite entonces la señal filtrada al descodificador de señales compuestas 110, el cual utiliza métodos convencionales de descodificación de símbolo de código de barras para descodificar la señal filtrada.
Los medios 1102 del formador de umbrales 106 forma umbrales para la señal compuesta recibida del generador 106. Los medios 1102, de preferencia, emplean una formación de umbrales adaptables al umbral de la señal compuesta, o los medios 1102 pueden utilizar cualquier algoritmo de formación de umbrales convencional incluyendo umbrales con un valor de umbral fijo.
Con referencia de nuevo a la Tabla VI, la lista (N) representa la señal binaria generada por los medios 1102, mediante la formación de umbrales para la señal compuesta de la lista (M) utilizando un valor de umbral fijo de 12. Si un elemento de la señal compuesta es mayor que 12, entonces, el elemento binario correspondiente es 1 (blanco) en caso contrario, el elemento binario correspondiente es 0 (negro). En el ejemplo de las Tablas II a VI, el método rápido para generar una señal compuesta indica una transición de claro a oscuro entre las columnas redondeadas 12 y 13, una transición de oscuro a claro entre las columnas redondeadas 18 y 19 y otra transición de claro a oscuro entre las columnas redondeadas 27 y 28. Estas transiciones corresponden a los bordes de las barras en el símbolo de código de barras.
Los medios 1102 emplean un algoritmo de formación de umbrales adaptable para localizar las transiciones en la señal compuesta. Según un algoritmo de formación de umbrales adaptable, los medios 1102 utilizan los valores de intensidad mínimos y máximos locales en la señal compuesta para determinar el valor de umbral utilizado para localizar la transición entre dichos mínimos y máximos locales.
Con referencia de nuevo a la Tabla VI, el primer valor de intensidad máximo local es 23,0 que corresponde a las columnas redondeadas 2 y 3 y el primer valor de intensidad mínimo local es 3,7 que corresponde a las columnas redondeadas 15 y 16. En este ejemplo, los medios 1102 seleccionan la mitad de la suma del mínimo y máximo locales (0,5 x (23,0 - 3,7)) o 13,4 como valor de umbral a aplicar entre la columna redondeada 2 y la columna redondeada 16. Utilizando este valor de umbral, el medio 1102 localiza la transición de claro a oscuro entre las columnas redondas 12 y 13. Si, en una situación particular, dos o más elementos consecutivos de la señal compuesta son iguales al valor del umbral, se selecciona el elemento del medio de dicha serie de elementos consecutivos como transición de claro a oscuro.
Para minimizar el efecto del ruido, se definen los mínimos y máximos locales en términos de un valor de significación especificado. Si la diferencia entre un máximo local y el siguiente mínimo local no es mayor que el valor de significación especificado, los medios 1102 los rechazará y seguirá buscando los píxeles mínimos y máximos locales adecuados en la señal compuesta.
Por ejemplo, se considera que la señal compuesta tiene valores de intensidad (5, 3, 6, 25, 22, 26, 10, 4, 7). Se supone que se determina el valor de significación como 5. Los medios 1102 barren de izquierda a derecha para encontrar un mínimo local en 3. Los medios 1102 siguen barriendo para encontrar un máximo local en 25. Como la diferencia entre el máximo local (25) y el mínimo local (3) es mayor que el valor de significación (5), los medios 1102 retienen esos valores.
Los medios 1102 barren entonces hasta el siguiente mínimo local en 22. Como la diferencia entre el máximo local (25) y el mínimo local (22) no es mayor que el valor de significación (5), los medios 1102 siguen buscando un mínimo local adecuado. Mientras buscan un mínimo local adecuado, los medios 1102 actualizan el máximo local, si fuera necesario. De este modo, como los medios 1102 barren para encontrar el próximo mínimo local en 4, los medios 1102 actualizan el máximo local para que sea 26. Como la diferencia entre el máximo local actualizado (26) y el nuevo mínimo local (4) es mayor que el valor de significación (5), los medios 1102 seleccionan estos píxeles como máximo y mínimo locales adecuados. Se saca entonces la media de estos valores mínimo y máximo locales para calcular el valor de umbral utilizado para encontrar el píxel que corresponda a la transición entre el mínimo y el máximo locales. Hay que observar que si el valor de significación ha sido 2 en lugar de 5, entonces 25 y 26 serían ambos considerados entonces los máximos locales.
La significación seleccionada determina la inmunidad de los medios 1102 al ruido. Valores de significación elevados proporcionan una inmunidad substancial al ruido pero pueden igualmente dar por resultado la pérdida de auténticas transiciones de claro a oscuro en la señal compuesta. Por otra parte, los valores de significación bajos pueden conducir al reconocimiento espurio de transiciones en zonas ruidosas. Es preferible utilizar valores de significación que sean demasiado bajos en lugar de demasiado elevados. Y es así porque es posible que la filtración a continuación pueda eliminar transiciones espurias, pero no se puede hacer nada para recuperar la pérdida de auténticas transiciones. El valor de significación se basa en una fracción (por ejemplo, un octavo) de la gama dinámica de la señal compuesta tal como definen los valores mínimos y máximos totales dentro de la señal compuesta.
Con referencia ahora a las figuras 12 y 13, se representan dos ejemplos corrientes de transiciones espurias de claro/oscuro que pueden ser el resultado de utilizar valores de significación relativamente bajos para formar el umbral de una señal compuesta ruidosa. La figura 12 muestra la representación binaria de una barra espuria 1 en lo que pudiera ser un sólo espacio. La figura 13 muestra la representación binaria de una barra espuria 1 o de un espacio espurio 2 donde solamente pudiera existir un espacio y una barra.
Los medios 1104 filtran la señal compuesta a la que se ha impuesto un umbral para retirar las barras y espacios espurios. Una barra/espacio espurio es uno que es demasiado estrecho para ser válido tal como se determina mediante las características conocidas de la simbología de código de barras que se está descodificando. Se pueden fijar los valores de umbral basándose en ciertas fracciones (por ejemplo, una mitad) de las anchos mínimas de barra y espacio en la simbología particular a descodificar. Si una barra o un espacio es más estrecho que el umbral especificado, entonces se suprime la barra/espacio. En la figura 12, los medios 1104 retiran la barra espuria 1 para crear un único espacio porque la barra 1 es demasiado estrecha para ser válida.
En la figura 13, la barra 1 y el espacio 2 pueden ambos ser más estrechos que los umbrales aplicables. En estos casos, los medios 1104 eliminan el más pequeño de los dos fusionando entre sí las barras/espacios vecinos. De este modo, si la barra 1 es más estrecha que el espacio 2, entonces los medios 1104 retiran la barra 1 para que resulte un único espacio que finaliza en el punto 4. No obstante, si la barra 1 no es más estrecha que el espacio 2, entonces los medios 1104 retiran el espacio 2, entonces para obtener un único espacio que finaliza en el punto 3.
Con referencia ahora a la Figura 11, después de que los medios 1104 filtrada la señal de umbral, los medios 1106 transmiten la señal filtrada al descodificador de señales compuestas 110, que descodifica la señal filtrada utilizando métodos convencionales de decodificación de símbolos de código de barras.
Decodificación de señales compuestas
El descodificador de señales compuestas 110 descodifica las señales compuestas filtradas generadas por el formador de umbrales 108 utilizando métodos convencionales de decodificación de símbolos de código de barras. El descodificador 110 puede estar destinado a descodificar cualquier simbología deseada tal como el código 128, el código 39 y el código intercalado 2 de 5.
Cuando descodifica símbolos de código de barras del código 128, el descodificador 110 realiza mediciones standard borde-igual a borde-igual tal como se describe en la sección titulada "Determinación de selección de caracteres de los resultados de intercalación de subpíxeles" de la patente US Nº 5.343.029. El descodificador 110 calcula los valores standard t1, t2, t3 y t4, barre una tabla de configuración y realiza cómputos de adición de prueba del código 128 para ayudar a la descodificación de la totalidad de los tres grupos de caracteres del código 128.
Con referencia ahora a la figura 14, se representa un diagrama de flujo de bloques del procesamiento llevado a cabo por el descodificador de señales compuestas 110 del sistema 100 para descodificar los caracteres de un símbolo de código de barras del código 39. La simbología del código 39 está basada en los caracteres que tengan cinco barras y cuatro espacios. En el código 39, tres de las barras/espacios deben ser anchas y las otras seis barras/espacios deben ser estrechas. Además, un carácter de código 39 debe tener dos barras anchas y un espacio ancho o tres espacios anchos. Un carácter con exactamente cero, dos o cuatro espacios anchos no es válido como carácter del código 39. De forma similar, si un carácter tiene exactamente un espacio ancho pero no tiene exactamente dos barras anchas, no es válido como carácter del código 39. Al descodificar símbolos de código de barras del código 39, el descodificador 110 examina cinco barras y cuatro espacios del símbolo de código de barras cada vez, los clasifica como anchos o estrechos, y descodifica el carácter mediante referencia a una tabla de búsqueda.
Para descodificar un carácter del código 39, el descodificador 110 analiza en primer lugar los cuatro espacios del carácter. Los medios 1402 de la figura 14 calculan un umbral de espacio-ancho para el carácter, en el cual el umbral espacio-ancho es la media del ancho del espacio más ancho y el ancho del espacio más estrecho en el carácter.
Los medios 1404 clasifican entonces cada uno de los cuatro espacios como ancho o estrecho comparando el ancho de cada espacio con el umbral de espacio-ancho. Los medios 1404 clasifican como ancho un espacio si su ancho es mayor que los umbrales de espacio-ancho, en caso contrario el espacio es estrecho.
Si los medios 1404 clasifican tres de los espacios como anchos y uno como estrecho, entonces los medios 1406 dirigen el proceso a los medios 1416 para descodificar el carácter; en caso contrario, el proceso sigue hasta los medios 1408. Si el descodificador 110 determina que hay tres espacios anchos y un espacio estrecho, el descodificador 110 supone entonces que las cuatro barras son estrechas y que el carácter es un carácter válido de código 39.
Si los medios 1404 clasifican un espacio como ancho y tres como estrechos, entonces los medios 1408 dirigen el proceso a los medios 1410, en caso contrario, no se puede descodificar el carácter. Si el descodificador 110 determina que no hay exactamente uno o tres espacios anchos, entonces el carácter no es un carácter válido del código 39 y no se puede descodificar como tal.
Si el descodificador 110 determina que hay tres espacios estrechos y un espacio ancho, entonces el descodificador 110 analiza las cinco barras del carácter. Los medios 1410 calculan un umbral de barra-ancho para el carácter, donde el umbral barra-ancho es la media del ancho de la barra más ancha y el ancho de la barra más estrecha en el
carácter.
Los medios 1412 clasifican entonces cada una de las cinco barras como ancha o estrecha comparando el ancho de cada barra con el umbral de barra-ancho. Los medios 1412 clasifican una barra como ancha si su ancho es mayor que los umbrales de barra-ancho, en caso contrario, la barra es estrecha.
Si los medios 1412 clasifican dos de las barras como anchas y tres como estrechas, entonces los medios 1414 dirigen el proceso a los medios 1416 para descodificar el carácter, en caso contrario, el carácter no es un carácter válido del código 39 y no puede descodificarse como tal. Si, después de determinar que hay exactamente un espacio ancho, el descodificador 110 determina que hay dos barras anchas y tres barras estrechas, entonces el descodificador 110 supone que el carácter es un carácter válido del código 39.
Después de localizar con éxito las tres barras/espacios anchos y seis barras/espacios estrechos de carácter del código 39, los medios 1416 descodifican el carácter buscando a través de una tabla de búsqueda de código 39 el carácter alfanumérico adecuado utilizando la secuencia de barras y espacios anchos y estrechos identificados por los medios 1404 y 1412. El descodificador 110 realiza asimismo un análisis de adición de prueba del código 39.
En la figura 14, el descodificador 110 analiza los anchos de las barras y espacios independientemente calculando dos umbrales de ancho diferentes, uno para clasificar espacios y otro para clasificar barras. El descodificador 110 utiliza estos umbrales de ancho diferentes para espacios y barras para reducir los errores de descodificación que pudieran resultar de la superposición de imágenes de píxeles.
Cuando se generan imágenes de píxeles utilizando sistemas convencionales de formación de imágenes, las zonas oscuras de las imágenes a menudo tienden a superponerse en las zonas claras. Como resultado de esta superposición, las barras en los símbolos de código de barras con imágenes pueden parecer más anchos y los espacios pueden parecer más estrechos que los del auténtico símbolo de código de barras. A veces, las barras estrechas auténticas (es decir una barra que sea estrecha en el auténtico símbolo de código de barras) pueden incluso parecer más anchas en la imagen de píxeles que los auténticos espacios anchos. Estos cambios aparentes de los anchos de las barras y espacios pueden inducir a error en la descodificación de los símbolos de código de barras. Cuando se descodifican símbolos de código 39, por ejemplo, el descodificador 110 de preferencia clasifica las barras y los espacios independientemente utilizando diferentes umbrales de anchura, para reducir los errores de decodificación que resulten de la superposición de imágenes de píxeles.
Los técnicos en la materia entenderán que esta clasificación independiente de barras y espacios en los símbolos de código de barras para corregir los efectos de la superposición puede utilizarse para descodificar otros símbolos aparte de los de la simbología de código 39.
Por ejemplo, el descodificador 110 utiliza de preferencia la clasificación independiente de barras y espacios para descodificar símbolos de código de barras del código 2 de 5 (I2 de 5) intercalados. En los caracteres I2 de 5, las cinco barras y los cinco espacios codifican dos dígitos decimales. Las barras codifican el primer dígito mientras que los espacios codifican el segundo dígito. Cada dígito está representado por dos barras (o espacios) anchos y tres barras (o espacios) anchos. El descodificador 110 toma trece barras y espacios de un símbolo I2 de 5 cada vez y los clasifica como ancho o estrecho mediante la clasificación independiente de barras y espacios, similar al programa de clasificación independiente que lleva a cabo el descodificador 110 para los símbolos del código 39. El resultado es un valor de 13 bits en el cual cada bit representa el ancho de una barra/espacio correspondiente.
El descodificador 110 busca entonces dos veces en la tabla I2 de 5, una vez para las barras y una vez para los espacios. El descodificador 110 utiliza únicamente las diez primeras barras/espacios (máximo 10 bits) durante la búsqueda en la tabla. Los otros tres bits pueden corresponder al modelo de parada I2 de 5. Si los tres últimos bits tienen un modelo de parada válido (barra ancha, espacio estrecho, barra ancha) entonces se detiene la descodificación. En caso contrario, se analizan otras trece barras y espacios, donde las tres primeras barras y espacios son los últimos tres barras y espacios de la lista anterior. El descodificador 110 realiza igualmente el análisis de adición de prueba I2 de 5.
Después de descodificar la señal compuesta de umbral, el descodificador 110 transmite la señal descodificada al selector de salida 118 del sistema 100.
Generación de señales de gradientes para un símbolo de código de barras
Con referencia ahora a la figura 15, se representa un diagrama de flujo de bloques del procesamiento o llevado a cabo por el generador de señales de gradientes 112 del sistema 100 para generar señales de gradientes de blanqueamiento y de ennegrecimiento para un símbolo de código de barras localizado por el localizador de símbolos 104. Se utilizan las señales de gradientes para encontrar las transiciones entre barras y espacios (es decir, bordes delanteros y traseros de barras) en el símbolo de código de barras.
El generador 112 selecciona las líneas de barrido del conjunto de filas o columnas en la imagen de píxeles que cruzan el símbolo de código de barras. Estas líneas de barrido son de preferencia las mismas líneas de barrido que las seleccionadas para el método rápido de generación de señales compuestas, descrito anteriormente en esta descripción en relación con la figura 9.
Para cada línea de barrido, el generador 112 gira y estira los datos de la línea de barrido y actualiza dos vectores de gradientes unidimensionales - un vector de gradientes de blanqueamiento y un vector de gradientes de ennegrecimiento - y un vector de recuento unidimensional basado en los datos estirados girados. Después de procesar todas las líneas de barrido seleccionadas, el generador 112 normaliza los dos vectores de gradientes para generar señales de gradientes de blanqueamiento y de ennegrecimiento, suaviza las señales de gradientes y transmite las señales de gradientes suavizadas al procesador de señales de gradientes 114 para su posterior procesamiento.
Los medios 1502 seleccionan una secuencia de líneas de barrido. Los medios 1502 de preferencia seleccionan la misma secuencia de líneas de barrido que las seleccionadas por los medios 902 del generador de señales compuestas 900 en la figura 9. Los medios 1504 giran y estiran los datos de la línea de barrido actualmente seleccionada. Los medios 1504 de preferencia realizan la misma función de rotación y estiramiento que la que realizan los medios 904 del generador 900. En un modo de realización preferido, se combinan las operaciones comunes del generador de señales compuestas 900 y del generador de señales de gradientes 112 (por ejemplo, la selección, rotación y estiramiento de líneas de barrido) para evitar la duplicación.
Con referencia de nuevo al ejemplo de la Tabla II, el procesamiento por los medios 1504 de cada línea de barrido es idéntico al procesamiento realizado por los medios 1504, tal como se describe anteriormente en esta descripción en relación con la figura 9. De este modo, se pueden utilizar igualmente las listas (A) a (F) de las Tablas III, IV y V que describen el funcionamiento del generador 112 de señales de gradientes.
Después de que los medios 1504 giren y estiren la primera línea de barrido, los medios 1506 actualizan un vector de gradientes de blanqueamiento y un vector de ennegrecimiento, utilizando los datos girados y estirados. En un modo de realización, el vector de gradiente de blanqueamiento es un vector unidimensional que acumula las magnitudes de todos los cambios de píxel a píxel en los cuales los valores de intensidad de los píxeles aumentan. De forma análoga, el vector de gradientes de ennegrecimiento es un vector unidimensional que acumula las magnitudes de todos los cambios de píxel a píxel en el cual los valores de intensidad de los píxeles disminuye. Para cada vector de gradientes, es la magnitud de la diferencia entre píxeles de imágenes adyacentes la que se acumula y no los propios valores absolutos de píxeles.
Los gradientes de blanqueamiento y de ennegrecimiento pueden definirse en los términos de la primera derivada de los datos de líneas de barrido. Los gradientes de blanqueamiento corresponden a aquellas primeras derivadas que son mayores que cero, mientras que los gradientes de ennegrecimiento corresponden a las magnitudes de las primeras derivadas que sean inferiores a cero.
Con referencia de nuevo a la Tabla III, la lista (I) representa los gradientes de blanqueamiento para la línea de barrido nº 1 y la lista (J) representa el vector de gradientes de blanqueamiento después de que los medios 1506 procesen la línea de barrido nº 1. En general, el vector de gradiente de blanqueamiento representa la suma de los gradientes de blanqueamiento correspondientes para todas las líneas de barrido que hayan sido procesadas. Como la línea de barrido nº 1 es la primera línea de barrido a procesar en el ejemplo, los gradientes de blanqueamiento de la lista (I) son idénticos al vector de gradientes de blanqueamiento de la lista (J).
Como la intensidad aumenta de 21 a 23 del píxel (0,0) al píxel (0,1), en los datos originales, los gradientes de blanqueamiento correspondientes en la lista (I) para columnas redondeadas 2 y 3 son 2. Si el cambio del píxel anterior al píxel actual en la imagen original no fuera positivo, entonces no existe gradiente de blanqueamiento para dicho píxel actual. Por ejemplo, ya que la intensidad decrece de 23 a 22 del píxel (0,1) al píxel (0,2) en los datos originales, los gradientes de blanqueamiento correspondientes en la lista (I) para las columnas redondeadas 4 y 6 son 0.
De forma similar, la lista (K) de la Tabla III representa los gradientes de ennegrecimiento para la línea de barrido nº 1. Por ejemplo, ya que la intensidad disminuye de 22 a 18 del píxel (0,4) al píxel (0,5) en los datos originales, los gradientes de ennegrecimiento correspondientes para las columnas redondeadas 11 y 12 son 4. Si el cambio del píxel anterior al píxel actual en la imagen original no es negativo, entonces no existe gradiente de ennegrecimiento para dicho píxel actual. Por ejemplo, como la intensidad disminuye de 4 a 5 del píxel (07,) al píxel (0,8) en los datos originales, los gradientes de ennegrecimiento correspondientes para las columnas redondeadas 17 y 18 son 0. La lista (I) de la Tabla III representa el vector de gradientes de ennegrecimiento (es decir, los gradientes de ennegrecimiento acumulados) después de que los medios 1506 procesen la línea de barrido nº 1.
Los medios 1506 actualizan igualmente un vector de recuento unidimensional que es idéntico al vector de recuento generado por los medios 908 del generador de señales compuestas 900, tal como se describe anteriormente en la presente descripción en relación con la figura 9. De este modo, la lista (H) de las Tablas III, IV y V se aplican igualmente a la descripción del generador de señales de gradientes 112.
Después de que los medios 1506 actualicen los vectores de gradientes y el vector de recuento para la línea de barrido actual, los medios 1508 determinan si la actual línea de barrido es la última línea de barrido para el símbolo de código de barras. Si no fuera así, entonces el proceso vuelve a los medios 1502 para seleccionar la próxima línea de barrido. En caso contrario, el proceso continúa hasta los medios 1510.
En el ejemplo de la Tabla II, después de que la línea de barrido nº 1 haya sido procesada, el proceso vuelve a los medios 1502 para seleccionar la línea de barrido nº 2 como nueva línea de barrido. La tabla IV presenta los resultados de procesar la línea de barrido nº 2. Las listas (I) y (K) de la tabla IV representan los gradientes de blanqueamiento y de ennegrecimiento, respectivamente, para la línea nº 2. Las listas (J) y (L) representan los vectores de gradientes actualizados. Los medios 1506 actualizan los vectores de gradientes "sumando" los gradientes para la línea de barrido nº 2 a los vectores de gradientes de la Tabla III. De forma similar, la Tabla V presenta los resultados del procesamiento de la línea de barrido nº 3.
Después de que la última línea de barrido haya sido procesada, los medios 1508 dirigen el proceso a los medios 1510. Los medios 1510 normalizan los vectores de gradientes de blanqueamiento y de ennegrecimiento dividiendo los elementos de cada vector de gradientes por los elementos correspondientes del vector de recuento.
Las tablas VII y VIII presentan los resultados del procesamiento de los vectores de gradientes de blanqueamiento y de ennegrecimiento, respectivamente. Las listas (E), (H) y (J) de la Tabla VII y listas (E), (H) y (L) de las tablas VIII son idénticas a las listas correspondientes de la Tabla V. La lista (O) de la Tabla VII representa la señal de gradientes de blanqueamiento que resulta de la normalización por los medios 1510 del vector de gradientes de blanqueamiento de la lista (J). Los medios 1510 determinan cada elemento de la lista (O) dividiendo el elemento correspondiente de la lista (J) por el elemento correspondiente de la lista (H). De forma similar, la lista (T) de la Tabla VIII representa la señal de gradientes de ennegrecimiento que resulta de la normalización por los medios 1510 del vector de gradientes de ennegrecimiento de la lista (L).
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página siguiente)
9
10
11
12
13
Después de que los medios 1510 normalicen los vectores de gradientes, los medios 1512 suavizan las señales de gradientes de blanqueamiento y de ennegrecimiento. El filtro de suavización empleado por los medios 1512 de preferencia depende del porcentaje de sobremuestreo utilizado para estirar los datos de línea de barrido. La tabla IX presenta los parámetros preferidos de filtro para diferentes porcentajes de sobremuestreo.
TABLA IX
Porcentaje de sobremuestreo Tamaño del filtro Pesos
2,2 1 1
3,4 3 1,2,1
5,6 5 1,2,4,2,1
>= 7 7 1,2,4,8,2,1
La lista (P) de la Tabla VII presenta los resultadosde la suavización de la señal de gradientes de blanqueamiento de la lista (O) basados en un porcentaje de sobremuestreo de 3. Para un porcentaje de sobremuestreo de 3, cada elemento S_{1} de la señal de gradientes de blanqueamiento suavizada de la lista (P) se calcula utilizando:
(3)S_{1} = \frac{W_{i-1}+2W_{i}+W_{i+1}}{4}
donde W_{I-1} es el elemento en la señal de gradientes de blanqueamiento de la lista (O) que corresponde al elemento S_{1}, W_{i-1}, es el elemento anterior de la lista (O) y W_{i-1} es el siguiente elemento de la lista (O). De forma similar, la lista (U) de la Tabla VIII presenta los resultados de suavización de la señal de gradientes de blanqueamiento de la lista (T) basados en un porcentaje de sobremuestreo de 3.
Después de que los medios 1512 suavicen las dos señales de gradientes, los medios 1514 transmiten las señales de gradientes suavizadas al procesador de señales de gradientes 114 del sistema 100. Los técnicos en la materia entenderán que la suavización de los medios 1512 es una fase opcional del proceso.
Procesamiento y descodificación de las señales de gradientes suavizadas
Con referencia ahora a la figura 16, se representa un diagrama de flujo de bloques del procesamiento llevado a cabo por un procesador de señales de gradientes 114 del sistema 100 para procesar las señales de gradientes de blanqueamiento y de ennegrecimiento suavizadas generadas por el generador 112. Las señales de gradientes de blanqueamiento y de ennegrecimiento representan los emplazamientos de las transiciones de oscuro a claro y de claro a oscuro, respectivamente en el símbolo de código de barras. Es decir que representan los bordes delantero y trasero, respectivamente, de barras en el símbolo de código de barras. El procesador 114 localiza las transiciones claro/oscuro en las señales de gradientes y genera una sola señal reconstruida unidimensional de dichos emplazamientos de transición. El procesador 114 transmite esta señal reconstruida al descodificador de señales de gradientes 116 que descodifica la señal utilizando métodos convencionales de descodificación de códigos de barras.
En un modo de realización, el procesador 114 segmenta las dos señales de gradientes, localiza los centroides de los segmentos de las señales y reconstruye una sola señal binaria a partir de los emplazamientos del centroide. En un modo de realización alternativo (no representado), el procesador 114 selecciona los picos de las dos señales de gradientes como emplazamientos de las transiciones para la señal reconstruida.
Los medios 1602 de la figura 16 reciben las señales de gradientes de blanqueamiento y de ennegrecimiento suavizadas del generador 112 y los fragmenta en segmentos individuales. Cada segmento empieza con un mínimo local en la señal de gradientes y finaliza con el siguiente mínimo local. Cada segmento, por lo tanto, contiene un solo máximo local. Con referencia de nuevo a la Tabla VII, la lista (O) identifica los segmentos en la señal de gradientes de blanqueamiento suavizada de la lista (P). De forma similar, la lista (V) de la Tabla VIII identifica los segmentos en la señal de gradientes de ennegrecimiento suavizada de la lista (U).
Para minimizar la segmentación errónea, los medios 1602 utilizan de preferencia una prueba de significación-valor para determinar los mínimos locales que definen los segmentos en las señales de gradientes, donde la prueba de significación-valor es similar a aquella descrita anteriormente en esta descripción con relación a la figura 11.
Después de que los medios 1602 fragmenten las señales suavizadas de gradientes, los medios 1604 determinan la masa de cada segmento. La masa de cada segmento es la suma de los valores suavizados de gradientes para dicho segmento. La lista (R) de la Tabla VII presenta las masas de los segmentos de gradientes de blanqueamiento identificados en la lista (Q). De forma similar, la lista (W) de la Tabla VIII presenta las masas de los segmentos de gradientes de ennegrecimiento identificados en la lista (V). De este modo, por ejemplo, el segmento nº 3 en la Tabla V tiene una masa de (0,1 + 0,2 + 0,2 + 0,1) es decir 0,6.
Después de que los medios 1604 determinen la masa de cada segmento, los medios 1606 localizan el centroide ponderado de aquellos segmentos que tengan suficiente masa. Los medios 1606 omiten dichos segmentos cuyas masas son inferiores a un umbral de masa especificado, que indica que tienen una masa insuficiente. El umbral de masa está preferentemente especificado como equivalente a una fracción, por ejemplo un octavo del producto del porcentaje de sobremuestreo y la masa esperada de una barra o espacio estrechos en la imagen original de píxeles.
El ruido en la imagen de píxeles puede dar como resultado segmentos espurios en las señales de gradientes. Si el ruido de la imagen no es demasiado fuerte, los segmentos espurios tendrán masas normalmente más reducidas que las masas de los segmentos auténticos(es decir, aquellos que corresponden a las transiciones auténticas de claro/oscuro en la imagen de píxeles), en este caso, pueden utilizarse los medios 1606 para "filtrar" los segmentos espurios.
En la Tabla VII, los segmentos nº 1, 2, 3 y 5 son rechazados por tener masas inferiores al umbral de masa especificado de 20. Los segmentos nº 1 y 3 de la Tabla VIII son igualmente rechazados de forma similar por tener masas inferiores al umbral de masa.
Después de eliminar los segmentos que tengan una masa reducida, los medios 1606 localizan los centroides ponderados de los segmentos restantes. El centroide ponderado del segmento es el emplazamiento dentro del segmento que corresponde a un porcentaje especificado de la masa del segmento. Por ejemplo, un centroide ponderado basado en el 50% corresponde al centro de la masa de cada segmento. Un centroide ponderado basado en el 40% corresponde al emplazamiento dentro del segmento en el cual el 40% de la masa se encuentra en la izquierda y el 60% se encuentra en la derecha.
En la Tabla VII, un "1" en la lista (S) identifica el emplazamiento del centroide ponderado del segmento 4, donde el 50% es el porcentaje de centroide ponderado seleccionado. De forma similar, la lista (x) de la Tabla VIII identifica los emplazamientos de los centroides ponderados de los segmentos nº 2 y 4.
En un modo de realización alternativo (no representado), se utilizan porcentajes de centroides ponderados diferentes para localizar los centroides en los segmentos de gradientes de blanqueamiento y de ennegrecimiento. Como las barras negras tienden a "superponerse" en los espacios blancos de las imágenes de símbolo de código de barras, las barras suelen parecer más anchas y los espacios más estrechos en las imágenes. Utilizando un porcentaje de blanqueamiento-centroide que sea inferior al porcentaje de ennegrecimiento-centroide, se pueden corregir dichos efectos de superposición. Pueden seleccionarse empíricamente los porcentajes exactos de ponderado-centroide basándose en las pruebas realizadas en las imágenes de símbolos de barras conocidos.
Después de que los medios 1606 localicen los centroides de segmento de blanqueamiento y ennegrecimiento, los medios 1608 reconstruyen una sola señal unidimensional intercalando los emplazamientos de centroides de dos señales de gradientes. El centroide de cada segmento de la señal de ennegrecimiento suavizada corresponde al borde delantero de la barra en el símbolo del código de barras. De forma similar, el centroide de cada segmento de la señal de gradientes de blanqueamiento suavizada corresponde al borde trasero de la barra en el símbolo de código de barras.
La Tabla X presenta los resultados de los medios 1608 que intercalan los centroides de segmentos de blanqueamiento y de ennegrecimiento de las Tablas VII y VIII. Las listas (E) (S) y (X) de la Tabla X son idénticas a las listas correspondientes de las Tablas VII y VIII. La lista (Y) de la Tabla X representa la señal reconstruida unidimensional generada por los medios 1608. Hay que observar que la señal reconstruida de la lista (Y) de la Tabla X es idéntica a la señal de umbral de la lista (N) de la Tabla VI, que indica que el procesamiento de la señal de gradientes del generador 112 y del procesador 114 del sistema 100 genera el mismo resultado que el procesamiento de la señal compuesta del generador 900 y del formador de umbrales 108 del sistema 100
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página siguiente)
TABLA X
14
Si la señal reconstruida tiene dos bordes delanteros de barra consecutivos, entonces o falta un borde trasero de barra o se ha insertado un borde delantero de barra adicional. De forma similar, si la señal reconstruida tiene dos bordes traseros de barra consecutivos entonces o falta un borde delantero de barra o se ha insertado un borde trasero de barra adicional. Si faltan bordes auténticos de barra, entonces el procedimiento de segmentación realizado por los medios 1602 debiera haberse hecho con mayor sensibilidad a los gradientes más pequeños. Si se insertan bordes de barra espurios, entonces el procedimiento de segmentación debiera haberse hecho con menor sensibilidad para acomodar los mayores cambios de la señal de gradientes sin dividir falsamente un segmento en dos. Se puede controlar la sensibilidad del procedimiento de segmentación modificando el umbral de masa especificado que utilizan los medios 1606 para determinar si los segmentos tienen masa suficiente.
Después de que los medios 1608 generen una señal reconstruida, los medios 1610 transmiten la señal reconstruida al descodificador de señales de gradientes 116. En un modo de realización preferido, el procesamiento del descodificador 116 es idéntico al del descodificador de señales compuestas 110 descrito anteriormente en esta descripción en la sección titulada "Descodificación de señales compuestas". Después de descodificar el símbolo de código de barras, el descodificador 116 transmite la señal descodificada al selector de salida 118.
Tal como se ha descrito anteriormente en esta descripción, con relación al ejemplo de la Tabla II, en un modo de realización preferido de la presente invención, se repiten los valores de intensidades de píxeles originales para "tapar huecos" entre las columnas redondeadas que resultan de girar, estirar y redondear las columnas originales. En un modo de realización alternativo preferido (no representado), se repiten los valores de intensidad de píxeles originales según el porcentaje de sobremuestreo.
Por ejemplo, con relación a la Tabla III, para un porcentaje de sobremuestreo de tres, el sistema 100 giraría y estiraría el píxel original (0,0) de modo que se utilizara tres veces el valor de la intensidad del píxel (0,0) para actualizar los elementos del sector compuesto que correspondan a las columnas redondeadas 0, 1 y 2. De forma similar, el sistema 100 giraría y estiraría el píxel original (0, 1) de modo que el valor de la intensidad del píxel (0, 1) sería utilizado tres veces para actualizar los elementos del vector compuesto que correspondan a las columnas redondeadas 2, 3 y 4.
Hay que observar que se utilizan los valores de intensidad de ambos píxeles originales (0,0) y (0,1) de la línea de barrido nº 1 para actualizar el elemento del vector compuesto que corresponda a la columna redondeada 2. De este modo, en lugar de "tapar huecos" entre las columnas redondeadas, en este modo de realización preferido, se repiten los valores de los píxeles originales según el porcentaje de sobremuestreo y puede dar por resultado un "solapamiento". En este ejemplo, se actualiza dos veces el elemento del vector de recuento que corresponde a la columna redondeada 2 para reflejar este efecto de solapamiento.
Puede instalarse el sistema 100 en el hardware, software o en una combinación de ambos. En un modo de realización preferido, se instala el sistema 100 en el software que se encuentra en los microprocesadores corrientes, tales como los de la familia 80x86 de Intel o la familia 680x0 de Motorola.
Los técnicos en la materia entenderán que dichos modos de realización preferidos del sistema 100 pueden estar destinados a localizar y descodificar símbolos de código de barras en imágenes binarias y/o en imágenes en escala de grises.
Los técnicos en la materia entenderán igualmente que el sistema 100 está destinado de preferencia para ser controlado por parámetros donde los valores de varios parámetros puedan ser cambiados según la aplicación particular. Se entenderá asimismo que la selección de ciertos valores de parámetros puedan estar basados en el análisis empírico del procesamiento de imágenes de muestra conocidas.
Se entenderá asimismo que los técnicos en la materia pueden introducir diversos cambios de detalles, materiales y disposiciones de las partes que han sido descritas e ilustradas con el fin de explicar la naturaleza de esta invención sin salirse del principio y del ámbito de la invención tal como se indica en las siguientes reivindicaciones.

Claims (28)

1. Un método para tratar una imagen de píxeles de un símbolo de código de barras para descodificar un carácter, comprendiendo la imagen de píxeles, filas y columnas de píxeles, comprendiendo el método las fases siguientes:
a)
para una pluralidad de líneas de barrido (1, 2, 3, 4, 5, 6) de píxeles de la imagen de píxeles, en la cual cada píxel se caracteriza por una indicación de a cual de las filas o columnas pertenece el píxel dentro de la imagen de píxeles, seleccionando (1502) dicha línea de barrido;
b)
para cada píxel de la línea de barrido seleccionada, determinar (1504) una o más indicaciones de columnas o filas giradas o estiradas (D, E) para el píxel basándose en la orientación del símbolo respecto de la imagen de píxeles y basándose en un porcentaje de sobremuestreo;
c)
para cada una de las indicaciones de columna o de fila girada y estirada (E) generar un elemento de gradientes de blanqueamiento (I) o un elemento de gradientes de ennegrecimiento (K) basado en la magnitud de la diferencia de intensidad entre dos píxeles adyacentes de la línea de barrido seleccionada, siendo el elemento de gradientes de blanqueamiento generado cuando dicha diferencia aumenta y siendo el elemento de gradientes de ennegrecimiento generado cuando dicha diferencia disminuye;
d)
sumar (1506) cada elemento de gradientes de blanqueamiento (I) al elemento correspondiente del vector de gradientes de blanqueamiento (J) y sumar cada elemento de gradientes de ennegrecimiento (K) a un elemento correspondiente del vector de gradientes de ennegrecimiento (L) y aumentar un elemento correspondiente de un vector de recuento (H) de conformidad con el número de veces que el elemento correspondiente de blanqueamiento o de vector de gradientes de ennegrecimiento haya sido sumado;
e)
repetir (1508) las fases a)-d) para la siguiente línea de barrido de dicha pluralidad de líneas de barrido;
f)
para cada indicación de fila o de columna girada y estirada, determinar un elemento de una señal de gradientes de blanqueamiento (O) y un elemento de señales de gradientes de ennegrecimiento (T) mediante la división de los elementos correspondientes del vector de gradientes de blanqueamiento (J) y el vector de gradientes de ennegrecimiento (L), respectivamente, por el elemento correspondiente del vector de recuento (H);
g)
procesar la señal de gradientes de blanqueamiento (O) y la señal de gradientes de ennegrecimiento (T) para generar una señal unidimensional reconstruida (Y) basada en los emplazamientos de transición de oscuro a claro o de claro a oscuro representados por la señal de gradientes de blanqueamiento (O) y la señal de gradientes de ennegrecimiento (Y); y
h)
determinar el carácter basándose en la señal reconstruida unidimensional.
2. El método de la reivindicación 1, en el cual la fase f) incluye la suavización (1512) de la señal de gradientes de blanqueamiento y la señal de gradientes de ennegrecimiento.
3. El método de la reivindicación 2 en el cual la suavización se basa al menos parcialmente en el porcentaje de sobremuestreo.
4. El método de la reivindicación 1 en el cual las líneas de barrido están separadas por más de un píxel.
5. El método de la reivindicación 1 en el cual al menos algunas de las líneas de barrido no cruzan la totalidad del símbolo.
6. El método de la reivindicación 1 en el cual la fase g) incluye:
g^{1})
la segmentación (1602) de la señal de gradientes de blanqueamiento (O) y la señal de gradientes de ennegrecimiento (1) en segmentos individuales.
g^{2})
la determinación (1604) de la masa (R,W) de cada segmento localizando el centroide ponderado de cada segmento que tenga una masa que no sea inferior a un umbral de masa especificado; y
g^{3})
en el cual las transiciones de claro a oscuro y de oscuro a claro desde la cual se genera la señal reconstruida unidimensional estén definidas por los centroides ponderados.
7. El método de la reivindicación 6, en el cual la fase de segmentación para cada señal de gradientes incluye la determinación de mínimos locales en la señal de gradientes y la segmentación de cada señal de gradientes de modo que cada segmento empiece y finalice con unos mínimos locales determinados.
8. El método de la reivindicación 7 en el cual la fase de determinación de los mínimos locales incluyan la utilización de una prueba de significación-valor.
9. El método de la reivindicación 6 en el cual el umbral de la masa especificada es un producto del porcentaje de sobremuestreo y la masa esperada es una barra o espacio estrechos en la imagen de píxeles.
10. El método de la reivindicación 9 en el cual la fase de localización del centroide ponderado de cada segmento incluye la localización del emplazamiento en el segmento que corresponda a un porcentaje especificado de la masa del segmento.
11. El método de la reivindicación 10, en el cual el porcentaje especificado utilizado para localizar los centroides ponderados de los segmentos de la señal de gradientes de blanqueamiento es inferior al porcentaje especificado utilizado para localizar los centroides ponderados de los segmentos de la señal de gradientes de ennegrecimiento.
12. El método de la reivindicación 6, en el cual la fase de generación de señal reconstruida unidimensional incluye la intercalación de los centroides ponderados de los segmentos de la señal de gradientes de blanqueamiento con los centroides ponderados de los segmentos de la señal de gradientes de ennegrecimiento.
13. El método de la reivindicación 6, que comprende además:
la determinación de si existen errores en la señal reconstruida unidimensional; y
si se determina que existen errores en la señal reconstruida unidimensional, repetir las fases g2) y g3) con un umbral de masa especificado diferente.
14. El método de la reivindicación 1, en el cual la fase g) comprende:
la localización de los picos en la señal de gradientes de blanqueamiento y en la señal de gradientes de ennegrecimiento, en la cual las transiciones de claro a oscuro y de oscuro a claro a partir de las cuales se genera la señal reconstruida unidimensional, están definidas por los picos localizados en la señal de gradientes de blanqueamiento y en la señal de gradientes de ennegrecimiento, respectivamente.
15. Un aparato para procesar una imagen de píxeles de un símbolo de código de barras para descodificar un carácter, comprendiendo la imagen de píxeles filas y columnas de píxeles, comprendiendo el aparato:
a)
para una pluralidad de líneas de barrido (1, 2, 3, 4, 5, 6) de píxeles de la imagen de píxeles, en el cual cada píxel se caracteriza por una indicación de a cual de las filas o columnas de la imagen de píxeles pertenece el píxel, medios para seleccionar una de dichas líneas de barrido;
b)
para cada píxel de la línea de barrido seleccionada, medios para determinar una o más indicaciones de columna o fila girada y estirada (D, E) para el píxel basándose en la orientación del símbolo respecto de la imagen de píxeles y basándose en un porcentaje de sobremuestreo;
c)
para cada una de las indicaciones de columna o de fila girada o estirada (E) medios para generar un elemento de un gradiente de blanqueamiento (I) o un elemento de un gradiente de ennegrecimiento (K) basado en la magnitud de la diferencia de intensidad entre dos píxeles adyacentes de la línea de barrido seleccionada, siendo generado el elemento de gradientes de blanqueamiento cuando dicha diferencia aumenta y siendo generado dicho elemento de gradientes de ennegrecimiento cuando dicha diferencia disminuye.
d)
medios para sumar cada elemento del gradiente de blanqueamiento (I) a un elemento correspondiente de un vector de gradientes de blanqueamiento (J) y sumar cada elemento del gradiente de ennegrecimiento (K) con un elemento correspondiente de un vector de gradientes de ennegrecimiento (L) y aumentar un elemento correspondiente de un vector de recuento (H) según el número de veces que el elemento correspondiente del vector de gradientes de blanqueamiento o de ennegrecimiento haya sido sumado.
e)
medios para repetir las operaciones definidas por las particularidades a) - d) de la siguiente línea de barrido de dicha pluralidad de líneas de barrido;
f)
para cada indicación de fila o de columna girada y estirada, medios para determinar un elemento de señal de gradientes de blanqueamiento (O) y un elemento de señal de gradientes de ennegrecimiento dividiendo el elemento correspondiente del vector de gradiente de blanqueamiento (J) y el vector de gradientes de ennegrecimiento (L) respectivamente, por el elemento correspondiente del vector de recuento;
g)
medios para procesar la señal de gradientes de blanqueamiento (O) y la señal de gradientes de ennegrecimiento (T) para generar una señal reconstruida unidimensional (Y) basada en emplazamientos de transición de oscuro a claro y de claro a oscuro representados por la señal de gradientes de blanqueamiento (O) y la señal de gradientes de ennegrecimiento(T), y
h)
medios para determinar el carácter basado en la señal reconstruida unidimensional.
16. El aparato de la reivindicación 15, en el cual los medios f) incluyen medios para suavizar la señal de gradientes de blanqueamiento y la señal de gradientes de ennegrecimiento.
17. El aparato de la reivindicación 18, en el cual los medios de suavización funcionan, al menos en parte, sobre la base del porcentaje de sobremuestreo.
18. El aparato de la reivindicación 15, en el cual las líneas de barrido están separadas por más de un píxel.
19. El aparato de la reivindicación 15, en el cual al menos algunas de las líneas de barrido no cruzan la totalidad del símbolo.
20. El aparato de las reivindicaciones 15, en el cual los medios g) incluyen:
g1)
medios para la segmentación de la señal de gradientes de blanqueamiento y la señal de gradientes de ennegrecimiento en segmentos individuales.
g2)
medios para la determinación de la masa de cada segmento mediante la localización del centroide ponderado de cada segmento que tenga una masa que no sea inferior a un umbral de masa especificado; y
g3)
en el cual las transiciones de claro a oscuro y de oscuro a claro a partir de las cuales se genera la señal reconstruida unidimensional están definidas por los centroides ponderados.
21. El aparato de la reivindicación 20 en el cual los medios de segmentación incluyen medios para determinar los mínimos locales en la señal de gradientes y la segmentación de cada señal de gradientes de modo que cada segmento empiece y termine con unos mínimos locales determinados.
22. El aparato de la reivindicación 21, en el cual los medios para determinar los mínimos locales incluyen la utilización de una prueba de significación-valor.
23. El aparato de la reivindicación 20, en el cual el umbral de masa especificado es un producto del porcentaje de sobremuestreo y la masa esperada de una barra o un espacio estrechos en la imagen de píxeles.
24. El aparato de la reivindicación 23, en el cual los medios para localizar el centroide ponderado de cada segmento incluye medios para localizar el emplazamiento dentro del segmento correspondiente a un porcentaje especificado de la masa del segmento.
25. El aparato de la reivindicación 24, en el cual el porcentaje especificado utilizado para localizar los centroides ponderados de los segmentos de la señal de gradientes de blanqueamiento es inferior al porcentaje especificado utilizado para localizar los centroides ponderados de los segmentos de la señal de gradientes de ennegrecimiento.
26. El aparato de la reivindicación 20 en el cual los medios para generar la señal reconstruida unidimensional incluye medios para intercalar los centroides ponderados de los segmentos de la señal de gradientes de blanqueamiento con los centroides ponderados de los segmentos de la señal de gradientes de ennegrecimiento.
27. El aparato de la reivindicación 20, que comprende además:
medios para determinar si existen errores en la señal reconstruida unidimensional; y
medios para hacer funcionar los medios g2) y g3) con un umbral de masa especificado diferente si se determina que existen errores en la señal reconstruida unidimensional.
28. El aparato de la reivindicación 15, en el cual los medios g) comprenden medios para localizar los picos en la señal de gradientes de blanqueamiento y en la señal de gradientes de ennegrecimiento en los cuales las transiciones de claro a oscuro y de oscuro a claro a partir de las cuales se genera la señal reconstruida unidimensional están definidas por los picos localizados en la señal de gradientes de blanqueamiento y en la señal de gradientes de ennegrecimiento, respectivamente.
ES98111652T 1993-01-29 1994-08-29 Metodo y aparato para descodificar simbolos de codigo de barras para analisis independientes utilizando barras y espacios. Expired - Lifetime ES2214662T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US08/011,458 US5352878A (en) 1993-01-29 1993-01-29 Method and apparatus for decoding bar code symbols using independent bar and space analysis
PCT/US1994/009704 WO1996007155A1 (en) 1993-01-29 1994-08-29 Method and apparatus for decoding bar code symbols using independent bar and space analysis
EP94929112A EP0783739A1 (en) 1993-01-29 1994-08-29 Method and apparatus for decoding bar code symbols using independent bar and space analysis
EP98111652A EP0877334B1 (en) 1993-01-29 1994-08-29 Method and apparatus for decoding bar code symbols using independent bar and space analysis

Publications (1)

Publication Number Publication Date
ES2214662T3 true ES2214662T3 (es) 2004-09-16

Family

ID=41110784

Family Applications (2)

Application Number Title Priority Date Filing Date
ES98111652T Expired - Lifetime ES2214662T3 (es) 1993-01-29 1994-08-29 Metodo y aparato para descodificar simbolos de codigo de barras para analisis independientes utilizando barras y espacios.
ES97103130T Expired - Lifetime ES2214563T3 (es) 1993-01-29 1994-08-29 Metodo y aparato para descodificacion de simbolos de codigo de barras utilizando analisis de barras y espacio independiente.

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES97103130T Expired - Lifetime ES2214563T3 (es) 1993-01-29 1994-08-29 Metodo y aparato para descodificacion de simbolos de codigo de barras utilizando analisis de barras y espacio independiente.

Country Status (9)

Country Link
US (1) US5352878A (es)
EP (4) EP0795836B8 (es)
JP (1) JP2832645B2 (es)
AT (2) ATE241180T1 (es)
AU (1) AU7828794A (es)
CA (1) CA2191433C (es)
DE (1) DE69433492T2 (es)
ES (2) ES2214662T3 (es)
WO (1) WO1996007155A1 (es)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5412196A (en) * 1994-04-01 1995-05-02 United Parcel Service Of America, Inc. Method and apparatus for decoding bar code images using multi-order feature vectors
US6543691B1 (en) * 1995-01-03 2003-04-08 Jerome H. Lemelson Method and apparatus for encoding and decoding bar codes with primary and secondary information and method of using such bar codes
US5777309A (en) * 1995-10-30 1998-07-07 Intermec Corporation Method and apparatus for locating and decoding machine-readable symbols
US5804802A (en) * 1996-02-14 1998-09-08 United Parcel Service Of America, Inc. Two-way data communication manager
US5963660A (en) * 1996-09-26 1999-10-05 The Boeing Company Method and apparatus for detecting and measuring laps and gaps in composite materials
US5767497A (en) * 1996-12-04 1998-06-16 United Parcel Service Of America, Inc. Method and apparatus for decoding bar code symbols using ratio analysis of module size
US6366696B1 (en) * 1996-12-20 2002-04-02 Ncr Corporation Visual bar code recognition method
DE19724711B4 (de) * 1997-06-11 2004-09-16 Sick Ag Verfahren und Vorrichtung zum Erkennen und Lesen eines an einem Objekt vorgesehenen Strichcodes
US5984078A (en) 1997-08-04 1999-11-16 United Parcel Service Of America, Inc. Automated shuttle sorter for conveyors
US6758391B1 (en) 1997-11-18 2004-07-06 The Code Corporation Internet access of goods and services using graphical codes
ATE201783T1 (de) 1997-12-24 2001-06-15 Datalogic Spa Verfahren zur erkennung eines strichkodes auf einer abtastzeile und vorrichtung zur erkennung und dekodierung eines strichkodes
US5969326A (en) * 1998-01-14 1999-10-19 Intermec Ip Corp. Method and apparatus of autodiscriminating in symbol reader employing prioritized and updated table of symbologies
US6102295A (en) * 1998-01-14 2000-08-15 Intermec Ip Corp. Method and apparatus for decoding symbols by declaring erasures of element characteristics
US7147161B2 (en) 1998-06-12 2006-12-12 Symbol Technologies, Inc. Digitizing bar code symbol data
US6328213B1 (en) * 1998-06-12 2001-12-11 Symbol Technologies, Inc. Method of processing an analog electrical signal containing information representative of reflected light from coded indicia, wherein the electrical signal contains edge transitions
US6513714B1 (en) 1998-09-14 2003-02-04 Psc Scanning, Inc. Character reconstruction and element level processing in bar code scanning system
EP1114390B1 (en) 1998-09-14 2015-08-26 Datalogic ADC, Inc. Bar code label reconstruction system and methodologies
US6454168B1 (en) 1998-09-14 2002-09-24 Psc Scanning, Inc. Correlation and stitching techniques in a bar code scanning system
US6585157B2 (en) 1998-09-14 2003-07-01 Psc Scanning, Inc. Symbology determination to aid decoding in a bar code scanning system
US6494376B1 (en) 1998-09-14 2002-12-17 Psc Scanning, Inc. Compensation for scan line variations in a bar code scanner system
ATE203343T1 (de) * 1998-10-23 2001-08-15 Datalogic Spa Verfahren zur detektion von coden in zweidimensionalen bildern
US6189702B1 (en) 1998-11-25 2001-02-20 United Parcel Service Of America, Inc. Overhead mounted sorter for conveyors
US6082619A (en) * 1998-12-16 2000-07-04 Matsushita Electric Industrial Co., Ltd. Method for locating and reading a two-dimensional barcode
US6565003B1 (en) 1998-12-16 2003-05-20 Matsushita Electric Industrial Co., Ltd. Method for locating and reading a two-dimensional barcode
US6371373B1 (en) 1999-05-25 2002-04-16 Matsushita Electric Industrial Co., Ltd. Method for reading a two-dimensional barcode
US6359247B1 (en) 1999-07-06 2002-03-19 Quantum Conveyor Systems, Llc Multi-fire and variable fire diverter conveyor system and method
US6666377B1 (en) * 2000-07-18 2003-12-23 Scott C. Harris Bar code data entry device
US6761314B2 (en) * 2000-10-03 2004-07-13 Symbol Technologies, Inc. Bar code symbology for consumer scanning applications
US8682077B1 (en) 2000-11-28 2014-03-25 Hand Held Products, Inc. Method for omnidirectional processing of 2D images including recognizable characters
US20020143814A1 (en) * 2001-03-27 2002-10-03 The Code Corporation Systems and methods for automatic insertion of machine-readable graphical codes into printable documents
US7072974B2 (en) 2001-03-27 2006-07-04 The Code Corporation Extensible application interface using machine-readable graphical codes
US6978038B2 (en) * 2001-04-13 2005-12-20 The Code Corporation Systems and methods for pixel gain compensation in machine-readable graphical codes
US7185824B2 (en) * 2001-04-13 2007-03-06 The Code Corporation System and method for associating pre-printed machine-readable graphical codes with electronically-accessible data
WO2002084879A2 (en) * 2001-04-13 2002-10-24 The Code Coproration System and method for encoding and decoding data and references to data in machine-readable graphical codes
KR100339691B1 (ko) * 2001-11-03 2002-06-07 한탁돈 코드인식을 위한 장치 및 그 방법
US20030163396A1 (en) * 2002-02-27 2003-08-28 John Blankevoort Systems and methods for tracking products as they move through a supply chain
US20030163800A1 (en) * 2002-02-27 2003-08-28 Weiyang Zhou System and method for generating graphical codes containing a plurality of data fields
US7097099B2 (en) * 2002-07-29 2006-08-29 The Code Corporation Data collection device with integrated data translation
US7392933B2 (en) * 2002-07-29 2008-07-01 The Code Corporation Systems and methods for interfacing multiple types of object identifiers and object identifier readers to multiple types of applications
US7621453B2 (en) * 2002-07-29 2009-11-24 The Code Corporation System and method for controlling the distribution of data translation components to portable data collection devices
US7070091B2 (en) * 2002-07-29 2006-07-04 The Code Corporation Systems and methods for interfacing object identifier readers to multiple types of applications
JP4526482B2 (ja) * 2003-08-04 2010-08-18 トムソン ライセンシング 画像の雑音(ノイズ)を減じる装置と方法
US6942152B1 (en) 2004-01-21 2005-09-13 The Code Corporation Versatile graphical code reader that is configured for efficient decoding
US7519239B2 (en) * 2004-02-11 2009-04-14 The Code Corporation Systems and methods for concurrent image capture and decoding of graphical codes
US7204417B2 (en) * 2004-11-03 2007-04-17 The Code Corporation Graphical code reader that is configured for efficient decoder management
KR101158005B1 (ko) * 2007-03-06 2012-06-25 삼성전자주식회사 인쇄품질 평가지표 산출 방법 및 장치
US8267322B2 (en) * 2010-03-08 2012-09-18 Seiko Epson Corporation Method and apparatus for correcting decoding errors in machine-readable symbols
JP5657987B2 (ja) * 2010-10-07 2015-01-21 日本電産サンキョー株式会社 スタック型バーコード読取装置およびスタック型バーコード読取方法
JP5683891B2 (ja) * 2010-10-07 2015-03-11 日本電産サンキョー株式会社 スタック型バーコード読取装置およびスタック型バーコード読取方法
KR101748877B1 (ko) 2010-12-16 2017-06-19 엘지이노텍 주식회사 바코드 인식 장치 및 방법
JP6330388B2 (ja) * 2014-03-14 2018-05-30 オムロン株式会社 画像処理方法、画像処理装置、並びに、当該方法を実行するプログラム、及び、当該プログラムを記録する記録媒体
US9361503B2 (en) 2014-10-30 2016-06-07 Datalogic IP Tech Srl Systems, methods and articles for reading highly blurred machine-readable symbols

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3688955A (en) * 1969-11-24 1972-09-05 Automatisme Cie Gle Character-reading apparatus incorporating electronic scanning circuitry
US4323772A (en) * 1980-03-06 1982-04-06 R. J. Reynolds Tobacco Company Bar code reader system
US4411016A (en) * 1981-06-01 1983-10-18 Recognition Equipment Incorporated Barcode width measurement system
JPS61101880A (ja) * 1984-10-24 1986-05-20 Sato :Kk バ−コ−ド読取方法および装置
US4680457A (en) * 1985-03-07 1987-07-14 Telesis Controls Corporation Code reader
JPS62197877A (ja) * 1986-02-26 1987-09-01 Hitachi Ltd バ−コ−ド読取方式
US4740675A (en) * 1986-04-10 1988-04-26 Hewlett-Packard Company Digital bar code slot reader with threshold comparison of the differentiated bar code signal
US4958054A (en) * 1986-10-29 1990-09-18 Fritto-Lay Inc. Dielectric drying of hot plastic food extrudate
US4749879A (en) * 1987-06-18 1988-06-07 Spectra-Physics, Inc. Signal transition detection method and system
NO174944C (no) * 1987-09-28 1994-08-03 Sumitomo Electric Industries Fremgangsmåte og anordning for avlesning og kombinasjon av stavkodedata
FR2622992B1 (fr) * 1987-11-06 1990-02-09 Thomson Semiconducteurs Procede de lecture de codes a barres
FR2631476B1 (fr) * 1988-05-10 1992-01-03 Bertin & Cie Procede et dispositif de lecture d'un code barres sur un support sensiblement immobile
JPH07101437B2 (ja) * 1988-06-21 1995-11-01 アルプス電気株式会社 符号読取装置
US4988852A (en) * 1988-07-05 1991-01-29 Teknekron Transportation Systems, Inc. Bar code reader
US4873426A (en) * 1988-08-03 1989-10-10 Image Business Systems Corporation Technique for reading bar codes
US5036183A (en) * 1988-08-25 1991-07-30 Alps Electric Co., Ltd. Code reading device
JPH02141889A (ja) * 1988-11-22 1990-05-31 Eastman Kodatsuku Japan Kk バーコード読取方法
US4958064A (en) * 1989-01-30 1990-09-18 Image Recognition Equipment Corporation Bar code locator for video scanner/reader system
US5073954A (en) * 1989-02-28 1991-12-17 Electrocom Automation, Inc. Bar code location and recognition processing system
US5081689A (en) * 1989-03-27 1992-01-14 Hughes Aircraft Company Apparatus and method for extracting edges and lines
US5155343A (en) * 1990-03-28 1992-10-13 Chandler Donald G Omnidirectional bar code reader with method and apparatus for detecting and scanning a bar code symbol
US4992650A (en) * 1990-03-29 1991-02-12 International Business Machines Corporation Method and apparatus for barcode recognition in a digital image
US5120940A (en) * 1990-08-10 1992-06-09 The Boeing Company Detection of barcodes in binary images with arbitrary orientation
CA2048824A1 (en) * 1990-09-28 1992-03-29 William A. Blitz System for decoding bar codes on job programming separators for electronic reprographic/printing machines
US5124537A (en) * 1990-10-29 1992-06-23 Omniplanar, Inc. Omnidirectional bar code reader using virtual scan of video raster scan memory
US5142592A (en) * 1990-12-17 1992-08-25 Moler Keith E Method and apparatus for detection of parallel edges in image processing
CA2053460A1 (en) * 1991-09-13 1993-03-14 Eugene Bernard Joseph Analog waveform decoder
US5276315A (en) * 1992-05-14 1994-01-04 United Parcel Service Of America, Inc. Method and apparatus for processing low resolution images of degraded bar code symbols
US5343028A (en) * 1992-08-10 1994-08-30 United Parcel Service Of America, Inc. Method and apparatus for detecting and decoding bar code symbols using two-dimensional digital pixel images
EP0584559A3 (en) * 1992-08-21 1994-06-22 United Parcel Service Inc Method and apparatus for finding areas of interest in images

Also Published As

Publication number Publication date
EP0795836A2 (en) 1997-09-17
EP0877334A2 (en) 1998-11-11
AU7828794A (en) 1996-03-22
WO1996007155A1 (en) 1996-03-07
EP0785521A3 (en) 2001-05-16
US5352878A (en) 1994-10-04
EP0795836A3 (en) 1999-12-08
EP0783739A1 (en) 1997-07-16
ATE241180T1 (de) 2003-06-15
CA2191433A1 (en) 1996-03-07
DE69433492T2 (de) 2004-10-28
EP0795836B8 (en) 2003-08-13
JP2832645B2 (ja) 1998-12-09
CA2191433C (en) 2000-07-11
EP0785521B1 (en) 2004-01-21
JPH09512936A (ja) 1997-12-22
ATE257962T1 (de) 2004-01-15
EP0795836B1 (en) 2003-05-21
DE69433492D1 (de) 2004-02-19
EP0877334A3 (en) 2000-12-06
EP0877334B1 (en) 2004-01-14
EP0785521A2 (en) 1997-07-23
ES2214563T3 (es) 2004-09-16

Similar Documents

Publication Publication Date Title
ES2214662T3 (es) Metodo y aparato para descodificar simbolos de codigo de barras para analisis independientes utilizando barras y espacios.
US5545887A (en) Method and apparatus for decoding bar code symbols using subpixel scan lines
US5412197A (en) Method and apparatus for decoding bar code symbols using gradient signals
EP0720113B1 (en) Two-dimensional code reading apparatus
JP2951965B2 (ja) 機械が光学的に読取り可能なバイナリコードの測定方法
US8152070B2 (en) Two-dimensional symbol and method for reading same
US5404003A (en) Method and apparatus for decoding bar code symbols using byte-based searching
US7726572B2 (en) Bar code scanning decoding
US20060118632A1 (en) Barcode scanner decoding
JPH0612515A (ja) Ccd/cmdカメラを使用して二次元バーコードを復号する方法及び装置
GB2256517A (en) Information encoding
JPH07254037A (ja) 二次元コード
JP2925515B2 (ja) ピクセル・イメージのバーコード・シンボルの読取り方法および装置
JP2864012B2 (ja) ピクセル・イメージのバーコード・シンボルの読取り方法および装置
JPH0750496B2 (ja) 画信号処理装置
JPH02168363A (ja) 画像信号処理装置
JP2697085B2 (ja) 画信号処理装置
JPH02125384A (ja) 画像信号処理装置
JPH02168364A (ja) 画信号処理装置
JP2001357350A (ja) 一次元バーコードの位置検出方法および一次元バーコードの位置検出装置
JPH02125382A (ja) 画像信号処理装置
JPH02176884A (ja) 画像信号処理装置