ES2214662T3 - Metodo y aparato para descodificar simbolos de codigo de barras para analisis independientes utilizando barras y espacios. - Google Patents
Metodo y aparato para descodificar simbolos de codigo de barras para analisis independientes utilizando barras y espacios.Info
- Publication number
- ES2214662T3 ES2214662T3 ES98111652T ES98111652T ES2214662T3 ES 2214662 T3 ES2214662 T3 ES 2214662T3 ES 98111652 T ES98111652 T ES 98111652T ES 98111652 T ES98111652 T ES 98111652T ES 2214662 T3 ES2214662 T3 ES 2214662T3
- Authority
- ES
- Spain
- Prior art keywords
- signal
- gradient
- blackening
- whitening
- gradients
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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)
- Character Input (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Error Detection And Correction (AREA)
- Image Analysis (AREA)
Abstract
LA INVENCION SE REFIERE A UN PROCEDIMIENTO PARA LEER UN SIMBOLO DE UN CODIGO DE BARRAS EN UNA IMAGEN COMPUESTA DE PIXELES, QUE INCLUYE LOS PASOS DE GENERAR UNA PRIMERA SEÑAL REPRESENTATIVA DE LAS TRANSICIONES DE OSCURO A CLARO EN CADA SIMBOLO, GENERAR UNA SEGUNDA SEÑAL REPRESENTATIVA DE LAS TRANSICIONES DE CLARO A OSCURO EN DICHO SIMBOLO, Y DECODIFICAR DICHO SIMBOLO DE ACUERDO CON DICHA PRIMERA Y DICHA SEGUNDA SEÑAL, PREFERIBLEMENTE SEGMENTANDO DICHA PRIMERA SEÑAL EN AL MENOS UN PRIMER SEGMENTO, SELECCIONANDO UNA PRIMERA POSICION EN DICHO PRIMER SEGMENTO, CORRESPONDIENTE A UNA TRANSICION DE OSCURO A CLARO, SEGMENTANDO DICHA SEGUNDA SEÑAL EN AL MENOS UN SEGUNDO SEGMENTO, Y SELECCIONANDO UNA SEGUNDA POSICION EN DICHO SEGUNDO SEGMENTO, CORRESPONDIENTE A UNA TRANSICION DE CLARO A OSCURO, MEDIANTE LO CUAL DICHAS POSICIONES PRIMARIAS Y SECUNDARIAS SE UTILIZAN COMO UNA BASE PARA GENERAR UNA SEÑAL RECONSTRUIDA RESULTANTE DEL PROCESO DE DECODIFICACION.
Description
Método y aparato para descodificar símbolos de
código de barras para análisis independientes utilizando barras y
espacios.
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 densidad elevada en imágenes de
facsímil, es decir, imágenes de símbolos de código de barras
generadas por máquinas de telerreproducción y similares. Se debiera
poder adaptar un lector de código de barras que pueda localizar y
descodificar símbolos de código de barras en una imagen generada por
una máquina de telerreproducción para que lea símbolos de código de
barras en una imagen generada por cualquier otra fuente de imágenes
tales como un escáner o una cámara.
La publicación de la Patente Europea Nº 0449645A1
describe como se obtienen datos de líneas de barrido de un símbolo
de código de barras y se almacenan los datos de dichas líneas de
barrido en una memoria para imágenes. Se desvían los datos de las
líneas de barrido mediante la desviación real de los datos de las
líneas de barrido en el interior de la memoria de imágenes y
mediante la desviación virtual de los datos de las líneas de barrido
utilizando un vector de equilibrio que se añada al emplazamiento de
valores secuenciales extraídos de la memoria. Se toma la media de
los puntos de muestra correspondientes desde las líneas desviadas de
los datos de líneas de barrido.
La invención es un método para procesar una
imagen de píxeles de un símbolo de código de barras para
descodificar un carácter tal como define la reivindicación 1. La
invención se refiere asimismo a un aparato según la reivindicación
15.
La figura 1 es un diagrama de bloques de
funciones de un sistema de lectura de símbolos de código de
barras;
La figura 2 es un diagrama de flujos de bloques
del procesamiento llevado a cabo por el localizador de símbolos del
sistema de la figura 1 para localizar símbolos de código de barras
en imágenes de píxeles;
La figura 3 es un diagrama de flujo de bloques
del procesamiento llevado a cabo por el localizador de símbolos de
la figura 2 para localizar posibles símbolos de código de barras en
imágenes binarias;
La figura 4 es una imagen de un símbolo de código
de barras localizado por un localizador de símbolos de la figura
2;
La figura 5 es una imagen de un símbolo de código
de barras cuya barra trasera está rota en dos segmentos;
La figura 6 es un diagrama de flujo de bloques de
un método lento llevado a cabo por un generador de señales
compuestas del sistema de la figura 1 para generar una señal
compuesta de un símbolo de código de barras;
La figura 7 es una imagen de un símbolo de código
de barras que representa el rectángulo de muestra sobre el cual el
símbolo es analizado por los generadores de señales compuestas y de
gradientes del sistema de la figura 1;
La figura 8 es una imagen de una porción del
símbolo del código de barras de la figura 7 que muestra algunas de
las líneas de barrido utilizadas por el generador de señales
compuestas del sistema de la figura 1 cuando lleva a cabo el método
lento de la figura 6;
La figura 9 es un diagrama de flujo de bloques de
un método lento llevado a cabo por un generador de señales
compuestas del sistema de la figura 1 para generar una señal
compuesta de un símbolo de código de barras;
La figura 10 es una imagen del símbolo del código
de barras de la figura 7 que muestra líneas de barrido utilizadas
por el generador de señales compuestas del sistema de la figura 1 al
llevar a cabo el método rápido de la figura 9;
La figura 11 es un diagrama de flujo de bloques
del procesamiento llevado a cabo por el formador de umbrales de
señales compuestas del sistema de la figura 1 para formar un umbral
para la señal compuesta de un símbolo de código de barras;
La figura 12 es la representación binaria de
parte de la señal del símbolo de código de barras con una barra
espuria;
La figura 13 es la representación binaria de
parte de la señal del símbolo de código de barras con una barra o un
espacio espurio;
La figura 14 es un diagrama de flujo de bloques
del procesamiento llevado a cabo por el descodificador de señales
compuestas del sistema de la figura 1 para descodificar los
caracteres de un símbolo de código de barras de Código 39;
La figura 15 es un diagrama de flujos de bloques
del procesamiento llevado a cabo por el generador de señales de
gradientes del sistema de la figura 1 para generar las señales de
gradientes de blanqueamiento y de ennegrecimiento para un símbolo de
código de barras; y
La figura 16 es un diagrama de flujo de bloques
del procesamiento llevado a cabo por el procesador de señales de
gradientes del sistema de la figura 1 para tratar las señales de
gradientes de blanqueamiento y de ennegrecimiento.
Con referencia a la figura 1, se representa un
diagrama de bloque de funciones del sistema de lectura de símbolos
de código de barras 100. El sistema 100 localiza y descodifica los
símbolos de código de barras con posiciones y orientaciones
desconocidas en imágenes de píxeles bidimensionales. El sistema 100
puede estar destinado a la localización y descodificación de
símbolos de código de barras en imágenes binarias o en imágenes en
escalas de grises.
La entrada de datos 102 del sistema 100 recibe
los datos de una imagen de píxeles y el localizador de símbolos 104
localiza los símbolos de código de barras contenidos en la imagen de
píxeles. El sistema 100 trata de descodificar cada símbolo de código
de barras localizado en la imagen de píxeles mediante dos procesos
paralelos.
Según uno de los procesos, el generador de
señales compuestas 106 genera una señal compuesta que corresponde al
símbolo del código de barras. El formador de umbrales 108 de la
señal compuesta forma entonces umbrales y filtra la señal compuesta
para generar una señal binaria que corresponda a la señal compuesta.
El descodificador de señales compuestas 110 descodifica entonces el
símbolo del código de barras descodificando la señal binaria. Si el
descodificador de señales 110 descodifica con éxito el símbolo del
código de barras, el descodificador 110 transmite la señal
descodificada al selector de salida 118. En caso contrario, el
descodificador de señales 110 transmite una señal al selector de
salida 118 que indique que no se ha logrado la descodificación.
Según el otro proceso para descodificar cada
símbolo de código de barras localizado, el generador de señal de
gradientes 112 genera dos señales de gradientes desde el símbolo de
código de barras localizado. El procesador de señal de gradientes
114 procesa las dos señales de gradientes para generar una señal
binaria reconstruida. El descodificador de señal de gradientes 116
descodifica entonces el símbolo de código de barras mediante la
descodificación de la señal reconstruida. Si el descodificador de
señales 116 descodifica con éxito el símbolo del código de barras,
el descodificador 116 transmite la señal descodificada al selector
de salida 118. En caso contrario, el descodificador de señales 116
transmite una señal al selector de salida 118 que indica que no se
ha logrado la
descodificación.
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
símbolo de código de barras en una imagen de píxeles se encuentra
una zona de píxeles claros que se llama zona tranquila. El propio
símbolo está comprendido en una secuencia de barras oscuras
separadas por espacios claros.
Según un modo de realización preferido, un medio
202 del selector de símbolos 104 selecciona una nueva línea de
búsqueda en la imagen de píxeles. Una línea de búsqueda puede ser
una fila o una columna de la imagen de píxeles. Los medios 202
pueden seleccionar líneas de búsqueda empleando la búsqueda binaria
tal como se describe en la Patente US nº 5.348.028 titulada
"Métodos y aparatos para detectar y descodificar símbolos de
código de barras", publicada el 30 de agosto de 1994 que es
propiedad actualmente del presente cesionario. Un sistema adecuado
para seleccionar las líneas de búsqueda utilizando una búsqueda
binaria está descrito en la sección de la solicitud 910 titulada
"Detección y descodificación de símbolos de código de barras".
En general, como un símbolo de código de barras normalmente extiende
múltiples filas y columnas en la imagen de píxeles, los medios 202
de preferencia seleccionan filas en una secuencia que emplee un
amplio dibujo que se vuelve más fino a medida que se desarrolla
el
proceso.
proceso.
La Tabla I presenta una secuencia preferida para
seleccionar filas (o, de forma análoga, columnas) en una imagen de
píxeles que tenga por ejemplo 2048 columnas y 4096 filas. En la
secuencia preferida, la selección de filas como líneas de búsqueda
se inicia en la fila número 64 con un tamaño de paso de 64. Después
de seleccionar las filas (64, 128, 192 ... 4032, 4096) la secuencia
vuelve a la fila número 32 con el mismo tamaño de paso de 64 filas.
La selección continúa como se indica en la Tabla I. Después de
seleccionar las filas (4, 12, 20 ...4084, 4092) la secuencia total
habrá selecciona cada cuatro filas en la imagen sin repetir ninguna
fila dos veces.
TABLA
I
Tamaño de paso de fila | Número de fila de inicio | Secuencia de filas |
64 | 64 | (64, 128 ... 4096) |
64 | 32 | (32, 96 ... 4064) |
32 | 16 | (16, 48 ... 4080) |
16 | 8 | (8, 24 ... 4088) |
8 | 4 | (4, 12 ... 4092) |
Una secuencia de filas de búsqueda seleccionadas
tales como en la Tabla I normalmente aumenta la velocidad y
eficiencia del sistema 100. Los expertos en la materia entenderán
que dicha secuencia puede variar dependiendo de las características
de las imágenes de píxeles a procesar.
Si la imagen de píxeles contiene un numero
conocido de símbolos de código de barras, la secuencia de búsqueda
termina después de que el número requerido de símbolos de código de
barras haya sido localizado y descodificado. Asimismo, el sistema
100 de preferencia mantiene localizadas las zonas de la imagen que
contienen símbolos de código de barras que ya hayan sido localizados
y descodificados. El localizador de símbolos 104 de preferencia
omite aquellas zonas que ya hayan sido procesadas.
Los medios 204 empiezan buscando a lo largo de
una línea de búsqueda seleccionada un posible (o potencial) símbolo
de código de barras a partir de un borde de inicio de la imagen de
píxeles. Cuando los símbolos del código de barras que se espera
encontrar en la imagen de píxeles tienen una longitud mínima
conocida, los medios 204 de preferencia no buscan la longitud total
de cada línea de búsqueda seleccionada. Como el sistema 100
solamente descodifica los símbolos de código de barras
"completos", los medios 204 omiten una porción de cada línea de
búsqueda seleccionada adyacente al borde de parada de la línea de
búsqueda. La porción de cada línea de búsqueda que se omite
corresponde en distancia al símbolo de código de barras más corto
esperado.
Los medios 204 reconocen un posible símbolo de
código de barras como una secuencia continua de N1 píxeles
"claros" (que corresponden a una zona tranquila esperada)
seguida por una secuencia de N2 transiciones entre píxeles
"claros" y "oscuros" (que corresponden a transiciones
entre barras y espacios esperados), donde N1 y N2 son los umbrales
primero y segundo especificados, respectivamente).
Los medios 204 pueden buscar posibles símbolos de
código de barras en imágenes binarias o en imágenes en escala de
grises. En las imágenes binarias, se puede definir que los píxeles
claros tengan un valor de 1 y los píxeles oscuros tengan un valor de
0. En las imágenes en escala de grises, se puede definir que un
píxel que tenga un valor mayor que un tercer umbral es un píxel
claro; en caso contrario, es un píxel oscuro.
Los medios 204 funcionan mediante la búsqueda
primeramente de una posible zona tranquila de símbolo de código de
barras. Los medios 204 detectan una posible zona tranquila de
símbolos de código de barras cuando encuentran una secuencia
continua de píxeles claros N1 a lo largo de la línea de búsqueda
seleccionada. En cuanto se haya detectado una posible zona
tranquila de símbolo de código de barras, los medios 204 buscan a
continuación a lo largo de la línea de búsqueda seleccionada una
secuencia de transiciones de claro /oscuro N2, donde cada transición
claro/oscuro corresponde a un borde de una barra en el posible
símbolo de código de barras (es decir, una transición entre una
barra y un espacio del símbolo). El término "transición
claro/oscuro" se refiere colectivamente a ambas transiciones de
claro a oscuro y de oscuro a claro.
Después de localizar el primer píxel oscuro
siguiente a la posible zona tranquila, los medios 204 comprueban si
dicho píxel oscuro está contenido en un símbolo de código de barras
que ya haya sido localizado y descodificado por el sistema 100. Si
así fuera, el posible símbolo de código de barras es rechazado pues
ya había sido procesado.
Asimismo, mientras cuentan el número de
transiciones claro/oscuro, los medios 204 comprueban el ancho de
cada posible barra y espacio. Si cualquier posible barra/espacio es
demasiado ancho (es decir, si excede un umbral especificado máximo
de barra/espacio) se rechaza el posible símbolo y se inicia una
nueva búsqueda de una posible zona tranquila de símbolo de código de
barras.
Después de localizar un posible símbolo de código
de barras a lo largo de una línea de búsqueda seleccionada (es
decir, después de localizar una posible zona tranquila seguida de
un número mínimo de posibles barras y espacios), los medios 204
comprueban el posible símbolo repitiendo la búsqueda de zona
tranquila y la transición de barra/espacio contando a lo largo de
una o más filas/columnas vecinas en la imagen de píxeles.
Con referencia ahora a la figura 3, se representa
un diagrama de flujo de bloques del procesamiento llevado a cabo por
los medios 204 del localizador de símbolos 104 para localizar
posibles símbolos de código de barras cuando la imagen de píxeles es
una imagen binaria. En una imagen binaria, cada píxel está
representado por un sólo bit, donde, por ejemplo, un "1"
corresponde a un píxel claro y un "0" corresponde a una píxel
oscuro. Los medios 204 realizan una búsqueda de zonas tranquilas
basada en los bytes y el recuento basado en los bytes de
transiciones de barra/espacio, donde ocho píxeles binarios
consecutivos en la imagen de píxeles son tratados como un solo byte
de los datos de imagen.
Los medios 302 buscan a lo largo de la línea de
búsqueda seleccionada un byte cada vez. Un byte que corresponda a
ocho píxeles, todos los cuales localizados en una posible zona
tranquila, tendrá normalmente ocho bits (es decir, píxeles) igual a
1. De este modo, si la longitud mínima de la zona tranquila equivale
a 32 píxeles, entonces una línea de búsqueda a través de una zona
tranquila tendrá al menos tres bytes consecutivos que son todos de
1. Si los medios 302 detectan tres bytes de zona tranquila
consecutivos (es decir todos de 1), entonces se localiza una posible
zona tranquila y los medios 304 ordenan que el proceso continúe en
los medios 306. En caso contrario, el proceso vuelve a los medios
302 para seguir con la búsqueda basada en bytes de una posible zona
tranquila.
Los medios 306 realizan un recuento basado en
bytes de las transiciones de barra/espacio en el posible símbolo de
código de barras. Cada byte que represente barras y espacios en un
posible símbolo de código de barras facilita información específica
con relación al número de transiciones de claro/oscuro en una
porción del símbolo. Por ejemplo, el byte "01100110" contiene
cuatro transiciones, dos de oscuro a claro (es decir, de 0 a 1) y
dos de claro a oscuro (es decir, de 1 a 0). Aun más, si el último
bit del byte anterior era "1", entonces existe una transición
de claro a oscuro entre el anterior byte y el actual byte. De forma
similar, si el primer bit en el próximo byte es un "1" entonces
existe una transición de oscuro a claro entre el byte actual y el
siguiente byte.
Los medios 306, de preferencia emplean dos tablas
de comprobación para realizar el recuento basado en los bytes de las
transiciones barra/espacio, una tabla se usa cuando el píxel
anterior (es decir, el último bit del anterior byte) es un "1"
y la otra tabla se utiliza cuando el anterior píxel es un "0".
Cada tabla tiene 256 entradas, una para cada posible combinación de
píxeles en un byte de ocho bits.
Cada entrada de cada tabla representa tres
valores: (a) el número de píxeles delanteros (más a la izquierda)
que son del mismo "color" (es decir,negros o blancos) que el
píxel anterior, (b) el número de píxeles traseros (más a la derecha)
(incluyendo el último píxel) que son del mismo color que el ultimo
píxel del byte, y (c) el número de transiciones dentro del byte de
ocho píxeles (incluyendo cualquier transición desde el píxel
anterior).
Por ejemplo, en la tabla (anterior píxel = 1), el
byte "01100110" tiene (a) "0" como número de píxeles
delanteros que son del mismo color que el píxel anterior, (b)
"1" como número de píxeles traseros que son del mismo color que
el último píxel, y (c) "5" como el número de transiciones
dentro del byte. En la tabla (píxel anterior = 0), el byte
"01100110" tiene (a) "1" como número de píxeles delanteros
que tienen el mismo color que el bit anterior. (b) "1" como el
número de píxeles traseros que tienen el mismo color que el último
píxel, y (c) "4" como el número de transiciones dentro del
byte.
Los medios 306 utilizan los valores derivados de
las entradas de la tabla para contar el número de transiciones y
para determinar el tamaño de cada barra y espacio. Los medios 306
mantienen un recuento dinámico del número de transiciones a medida
que procesa cada secuencia de bytes de imagen a lo largo de una
línea de búsqueda seleccionada. Los medios 306 también determinan
igualmente si alguna barra o espacio excede los umbrales
especificados manteniendo un recuento dinámico del tamaño de
barra/espacio actual. Los medios 306 realizan estos cómputos
utilizando la información derivada de las dos tablas.
Por ejemplo, suponen que una secuencia de bytes
de imagen a lo largo de una línea de búsqueda seleccionada es
("00011011", "01101101", "11001100",
"00000111"). Suponen asimismo que el píxel anterior para el
primer byte en la secuencia era "0". Después del primer byte,
el recuento dinámico del número de transiciones es 3. El segundo
byte añade otras 6 transiciones al recuento dinámico, por un total
de 9. El tercer byte añade otras 3 transiciones, por un total de 12.
El cuarto byte añade otra 1 transición por un total de 13.
A medida que se procesa cada byte, los medios 308
determinan si alguna barra o espacio es demasiado ancho mediante el
incremento y el control continuos de contador de barra actual/tamaño
de espacio. Para cualquier píxel determinado a lo largo de una línea
de búsqueda seleccionada, este contador de tamaños representa el
número de píxeles consecutivos que comparten el mismo color que el
píxel dado y que es inmediatamente anterior al píxel dado a lo largo
de la línea de búsqueda. Si el ancho de una barra/espacio es mayor
que un ancho máximo especificado (es decir, si el contador de
tamaños excede un determinado umbral) entonces el posible símbolo
es rechazado y los medios 308 dirigen el proceso de vuelta a los
medios 302 para reiniciar la búsqueda basada en bytes de una posible
zona tranquila. En caso contrario, el proceso continúa hasta los
medios 310.
Con referencia de nuevo al ejemplo de secuencia
de bytes de imagen descrita en dos párrafos más arriba, cuando el
color cambia de claro a oscuro entre el final del primer byte y el
principio del segundo byte, el contador de tamaño de barra
actual/tamaño de espacio es reajustado a cero en este punto a lo
largo de la línea de búsqueda. Cuando se procesa el cuarto byte, el
número de píxeles traseros del mismo color (2) a partir del tercer
byte aumenta por el número de píxeles delanteros del mismo color que
el píxel anterior (5) para conseguir la actual barra/tamaño de
espacio de 7 píxeles.
Si en una aplicación particular, el ancho máximo
especificado de barra/espacio es más grande que cinco píxeles,
entonces se aplica la discusión que antecede. No obstante, si el
ancho máximo especificado de barra/espacio es de cinco píxeles o
inferior, entonces puede que sea necesario un procesamiento
especial. Por ejemplo, si el ancho máximo de barra es de cinco
píxeles, entonces el byte "10000001" corresponderá a un ancho
de barra de seis píxeles. Los técnicos en la materia entenderán que
esta situación puede arreglarse manipulando las entradas de las dos
tablas de dicho byte. Por ejemplo, si los números de píxeles
delanteros del mismo color que el píxel anterior almacenados en
ambas tablas para el byte "10000001", fueran almacenados como
seis, entonces el procesamiento antes descrito solucionaría esta
particular situación.
A medida que se procesa cada byte, los medios 310
determinan si el recuento dinámico del número de transiciones excede
de un umbral determinado, por ejemplo 30. Si así fuera, entonces se
reconoce un posible símbolo de código de barras y continúa el
procesamiento hasta los medios 312; en caso contrario, el proceso
vuelve a los medios 306 para seguir con el recuento de transiciones
basado en bytes.
El proceso alcanza los medios 312 cuando se
reconoce un posible símbolo de código de barras. Los medios 312
comprueban el posible símbolo mediante la repetición de la búsqueda
de la zona tranquila basada en bytes y el recuento de transición de
los medios 302 a través de los medios 310 a lo largo de líneas de
búsqueda vecinas seleccionadas. Los medios 312, de preferencia
seleccionan tres líneas de búsqueda vecinas paralelas a cada lado de
la línea de búsqueda original.
Cuando la línea de búsqueda original es una fila
de imagen, las líneas de búsqueda vecinas son de preferencia cada
segunda o tercera fila. Por ejemplo, si la fila 40 es la línea de
búsqueda original, los medios 312 pueden seleccionar ahora las filas
31, 34, 37, 43, 46, 43 como las seis líneas de búsqueda vecinas.
Los medios 312 funcionan en primer lugar
identificando el píxel a lo largo de la línea de búsqueda original
que corresponde al inicio del posible símbolo. Este píxel es el
primer píxel oscuro que sigue a la posible zona tranquila. Basándose
en este primer píxel oscuro, los medios 312 seleccionan una columna
de inicio en la imagen de píxeles para cada línea de búsqueda
vecina. Cuando se realiza la búsqueda a lo largo de líneas de
búsqueda de izquierda a derecha, se sitúa la columna de inicio en la
izquierda del primer píxel oscuro a una distancia equivalente a la
longitud de al menos dos zonas tranquilas mínimas. Por ejemplo, si
el primer píxel oscuro a lo largo de la línea de búsqueda original
está en la columna 1000 y si el tamaño mínimo de una zona tranquila
es de 32 píxeles, entonces los medios 312 empezarán la búsqueda en
la columna 936 de cada línea de búsqueda
vecina.
vecina.
De forma similar, los medios 312 seleccionan la
columna final de cada línea de búsqueda vecina desplazándose desde
el primer píxel oscuro hacia la derecha a una distancia equivalente
a la longitud del máximo símbolo de código de barras esperado más
dos zonas tranquilas mínimas. Siguiendo con el ejemplo anterior, si
la longitud máxima del símbolo es de 300 píxeles, entonces los
medios 312 finalizarán la búsqueda en la columna (1000 + 300 + 64) ó
1364 de cada línea de búsqueda vecina. En un modo de realización
preferido, se verifica un posible símbolo de código de barras si al
menos tres de las seis líneas de búsqueda vecinas contienen el mismo
posible símbolo. Para que una línea de búsqueda vecina contenga el
mismo posible símbolo, el primer píxel oscuro de la línea de
búsqueda vecina debe estar en una columna dentro de la mitad de una
zona tranquila mínima partiendo de la columna que contenía el primer
píxel negro a lo largo de la línea de búsqueda original.
Los técnicos en la materia entenderán que los
medios 312 realizan selecciones análogas cuando las líneas de
búsqueda son columnas. Entenderán igualmente que el procedimiento
preferido de selección de líneas de búsqueda vecinas está destinado
a procesar imágenes que tengan símbolos de código de barras de
orientación desordenada. Los técnicos en la materia reconocerán que
la búsqueda de zona tranquila basada en bytes y el recuento de
transiciones pueden implantarse en sistemas que tengan otra cifra
distinta de ocho bits (por ejemplo, píxeles) por byte.
Con referencia de nuevo a la Figura 2, si un
símbolo de código de barras es localizado y verificado, los medios
206 del localizador de símbolos 104 dirigen el proceso al
localizador de ángulos 208; en caso contrario, el proceso sigue
hasta los medios 214.
El modo de realización particular de búsqueda
basada en bytes para símbolos de código de barras en imágenes de
píxeles descrito en esta sección de la presente descripción,
pertenece al procesamiento de imágenes de píxeles binarias
únicamente. Los técnicos en la materia entenderán que todas las
demás particularidades del sistema 100 descrito en la presente
descripción pertenezcan al procesamiento de imágenes de píxeles
binarias o de imágenes en escala de
grises.
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, hay
interferencias en una imagen de símbolo de código de barras 400
localizada por los medios 204 donde el píxel 402 es el primer píxel
oscuro a lo largo de la línea de búsqueda original. Resumiendo, el
algoritmo de localización de ángulos descrito en la Patente US Nº
5.343.029 comprende las fases siguientes:
- (1)
- "Arrastrandose" en dirección de la agujas de un reloj a lo largo del borde 408 de la barra delantera 410 del símbolo de código de barras 400 desde el primer píxel oscuro 402 hasta que se detecta el final de la barra 410. El final de la barra es detectado como un cambio en la dirección de arrastre mayor que un umbral especificado. Dicho cambio corresponde al arrastre alrededor de un ángulo en lugar de a lo largo de una línea. Esta fase localiza el ángulo superior izquierdo 408 del símbolo 400;
- (2)
- Arrastrarse en dirección opuesta a las agujas de un reloj a lo largo de la barra delantera 410 para localizar el ángulo inferior izquierdo 426 del símbolo 400;
- (3)
- Proyectar la línea perpendicular 412 desde el píxel del centro 404 de la barra delantera 410 a través del símbolo 400 tal como se determina desde los ángulos 408 y 426;
- (4)
- Buscar, a lo largo de la línea perpendicular 412 de izquierda a derecha empezando en el píxel del centro 404 la zona tranquila 418, en el extremo más alejado del símbolo 400;
- (5)
- Buscar a lo largo de la línea perpendicular 412 de derecha a izquierda empezando en la zona tranquila 418 el último píxel oscuro 420 en el extremo más alejado del símbolo 400;
- (6)
- Arrastrarse en dirección opuesta a las agujas de un reloj a lo largo del borde exterior 422 de la barra trasera 414 para localizar el ángulo superior derecho 416 del símbolo 400, y
- (7)
- Arrastrarse en dirección opuesta a las agujas de un reloj a lo largo de la barra trasera 414 para localizar el ángulo inferior derecho 424 del símbolo 400.
Además de estas siete fases del algoritmo de
localización de ángulos descrito en la aplicación 910, el
localizador de ángulos 208 comprueba de preferencia la precisión de
los ángulos localizados realizando las siguientes fases adicionales,
no descritas en la aplicación 910:
- (8)
- Comprobar que el segmento de línea definido por el primer píxel oscuro 402 y el ángulo 408 y el segmento de línea definido por el primer píxel oscuro 402 y el ángulo 426 son suficientemente colineales;
- (9)
- Comprobar que el segmento de línea definido por el último píxel oscuro 420 y ángulo 416 y el segmento de línea definido por el último píxel oscuro 420 y ángulo 424 estén suficientemente colineales; y
- (10)
- Comprobar que el segmento de línea definido por los ángulos 408 y 426 y el segmento de línea definido por los ángulos 416 y 424 son suficientemente paralelos.
El posible símbolo de código de barras es
rechazado si los segmentos de línea correspondientes de las fases
(8), (9) o (10) no están suficientemente paralelos. Dos segmentos de
línea están suficientemente paralelos si la diferencia entre sus
inclinaciones se encuentra dentro de un umbral especificado. Como
los segmentos de líneas correspondientes (8) y (9) comparten un
punto común (es decir, primer píxel oscuro 402 y un último píxel
oscuro 420, respectivamente), la prueba del paralelismo equivale a
la prueba de la colinealidad. El localizador de ángulos 208
determina las coordenadas (fila, columna) en la imagen de píxeles de
los cuatro ángulos localizados 408, 426, 416 y 424 del símbolo de
código de barras 400.
Después de que el localizador de ángulos 208
localice cuatro ángulos para el símbolo de código de barras, los
medios 210 corrigen el emplazamiento de al menos uno de los cuatro
ángulos. Los cuatro ángulos seleccionados por el localizador de
ángulos 208 define un cuadrilátero. No obstante, se define
idealmente un símbolo de código de barras como un rectángulo - un
tipo particular de cuadrilátero. Por uno o varios motivos, el
cuadrilátero definido por los cuatro ángulos identificados por el
localizador de ángulos 208 puede no ser un rectángulo.
Por ejemplo, si se rompe la barra delantera o
trasera en dos o más segmentos en la imagen, puede que un lado del
cuadrilátero localizado sea más corto que el lado opuesto. El ruido
de circuito en la transmisión de un facsímil codificado de longitud
de recorrido puede dar por resultado dichas roturas de las barras.
Dicho ruido de circuito puede igualmente dar por resultado
prolongaciones en las barras. En cualquiera de los casos, el
emplazamiento de los ángulos puede ser inexacto. Alternativamente,
la etiqueta que lleva realmente el símbolo de código de barras
representado puede estar materialmente deteriorada de modo que las
barras no estén completas.
Con referencia ahora a la Figura 5, se representa
una imagen de un símbolo de código de barras en el cual la barra
trasera está rota en dos segmentos. El localizador de ángulos 208
localiza los ángulos A, B, C y D que tienen coordenadas (Xa, Ya),
(Xb, Yb), (Xc, Yc) y (Xd, Yd), respectivamente. Los medios 210
corrigen el emplazamiento de al menos uno de los ángulos localizados
construyendo un rectángulo "mejor" basado en al menos dos de
los otros cuatro ángulos localizados.
Para cada uno de los cuatro ángulos, los medios
210 computan un valor de error E. Por ejemplo, para el ángulo B, el
valor de error Eb está determinado por:
donde AC es la distancia entre los ángulos A y C,
AB es la distancia entre los ángulos A y B, y BC es la distancia
entre los ángulos B y C. Cuanta mayor sea la desviación de un ángulo
de noventa grados en el ángulo B, mayor será el valor de error Eb.
Utilizando ecuaciones similares, los medios 210 calculan igualmente
los valores de error Ea, Ec y Ed para los ángulos A, C y D,
respectivamente.
Los medios 210 seleccionan el ángulo que tenga el
mayor error respecto al ángulo a corregir. Para el símbolo de la
Figura 5, el valor de error Eb es el mayor de los cuatro valores de
error y los medios 210 seleccionan el ángulo B para la corrección.
Se define el emplazamiento corregido para el ángulo B mediante
dichas coordenadas (Xb'; Yb') para las cuales el valor de error de
la Ecuación (1) es cero. Normalmente, existen dos únicas soluciones
a la Ecuación (1). Los medios 210 seleccionan la solución que más se
acerque al ángulo localizado inicialmente.
Los técnicos en la materia entenderán que se
pueden utilizar los medios 210 para corregir el emplazamiento de al
menos dos ángulos. Cuando, como en el ejemplo anterior, los medios
210 utilizan los ángulos A y C para corregir el emplazamiento del
ángulo B, los medios 210 pueden utilizar igualmente los ángulos A y
B para corregir el emplazamiento del ángulo D, si se desea,
utilizando una ecuación análoga a la Ecuación (1). En general, los
medios 210 pueden corregir cualquiera de los dos ángulos diagonales
utilizando los dos ángulos restantes.
Los técnicos en la materia entenderán que son
métodos alternativos para corregir los emplazamientos de uno o más
ángulos. Estos métodos alternativos pueden confiar en una o más de
las siguientes propiedades de los rectángulos (es decir, la forma
ideal del símbolo de código de barras):
- Los lados opuestos de un rectángulo son
paralelos;
- Los lados opuestos tienen la misma
longitud;
- Las diagonales tienen la misma longitud;
- Los ángulos tienen 90 grados; y
- Las diagonales y sus lados correspondientes
cumplen el teorema de Pitágoras.
Además, los medios 210 realizan pruebas de
geometría para comprobar que el tamaño y la forma del símbolo de
código de barras ajustados se encuentran dentro de los umbrales
especificados. Estas pruebas geométricas se basan en los
emplazamientos relativos de los cuatro ángulos del símbolo.
Después de que los medios 210 ajusten el símbolo,
los medios 212 transmiten las coordenadas (fila, columna) de los
cuatro ángulos del símbolo "corregido" al generador de señales
compuestas 106 y al generador de señal basada en gradientes 112 de
la figura 1. Continúa entonces el procesamiento del localizador de
símbolos 104 hasta los medios 214 para determinar si se ha
alcanzado el final de la línea de búsqueda actual. Si así fuera, el
proceso vuelve a los medios 202 para seleccionar una nueva línea de
búsqueda. En caso contrario, el procesamiento vuelve a los medios
204 para continuar la búsqueda a lo largo de la línea de búsqueda
actual. El localizador de símbolo 104 continua su intento de
localizar símbolos de código de barras hasta que la secuencia de la
línea de búsqueda especificada haya finalizado o que se haya
realizado algún otro tipo de parada.
Con referencia ahora a la figura 6, se representa
un diagrama de flujo de bloques de un método lento que realiza el
generador de señales compuestas 600. El generador de señales
compuestas 600 es un ejemplo de generador de señales compuestas 106
del sistema 100 representado en la figura 1, en el cual el generador
600 realiza el método lento para generar señales compuestas de los
símbolos de código de barras. Se realiza el barrido del símbolo de
código de barras a lo largo de múltiples líneas de barrido.
Se determinan las líneas de barrido a partir de
los ángulos de símbolos determinados por el localizador de símbolos
104. Para el método lento de generación de señales compuestas, cada
línea de barrido está paralela a las barras y espacios del símbolo.
Además, líneas de barrido sucesivas están separadas entre sí por una
distancia inferior al ancho de un píxel. Cuando un símbolo de código
de barras no esté alineado con las filas y columnas de la imagen de
píxeles, las líneas de barrido no corresponderán a las filas o
columnas de la imagen. De este modo, las líneas de barrido del
método lento de generación de señales compuestas son generalmente
diferentes de las "líneas de búsqueda" utilizadas por el
localizador de símbolos 104 que corresponde siempre a una fila o a
una columna de la imagen de
píxeles.
píxeles.
Para cada línea de barrido, el generador 600 saca
la media de las intensidades de píxeles a lo largo de la línea de
barrido para generar un píxel en una señal compuesta unidimensional.
Al hacer que la distancia entre las líneas de barrido sucesivas sea
inferior a un píxel, el generador 600 realiza un sobremuestreo de la
imagen de píxeles cuando genera la señal compuesta.
Con referencia ahora a la figura 7, se representa
una imagen de símbolo de código de barras 700 procesada por el
generador de señales compuestas 600. El generador 600 recibe las
coordenadas de los ángulos 702, 704, 706 y 708 del localizador de
símbolos 104. Para evitar errores de muestreo corrientes en los
extremos de las barras de símbolos, el generador 600 identifica un
rectángulo de muestra 710 definido por los ángulos 712, 714, 716 y
718. El rectángulo de muestra 710 está definido porque es
ligeramente inferior (por ejemplo, el 3%) que la parte superior del
símbolo 700, ligeramente más alto ( por ejemplo, 3%) que la parte
inferior del símbolo 700, y ligeramente más largo que el símbolo 700
(por ejemplo, de una distancia especificada en cada zona tranquila).
Las longitudes de cada línea de barrido están entonces definidas por
los límites del rectángulo de muestra 710 y, como resultado, cada
línea de barrido (que, por definición es paralela a las barras y
espacios del símbolo 700) se inicia por encima de la parte inferior
y por debajo de la parte superior del símbolo 700.
Con referencia de nuevo a la figura 6, los medios
602 del generador de señales compuestas 600 seleccionan una
secuencia de líneas de barrido paralelas basada en el rectángulo de
muestra 710. Los medios 602 empiezan con la línea de barrido
definida por los ángulos 712 y 718 en un extremo del rectángulo de
la muestra 710 y seleccionan cada nueva línea de barrido mediante la
desviación de la línea de barrido anterior hacia el otro extremo del
rectángulo de muestra 710 en una distancia especificada donde la
distancia especificada es inferior al ancho de un píxel.
Con referencia ahora a la figura 8, se representa
una porción del símbolo de código de barras 700 con varias líneas de
barrido 802 superpuestas en el mismo. Para cada línea de barrido
802, los medios 604 barren la imagen del símbolo a lo largo de la
línea de barrido seleccionada en ese momento y los medios 606
generan el valor medio de intensidad de los píxeles que descansan a
lo largo de dicha línea de barrido. Los medios 608 salvan el valor
medio como píxel en una señal compuesta unidimensional. Los medios
610 determinan si la línea de barrido actual es la última línea de
barrido, es decir, si se ha alcanzado el extremo opuesto del
rectángulo de muestra 710 definido por los ángulos 714 y 716. En
caso contrario, entonces el procesamiento vuelve a los medios 602
para seleccionar la siguiente línea de barrido. En caso contrario,
los medios 612 transmiten la señal compuesta completa al formador de
umbrales 108 de señales compuestas del sistema 100 para seguir
procesando. El procesamiento del formador de umbrales 108 está
descrito más adelante en esta descripción en relación con la figura
11.
Con referencia ahora a la figura 9, se representa
un diagrama de flujo de bloques de un método rápido realizado por el
generador de señales compuestas 900. El generador de señales
compuestas 900 es un ejemplo del generador de señales compuestas 106
del sistema 100 representado en la figura 1, donde el generador 900
esta destinado a llevar a cabo el método rápido para generar señales
compuestas de símbolos de código de barras. El método rápido es una
alternativa al método lento anteriormente descrito en la presente
descripción en relación con las figuras 6, 7 y 8.
Según el método rápido, el generador 900
selecciona un conjunto de líneas de barrido de las filas/columnas de
la imagen de píxeles que cruzan el símbolo de código de barras. Hay
que observar que, para el método rápido, las líneas de barrido
corresponden siempre a una fila o a una columna de la imagen de
píxeles. Tal como se ha descrito anteriormente, en la presente
descripción, en relación con la figura 6, para los métodos lentos,
no se necesita que las líneas de barrido coincidan, y generalmente
no coincidirán, con una fila o columna de la imagen de píxeles.
Para cada línea de barrido, el generador 900 gira
y estira los datos de la línea de barrido, utilizando los datos
estirados, girados, el generador 900 actualiza un vector compuesto
unidimensional y un vector de recuento unidimensional. Después de
que todas las líneas de barrido seleccionadas hayan sido procesadas,
el generador 900 "normaliza" el vector unidimensional para que
dé una señal compuesta unidimensional para el símbolo del código de
barras.
Con referencia ahora a la figura 10, se
representa una imagen del símbolo de código de barras de la figura 7
con líneas de barrido 1-6 utilizadas por el
generador de señales compuestas 900 para llevar a cabo el método
rápido de generación de una señal compuesta superpuesta sobre el
mismo. Los medios 902 seleccionan una secuencia de líneas de
barrido. Tal como se representa en la figura 10, cada línea de
barrido cruza el símbolo de código de barras y es parte de una fila
(o columna) de la imagen de píxeles. Los medios 902 no necesitan
seleccionar cada fila (o columna) que cruce el símbolo de código de
barras. De este modo, pueden separarse las líneas de barrido
sucesivas por más de un píxel. Además, una línea de barrido no
necesita cruzar la totalidad del símbolo de código de barras. Por
ejemplo, en la figura 10, solamente las líneas de barrido 3 y 4
cruzan la totalidad del símbolo.
Los medios 904 giran y estiran los datos de cada
línea de barrido actual. El ángulo a través del cual los medios 904
giran los datos de la línea de barrido, está dictado por la
orientación del símbolo de código de barras tal como se indica
mediante los cuatro ángulos del símbolo identificados por el
localizador de símbolos 104.Los técnicos en la materia entenderán
que dicha rotación alinea efectivamente las barras del símbolo del
código de barras con las columnas (o filas) de una imagen
girada.
El grado hasta el cual los medios 904 estiran los
datos de la línea de barrido está determinado por el porcentaje de
sobremuestreo, un valor especificado de parámetro, por ejemplo,
tres. El estiramiento de los datos en el método rápido es similar a
la selección de líneas de barrido en el método lento que están
separadas por distancias de subpíxeles. Tanto el método rápido como
el lento están destinados al sobremuestreo de los datos de imágenes
de píxeles originales.
Las tablas II a VI presentan un ejemplo del
procesamiento llevado a cabo por el generador de señales compuestas
900. El propósito del estudio de dichas tablas es demostrar el
procesamiento llevado a cabo por el generador 900 y no está
necesariamente destinado a representar una situación real. Hay que
observar que las listas (I), (J), (K) y (L) de las Tablas III, IV y
V se discutirán más adelante en la presente descripción
conjuntamente con el estudio de la figura 15 y el generador de señal
de gradientes 112.
La Tabla II contiene los datos de intensidad de
píxel original para tres líneas de barrido de una imagen de píxeles
en escala de grises, donde la línea de barrido nº 1 corresponde a la
fila 0 de la imagen, la línea de barrido nº 2 corresponde a la fila
2 y la línea de barrido nº 3 corresponde a la fila 4. En este
ejemplo, cuanto mayor sea el valor de intensidad de píxel, más claro
será el píxel. Cada línea de barrido de la Tabla II empieza en la
columna 0 y termina en la columna 9 de la imagen de píxeles. De este
modo, por ejemplo, la intensidad del píxel en (fila=2) y (columna
=5) es 3. En este ejemplo, se ha determinado, basándose en los
cuatro ángulos localizados por el localizador de símbolos 104 que el
símbolo de código de barras está orientado en un ángulo de 45
grados, en dirección opuesta a las agujas de un reloj, de las filas
de la imagen.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página
siguiente)
Tabla
II
Datos de la imagen original | |||
Línea de barrido | |||
Nº 1 | Nº 2 | Nº 3 | |
Col. | Fila 1 | Fila 2 | Fila 3 |
0 | 21 | 22 | 22 |
1 | 23 | 21 | 19 |
2 | 22 | 22 | 5 |
3 | 21 | 5 | 4 |
4 | 22 | 6 | 3 |
5 | 18 | 3 | 15 |
6 | 6 | 16 | 18 |
7 | 4 | 18 | 17 |
8 | 5 | 16 | 20 |
9 | 14 | 18 | 5 |
La Tabla III presenta los resultados del
procesamiento por el generador 900 de la línea de barrido nº 1 (fila
0). La lista (A) de la Tabla III contiene el número de columnas
originales para cada píxel en la imagen de píxeles a lo largo de la
línea de barrido nº 1. La lista (B) contiene la intensidad de cada
píxel original. La lista (C) contiene el número de columnas giradas
(valor real) después de que los medios 904 giren 0 grados cada píxel
original. La lista (C) contiene el número de columna girada (valor
real) después que los medios 904 hayan girado 0 grados cada píxel
original, donde en este ejemplo, 0 es 45 grados. La columna girada
número C_{r} está determinada por:
(2)C_{r} = C_{o}cos\theta +
R_{o}sen\theta,
donde C_{o} es el número de columna
original y R_{o} es el número de fila original para el
píxel en la imagen de
píxeles.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página
siguiente)
La lista (D) de la Tabla III contiene el número
de columnas estiradas (valor real) después de que los medios 904
estiren cada píxel girado por el porcentaje de sobremuestreo. Este
ejemplo se basa en un porcentaje de sobremuestreo de tres. La lista
(D) es el producto de la lista (C) y el porcentaje de sobremuestreo
(tres, en este ejemplo). La lista (E) contiene los números de
columnas redondeadas (valores enteros) para los datos estirados y
girados, tal como generan los medios 904. Por ejemplo, la columna
estirada 8.49 de la lista (D) se ha redondeado a la columna
redondeada 8 de la lista (E). De forma similar , la columna estirada
10.61 de la lista (D) se ha redondeado a la columna redondeada 11 de
la lista (E). La lista (E) contiene igualmente los números de
columna que se encuentran entre las columnas redondeadas. De este
modo, la columna 7 se encuentra entre las columnas redondeadas 6 y
8, mientras que las columnas 9 y 10 se encuentran entre las columnas
redondeadas 8 y 11. A los efectos de la siguiente discusión, todos
los elementos de la lista (E) son denominados colectivamente
columnas redondeadas.
La lista (F) contiene un valor de intensidad para
cada columna redondeada en la lista (E). Para cada columna
redondeada de la lista (E) los medios 904 repiten el valor de
intensidad de la columna original de la lista (A) que corresponda a
la misma. Por ejemplo, las columnas redondeadas 6 y 7 de la lista
(E) corresponden a la columna 3 de la lista (A) y, por lo tanto, las
intensidades correspondientes de la lista (F) para dichas columnas
redondeadas son 21.
Los medios 904 se intercalan entre las columnas
redondeadas para determinar los valores de intensidad en la lista
(F). La intensidad de la lista (F) que corresponde a la columna
redondeada 7 de la lista (E) sería 21.5, correspondiendo el punto
medio de intensidades a las columnas redondeadas 6 y 8 de la lista
(E).
Los técnicos en la materia entenderán que la
rotación y el estiramiento llevados a cabo por los medios 904 puede
ser realizado en un sólo cómputo basado en la multiplicación de la
matriz donde la matriz de rotación es modificada para que incluya el
porcentaje de sobremuestreo.
A medida que los medios 904 giran y estiran los
datos para cada línea, los medios 906 actualizan un vector compuesto
unidimensional y los medios 908 actualizan un vector de recuento
unidimensional basándose en los datos girados y estirados. El vector
compuesto representa la "suma" de todas las líneas de barrido
anteriormente estiradas y giradas. El vector de recuento controla
cuantas veces un elemento del vector compuesto ha sido actualizado.
Con referencia nuevamente al ejemplo de la Tabla III, la lista (G)
representa el vector compuesto y la lista (H) representa el vector
de recuento después de que la línea de barrido nº 1 haya sido
procesada.
Después de que los medios 908 actualicen el
vector de recuento, los medios 910 determinan si la línea de barrido
actual es la última línea de barrido a procesar. Si así fuera,
continúa el proceso hasta los medios 912, en caso contrario, el
proceso vuelve a los medios 902 para seleccionar la siguiente línea
de barrido. Como, en el ejemplo de la Tabla II, la fila 0 (es decir,
la línea de barrido nº 1) no es la última línea de barrido, los
medios 910 ordenan al proceso que vuelva a los medios 902 para
seleccionar la fila 2 como nueva línea de barrido.
La tabla IV presenta los resultados desde el
generador 900 que procesa la línea de barrido nº 2 (fila 2) de la
Tabla II. Las listas (A) a (H) de la Tabla IV son análogas a las de
la Tabla III. Los medios 906 forman un vector compuesto actualizado
(lista (G) de la Tabla IV) sumando valores de píxeles de la lista de
vector compuesto anterior (lista (G) de la Tabla III) con los
valores de intensidad correspondientes de la lista (F) de la Tabla
IV. Los medios 908 actualizan el vector de recuento de la lista (H)
mediante el incremento de aquellos elementos que correspondan a los
elementos del vector compuesto de la lista (G) que fueron
actualizados.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página
siguiente)
Hay que observar que ninguno de los datos
estirados, girados de la línea de barrido nº 2 coincide con las
columnas redondeadas 0-3, pero algunos de los datos
si que coinciden con las nuevas columnas redondeadas
21-24. El resultado es que algunos elementos del
vector compuesto no se actualizan. El vector de recuento se utiliza
para controlar las veces que se actualiza cada elemento del vector
compuesto. Los técnicos en la materia entenderán que esta
actualización no uniforme de los vectores compuesto y de recuento
también ocurrirá cuando se procesen líneas de barrido que no crucen
la totalidad del símbolo de código de barras, por ejemplo, la línea
de barrido 1 de la figura 10.
Después de procesar la línea de barrido nº 2, los
medios 910 ordenan al proceso que vuelva a los medios 902 para
seleccionar la línea de barrido nº 3 (fila 4), la última línea de
barrido de la Tabla II. La Tabla V presenta los resultados del
generador 900 que procesa la línea de barrido nº 3 (fila 4) de la
Tabla II. Una vez más, las listas (A) a (H) de la Tabla V son
análogas a las de las Tablas III y IV.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página
siguiente)
Después de procesar la línea de barrido nº 3, los
medios 910 ordenan a los medios 912 que el procesamiento continúe.
Los medios 912 "normalizan" el vector compuesto para generar
una señal compuesta unidimensional al dividir cada elemento del
vector compuesto por el elemento correspondiente en el vector de
recuento. Los medios 914 transmiten entonces esta señal compuesta al
umbral de señal compuesta 108 del sistema 100.
La Tabla VI presenta la señal compuesta
unidimensional generada por los medios 912. Las listas (E), (C) y
(H) son idénticas a las de las listas de la Tabla V. La lista (M)
representa la señal compuesta generada por los medios 912 al dividir
los elementos del vector compuesto de la lista (G) por los elementos
correspondientes del vector de recuento de la lista (H). Los medios
914 transmiten la señal compuesta de la lista (M) al umbral 108.
TABLA
VI
Con referencia ahora a la figura 11, se
representa un diagrama de flujos de bloques del procesamiento
llevado a cabo por el formador de umbrales 108 de señal compuesta
del sistema 100 al umbral de una señal compuesta unidimensional de
un símbolo de código de barras. El formador de umbrales 108 procesa
una señal compuesta, tanto si la señal compuesta fue generada por el
generador 600 utilizando el método lento descrito anteriormente en
la presente descripción con relación a la figura 6 o por el
generador 900 utilizando el método rápido descrito anteriormente en
esta descripción con relación a la figura 9. El formador de umbrales
108 forma umbrales para la señal compuesta en los segmentos binarios
negro ("0") y blanco ("1") que corresponden a las barras y
espacios del símbolo de código de barras. El formador de umbrales
108 filtra entonces la señal ajustada a un umbral para eliminar las
barras y espacios espurios. El formador de umbrales 108 transmite
entonces la señal filtrada al descodificador de señales compuestas
110, el cual utiliza métodos convencionales de descodificación de
símbolo de código de barras para descodificar la señal filtrada.
Los medios 1102 del formador de umbrales 106
forma umbrales para la señal compuesta recibida del generador 106.
Los medios 1102, de preferencia, emplean una formación de umbrales
adaptables al umbral de la señal compuesta, o los medios 1102 pueden
utilizar cualquier algoritmo de formación de umbrales convencional
incluyendo umbrales con un valor de umbral fijo.
Con referencia de nuevo a la Tabla VI, la lista
(N) representa la señal binaria generada por los medios 1102,
mediante la formación de umbrales para la señal compuesta de la
lista (M) utilizando un valor de umbral fijo de 12. Si un elemento
de la señal compuesta es mayor que 12, entonces, el elemento binario
correspondiente es 1 (blanco) en caso contrario, el elemento binario
correspondiente es 0 (negro). En el ejemplo de las Tablas II a VI,
el método rápido para generar una señal compuesta indica una
transición de claro a oscuro entre las columnas redondeadas 12 y 13,
una transición de oscuro a claro entre las columnas redondeadas 18 y
19 y otra transición de claro a oscuro entre las columnas
redondeadas 27 y 28. Estas transiciones corresponden a los bordes de
las barras en el símbolo de código de barras.
Los medios 1102 emplean un algoritmo de formación
de umbrales adaptable para localizar las transiciones en la señal
compuesta. Según un algoritmo de formación de umbrales adaptable,
los medios 1102 utilizan los valores de intensidad mínimos y máximos
locales en la señal compuesta para determinar el valor de umbral
utilizado para localizar la transición entre dichos mínimos y
máximos locales.
Con referencia de nuevo a la Tabla VI, el primer
valor de intensidad máximo local es 23,0 que corresponde a las
columnas redondeadas 2 y 3 y el primer valor de intensidad mínimo
local es 3,7 que corresponde a las columnas redondeadas 15 y 16. En
este ejemplo, los medios 1102 seleccionan la mitad de la suma del
mínimo y máximo locales (0,5 x (23,0 - 3,7)) o 13,4 como valor de
umbral a aplicar entre la columna redondeada 2 y la columna
redondeada 16. Utilizando este valor de umbral, el medio 1102
localiza la transición de claro a oscuro entre las columnas redondas
12 y 13. Si, en una situación particular, dos o más elementos
consecutivos de la señal compuesta son iguales al valor del umbral,
se selecciona el elemento del medio de dicha serie de elementos
consecutivos como transición de claro a oscuro.
Para minimizar el efecto del ruido, se definen
los mínimos y máximos locales en términos de un valor de
significación especificado. Si la diferencia entre un máximo local y
el siguiente mínimo local no es mayor que el valor de significación
especificado, los medios 1102 los rechazará y seguirá buscando los
píxeles mínimos y máximos locales adecuados en la señal
compuesta.
Por ejemplo, se considera que la señal compuesta
tiene valores de intensidad (5, 3, 6, 25, 22, 26, 10, 4, 7). Se
supone que se determina el valor de significación como 5. Los medios
1102 barren de izquierda a derecha para encontrar un mínimo local en
3. Los medios 1102 siguen barriendo para encontrar un máximo local
en 25. Como la diferencia entre el máximo local (25) y el mínimo
local (3) es mayor que el valor de significación (5), los medios
1102 retienen esos valores.
Los medios 1102 barren entonces hasta el
siguiente mínimo local en 22. Como la diferencia entre el máximo
local (25) y el mínimo local (22) no es mayor que el valor de
significación (5), los medios 1102 siguen buscando un mínimo local
adecuado. Mientras buscan un mínimo local adecuado, los medios 1102
actualizan el máximo local, si fuera necesario. De este modo, como
los medios 1102 barren para encontrar el próximo mínimo local en 4,
los medios 1102 actualizan el máximo local para que sea 26. Como la
diferencia entre el máximo local actualizado (26) y el nuevo mínimo
local (4) es mayor que el valor de significación (5), los medios
1102 seleccionan estos píxeles como máximo y mínimo locales
adecuados. Se saca entonces la media de estos valores mínimo y
máximo locales para calcular el valor de umbral utilizado para
encontrar el píxel que corresponda a la transición entre el mínimo y
el máximo locales. Hay que observar que si el valor de significación
ha sido 2 en lugar de 5, entonces 25 y 26 serían ambos considerados
entonces los máximos locales.
La significación seleccionada determina la
inmunidad de los medios 1102 al ruido. Valores de significación
elevados proporcionan una inmunidad substancial al ruido pero pueden
igualmente dar por resultado la pérdida de auténticas transiciones
de claro a oscuro en la señal compuesta. Por otra parte, los valores
de significación bajos pueden conducir al reconocimiento espurio de
transiciones en zonas ruidosas. Es preferible utilizar valores de
significación que sean demasiado bajos en lugar de demasiado
elevados. Y es así porque es posible que la filtración a
continuación pueda eliminar transiciones espurias, pero no se puede
hacer nada para recuperar la pérdida de auténticas transiciones. El
valor de significación se basa en una fracción (por ejemplo, un
octavo) de la gama dinámica de la señal compuesta tal como definen
los valores mínimos y máximos totales dentro de la señal
compuesta.
Con referencia ahora a las figuras 12 y 13, se
representan dos ejemplos corrientes de transiciones espurias de
claro/oscuro que pueden ser el resultado de utilizar valores de
significación relativamente bajos para formar el umbral de una señal
compuesta ruidosa. La figura 12 muestra la representación binaria de
una barra espuria 1 en lo que pudiera ser un sólo espacio. La figura
13 muestra la representación binaria de una barra espuria 1 o de un
espacio espurio 2 donde solamente pudiera existir un espacio y una
barra.
Los medios 1104 filtran la señal compuesta a la
que se ha impuesto un umbral para retirar las barras y espacios
espurios. Una barra/espacio espurio es uno que es demasiado estrecho
para ser válido tal como se determina mediante las características
conocidas de la simbología de código de barras que se está
descodificando. Se pueden fijar los valores de umbral basándose en
ciertas fracciones (por ejemplo, una mitad) de las anchos mínimas de
barra y espacio en la simbología particular a descodificar. Si una
barra o un espacio es más estrecho que el umbral especificado,
entonces se suprime la barra/espacio. En la figura 12, los medios
1104 retiran la barra espuria 1 para crear un único espacio porque
la barra 1 es demasiado estrecha para ser válida.
En la figura 13, la barra 1 y el espacio 2 pueden
ambos ser más estrechos que los umbrales aplicables. En estos casos,
los medios 1104 eliminan el más pequeño de los dos fusionando entre
sí las barras/espacios vecinos. De este modo, si la barra 1 es más
estrecha que el espacio 2, entonces los medios 1104 retiran la barra
1 para que resulte un único espacio que finaliza en el punto 4. No
obstante, si la barra 1 no es más estrecha que el espacio 2,
entonces los medios 1104 retiran el espacio 2, entonces para
obtener un único espacio que finaliza en el punto 3.
Con referencia ahora a la Figura 11, después de
que los medios 1104 filtrada la señal de umbral, los medios 1106
transmiten la señal filtrada al descodificador de señales compuestas
110, que descodifica la señal filtrada utilizando métodos
convencionales de decodificación de símbolos de código de
barras.
El descodificador de señales compuestas 110
descodifica las señales compuestas filtradas generadas por el
formador de umbrales 108 utilizando métodos convencionales de
decodificación de símbolos de código de barras. El descodificador
110 puede estar destinado a descodificar cualquier simbología
deseada tal como el código 128, el código 39 y el código
intercalado 2 de 5.
Cuando descodifica símbolos de código de barras
del código 128, el descodificador 110 realiza mediciones standard
borde-igual a borde-igual tal como
se describe en la sección titulada "Determinación de selección de
caracteres de los resultados de intercalación de subpíxeles" de
la patente US Nº 5.343.029. El descodificador 110 calcula los
valores standard t1, t2, t3 y t4, barre una tabla de configuración y
realiza cómputos de adición de prueba del código 128 para ayudar a
la descodificación de la totalidad de los tres grupos de caracteres
del código 128.
Con referencia ahora a la figura 14, se
representa un diagrama de flujo de bloques del procesamiento llevado
a cabo por el descodificador de señales compuestas 110 del sistema
100 para descodificar los caracteres de un símbolo de código de
barras del código 39. La simbología del código 39 está basada en los
caracteres que tengan cinco barras y cuatro espacios. En el código
39, tres de las barras/espacios deben ser anchas y las otras seis
barras/espacios deben ser estrechas. Además, un carácter de código
39 debe tener dos barras anchas y un espacio ancho o tres espacios
anchos. Un carácter con exactamente cero, dos o cuatro espacios
anchos no es válido como carácter del código 39. De forma similar,
si un carácter tiene exactamente un espacio ancho pero no tiene
exactamente dos barras anchas, no es válido como carácter del código
39. Al descodificar símbolos de código de barras del código 39, el
descodificador 110 examina cinco barras y cuatro espacios del
símbolo de código de barras cada vez, los clasifica como anchos o
estrechos, y descodifica el carácter mediante referencia a una tabla
de búsqueda.
Para descodificar un carácter del código 39, el
descodificador 110 analiza en primer lugar los cuatro espacios del
carácter. Los medios 1402 de la figura 14 calculan un umbral de
espacio-ancho para el carácter, en el cual el umbral
espacio-ancho es la media del ancho del espacio más
ancho y el ancho del espacio más estrecho en el carácter.
Los medios 1404 clasifican entonces cada uno de
los cuatro espacios como ancho o estrecho comparando el ancho de
cada espacio con el umbral de espacio-ancho. Los
medios 1404 clasifican como ancho un espacio si su ancho es mayor
que los umbrales de espacio-ancho, en caso contrario
el espacio es estrecho.
Si los medios 1404 clasifican tres de los
espacios como anchos y uno como estrecho, entonces los medios 1406
dirigen el proceso a los medios 1416 para descodificar el carácter;
en caso contrario, el proceso sigue hasta los medios 1408. Si el
descodificador 110 determina que hay tres espacios anchos y un
espacio estrecho, el descodificador 110 supone entonces que las
cuatro barras son estrechas y que el carácter es un carácter válido
de código 39.
Si los medios 1404 clasifican un espacio como
ancho y tres como estrechos, entonces los medios 1408 dirigen el
proceso a los medios 1410, en caso contrario, no se puede
descodificar el carácter. Si el descodificador 110 determina que no
hay exactamente uno o tres espacios anchos, entonces el carácter no
es un carácter válido del código 39 y no se puede descodificar como
tal.
Si el descodificador 110 determina que hay tres
espacios estrechos y un espacio ancho, entonces el descodificador
110 analiza las cinco barras del carácter. Los medios 1410 calculan
un umbral de barra-ancho para el carácter, donde el
umbral barra-ancho es la media del ancho de la barra
más ancha y el ancho de la barra más estrecha en el
carácter.
carácter.
Los medios 1412 clasifican entonces cada una de
las cinco barras como ancha o estrecha comparando el ancho de cada
barra con el umbral de barra-ancho. Los medios 1412
clasifican una barra como ancha si su ancho es mayor que los
umbrales de barra-ancho, en caso contrario, la barra
es estrecha.
Si los medios 1412 clasifican dos de las barras
como anchas y tres como estrechas, entonces los medios 1414 dirigen
el proceso a los medios 1416 para descodificar el carácter, en caso
contrario, el carácter no es un carácter válido del código 39 y no
puede descodificarse como tal. Si, después de determinar que hay
exactamente un espacio ancho, el descodificador 110 determina que
hay dos barras anchas y tres barras estrechas, entonces el
descodificador 110 supone que el carácter es un carácter válido del
código 39.
Después de localizar con éxito las tres
barras/espacios anchos y seis barras/espacios estrechos de carácter
del código 39, los medios 1416 descodifican el carácter buscando a
través de una tabla de búsqueda de código 39 el carácter
alfanumérico adecuado utilizando la secuencia de barras y espacios
anchos y estrechos identificados por los medios 1404 y 1412. El
descodificador 110 realiza asimismo un análisis de adición de prueba
del código 39.
En la figura 14, el descodificador 110 analiza
los anchos de las barras y espacios independientemente calculando
dos umbrales de ancho diferentes, uno para clasificar espacios y
otro para clasificar barras. El descodificador 110 utiliza estos
umbrales de ancho diferentes para espacios y barras para reducir los
errores de descodificación que pudieran resultar de la superposición
de imágenes de píxeles.
Cuando se generan imágenes de píxeles utilizando
sistemas convencionales de formación de imágenes, las zonas oscuras
de las imágenes a menudo tienden a superponerse en las zonas claras.
Como resultado de esta superposición, las barras en los símbolos de
código de barras con imágenes pueden parecer más anchos y los
espacios pueden parecer más estrechos que los del auténtico símbolo
de código de barras. A veces, las barras estrechas auténticas (es
decir una barra que sea estrecha en el auténtico símbolo de código
de barras) pueden incluso parecer más anchas en la imagen de píxeles
que los auténticos espacios anchos. Estos cambios aparentes de los
anchos de las barras y espacios pueden inducir a error en la
descodificación de los símbolos de código de barras. Cuando se
descodifican símbolos de código 39, por ejemplo, el descodificador
110 de preferencia clasifica las barras y los espacios
independientemente utilizando diferentes umbrales de anchura, para
reducir los errores de decodificación que resulten de la
superposición de imágenes de píxeles.
Los técnicos en la materia entenderán que esta
clasificación independiente de barras y espacios en los símbolos de
código de barras para corregir los efectos de la superposición puede
utilizarse para descodificar otros símbolos aparte de los de la
simbología de código 39.
Por ejemplo, el descodificador 110 utiliza de
preferencia la clasificación independiente de barras y espacios para
descodificar símbolos de código de barras del código 2 de 5 (I2 de
5) intercalados. En los caracteres I2 de 5, las cinco barras y los
cinco espacios codifican dos dígitos decimales. Las barras codifican
el primer dígito mientras que los espacios codifican el segundo
dígito. Cada dígito está representado por dos barras (o espacios)
anchos y tres barras (o espacios) anchos. El descodificador 110 toma
trece barras y espacios de un símbolo I2 de 5 cada vez y los
clasifica como ancho o estrecho mediante la clasificación
independiente de barras y espacios, similar al programa de
clasificación independiente que lleva a cabo el descodificador 110
para los símbolos del código 39. El resultado es un valor de 13 bits
en el cual cada bit representa el ancho de una barra/espacio
correspondiente.
El descodificador 110 busca entonces dos veces en
la tabla I2 de 5, una vez para las barras y una vez para los
espacios. El descodificador 110 utiliza únicamente las diez primeras
barras/espacios (máximo 10 bits) durante la búsqueda en la tabla.
Los otros tres bits pueden corresponder al modelo de parada I2 de 5.
Si los tres últimos bits tienen un modelo de parada válido (barra
ancha, espacio estrecho, barra ancha) entonces se detiene la
descodificación. En caso contrario, se analizan otras trece barras y
espacios, donde las tres primeras barras y espacios son los últimos
tres barras y espacios de la lista anterior. El descodificador 110
realiza igualmente el análisis de adición de prueba I2 de 5.
Después de descodificar la señal compuesta de
umbral, el descodificador 110 transmite la señal descodificada al
selector de salida 118 del sistema 100.
Con referencia ahora a la figura 15, se
representa un diagrama de flujo de bloques del procesamiento o
llevado a cabo por el generador de señales de gradientes 112 del
sistema 100 para generar señales de gradientes de blanqueamiento y
de ennegrecimiento para un símbolo de código de barras localizado
por el localizador de símbolos 104. Se utilizan las señales de
gradientes para encontrar las transiciones entre barras y espacios
(es decir, bordes delanteros y traseros de barras) en el símbolo de
código de barras.
El generador 112 selecciona las líneas de barrido
del conjunto de filas o columnas en la imagen de píxeles que cruzan
el símbolo de código de barras. Estas líneas de barrido son de
preferencia las mismas líneas de barrido que las seleccionadas para
el método rápido de generación de señales compuestas, descrito
anteriormente en esta descripción en relación con la figura 9.
Para cada línea de barrido, el generador 112 gira
y estira los datos de la línea de barrido y actualiza dos vectores
de gradientes unidimensionales - un vector de gradientes de
blanqueamiento y un vector de gradientes de ennegrecimiento - y un
vector de recuento unidimensional basado en los datos estirados
girados. Después de procesar todas las líneas de barrido
seleccionadas, el generador 112 normaliza los dos vectores de
gradientes para generar señales de gradientes de blanqueamiento y de
ennegrecimiento, suaviza las señales de gradientes y transmite las
señales de gradientes suavizadas al procesador de señales de
gradientes 114 para su posterior procesamiento.
Los medios 1502 seleccionan una secuencia de
líneas de barrido. Los medios 1502 de preferencia seleccionan la
misma secuencia de líneas de barrido que las seleccionadas por los
medios 902 del generador de señales compuestas 900 en la figura 9.
Los medios 1504 giran y estiran los datos de la línea de barrido
actualmente seleccionada. Los medios 1504 de preferencia realizan la
misma función de rotación y estiramiento que la que realizan los
medios 904 del generador 900. En un modo de realización preferido,
se combinan las operaciones comunes del generador de señales
compuestas 900 y del generador de señales de gradientes 112 (por
ejemplo, la selección, rotación y estiramiento de líneas de barrido)
para evitar la duplicación.
Con referencia de nuevo al ejemplo de la Tabla
II, el procesamiento por los medios 1504 de cada línea de barrido es
idéntico al procesamiento realizado por los medios 1504, tal como se
describe anteriormente en esta descripción en relación con la figura
9. De este modo, se pueden utilizar igualmente las listas (A) a (F)
de las Tablas III, IV y V que describen el funcionamiento del
generador 112 de señales de gradientes.
Después de que los medios 1504 giren y estiren la
primera línea de barrido, los medios 1506 actualizan un vector de
gradientes de blanqueamiento y un vector de ennegrecimiento,
utilizando los datos girados y estirados. En un modo de realización,
el vector de gradiente de blanqueamiento es un vector unidimensional
que acumula las magnitudes de todos los cambios de píxel a píxel en
los cuales los valores de intensidad de los píxeles aumentan. De
forma análoga, el vector de gradientes de ennegrecimiento es un
vector unidimensional que acumula las magnitudes de todos los
cambios de píxel a píxel en el cual los valores de intensidad de los
píxeles disminuye. Para cada vector de gradientes, es la magnitud de
la diferencia entre píxeles de imágenes adyacentes la que se acumula
y no los propios valores absolutos de píxeles.
Los gradientes de blanqueamiento y de
ennegrecimiento pueden definirse en los términos de la primera
derivada de los datos de líneas de barrido. Los gradientes de
blanqueamiento corresponden a aquellas primeras derivadas que son
mayores que cero, mientras que los gradientes de ennegrecimiento
corresponden a las magnitudes de las primeras derivadas que sean
inferiores a cero.
Con referencia de nuevo a la Tabla III, la lista
(I) representa los gradientes de blanqueamiento para la línea de
barrido nº 1 y la lista (J) representa el vector de gradientes de
blanqueamiento después de que los medios 1506 procesen la línea de
barrido nº 1. En general, el vector de gradiente de blanqueamiento
representa la suma de los gradientes de blanqueamiento
correspondientes para todas las líneas de barrido que hayan sido
procesadas. Como la línea de barrido nº 1 es la primera línea de
barrido a procesar en el ejemplo, los gradientes de blanqueamiento
de la lista (I) son idénticos al vector de gradientes de
blanqueamiento de la lista (J).
Como la intensidad aumenta de 21 a 23 del píxel
(0,0) al píxel (0,1), en los datos originales, los gradientes de
blanqueamiento correspondientes en la lista (I) para columnas
redondeadas 2 y 3 son 2. Si el cambio del píxel anterior al píxel
actual en la imagen original no fuera positivo, entonces no existe
gradiente de blanqueamiento para dicho píxel actual. Por ejemplo, ya
que la intensidad decrece de 23 a 22 del píxel (0,1) al píxel (0,2)
en los datos originales, los gradientes de blanqueamiento
correspondientes en la lista (I) para las columnas redondeadas 4 y 6
son 0.
De forma similar, la lista (K) de la Tabla III
representa los gradientes de ennegrecimiento para la línea de
barrido nº 1. Por ejemplo, ya que la intensidad disminuye de 22 a 18
del píxel (0,4) al píxel (0,5) en los datos originales, los
gradientes de ennegrecimiento correspondientes para las columnas
redondeadas 11 y 12 son 4. Si el cambio del píxel anterior al píxel
actual en la imagen original no es negativo, entonces no existe
gradiente de ennegrecimiento para dicho píxel actual. Por ejemplo,
como la intensidad disminuye de 4 a 5 del píxel (07,) al píxel (0,8)
en los datos originales, los gradientes de ennegrecimiento
correspondientes para las columnas redondeadas 17 y 18 son 0. La
lista (I) de la Tabla III representa el vector de gradientes de
ennegrecimiento (es decir, los gradientes de ennegrecimiento
acumulados) después de que los medios 1506 procesen la línea de
barrido nº 1.
Los medios 1506 actualizan igualmente un vector
de recuento unidimensional que es idéntico al vector de recuento
generado por los medios 908 del generador de señales compuestas 900,
tal como se describe anteriormente en la presente descripción en
relación con la figura 9. De este modo, la lista (H) de las Tablas
III, IV y V se aplican igualmente a la descripción del generador de
señales de gradientes 112.
Después de que los medios 1506 actualicen los
vectores de gradientes y el vector de recuento para la línea de
barrido actual, los medios 1508 determinan si la actual línea de
barrido es la última línea de barrido para el símbolo de código de
barras. Si no fuera así, entonces el proceso vuelve a los medios
1502 para seleccionar la próxima línea de barrido. En caso
contrario, el proceso continúa hasta los medios 1510.
En el ejemplo de la Tabla II, después de que la
línea de barrido nº 1 haya sido procesada, el proceso vuelve a los
medios 1502 para seleccionar la línea de barrido nº 2 como nueva
línea de barrido. La tabla IV presenta los resultados de procesar la
línea de barrido nº 2. Las listas (I) y (K) de la tabla IV
representan los gradientes de blanqueamiento y de ennegrecimiento,
respectivamente, para la línea nº 2. Las listas (J) y (L)
representan los vectores de gradientes actualizados. Los medios 1506
actualizan los vectores de gradientes "sumando" los
gradientes para la línea de barrido nº 2 a los vectores de
gradientes de la Tabla III. De forma similar, la Tabla V presenta
los resultados del procesamiento de la línea de barrido nº 3.
Después de que la última línea de barrido haya
sido procesada, los medios 1508 dirigen el proceso a los medios
1510. Los medios 1510 normalizan los vectores de gradientes de
blanqueamiento y de ennegrecimiento dividiendo los elementos de cada
vector de gradientes por los elementos correspondientes del vector
de recuento.
Las tablas VII y VIII presentan los resultados
del procesamiento de los vectores de gradientes de blanqueamiento y
de ennegrecimiento, respectivamente. Las listas (E), (H) y (J) de la
Tabla VII y listas (E), (H) y (L) de las tablas VIII son idénticas
a las listas correspondientes de la Tabla V. La lista (O) de la
Tabla VII representa la señal de gradientes de blanqueamiento que
resulta de la normalización por los medios 1510 del vector de
gradientes de blanqueamiento de la lista (J). Los medios 1510
determinan cada elemento de la lista (O) dividiendo el elemento
correspondiente de la lista (J) por el elemento correspondiente de
la lista (H). De forma similar, la lista (T) de la Tabla VIII
representa la señal de gradientes de ennegrecimiento que resulta de
la normalización por los medios 1510 del vector de gradientes de
ennegrecimiento de la lista (L).
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página
siguiente)
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 sobremuestreo | Tamaño del filtro | Pesos |
2,2 | 1 | 1 |
3,4 | 3 | 1,2,1 |
5,6 | 5 | 1,2,4,2,1 |
>= 7 | 7 | 1,2,4,8,2,1 |
La lista (P) de la Tabla VII presenta los
resultadosde la suavización de la señal de gradientes de
blanqueamiento de la lista (O) basados en un porcentaje de
sobremuestreo de 3. Para un porcentaje de sobremuestreo de 3, cada
elemento S_{1} de la señal de gradientes de blanqueamiento
suavizada de la lista (P) se calcula utilizando:
(3)S_{1} =
\frac{W_{i-1}+2W_{i}+W_{i+1}}{4}
donde W_{I-1} es el elemento en
la señal de gradientes de blanqueamiento de la lista (O) que
corresponde al elemento S_{1}, W_{i-1}, es el
elemento anterior de la lista (O) y W_{i-1}
es el siguiente elemento de la lista (O). De forma similar, la lista
(U) de la Tabla VIII presenta los resultados de suavización de la
señal de gradientes de blanqueamiento de la lista (T) basados en un
porcentaje de sobremuestreo de
3.
Después de que los medios 1512 suavicen las dos
señales de gradientes, los medios 1514 transmiten las señales de
gradientes suavizadas al procesador de señales de gradientes 114 del
sistema 100. Los técnicos en la materia entenderán que la
suavización de los medios 1512 es una fase opcional del proceso.
Con referencia ahora a la figura 16, se
representa un diagrama de flujo de bloques del procesamiento llevado
a cabo por un procesador de señales de gradientes 114 del sistema
100 para procesar las señales de gradientes de blanqueamiento y de
ennegrecimiento suavizadas generadas por el generador 112. Las
señales de gradientes de blanqueamiento y de ennegrecimiento
representan los emplazamientos de las transiciones de oscuro a claro
y de claro a oscuro, respectivamente en el símbolo de código de
barras. Es decir que representan los bordes delantero y trasero,
respectivamente, de barras en el símbolo de código de barras. El
procesador 114 localiza las transiciones claro/oscuro en las señales
de gradientes y genera una sola señal reconstruida unidimensional de
dichos emplazamientos de transición. El procesador 114 transmite
esta señal reconstruida al descodificador de señales de gradientes
116 que descodifica la señal utilizando métodos convencionales de
descodificación de códigos de barras.
En un modo de realización, el procesador 114
segmenta las dos señales de gradientes, localiza los centroides de
los segmentos de las señales y reconstruye una sola señal binaria a
partir de los emplazamientos del centroide. En un modo de
realización alternativo (no representado), el procesador 114
selecciona los picos de las dos señales de gradientes como
emplazamientos de las transiciones para la señal reconstruida.
Los medios 1602 de la figura 16 reciben las
señales de gradientes de blanqueamiento y de ennegrecimiento
suavizadas del generador 112 y los fragmenta en segmentos
individuales. Cada segmento empieza con un mínimo local en la señal
de gradientes y finaliza con el siguiente mínimo local. Cada
segmento, por lo tanto, contiene un solo máximo local. Con
referencia de nuevo a la Tabla VII, la lista (O) identifica los
segmentos en la señal de gradientes de blanqueamiento suavizada de
la lista (P). De forma similar, la lista (V) de la Tabla VIII
identifica los segmentos en la señal de gradientes de
ennegrecimiento suavizada de la lista (U).
Para minimizar la segmentación errónea, los
medios 1602 utilizan de preferencia una prueba de
significación-valor para determinar los mínimos
locales que definen los segmentos en las señales de gradientes,
donde la prueba de significación-valor es similar a
aquella descrita anteriormente en esta descripción con relación a la
figura 11.
Después de que los medios 1602 fragmenten las
señales suavizadas de gradientes, los medios 1604 determinan la masa
de cada segmento. La masa de cada segmento es la suma de los valores
suavizados de gradientes para dicho segmento. La lista (R) de la
Tabla VII presenta las masas de los segmentos de gradientes de
blanqueamiento identificados en la lista (Q). De forma similar, la
lista (W) de la Tabla VIII presenta las masas de los segmentos de
gradientes de ennegrecimiento identificados en la lista (V). De este
modo, por ejemplo, el segmento nº 3 en la Tabla V tiene una masa de
(0,1 + 0,2 + 0,2 + 0,1) es decir 0,6.
Después de que los medios 1604 determinen la masa
de cada segmento, los medios 1606 localizan el centroide ponderado
de aquellos segmentos que tengan suficiente masa. Los medios 1606
omiten dichos segmentos cuyas masas son inferiores a un umbral de
masa especificado, que indica que tienen una masa insuficiente. El
umbral de masa está preferentemente especificado como equivalente a
una fracción, por ejemplo un octavo del producto del porcentaje de
sobremuestreo y la masa esperada de una barra o espacio estrechos en
la imagen original de píxeles.
El ruido en la imagen de píxeles puede dar como
resultado segmentos espurios en las señales de gradientes. Si el
ruido de la imagen no es demasiado fuerte, los segmentos espurios
tendrán masas normalmente más reducidas que las masas de los
segmentos auténticos(es decir, aquellos que corresponden a
las transiciones auténticas de claro/oscuro en la imagen de
píxeles), en este caso, pueden utilizarse los medios 1606 para
"filtrar" los segmentos espurios.
En la Tabla VII, los segmentos nº 1, 2, 3 y 5 son
rechazados por tener masas inferiores al umbral de masa especificado
de 20. Los segmentos nº 1 y 3 de la Tabla VIII son igualmente
rechazados de forma similar por tener masas inferiores al umbral de
masa.
Después de eliminar los segmentos que tengan una
masa reducida, los medios 1606 localizan los centroides ponderados
de los segmentos restantes. El centroide ponderado del segmento es
el emplazamiento dentro del segmento que corresponde a un porcentaje
especificado de la masa del segmento. Por ejemplo, un centroide
ponderado basado en el 50% corresponde al centro de la masa de cada
segmento. Un centroide ponderado basado en el 40% corresponde al
emplazamiento dentro del segmento en el cual el 40% de la masa se
encuentra en la izquierda y el 60% se encuentra en la derecha.
En la Tabla VII, un "1" en la lista (S)
identifica el emplazamiento del centroide ponderado del segmento 4,
donde el 50% es el porcentaje de centroide ponderado seleccionado.
De forma similar, la lista (x) de la Tabla VIII identifica los
emplazamientos de los centroides ponderados de los segmentos nº 2 y
4.
En un modo de realización alternativo (no
representado), se utilizan porcentajes de centroides ponderados
diferentes para localizar los centroides en los segmentos de
gradientes de blanqueamiento y de ennegrecimiento. Como las barras
negras tienden a "superponerse" en los espacios blancos de las
imágenes de símbolo de código de barras, las barras suelen parecer
más anchas y los espacios más estrechos en las imágenes. Utilizando
un porcentaje de blanqueamiento-centroide que sea
inferior al porcentaje de ennegrecimiento-centroide,
se pueden corregir dichos efectos de superposición. Pueden
seleccionarse empíricamente los porcentajes exactos de
ponderado-centroide basándose en las pruebas
realizadas en las imágenes de símbolos de barras conocidos.
Después de que los medios 1606 localicen los
centroides de segmento de blanqueamiento y ennegrecimiento, los
medios 1608 reconstruyen una sola señal unidimensional intercalando
los emplazamientos de centroides de dos señales de gradientes. El
centroide de cada segmento de la señal de ennegrecimiento suavizada
corresponde al borde delantero de la barra en el símbolo del código
de barras. De forma similar, el centroide de cada segmento de la
señal de gradientes de blanqueamiento suavizada corresponde al borde
trasero de la barra en el símbolo de código de barras.
La Tabla X presenta los resultados de los medios
1608 que intercalan los centroides de segmentos de blanqueamiento y
de ennegrecimiento de las Tablas VII y VIII. Las listas (E) (S) y
(X) de la Tabla X son idénticas a las listas correspondientes de las
Tablas VII y VIII. La lista (Y) de la Tabla X representa la señal
reconstruida unidimensional generada por los medios 1608. Hay que
observar que la señal reconstruida de la lista (Y) de la Tabla X es
idéntica a la señal de umbral de la lista (N) de la Tabla VI, que
indica que el procesamiento de la señal de gradientes del generador
112 y del procesador 114 del sistema 100 genera el mismo resultado
que el procesamiento de la señal compuesta del generador 900 y del
formador de umbrales 108 del sistema 100
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página
siguiente)
Si la señal reconstruida tiene dos bordes
delanteros de barra consecutivos, entonces o falta un borde trasero
de barra o se ha insertado un borde delantero de barra adicional. De
forma similar, si la señal reconstruida tiene dos bordes traseros de
barra consecutivos entonces o falta un borde delantero de barra o se
ha insertado un borde trasero de barra adicional. Si faltan bordes
auténticos de barra, entonces el procedimiento de segmentación
realizado por los medios 1602 debiera haberse hecho con mayor
sensibilidad a los gradientes más pequeños. Si se insertan bordes de
barra espurios, entonces el procedimiento de segmentación debiera
haberse hecho con menor sensibilidad para acomodar los mayores
cambios de la señal de gradientes sin dividir falsamente un segmento
en dos. Se puede controlar la sensibilidad del procedimiento de
segmentación modificando el umbral de masa especificado que utilizan
los medios 1606 para determinar si los segmentos tienen masa
suficiente.
Después de que los medios 1608 generen una señal
reconstruida, los medios 1610 transmiten la señal reconstruida al
descodificador de señales de gradientes 116. En un modo de
realización preferido, el procesamiento del descodificador 116 es
idéntico al del descodificador de señales compuestas 110 descrito
anteriormente en esta descripción en la sección titulada
"Descodificación de señales compuestas". Después de
descodificar el símbolo de código de barras, el descodificador 116
transmite la señal descodificada al selector de salida 118.
Tal como se ha descrito anteriormente en esta
descripción, con relación al ejemplo de la Tabla II, en un modo de
realización preferido de la presente invención, se repiten los
valores de intensidades de píxeles originales para "tapar
huecos" entre las columnas redondeadas que resultan de girar,
estirar y redondear las columnas originales. En un modo de
realización alternativo preferido (no representado), se repiten los
valores de intensidad de píxeles originales según el porcentaje de
sobremuestreo.
Por ejemplo, con relación a la Tabla III, para un
porcentaje de sobremuestreo de tres, el sistema 100 giraría y
estiraría el píxel original (0,0) de modo que se utilizara tres
veces el valor de la intensidad del píxel (0,0) para actualizar los
elementos del sector compuesto que correspondan a las columnas
redondeadas 0, 1 y 2. De forma similar, el sistema 100 giraría y
estiraría el píxel original (0, 1) de modo que el valor de la
intensidad del píxel (0, 1) sería utilizado tres veces para
actualizar los elementos del vector compuesto que correspondan a las
columnas redondeadas 2, 3 y 4.
Hay que observar que se utilizan los valores de
intensidad de ambos píxeles originales (0,0) y (0,1) de la línea de
barrido nº 1 para actualizar el elemento del vector compuesto que
corresponda a la columna redondeada 2. De este modo, en lugar de
"tapar huecos" entre las columnas redondeadas, en este modo de
realización preferido, se repiten los valores de los píxeles
originales según el porcentaje de sobremuestreo y puede dar por
resultado un "solapamiento". En este ejemplo, se actualiza dos
veces el elemento del vector de recuento que corresponde a la
columna redondeada 2 para reflejar este efecto de solapamiento.
Puede instalarse el sistema 100 en el hardware,
software o en una combinación de ambos. En un modo de realización
preferido, se instala el sistema 100 en el software que se encuentra
en los microprocesadores corrientes, tales como los de la familia
80x86 de Intel o la familia 680x0 de Motorola.
Los técnicos en la materia entenderán que dichos
modos de realización preferidos del sistema 100 pueden estar
destinados a localizar y descodificar símbolos de código de barras
en imágenes binarias y/o en imágenes en escala de grises.
Los técnicos en la materia entenderán igualmente
que el sistema 100 está destinado de preferencia para ser controlado
por parámetros donde los valores de varios parámetros puedan ser
cambiados según la aplicación particular. Se entenderá asimismo que
la selección de ciertos valores de parámetros puedan estar basados
en el análisis empírico del procesamiento de imágenes de muestra
conocidas.
Se entenderá asimismo que los técnicos en la
materia pueden introducir diversos cambios de detalles, materiales y
disposiciones de las partes que han sido descritas e ilustradas con
el fin de explicar la naturaleza de esta invención sin salirse del
principio y del ámbito de la invención tal como se indica en las
siguientes reivindicaciones.
Claims (28)
1. Un método para tratar una imagen de píxeles de
un símbolo de código de barras para descodificar un carácter,
comprendiendo la imagen de píxeles, filas y columnas de píxeles,
comprendiendo el método las fases siguientes:
- a)
- para una pluralidad de líneas de barrido (1, 2, 3, 4, 5, 6) de píxeles de la imagen de píxeles, en la cual cada píxel se caracteriza por una indicación de a cual de las filas o columnas pertenece el píxel dentro de la imagen de píxeles, seleccionando (1502) dicha línea de barrido;
- b)
- para cada píxel de la línea de barrido seleccionada, determinar (1504) una o más indicaciones de columnas o filas giradas o estiradas (D, E) para el píxel basándose en la orientación del símbolo respecto de la imagen de píxeles y basándose en un porcentaje de sobremuestreo;
- c)
- para cada una de las indicaciones de columna o de fila girada y estirada (E) generar un elemento de gradientes de blanqueamiento (I) o un elemento de gradientes de ennegrecimiento (K) basado en la magnitud de la diferencia de intensidad entre dos píxeles adyacentes de la línea de barrido seleccionada, siendo el elemento de gradientes de blanqueamiento generado cuando dicha diferencia aumenta y siendo el elemento de gradientes de ennegrecimiento generado cuando dicha diferencia disminuye;
- d)
- sumar (1506) cada elemento de gradientes de blanqueamiento (I) al elemento correspondiente del vector de gradientes de blanqueamiento (J) y sumar cada elemento de gradientes de ennegrecimiento (K) a un elemento correspondiente del vector de gradientes de ennegrecimiento (L) y aumentar un elemento correspondiente de un vector de recuento (H) de conformidad con el número de veces que el elemento correspondiente de blanqueamiento o de vector de gradientes de ennegrecimiento haya sido sumado;
- e)
- repetir (1508) las fases a)-d) para la siguiente línea de barrido de dicha pluralidad de líneas de barrido;
- f)
- para cada indicación de fila o de columna girada y estirada, determinar un elemento de una señal de gradientes de blanqueamiento (O) y un elemento de señales de gradientes de ennegrecimiento (T) mediante la división de los elementos correspondientes del vector de gradientes de blanqueamiento (J) y el vector de gradientes de ennegrecimiento (L), respectivamente, por el elemento correspondiente del vector de recuento (H);
- g)
- procesar la señal de gradientes de blanqueamiento (O) y la señal de gradientes de ennegrecimiento (T) para generar una señal unidimensional reconstruida (Y) basada en los emplazamientos de transición de oscuro a claro o de claro a oscuro representados por la señal de gradientes de blanqueamiento (O) y la señal de gradientes de ennegrecimiento (Y); y
- h)
- determinar el carácter basándose en la señal reconstruida unidimensional.
2. El método de la reivindicación 1, en el cual
la fase f) incluye la suavización (1512) de la señal de gradientes
de blanqueamiento y la señal de gradientes de ennegrecimiento.
3. El método de la reivindicación 2 en el cual la
suavización se basa al menos parcialmente en el porcentaje de
sobremuestreo.
4. El método de la reivindicación 1 en el cual
las líneas de barrido están separadas por más de un píxel.
5. El método de la reivindicación 1 en el cual al
menos algunas de las líneas de barrido no cruzan la totalidad del
símbolo.
6. El método de la reivindicación 1 en el cual la
fase g) incluye:
- g^{1})
- la segmentación (1602) de la señal de gradientes de blanqueamiento (O) y la señal de gradientes de ennegrecimiento (1) en segmentos individuales.
- g^{2})
- la determinación (1604) de la masa (R,W) de cada segmento localizando el centroide ponderado de cada segmento que tenga una masa que no sea inferior a un umbral de masa especificado; y
- g^{3})
- en el cual las transiciones de claro a oscuro y de oscuro a claro desde la cual se genera la señal reconstruida unidimensional estén definidas por los centroides ponderados.
7. El método de la reivindicación 6, en el cual
la fase de segmentación para cada señal de gradientes incluye la
determinación de mínimos locales en la señal de gradientes y la
segmentación de cada señal de gradientes de modo que cada segmento
empiece y finalice con unos mínimos locales determinados.
8. El método de la reivindicación 7 en el cual la
fase de determinación de los mínimos locales incluyan la utilización
de una prueba de significación-valor.
9. El método de la reivindicación 6 en el cual el
umbral de la masa especificada es un producto del porcentaje de
sobremuestreo y la masa esperada es una barra o espacio estrechos en
la imagen de píxeles.
10. El método de la reivindicación 9 en el cual
la fase de localización del centroide ponderado de cada segmento
incluye la localización del emplazamiento en el segmento que
corresponda a un porcentaje especificado de la masa del
segmento.
11. El método de la reivindicación 10, en el cual
el porcentaje especificado utilizado para localizar los centroides
ponderados de los segmentos de la señal de gradientes de
blanqueamiento es inferior al porcentaje especificado utilizado para
localizar los centroides ponderados de los segmentos de la señal de
gradientes de ennegrecimiento.
12. El método de la reivindicación 6, en el cual
la fase de generación de señal reconstruida unidimensional incluye
la intercalación de los centroides ponderados de los segmentos de la
señal de gradientes de blanqueamiento con los centroides ponderados
de los segmentos de la señal de gradientes de ennegrecimiento.
13. El método de la reivindicación 6, que
comprende además:
- la determinación de si existen errores en la señal reconstruida unidimensional; y
- si se determina que existen errores en la señal reconstruida unidimensional, repetir las fases g2) y g3) con un umbral de masa especificado diferente.
14. El método de la reivindicación 1, en el cual
la fase g) comprende:
- la localización de los picos en la señal de gradientes de blanqueamiento y en la señal de gradientes de ennegrecimiento, en la cual las transiciones de claro a oscuro y de oscuro a claro a partir de las cuales se genera la señal reconstruida unidimensional, están definidas por los picos localizados en la señal de gradientes de blanqueamiento y en la señal de gradientes de ennegrecimiento, respectivamente.
15. Un aparato para procesar una imagen de
píxeles de un símbolo de código de barras para descodificar un
carácter, comprendiendo la imagen de píxeles filas y columnas de
píxeles, comprendiendo el aparato:
- a)
- para una pluralidad de líneas de barrido (1, 2, 3, 4, 5, 6) de píxeles de la imagen de píxeles, en el cual cada píxel se caracteriza por una indicación de a cual de las filas o columnas de la imagen de píxeles pertenece el píxel, medios para seleccionar una de dichas líneas de barrido;
- b)
- para cada píxel de la línea de barrido seleccionada, medios para determinar una o más indicaciones de columna o fila girada y estirada (D, E) para el píxel basándose en la orientación del símbolo respecto de la imagen de píxeles y basándose en un porcentaje de sobremuestreo;
- c)
- para cada una de las indicaciones de columna o de fila girada o estirada (E) medios para generar un elemento de un gradiente de blanqueamiento (I) o un elemento de un gradiente de ennegrecimiento (K) basado en la magnitud de la diferencia de intensidad entre dos píxeles adyacentes de la línea de barrido seleccionada, siendo generado el elemento de gradientes de blanqueamiento cuando dicha diferencia aumenta y siendo generado dicho elemento de gradientes de ennegrecimiento cuando dicha diferencia disminuye.
- d)
- medios para sumar cada elemento del gradiente de blanqueamiento (I) a un elemento correspondiente de un vector de gradientes de blanqueamiento (J) y sumar cada elemento del gradiente de ennegrecimiento (K) con un elemento correspondiente de un vector de gradientes de ennegrecimiento (L) y aumentar un elemento correspondiente de un vector de recuento (H) según el número de veces que el elemento correspondiente del vector de gradientes de blanqueamiento o de ennegrecimiento haya sido sumado.
- e)
- medios para repetir las operaciones definidas por las particularidades a) - d) de la siguiente línea de barrido de dicha pluralidad de líneas de barrido;
- f)
- para cada indicación de fila o de columna girada y estirada, medios para determinar un elemento de señal de gradientes de blanqueamiento (O) y un elemento de señal de gradientes de ennegrecimiento dividiendo el elemento correspondiente del vector de gradiente de blanqueamiento (J) y el vector de gradientes de ennegrecimiento (L) respectivamente, por el elemento correspondiente del vector de recuento;
- g)
- medios para procesar la señal de gradientes de blanqueamiento (O) y la señal de gradientes de ennegrecimiento (T) para generar una señal reconstruida unidimensional (Y) basada en emplazamientos de transición de oscuro a claro y de claro a oscuro representados por la señal de gradientes de blanqueamiento (O) y la señal de gradientes de ennegrecimiento(T), y
- h)
- medios para determinar el carácter basado en la señal reconstruida unidimensional.
16. El aparato de la reivindicación 15, en el
cual los medios f) incluyen medios para suavizar la señal de
gradientes de blanqueamiento y la señal de gradientes de
ennegrecimiento.
17. El aparato de la reivindicación 18, en el
cual los medios de suavización funcionan, al menos en parte, sobre
la base del porcentaje de sobremuestreo.
18. El aparato de la reivindicación 15, en el
cual las líneas de barrido están separadas por más de un píxel.
19. El aparato de la reivindicación 15, en el
cual al menos algunas de las líneas de barrido no cruzan la
totalidad del símbolo.
20. El aparato de las reivindicaciones 15, en el
cual los medios g) incluyen:
- g1)
- medios para la segmentación de la señal de gradientes de blanqueamiento y la señal de gradientes de ennegrecimiento en segmentos individuales.
- g2)
- medios para la determinación de la masa de cada segmento mediante la localización del centroide ponderado de cada segmento que tenga una masa que no sea inferior a un umbral de masa especificado; y
- g3)
- en el cual las transiciones de claro a oscuro y de oscuro a claro a partir de las cuales se genera la señal reconstruida unidimensional están definidas por los centroides ponderados.
21. El aparato de la reivindicación 20 en el cual
los medios de segmentación incluyen medios para determinar los
mínimos locales en la señal de gradientes y la segmentación de cada
señal de gradientes de modo que cada segmento empiece y termine con
unos mínimos locales determinados.
22. El aparato de la reivindicación 21, en el
cual los medios para determinar los mínimos locales incluyen la
utilización de una prueba de
significación-valor.
23. El aparato de la reivindicación 20, en el
cual el umbral de masa especificado es un producto del porcentaje de
sobremuestreo y la masa esperada de una barra o un espacio estrechos
en la imagen de píxeles.
24. El aparato de la reivindicación 23, en el
cual los medios para localizar el centroide ponderado de cada
segmento incluye medios para localizar el emplazamiento dentro del
segmento correspondiente a un porcentaje especificado de la masa del
segmento.
25. El aparato de la reivindicación 24, en el
cual el porcentaje especificado utilizado para localizar los
centroides ponderados de los segmentos de la señal de gradientes de
blanqueamiento es inferior al porcentaje especificado utilizado para
localizar los centroides ponderados de los segmentos de la señal de
gradientes de ennegrecimiento.
26. El aparato de la reivindicación 20 en el cual
los medios para generar la señal reconstruida unidimensional incluye
medios para intercalar los centroides ponderados de los segmentos de
la señal de gradientes de blanqueamiento con los centroides
ponderados de los segmentos de la señal de gradientes de
ennegrecimiento.
27. El aparato de la reivindicación 20, que
comprende además:
- medios para determinar si existen errores en la señal reconstruida unidimensional; y
- medios para hacer funcionar los medios g2) y g3) con un umbral de masa especificado diferente si se determina que existen errores en la señal reconstruida unidimensional.
28. El aparato de la reivindicación 15, en el
cual los medios g) comprenden medios para localizar los picos en la
señal de gradientes de blanqueamiento y en la señal de gradientes de
ennegrecimiento en los cuales las transiciones de claro a oscuro y
de oscuro a claro a partir de las cuales se genera la señal
reconstruida unidimensional están definidas por los picos
localizados en la señal de gradientes de blanqueamiento y en la
señal de gradientes de ennegrecimiento, respectivamente.
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 |
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 |
EP98111652A EP0877334B1 (en) | 1993-01-29 | 1994-08-29 | Method and apparatus for decoding bar code symbols using independent bar and space analysis |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2214662T3 true ES2214662T3 (es) | 2004-09-16 |
Family
ID=41110784
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES98111652T Expired - Lifetime ES2214662T3 (es) | 1993-01-29 | 1994-08-29 | Metodo y aparato para descodificar simbolos de codigo de barras para analisis independientes utilizando barras y espacios. |
ES97103130T Expired - Lifetime ES2214563T3 (es) | 1993-01-29 | 1994-08-29 | Metodo y aparato para descodificacion de simbolos de codigo de barras utilizando analisis de barras y espacio independiente. |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES97103130T Expired - Lifetime ES2214563T3 (es) | 1993-01-29 | 1994-08-29 | Metodo y aparato para descodificacion de simbolos de codigo de barras utilizando analisis de barras y espacio independiente. |
Country Status (9)
Country | Link |
---|---|
US (1) | US5352878A (es) |
EP (4) | EP0785521B1 (es) |
JP (1) | JP2832645B2 (es) |
AT (2) | ATE257962T1 (es) |
AU (1) | AU7828794A (es) |
CA (1) | CA2191433C (es) |
DE (1) | DE69433492T2 (es) |
ES (2) | ES2214662T3 (es) |
WO (1) | WO1996007155A1 (es) |
Families Citing this family (52)
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 |
US7147161B2 (en) | 1998-06-12 | 2006-12-12 | Symbol Technologies, Inc. | Digitizing bar code symbol data |
US6328213B1 (en) * | 1998-06-12 | 2001-12-11 | Symbol Technologies, Inc. | Method of processing an analog electrical signal containing information representative of reflected light from coded indicia, wherein the electrical signal contains edge transitions |
US6494376B1 (en) | 1998-09-14 | 2002-12-17 | Psc Scanning, Inc. | Compensation for scan line variations in a bar code scanner system |
US6513714B1 (en) | 1998-09-14 | 2003-02-04 | Psc Scanning, Inc. | Character reconstruction and element level processing in bar code scanning system |
US6454168B1 (en) | 1998-09-14 | 2002-09-24 | Psc Scanning, Inc. | Correlation and stitching techniques in a bar code scanning system |
WO2000016242A1 (en) | 1998-09-14 | 2000-03-23 | Psc Scanning, Inc. | Bar code label reconstruction system and methodologies |
US6585157B2 (en) | 1998-09-14 | 2003-07-01 | Psc Scanning, Inc. | Symbology determination to aid decoding in a bar code scanning system |
EP0996079B1 (en) * | 1998-10-23 | 2001-07-18 | Datalogic S.P.A. | Method for locating codes in bidimensional images |
US6189702B1 (en) | 1998-11-25 | 2001-02-20 | United Parcel Service Of America, Inc. | Overhead mounted sorter for conveyors |
US6565003B1 (en) | 1998-12-16 | 2003-05-20 | Matsushita Electric Industrial Co., Ltd. | Method for locating and reading a two-dimensional barcode |
US6082619A (en) * | 1998-12-16 | 2000-07-04 | 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 |
WO2002084879A2 (en) * | 2001-04-13 | 2002-10-24 | The Code Coproration | System and method for encoding and decoding data and references to data in machine-readable graphical codes |
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 | 한탁돈 | 코드인식을 위한 장치 및 그 방법 |
US20030163800A1 (en) * | 2002-02-27 | 2003-08-28 | Weiyang Zhou | System and method for generating graphical codes containing a plurality of data fields |
US20030163396A1 (en) * | 2002-02-27 | 2003-08-28 | John Blankevoort | Systems and methods for tracking products as they move through a supply chain |
US7392933B2 (en) * | 2002-07-29 | 2008-07-01 | The Code Corporation | Systems and methods for interfacing multiple types of object identifiers and object identifier readers to multiple types of applications |
US7621453B2 (en) * | 2002-07-29 | 2009-11-24 | The Code Corporation | System and method for controlling the distribution of data translation components to portable data collection devices |
US7070091B2 (en) * | 2002-07-29 | 2006-07-04 | The Code Corporation | Systems and methods for interfacing object identifier readers to multiple types of applications |
US7097099B2 (en) * | 2002-07-29 | 2006-08-29 | The Code Corporation | Data collection device with integrated data translation |
US7706624B2 (en) * | 2003-08-04 | 2010-04-27 | Thomson Licensing | Apparatus and method for reducing noise in an image |
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 |
JP5683891B2 (ja) * | 2010-10-07 | 2015-03-11 | 日本電産サンキョー株式会社 | スタック型バーコード読取装置およびスタック型バーコード読取方法 |
JP5657987B2 (ja) * | 2010-10-07 | 2015-01-21 | 日本電産サンキョー株式会社 | スタック型バーコード読取装置およびスタック型バーコード読取方法 |
KR101748877B1 (ko) * | 2010-12-16 | 2017-06-19 | 엘지이노텍 주식회사 | 바코드 인식 장치 및 방법 |
JP6330388B2 (ja) * | 2014-03-14 | 2018-05-30 | オムロン株式会社 | 画像処理方法、画像処理装置、並びに、当該方法を実行するプログラム、及び、当該プログラムを記録する記録媒体 |
US9361503B2 (en) | 2014-10-30 | 2016-06-07 | Datalogic IP Tech Srl | Systems, methods and articles for reading highly blurred machine-readable symbols |
Family Cites Families (30)
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 |
CA1310417C (en) * | 1987-09-28 | 1992-11-17 | Hideki Okamura | Combining bar code read data |
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 EP97103130A patent/EP0785521B1/en not_active Expired - Lifetime
- 1994-08-29 DE DE69433492T patent/DE69433492T2/de not_active Expired - Lifetime
- 1994-08-29 EP EP98111652A patent/EP0877334B1/en not_active Expired - Lifetime
- 1994-08-29 EP EP97103131A patent/EP0795836B8/en not_active Expired - Lifetime
- 1994-08-29 EP EP94929112A patent/EP0783739A1/en not_active Withdrawn
- 1994-08-29 AT AT98111652T patent/ATE257962T1/de not_active IP Right Cessation
- 1994-08-29 AT AT97103131T patent/ATE241180T1/de not_active IP Right Cessation
- 1994-08-29 ES ES98111652T patent/ES2214662T3/es not_active Expired - Lifetime
- 1994-08-29 CA CA002191433A patent/CA2191433C/en not_active Expired - Lifetime
- 1994-08-29 WO PCT/US1994/009704 patent/WO1996007155A1/en not_active Application Discontinuation
- 1994-08-29 JP JP8508683A patent/JP2832645B2/ja not_active Expired - Fee Related
- 1994-08-29 AU AU78287/94A patent/AU7828794A/en not_active Abandoned
- 1994-08-29 ES ES97103130T patent/ES2214563T3/es not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0795836A2 (en) | 1997-09-17 |
JPH09512936A (ja) | 1997-12-22 |
AU7828794A (en) | 1996-03-22 |
DE69433492D1 (de) | 2004-02-19 |
EP0877334A2 (en) | 1998-11-11 |
EP0795836B8 (en) | 2003-08-13 |
EP0877334B1 (en) | 2004-01-14 |
CA2191433C (en) | 2000-07-11 |
EP0783739A1 (en) | 1997-07-16 |
US5352878A (en) | 1994-10-04 |
EP0785521A2 (en) | 1997-07-23 |
EP0785521A3 (en) | 2001-05-16 |
ES2214563T3 (es) | 2004-09-16 |
ATE241180T1 (de) | 2003-06-15 |
EP0795836A3 (en) | 1999-12-08 |
CA2191433A1 (en) | 1996-03-07 |
ATE257962T1 (de) | 2004-01-15 |
EP0785521B1 (en) | 2004-01-21 |
EP0795836B1 (en) | 2003-05-21 |
JP2832645B2 (ja) | 1998-12-09 |
EP0877334A3 (en) | 2000-12-06 |
WO1996007155A1 (en) | 1996-03-07 |
DE69433492T2 (de) | 2004-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2214662T3 (es) | Metodo y aparato para descodificar simbolos de codigo de barras para analisis independientes utilizando barras y espacios. | |
US5545887A (en) | Method and apparatus for decoding bar code symbols using subpixel scan lines | |
US5412197A (en) | Method and apparatus for decoding bar code symbols using gradient signals | |
EP0720113B1 (en) | Two-dimensional code reading apparatus | |
JP2951965B2 (ja) | 機械が光学的に読取り可能なバイナリコードの測定方法 | |
US7337970B2 (en) | Barcode scanner decoding | |
US8152070B2 (en) | Two-dimensional symbol and method for reading same | |
US5404003A (en) | Method and apparatus for decoding bar code symbols using byte-based searching | |
US7726572B2 (en) | Bar code scanning decoding | |
JPH0612515A (ja) | Ccd/cmdカメラを使用して二次元バーコードを復号する方法及び装置 | |
GB2256517A (en) | Information encoding | |
JPH07254037A (ja) | 二次元コード | |
JP2925515B2 (ja) | ピクセル・イメージのバーコード・シンボルの読取り方法および装置 | |
JP2864012B2 (ja) | ピクセル・イメージのバーコード・シンボルの読取り方法および装置 | |
JPH0750496B2 (ja) | 画信号処理装置 | |
JPH02168363A (ja) | 画像信号処理装置 | |
JP2697085B2 (ja) | 画信号処理装置 | |
JPH02125384A (ja) | 画像信号処理装置 | |
JPH02168364A (ja) | 画信号処理装置 | |
JP2001357350A (ja) | 一次元バーコードの位置検出方法および一次元バーコードの位置検出装置 | |
JPH02125382A (ja) | 画像信号処理装置 | |
JPH02176884A (ja) | 画像信号処理装置 |