ES2214563T3 - Metodo y aparato para descodificacion de simbolos de codigo de barras utilizando analisis de barras y espacio independiente. - Google Patents
Metodo y aparato para descodificacion de simbolos de codigo de barras utilizando analisis de barras y espacio independiente.Info
- Publication number
- ES2214563T3 ES2214563T3 ES97103130T ES97103130T ES2214563T3 ES 2214563 T3 ES2214563 T3 ES 2214563T3 ES 97103130 T ES97103130 T ES 97103130T ES 97103130 T ES97103130 T ES 97103130T ES 2214563 T3 ES2214563 T3 ES 2214563T3
- Authority
- ES
- Spain
- Prior art keywords
- pixel
- symbol
- signal
- pixels
- image
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1443—Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/10544—Methods 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/10821—Methods 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/10851—Circuits for pulse shaping, amplifying, eliminating noise signals, checking the function of the sensing device
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/146—Methods for optical code recognition the method including quality enhancement steps
- G06K7/1465—Methods for optical code recognition the method including quality enhancement steps using several successive scans of the optical code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/146—Methods for optical code recognition the method including quality enhancement steps
- G06K7/1486—Setting the threshold-width for bar codes to be decoded
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Electromagnetism (AREA)
- General Physics & Mathematics (AREA)
- Toxicology (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Health & Medical Sciences (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Image Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Character Input (AREA)
- Image Analysis (AREA)
- Error Detection And Correction (AREA)
Abstract
UN METODO Y UN APARATO PARA LA LECTURA DE UN SIMBOLO DE CODIGO DE BARRAS EN UNA IMAGEN EN PIXELES, POR EL QUE SE SELECCIONA UNA PRIMERA LINEA DE ESCANEADO ESENCIALMENTE PARALELA A LAS BARRAS Y LOS ESPACIOS DEL SIMBOLO, Y EL SIMBOLO ES ESCANEADO A LO LARGO DE LA PRIMERA LINEA DE ESCANEADO PARA GENERAR UN PRIMER VALOR. ADEMAS, SE SELECCIONA UNA SEGUNDA LINEA ESENCIALMENTE PARALELA A LAS BARRAS Y LOS ESPACIOS DEL SIMBOLO ES SELECCIONADA CON UNA DISTANCIA ENTRE LAS DOS LINEAS DE ESCANEADO MENOR QUE EL ANCHO DE UN PIXEL, Y SE ESCANEA EL SIMBOLO A LO LARGA DE LA SEGUNDA LINEA PARA GENERAR UN SEGUNDO VALOR. TOMANDO COMO BASE LOS VALORES PRIMERO Y SEGUNDO, SE DECODIFICA EL SIMBOLO.
Description
Método y aparato para descodificación de símbolos
de código de barras utilizando análisis de barras y espacio
independiente.
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.
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 elevada densidad 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ñade 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.
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 define la reivindicación 5.
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 una imagen 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 el 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 rápido 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 las 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 6;
La figura 8 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 ajustar a unos
umbrales la señal compuesta de un símbolo de código de barras;
La figura 9 muestra la representación binaria de
parte de una señal de un símbolo de un código de barras con una
barra espuria;
La figura 10 muestra la representación binaria de
parte de una señal de un símbolo de código de barras con una barra
o un espacio espurios;
La figura 11 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 del código 39;
La figura 12 es un diagrama de flujo de bloques
del procesamiento llevado a cabo por el generador de señales de
gradientes del sistema de la figura 1 para generar señales de
gradientes de blanqueamiento y de ennegrecimiento para un símbolo
de código de barras; y
La figura 13 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 procesar señales de
gradientes de blanqueamiento y ennegrecimiento;
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 indicando 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.
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
un 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, unos
medios 202 del selector de símbolos 104 seleccionan 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á seleccionado cada cuatro filas en la imagen sin repetir
ninguna fila dos veces.
| 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) |
| 18 | 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 número
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 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.
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 sobrepasa un umbral especificado
máximo de barra/espacio) entonces 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 solamente a lo
largo de una o más filas/columnas vecinas en la imagen de
píxeles.
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 son 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 continuar 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, se utiliza una tabla 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, blancos o negros) 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 determinan igualmente
si alguna barra o espacio sobrepasa 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 transición 1 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 un contador de barra/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 sobrepasa 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 particular aplicación, el ancho máximo
especificado de barra/espacio es superior a cinco píxeles, 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 a un ancho de barra de seis
píxeles. Los técnicos en la materia entenderán que puede arreglarse
la situación 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
sobrepasa 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 continuar 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, 49 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) o
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
orientados al azar. 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 continúa
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 o bien de
píxeles binarias o bien de imágenes en escala de grises.
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, se representa
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)
- "Arrastrarse" 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 esta vez 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 solicitud 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 solicitud 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.
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 línea en la transmisión de un facsímil codificado de longitud de
recorrido puede dar por resultado tales roturas de las barras.
Dicho ruido de línea 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 tal 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:
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 recto 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 como el á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
C 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 contar con una
o más de las propiedades siguientes 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 son de 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 satisfecho otro tipo de parada.
Con referencia ahora a la figura 6, 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.
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 coinciden, 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
girados, estirados, 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 7, se representa
una imagen del símbolo de código de barras 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 7, 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 de la exposición de estas 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 expondrán más adelante en la presente descripción
conjuntamente con la exposición 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.
| Datos de la imagen original | |||
| Línea de barrido | |||
| Col. | Nº 1 | Nº 2 | Nº 3 |
| Fila =0 | Fila 2 | Fila 4 | |
| 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 \theta grados cada píxel original donde, en este ejemplo,
\theta 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)
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
exposición, todos los elementos de la lista (E) son denominados
colectivamente como 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.
En este modo de realización, los medios 904 se
intercalan entre las columnas redondeadas para determinar los
valores de intensidad en la lista (F). En esa realización, 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 las veces que cada 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)
Hay que observar que ninguno de los datos
girados, estirados 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)
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.
Con referencia ahora a la figura 8, 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 una
solicitud igualmente pendiente o por el generador 900 utilizando el
método rápido descrito anteriormente en esta descripción con
relación a la figura 6. 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, que
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 108
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 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 más grande 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)) es decir 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
redondeadas 12 y 13. Si, en una particular situación, 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
continuará buscando los píxeles máximos y mínimos 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 continúan 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,
mientras 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
considerados 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 esto es verdad 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áximos y mínimos totales
dentro de la señal compuesta.
Con referencia ahora a las figuras 9 y 10, 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 9 muestra la representación
binaria de una barra espuria 1 en lo que pudiera ser un solo
espacio. La figura 10 muestra la representación binaria de una
barra espuria 1 o de un espacio espurio 2 donde solamente debería
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 los
anchos mínimos de barra y de 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 9, los medios 1104 retiran la barra espuria 1 para crear un
solo espacio porque la barra 1 es demasiado estrecha para ser
válida.
En la figura 10, 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, los medios 1104 retiran
la barra 1 para que resulte un sólo 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 para
obtener un único espacio que finaliza en el punto 3.
Con referencia ahora a la Figura 8, después de
que los medios 1104 filtren la señal de umbral, los medios 1106
transmiten la señal filtrada al descodificador de señales
compuestas 110, el cual descodifica la señal filtrada utilizando
métodos convencionales de decodificación de símbolos de código de
barras.
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 11, 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 o bien dos barras anchas y un espacio ancho o
bien 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, entonces 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 primero 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 del 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 continúa hasta los medios 1408. Si el
descodificador 110 determina que hay tres espacios anchos y un
espacio estrecho, entonces el descodificador 110 supone que las
cinco barras son estrechas y que el carácter es un carácter válido
de código 39.
Si los medios 1404 clasifican uno de los
espacios 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 11, 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 (eso es, 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
ancho, 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 15, 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) estrechos. El
descodificador 110 toma trece barras y espacios de un símbolo I2 de
15 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-bit 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 15, 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 15. 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 15.
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.
Con referencia ahora a la figura 12, 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 6.
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 ha descrito anteriormente en esta descripción con relación
a la figura 6. 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. El vector de gradientes
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. De forma alternativa, los vectores de
gradientes de blanqueamiento y de ennegrecimiento acumulan el número
de cambios de píxel a píxel que aumenta y disminuye,
respectivamente, en oposición a la acumulación de magnitudes de
dichos cambios.
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,
como 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
5 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, como 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 aumenta 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 (L) 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 ha descrito anteriormente en la presente
descripción en relación con la figura 6. 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)
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.
| Porcentaje de | Tamaño del filtro | Pesos |
| sobremuestreo | ||
| 1,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
resultados de 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, 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} 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.
Con referencia ahora a la figura 3, 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 trasero y delantero,
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.
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 13 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 termina 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 en relación con la fi-
gura 8.
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 en relación con la fi-
gura 8.
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 (O). 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 VII 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.
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 a la izquierda y el 60% se encuentra a la
derecha.
En la Tabla VII, un "1" en la lista (S)
identifica el emplazamiento del centroide ponderado del segmento Nº
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.
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
Si la señal reconstruida tiene dos bordes
delanteros de barra consecutivos, entonces o bien 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 descodifcador 116
transmite la señal descodificada al selector de salida 118.
Tal como se ha descrito anteriormente en esta
descripción, en relación con el 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 piezas que han sido descritos e ilustrados
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 (8)
1. Un método 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 método las fases siguien-
tes:
tes:
- 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 y columnas pertenece el píxel dentro de la imagen de píxeles, seleccionando (902) dicha línea de barrido; y
- b)
- para cada píxel de la línea de barrido seleccionada, determinar (904) una o más indicaciones de columnas o filas giradas y 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)
- generar un valor de intensidad (F) para cada indicación de columna o de fila girada y estirada a partir de las intensidades de los píxeles en la línea de barrido seleccionada;
- d)
- para cada indicación (E) de columna girada y estirada, sumar (906) el valor de intensidad (F) a un elemento correspondiente de un vector compuesto (G) e incrementar un elemento correspondiente de un vector de recuento (H) de conformidad con el número de veces que el elemento correspondiente del vector compuesto haya sido sumado;
- e)
- repetir (910) 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 columna girada y estirada, determinar (912) un elemento de una señal compuesta (M) dividiendo el elemento del vector compuesto (G) por el elemento correspondiente del vector de recuento (H);
- g)
- para cada indicación de fila o columna girada y estirada, aplicar (1102) un umbral al elemento correspondiente de la señal compuesta para determinar un elemento de una señal ajustada a unos umbrales (N); y
- h)
- determinar el carácter basado en los elementos de la señal ajustada a unos umbrales.
2. 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;
3. 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.
4. El método de la reivindicación 1, en el
cual:
la fase b) se realiza multiplicando las
indicaciones de fila o columna de los píxeles en la línea de
barrido seleccionada por una matriz de rotación, en el cual los
valores del elemento de la matriz de rotación se basan en la
orientación del símbolo respecto de la imagen de píxeles y en el
porcentaje de sobremuestro.
5. 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)
- medios para generar un valor de intensidad (F) para cada indicación de columna o de fila girada y estirada a partir de las intensidades de los píxeles en la línea de barrido seleccionada;
- d)
- para cada indicación de columna o de fila girada y estirada (E), medios para sumar los valores de intensidad (F) a un elemento correspondiente de un vector compuesto (G) e incrementar un elemento correspondiente de un vector de recuento (H) de conformidad con el número de veces que el elemento que corresponde al vector compuesto haya sido sumado.
- e)
- medios para repetir las operaciones definidas en los puntos a)-d) para la próxima línea de barrido de dicha pluralidad de líneas de barrido;
- f)
- para cada indicación de fila o columna girada y estirada, medios para determinar un elemento de una señal compuesta (M) dividiendo el elemento del vector compuesto (G) por el elemento correspondiente del vector de recuento (H);
- g)
- para cada indicación de columna girada y estirada, medios para aplicar un umbral al elemento correspondiente de la señal compuesta para determinar un elemento de una señal de umbral (N); y
- h)
- medios para determinar el carácter basándose en los elementos de la señal de umbral.
6. El aparato de la reivindicación 5, en el cual
las líneas de barrido están separadas por más de un píxel.
7. El aparato de la reivindicación 5, en el cual
al menos algunas de las líneas de barrido no cruzan la totalidad
del símbolo.
8. El aparato de la reivindicación 5 en el
cual:
medios b) multiplican las indicaciones de la fila
o columna de los píxeles en la línea de barrido seleccionada
mediante una matriz de rotación en la cual los valores del elemento
de la matriz de rotación están basados en la orientación del
símbolo respecto de la imagen de píxeles y en el porcentaje de
sobremuestreo.
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 |
| EP98111652A EP0877334B1 (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 |
| 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 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2214563T3 true ES2214563T3 (es) | 2004-09-16 |
Family
ID=41110784
Family Applications (2)
| 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. |
| 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. |
Family Applications After (1)
| 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. |
Country Status (9)
| Country | Link |
|---|---|
| US (1) | US5352878A (es) |
| EP (4) | EP0877334B1 (es) |
| JP (1) | JP2832645B2 (es) |
| AT (2) | ATE257962T1 (es) |
| AU (1) | AU7828794A (es) |
| CA (1) | CA2191433C (es) |
| DE (1) | DE69433492T2 (es) |
| ES (2) | ES2214563T3 (es) |
| WO (1) | WO1996007155A1 (es) |
Families Citing this family (53)
| 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 |
| EP0926620B1 (en) | 1997-12-24 | 2001-05-30 | Datalogic S.P.A. | A method of detecting a bar code on a scan line, and an apparatus for detecting and decoding a bar code |
| 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 |
| 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 |
| US7147161B2 (en) | 1998-06-12 | 2006-12-12 | Symbol Technologies, Inc. | Digitizing bar code symbol data |
| US6513714B1 (en) | 1998-09-14 | 2003-02-04 | Psc Scanning, Inc. | Character reconstruction and element level processing in bar code scanning system |
| EP2211291A3 (en) | 1998-09-14 | 2012-08-15 | Datalogic Scanning, Inc. | Method of assembling label information from partial scans of label data |
| 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 |
| DE69801161T2 (de) | 1998-10-23 | 2002-03-07 | Datalogic S.P.A., Lippo Di Calderara Di Reno | 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 |
| 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 |
| AU2002256206A1 (en) * | 2001-04-13 | 2002-10-28 | The Code Coproration | System and method for encoding and decoding data and references to data in 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 |
| 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 |
| 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 |
| 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 |
| US7070091B2 (en) * | 2002-07-29 | 2006-07-04 | The Code Corporation | Systems and methods for interfacing object identifier readers to multiple types of applications |
| CN100361141C (zh) * | 2003-08-04 | 2008-01-09 | 汤姆森许可贸易公司 | 用于减少图像中噪声的设备和方法 |
| 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 |
| CN120597911A (zh) * | 2025-05-21 | 2025-09-05 | 浙江华睿科技股份有限公司 | 识别码的检测方法、装置、终端及计算机可读存储介质 |
Family Cites Families (30)
| 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 |
| DE3854885T2 (de) * | 1987-09-28 | 1996-05-15 | Sumitomo Electric Industries | Kombinieren von gelesenen Strichcode-Daten |
| 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 |
-
1993
- 1993-01-29 US US08/011,458 patent/US5352878A/en not_active Expired - Lifetime
-
1994
- 1994-08-29 EP EP98111652A patent/EP0877334B1/en not_active Expired - Lifetime
- 1994-08-29 AT AT98111652T patent/ATE257962T1/de not_active IP Right Cessation
- 1994-08-29 CA CA002191433A patent/CA2191433C/en not_active Expired - Lifetime
- 1994-08-29 JP JP8508683A patent/JP2832645B2/ja not_active Expired - Fee Related
- 1994-08-29 ES ES97103130T patent/ES2214563T3/es not_active Expired - Lifetime
- 1994-08-29 EP EP97103131A patent/EP0795836B8/en not_active Expired - Lifetime
- 1994-08-29 AU AU78287/94A patent/AU7828794A/en not_active Abandoned
- 1994-08-29 EP EP97103130A patent/EP0785521B1/en not_active Expired - Lifetime
- 1994-08-29 DE DE69433492T patent/DE69433492T2/de not_active Expired - Lifetime
- 1994-08-29 WO PCT/US1994/009704 patent/WO1996007155A1/en not_active Ceased
- 1994-08-29 ES ES98111652T patent/ES2214662T3/es not_active Expired - Lifetime
- 1994-08-29 AT AT97103131T patent/ATE241180T1/de not_active IP Right Cessation
- 1994-08-29 EP EP94929112A patent/EP0783739A1/en not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| EP0795836A3 (en) | 1999-12-08 |
| US5352878A (en) | 1994-10-04 |
| EP0795836B1 (en) | 2003-05-21 |
| ATE257962T1 (de) | 2004-01-15 |
| CA2191433C (en) | 2000-07-11 |
| EP0877334A3 (en) | 2000-12-06 |
| DE69433492T2 (de) | 2004-10-28 |
| CA2191433A1 (en) | 1996-03-07 |
| JPH09512936A (ja) | 1997-12-22 |
| ATE241180T1 (de) | 2003-06-15 |
| EP0877334A2 (en) | 1998-11-11 |
| EP0785521A3 (en) | 2001-05-16 |
| DE69433492D1 (de) | 2004-02-19 |
| AU7828794A (en) | 1996-03-22 |
| WO1996007155A1 (en) | 1996-03-07 |
| EP0785521B1 (en) | 2004-01-21 |
| EP0877334B1 (en) | 2004-01-14 |
| JP2832645B2 (ja) | 1998-12-09 |
| EP0783739A1 (en) | 1997-07-16 |
| EP0785521A2 (en) | 1997-07-23 |
| ES2214662T3 (es) | 2004-09-16 |
| EP0795836A2 (en) | 1997-09-17 |
| EP0795836B8 (en) | 2003-08-13 |
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 | |
| US5324923A (en) | Apparatus for producing a dynamically variable machine readable binary code and method for reading and producing thereof | |
| US8152070B2 (en) | Two-dimensional symbol and method for reading same | |
| US5404003A (en) | Method and apparatus for decoding bar code symbols using byte-based searching | |
| US5814801A (en) | Maxicode data extraction using spatial domain features exclusive of fourier type domain transfer processing | |
| US7337970B2 (en) | Barcode scanner decoding | |
| EP0561334A2 (en) | Method and apparatus for decoding two-dimensional bar code using CCD/CMD camera | |
| JP2002541566A (ja) | 郵便番号読取り用の撮像エンジンおよび技術 | |
| JP3115003B2 (ja) | モジュール・サイズの比率解析を用いてバーコード記号を解読する方法および装置 | |
| JPH07254037A (ja) | 二次元コード | |
| US7726572B2 (en) | Bar code scanning decoding | |
| JP2925515B2 (ja) | ピクセル・イメージのバーコード・シンボルの読取り方法および装置 | |
| JP2864012B2 (ja) | ピクセル・イメージのバーコード・シンボルの読取り方法および装置 | |
| JPH0750496B2 (ja) | 画信号処理装置 | |
| JPH02168363A (ja) | 画像信号処理装置 | |
| JPH02168364A (ja) | 画信号処理装置 | |
| JP2001357350A (ja) | 一次元バーコードの位置検出方法および一次元バーコードの位置検出装置 | |
| JPH02125382A (ja) | 画像信号処理装置 | |
| JPH02176884A (ja) | 画像信号処理装置 | |
| JPH02125387A (ja) | 画信号処理装置 | |
| JPH0683996A (ja) | シンボル情報読取装置 |