ES2256106T3 - Metodo y aparato para leer un simbolo de codigo de barra bidimensional y medio de almacenamiento de datos. - Google Patents

Metodo y aparato para leer un simbolo de codigo de barra bidimensional y medio de almacenamiento de datos.

Info

Publication number
ES2256106T3
ES2256106T3 ES01108629T ES01108629T ES2256106T3 ES 2256106 T3 ES2256106 T3 ES 2256106T3 ES 01108629 T ES01108629 T ES 01108629T ES 01108629 T ES01108629 T ES 01108629T ES 2256106 T3 ES2256106 T3 ES 2256106T3
Authority
ES
Spain
Prior art keywords
orientation
module
modules
design
axis
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES01108629T
Other languages
English (en)
Inventor
Hitomi Wakamiya
Shinichi Arazaki
Fumio Koyama
Satoshi Yanagida
Haruyoshi Ohori
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP2000104970A external-priority patent/JP2001291051A/ja
Priority claimed from JP2000201279A external-priority patent/JP2002024752A/ja
Priority claimed from JP2000237086A external-priority patent/JP2002049889A/ja
Priority claimed from JP2000355940A external-priority patent/JP2002157549A/ja
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Application granted granted Critical
Publication of ES2256106T3 publication Critical patent/ES2256106T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1456Methods for optical code recognition including a method step for retrieval of the optical code determining the orientation of the optical code with respect to the reader and correcting therefore
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Toxicology (AREA)
  • Electromagnetism (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Character Discrimination (AREA)
  • Character Input (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)
  • Optical Recording Or Reproduction (AREA)
  • Automatic Tape Cassette Changers (AREA)

Abstract

Un método de lectura de un símbolo de código de barras bidimensional que tiene módulos de orientación y un diseño de localizador con un punto central, comprendiendo el método: 1) explorar el símbolo de código de barras para obtener una imagen explorada, 2) determinar el punto central del diseño de localizador en una imagen explorada del símbolo de código de barras y 3) realizar una operación de búsqueda de módulo de datos para calcular la información de posición y forma para todos los módulos que constituyen el símbolo de código de barras, caracterizado porque la operación 3) incluye calcular un eje de orientación que pasa a través de un módulo de orientación y el punto central del diseño de localizador en una imagen explorada del símbolo de código de barras por: (a) cálculo, basado en la información de posición del diseño de localizador y en la información de posición del módulo de orientación y en la información de forma, de la información de posición y forma para una pluralidad de módulos que constituyen un grupo de módulos en dicho eje de orientación; (b) detección de un diseño de bit de varios de dichos módulos de datos sobre el eje de orientación calculado por la operación de calcular la posición del módulo del eje de orientación; (c) cálculo, basado en la información de posición y forma de los distintos módulos de un grupo de módulos sobre el eje de orientación calculados por la operación de calcular la posición del módulo del eje de orientación, de la información de posición para una pluralidad de módulos que constituyen un grupo de módulos entre ejes de orientación adyacentes; y (d) detección del diseño de bit de los distintos módulos de datos presentes entre los ejes de orientación calculados por la operación de calcular la posición del módulo del eje de orientación.

Description

Método y aparato para leer un símbolo de código de barra bidimensional y medio de almacenamiento de datos.
Antecedentes del invento 1.Campo del invento
El presente invento se refiere a un método de lectura de código de barras bidimensional, a un medio de almacenamiento de datos que lleva un producto de programa de ordenador que pone en práctica el método, y al aparato de lectura de código de barras bidimensional. Más particularmente, el presente invento se refiere a un método de lectura de código de barras bidimensional, a un medio de almacenamiento de datos y a un aparato de lectura de código de barras bidimensional para situar el diseño del localizador en una imagen capturada explorando un símbolo de código bidimensional, situando el módulo de dirección, situando el módulo de datos, y convirtiendo el módulo de datos a caracteres de datos.
2.Descripción de la técnica relacionada
Los códigos de barras son un tipo de tecnología de reconocimiento automatizada que se ha desarrollado en la industria de la venta al por menor como un modo de buscar información en una base de datos sobre un artículo rápida y exactamente. Los códigos de barras han evolucionado y encontrado aplicación en industrias diversas tales como almacenamiento y distribución, gobierno, medicina, investigación y gestión de eventos. Como los códigos de barras y sus aplicaciones han resultado muy variados, la demanda para códigos de barras se ha extendido a industrias y aplicaciones para las que los códigos de barras tradicionales son inadecuados, incluyendo la miniaturización de código de barras para impresión en artículos muy pequeños y elevada capacidad de codificación. Los códigos de barras bidimensionales que se dirigen a estas necesidades han sido desarrollados en los últimos años.
Hay dos tipos de códigos de barras bidimensionales: simbología apilada (o códigos de múltiples filas), y códigos de matriz. Las simbologías apiladas comprenden múltiples filas de códigos de barras de una dimensión apiladas en una alineación vertical. Las simbologías apiladas pueden ser leídas usando un escáner láser, escáner de CCD, u otros métodos de exploración. Los códigos de matriz codifican datos usando celdas de datos negras y blancas dispuestas en un diseño determinado por el protocolo de código particular. Los códigos de matriz pueden ser leídos usando un lector de imagen de CCD u otro método detector de imagen.
Un tipo de código de matriz es denominado MaxiCódigo. El MaxiCódigo ha sido diseñado para clasificar y seguir la pista a transportes de paquetes. Los servicios de entrega de paquetes en los Estados Unidos de Norteamérica usan el MaxiCódigo en sus centros de recogida y distribución para clasificar transportes por destino y para carga de transporte. El símbolo bidimensional (2D) generado y presentado de acuerdo con la norma de MaxiCódigo es referido a continuación como el símbolo MaxiCódigo.
Un símbolo MaxiCódigo típico está mostrado en la fig. 59. La fig. 59 (a) muestra un símbolo MaxiCódigo completo, y la fig. 59 (b) muestra el diseño de localizador y el módulo de orientación del símbolo MaxiCódigo.
Como se ha mostrado en la fig. 59 (a), un diseño del localizador 5901 está posicionado en el centro de cada símbolo MaxiCódigo 5900. Cada diseño del localizador 5901 comprende seis partes concéntricas, que incluyen un círculo central blanco, dos anillos blancos, y tres anillos negros. El diseño del localizador 5901 es usado para situar y aislar el símbolo MaxiCódigo 5900 a partir de la imagen capturada. El centro de símbolo MaxiCódigo es identificado situando el centro del diseño del localizador 5901.
El espacio dentro del símbolo MaxiCódigo alrededor del diseño del localizador 5901 está poblado por grupos de módulos que consisten en total de 884 módulos de interbloqueo 5902 blancos o negros. Cada módulo 5902 es un hexágono regular. Los grupos de módulos consisten de seis grupos de módulos de orientación 5903 y un grupo de módulos de datos. Cada grupo de módulos de orientación se compone de los 3 módulos de orientación que indican la orientación del símbolo MaxiCódigo 5900. El grupo de módulos de datos consiste de 864 módulos de datos que representan los datos codificados; un módulo de datos corresponde a un bit de datos. Los módulos de datos son usados para codificar datos, y son usados para el tratamiento de corrección de errores. Obsérvese que los dos módulos en la parte superior derecha del símbolo no son usados.
Como se ha mostrado en la fig. 59 (b), el módulo de hexágono regular 5902 está dimensionado de tal modo que es internamente tangente a la diana del centro blanco del diseño del localizador 5901. Los grupos de módulos de orientación 5903 definen una hexágono regular virtual del que el centro es el punto central 0 del diseño del localizador 5901. Cada grupo de módulos de orientación 5903 incluye un módulo de orientación interior 5904, un módulo de orientación exterior 5905, y un módulo de orientación central 5906. Los seis grupos de módulos de orientación 5903 comprenden así un total de 18 módulos de orientación. Encontrar estos 18 módulos de orientación identifica la orientación del símbolo MaxiCódigo y permite que los datos sean leídos a partir de los módulos de datos.
Debe observarse aquí que en cada grupo de módulos de orientación 5903 el módulo de orientación interior 5904 es el situado a la distancia más corta desde el punto central 0, el módulo de orientación exterior 5905 es el situado a la mayor distancia del punto central 0, y el módulo de orientación central 5906 es el situado a una distancia del punto central 0 que está entre la distancia desde el punto central 0 al módulo de orientación interior 5904 y las distancia desde el punto central 0 al módulo de orientación exterior 5905.
Una técnica de detección de imagen es usada para leer los símbolos MaxiCódigo, que como se ha indicado antes son un tipo de simbología de código bidimensional. En otras palabras, un símbolo MaxiCódigo es capturado como datos de imagen que son a continuación interpretados (descodificados). Esta operación es descrita más detalladamente a continuación.
El primer paso es encontrar el diseño del localizador del símbolo MaxiCódigo y los módulos de orientación en la imagen capturada, y a continuación reconocer los módulos de datos. Un diseño de bit es a continuación generado a partir de módulos de datos, asignando un valor de bit de 1 a cada módulo de datos oscuro (típicamente negro), y 0 a cada módulo de datos claro (típicamente blanco). El diseño de bit resultante es a continuación convertido a caracteres de datos correspondientes para descodificar los datos en el símbolo MaxiCódigo. Distintos métodos han sido desarrollados para descodificar la imagen explorada de un símbolo MaxiCódigo.
Siempre es necesario encontrar el centro del diseño del localizador para descodificar un símbolo MaxiCódigo. El documento JP-A-10-21322 enseña un método para encontrar el centro del diseño del localizador.
Este método en primer lugar encuentra todas las curvas Jordan que tienen una distancia angular entre dos puntos menores que \pi; a continuación, encuentra todas las curvas Jordan convexas dentro de las curvas Jordan encontradas; determina las ecuaciones de un par de tangentes desde los puntos finales de cada curva Jordan convexa; determina las ecuaciones de las líneas centrales para cada par de tangentes; determina el punto de intersección de las líneas centrales; y encuentra así el punto central del diseño del localizador basado en la intersección de las líneas centrales. La descodificación del símbolo MaxiCódigo prosigue a continuación.
Un problema con el método citado en el documento JP-A-10-21322 es que el tratamiento consume tiempo debido a los pasos necesarios para aislar todas las curvas Jordan convexas de entre todas las curvas Jordan encontradas, a continuación determinar las ecuaciones de las tangentes, y finalmente buscar el centro del diseño del localizador del símbolo.
Un método que usa plantillas para situar el centro del diseño del localizador está citado en el documento WO 95/34043. Sin embargo, el documento WO 95/3403 simplemente dice que los seis ejes del símbolo, que están desplazados 60 grados cada uno, pasan a través del centro de la diana, y que el centro de la plantilla está superpuesto al centro de la diana. No dice nada específico acerca de cómo superponer la plantilla con el centro de la
diana.
Encontrar los módulos de orientación es también importante, y se han propuesto diversos métodos de cómo conseguirlo. Encontrar los módulos de orientación es esencialmente encontrar la situación y forma de los módulos de orientación. Encontrando la situación y la forma de los módulos de orientación no es sólo posible detectar la situación de cada módulo de datos basado en las dimensiones de un módulo de símbolo MaxiCódigo, es también posible identificar el color, es decir, el valor de bit, de los módulos de datos detectados.
La fig. 60 muestra grupos de módulos en un símbolo MaxiCódigo. Como se ha mostrado en la fig. 60, el grupo de módulos 6000 comprende grupos de módulos de orientación 6001a, 6001b, 6001c, 6001d, 6001e, 6001f, conteniendo cada uno varios módulos de orientación como se ha señalado antes, y comprendiendo el grupo de módulos de datos 6002 los módulos de datos individuales. Obsérvese, además, que el diseño de bit (dónde negro = 1 y blanco = 0) de los tres módulos de orientación que constituyen cada uno de los seis grupos de módulos de orientación 6001a, 6001b, 6001c, 6001d, 6001e, 6001f difiere según la orientación. Por ello se han propuesto distintos métodos para situar los módulos de orientación, pero cada uno de estos métodos requiere un proceso complejo. El proceso de situación del módulo de orientación es por ello consumidor de tiempo.
Se han propuesto también distintos métodos para detectar situaciones de módulos de datos basados en los módulos de orientación encontrados, y convertir el diseño de bit correspondiente a los colores de los módulos detectados a caracteres de datos en un solo proceso continuo. Estos métodos también necesitan un proceso complejo, y consumen también por ello mucho tiempo.
El proceso para descodificar la imagen de símbolo MaxiCódigo explorada puede descodificar imágenes exploradas capturadas como imágenes frontales directas. Sin embargo, dependiendo donde está colocado en los paquetes el símbolo respectivo MaxiCódigo y la situación del escáner de código de barras bidimensional, el símbolo MaxiCódigo no es necesariamente capturado como una vista frontal. En la práctica, es corrientemente necesario descodificar imágenes exploradas capturadas en un ángulo, pero no resulta posible a menudo descodificar tales imágenes.
La fig. 62 muestra la relación entre un símbolo MaxiCódigo real y la imagen explorada capturada del símbolo MaxiCódigo. La fig. 62 (a) muestra la relación entre un símbolo MaxiCódigo explorado desde el frente y la imagen explorada resultante, y la fig. 62 (b) muestra la relación entre un símbolo MaxiCódigo explorado desde un ángulo y la imagen explorada resultante.
Cuando la imagen explorada de un símbolo MaxiCódigo capturado desde un ángulo es comparada con el símbolo MaxiCódigo real, las posiciones relativas del diseño del localizador y módulos en la imagen explorada son obviamente diferentes de las posiciones relativas del diseño del localizador y los módulos en el símbolo MaxiCódigo real como se ha mostrado en la fig. 62 (b). Además, las formas del diseño del localizador y los módulos en la imagen explorada no son similares a la forma del diseño del localizador y los módulos en el símbolo MaxiCódigo real, en vez de ello la imagen explorada está deformada. Es por ello generalmente difícil de reconocer la posición y colores de los módulos de datos que constituyen el símbolo MaxiCódigo.
Descodificar imágenes exploradas de símbolos de MaxiCódigo, que es una simbología de código de barras bidimensional típica, cuando la imagen es capturada en un ángulo está así sujeta a un elevado índice de error, haciendo imposible en algunos casos descodificar el símbolo MaxiCódigo.
Resolver este problema ha requerido una operación de corrección de distorsión para convertir imágenes exploradas distorsionadas en imágenes sin distorsión. Un método de corrección de distorsión usado normalmente es la normalización.
La fig. 63 es usada más abajo para describir la corrección de distorsión de una imagen usando normalización. La fig. 63 (a) muestra dos tipos de distorsión, y la fig. 63 (b) muestra un proceso de descodificación de imagen explorada usando la normalización.
Como se ha mostrado en la fig. 63 (a), las imágenes distorsionadas pueden tener distorsión en perspectiva o distorsión rotacional. Ambos tipos pueden ser corregidos a imágenes libres de distorsión mediante la normalización. Como se ha mostrado en la fig. 63 (b), un proceso para descodificar una imagen explorada distorsionada extrae en primer lugar la imagen del símbolo, a continuación normaliza la imagen extraída, y finalmente descodifica la imagen con la distorsión corregida para leer la información codificada en el símbolo.
Como se ha mostrado en la fig. 59 y se ha descrito antes, un símbolo MaxiCódigo tiene el diseño del localizador situado en el centro del mismo siendo todos los módulos que le rodean hexágonos regulares. Como resultado, es difícil caracterizar matemáticamente la forma del símbolo cuando el límite alrededor del símbolo o los módulos de datos en los vértices son blancos. La normalización, que es una técnica de corrección de la distorsión común, no puede ser usada para normalizar con exactitud un símbolo MaxiCódigo distorsionado.
Además, incluso si la normalización puede ser aplicada satisfactoriamente para corregir la distorsión, el proceso de corrección consume mucho tiempo.
Una tecnología de acuerdo con las partes de caracterización previas de las reivindicaciones 1ª a 8ª está descrita en el documento WO 95/34043.
El presente invento está dirigido a una solución para los problemas anteriores. Más específicamente, es el objeto del presente invento proporcionar un método y un aparato de lectura que permitan acortar el tiempo requerido para descodificar una imagen explorada de un símbolo de código bidimensional, tal como el símbolo MaxiCódigo.
Resumen del invento
Como resultado de nuestra búsqueda de soluciones para los problemas antes descritos, hemos demostrado lo siguiente.
Primero, el punto central de un diseño del localizador puede ser encontrado en la imagen explorada de, por ejemplo, un símbolo MaxiCódigo detectando, de entre los diseños de detección en líneas de exploración a través de la imagen explorada, un diseño de detección que corresponda a un diseño de referencia específico a lo largo de una línea de exploración a través del punto central del diseño del localizador.
Además, el tiempo de proceso necesario para detectar las dimensiones del módulo y la situación del punto central de los módulos de orientación en la imagen explorada de, por ejemplo, un símbolo MaxiCódigo basado en datos de elementos de imagen detectados puede ser acortado comparado con métodos tradicionales detectando todos los diseños de color de datos de elementos de imagen dispuestos a una distancia específica a partir del punto central del diseño del localizador en un intervalo de ángulo específico.
Además, imágenes exploradas de, por ejemplo, un símbolo MaxiCódigo capturado a partir de un ángulo pueden ser descodificadas así como símbolos MaxiCódigo capturados a partir del frente calculando una ecuación que correlaciona un diseño del localizador de símbolo MaxiCódigo a la imagen explorada de un símbolo MaxiCódigo capturado desde un ángulo similarmente a una ecuación que correlaciona un círculo a una elipse, y usando esta ecuación para corregir la imagen explorada.
Además, los ejes de orientación de una imagen explorada distorsionada pueden ser corregidos en la imagen explorada de, por ejemplo, un símbolo MaxiCódigo corrigiendo el ángulo del eje de orientación de modo que el eje pase por los puntos centrales del módulo de orientación y del módulo de datos basándose en el área de grupos de módulos negros en un eje de orientación que pasa por el centro del diseño del localizador y un módulo de orientación.
Además, la posición y forma de los módulos en los ejes de orientación de una imagen explorada distorsionada pueden ser corregidas basándose en el área de grupos de módulos del mismo color en un eje de orientación corregido, y las posiciones de módulos de datos entre ejes de orientación pueden ser corregidas basándose en la posición y forma de módulos en los ejes de orientación corregidos.
También se ha demostrado que detectando la información de la posición y la forma del módulo basada en una imagen explorada corregida, el tiempo de tratamiento de un proceso de descodificación para descodificar una imagen explorada de un símbolo MaxiCódigo puede ser acortado.
Aún más, se ha demostrado también que convirtiendo los módulos de datos detectados a una secuencia de bit, almacenando los datos convertidos a una tabla matriz de bits, y convirtiendo los datos de bit a palabras de código basadas en una tabla de conversión de palabras de código bidimensionales, el tiempo de proceso para convertir datos en caracteres de datos puede ser acortado comparado con métodos tradicionales.
Basándose en los resultados de búsqueda anteriores, el objeto del invento es conseguido por un método según la reivindicación 1ª, un aparato según la reivindicación 8ª, y un medio de almacenamiento de datos según la reivindicación 15ª, respectivamente. Realizaciones preferidas del invento son objeto de las reivindicaciones dependientes.
Preferiblemente, el medio de almacenamiento de datos para grabar un programa de acuerdo con el presente invento es un Disco Compacto, un disco flexible, un disco duro, un disco magnético-óptico, un Disco Versátil Digital (DVD), una cinta magnética, una tarjeta de memoria.
Otros objetos y resultados junto con una compresión más completa del invento resultarán evidentes y serán apreciados por referencia a la descripción siguiente de realizaciones preferidas tomadas en unión con los dibujos adjuntos.
Breve descripción de los dibujos
La fig. 1 es un diagrama de bloques de un aparato de acuerdo con una realización preferida del presente invento;
La fig. 2 es un diagrama de bloques de funciones de un aparato de acuerdo con una realización preferida del presente invento;
La fig. 3 es un diagrama de flujo del proceso de descodificación en un método de acuerdo con una realización preferida del presente invento;
La fig. 4 es un diagrama de flujo de un proceso de búsqueda de un diseño del localizador en el proceso de descodificación mostrado en la fig. 3;
La fig. 5 es un diagrama de flujo de la parte de búsqueda horizontal de un método de situación del punto central del diseño del localizador en el presente invento;
La fig. 6 es un diagrama de flujo de la parte de búsqueda vertical de un método de situación del punto central del diseño del localizador;
La fig. 7 es un diagrama de flujo de la parte de determinación del punto central de un método de situación del punto central del diseño del localizador en el presente invento;
La fig. 8 es un diagrama de flujo de un proceso de búsqueda del diseño del localizador en el proceso de descodificación del presente invento;
La fig. 9 es un diagrama de flujo de un método de búsqueda del punto central del diseño del localizador candidato de acuerdo con el presente invento;
La fig. 10 es un diagrama de flujo de un método de cálculo del punto central del diseño del localizador para determinar el punto central en el presente invento;
La fig. 11 es un diagrama de flujo de un proceso de corrección de imagen en un proceso de descodificación de acuerdo con el presente invento;
La fig. 12 es un diagrama de flujo de un proceso de búsqueda del módulo de orientación en el proceso de descodificación del presente invento;
La fig. 13 es un diagrama de flujo de un proceso de búsqueda de candidato del módulo de orientación en el proceso de búsqueda del módulo de orientación mostrado en la fig. 12;
La fig. 14 es un diagrama de flujo de un proceso de búsqueda de candidato del módulo de orientación interior en el proceso de búsqueda de candidato del módulo de orientación mostrado en la fig. 13;
La fig. 15 es un diagrama de flujo de un proceso de búsqueda de candidato del módulo de orientación en el proceso de búsqueda de candidato del módulo de orientación mostrado en la fig. 13;
La fig. 16 es un diagrama de flujo de un proceso de búsqueda de candidato del módulo de orientación central en el proceso de búsqueda de candidato del módulo de orientación mostrado en la fig. 13;
La fig. 17 es un diagrama de flujo de un proceso de determinación de candidato del módulo de orientación en el proceso de búsqueda de candidato del módulo de orientación mostrado en la fig. 13;
La fig. 18 es un diagrama de flujo de un proceso de determinación del módulo de orientación en el proceso de búsqueda del módulo de orientación mostrado en la fig. 12;
La fig. 19 es un diagrama de flujo del proceso de búsqueda del módulo de datos en el proceso de descodificación mostrado en la fig. 3;
La fig. 20 es un diagrama de flujo del proceso de cálculo de la posición del módulo de eje de orientación en el proceso de búsqueda del módulo de datos mostrado en la fig. 19;
La fig. 21 es un diagrama de flujo del proceso de corrección del ángulo del eje de orientación en el proceso de cálculo de la posición del módulo del eje de orientación mostrado en la fig. 20;
La fig. 22 es un diagrama de flujo del proceso de corrección de anchura del módulo real del eje de orientación en el proceso de cálculo de posición del módulo del eje de orientación mostrado en la fig. 20;
La fig. 23 es un diagrama de flujo del proceso de corrección de anchura del módulo candidato del eje de orientación en el proceso de cálculo de la posición del módulo del eje de orientación mostrado en la fig. 20;
La fig. 24 es un diagrama de flujo de un proceso de cálculo del punto central del módulo de acuerdo con el presente invento;
La fig. 25 es un diagrama de flujo del proceso de conversión de caracteres de datos en el proceso de descodificación del presente invento;
La fig. 26 (a) muestra el diseño de color a lo largo de los segmentos de línea que pasan a través del centro del diseño del localizador, y (b) muestra una plantilla del diseño del localizador;
La fig. 27 (a) muestra la dirección de exploración del diseño del localizador y la línea de exploración, y (b) es un diagrama en forma de onda del diseño de detección;
La fig. 28 muestra la secuencia en la que las líneas de exploración están ajustadas hacia arriba y hacia abajo después de que la línea central sea determinada;
La fig. 29 ilustra el cálculo del punto central del diseño del localizador;
La fig. 30 muestra una línea de exploración cuando el diseño del localizador es explorado verticalmente, y la forma de onda del diseño de detección resultante;
La fig. 31 ilustra el cálculo del punto central del diseño del localizador;
La fig. 32 muestra un diseño del localizador elíptico usado para describir una realización preferida del presente invento;
La fig. 33 muestra otra realización preferida del presente invento;
La fig. 34 muestra un diseño del localizador elíptico usado para describir otra realización preferida del presente invento;
La fig. 35 muestra la relación entre una imagen capturada explorada en un ángulo, y el símbolo MaxiCódigo real;
La fig. 36 muestra la relación entre un círculo y una elipse;
La fig. 37 (a) muestra el módulo de orientación en un símbolo MaxiCódigo real, y (b) muestra el módulo de orientación en una imagen explorada;
La fig. 38 (a) muestra la anchura del módulo, y (b) muestra la relación entre la anchura del módulo y el punto central del módulo de orientación interior;
La fig. 39 muestra un diseño de plantilla de color;
La fig. 40 muestra la situación de un módulo de orientación candidato en un ángulo de búsqueda \theta;
La fig. 41 (a) muestra los datos candidatos correspondientes a un mismo módulo de orientación antes de la conversión de datos, y (b) muestra los datos candidatos correspondientes al mismo módulo de orientación después de la conversión de datos;
La fig. 42 muestra un método para determinar candidatos de módulo de orientación a una tasa n;
La fig. 43 muestra la determinación de la posición del punto central del módulo de orientación;
La fig. 44 (a) muestra un proceso de conversión de datos, y (b) muestra los números de secuencia de los módulos de orientación;
La fig. 45 (a) muestra un módulo real y un módulo candidato en un eje, y (b) muestra la situación del módulo de datos en el eje;
La fig. 46 (a) muestra un módulo real y un módulo candidato entre ejes, y (b) muestra la situación del módulo de datos entre ejes;
La fig. 47 muestra la corrección de ángulo del eje de orientación;
La fig. 48 (a) muestra el área L de un grupo de módulos en un eje de orientación, y (b) muestra el punto central de los módulos que constituyen el grupo de módulos;
La fig. 49 muestra la relación entre el eje de orientación i y el eje de orientación adyacente i';
La fig. 50 muestra un proceso para calcular el punto candidato P1 de un segundo punto central corregido del módulo;
La fig. 51 muestra un proceso para calcular el punto candidato P2 de un segundo punto central corregido del módulo;
La fig. 52 muestra un proceso de cálculo del punto central P del módulo;
La fig. 53 muestra un proceso de cálculo del punto central del módulo;
La fig. 54 muestra una palabra código;
La fig. 55 (a) muestra la relación entre una tabla matriz de bits y la posición del módulo de datos en un símbolo MaxiCódigo, y (b) muestra los datos almacenados por la tabla de matriz de bits;
La fig. 56 muestra una tabla de matriz de palabras código;
La fig. 57 muestra la relación entre los datos de bit almacenados en la tabla de matriz de bits y los elementos de datos en la tabla de matriz de palabras código;
La fig. 58 muestra la tabla de ajuste del carácter por defecto;
La fig. 59 (a) muestra un símbolo MaxiCódigo, y (b) muestra el diseño del localizador del símbolo MaxiCódigo y los módulos de orientación;
La fig. 60 muestra los grupos de módulos en un símbolo MaxiCódigo;
La fig. 61 muestra el diseño del localizador y los módulos de orientación en un símbolo MaxiCódigo real;
La fig. 62 (a) muestra la relación entre el símbolo MaxiCódigo y una imagen explorada de un símbolo MaxiCódigo capturado desde el frente, y (b) muestra la relación entre un símbolo MaxiCódigo y una imagen explorada de un símbolo MaxiCódigo capturado desde un ángulo; y
La fig. 63 (a) muestra algunos tipos de distorsión de imagen, y (b) muestra un tratamiento de descodificación que usa datos de imagen corregidos por normalización;
Descripción de las realizaciones preferidas
La fig. 1 es un diagrama de bloques que muestra los elementos principales de un aparato para leer un símbolo de código de barras bidimensional (simplemente denominado un "símbolo de código de barras" en lo que sigue) de acuerdo con el presente invento. Estos elementos son descritos a continuación.
Como se ha mostrado en la fig. 1, el lector 100 del código de barras tiene una fuente de luz 101, un fotodetector 103, con una abertura 102, un receptor y convertidos A/D 104, una CPU 105, una VRAM 106 y una ROM 107.
La fuente de luz 101 ilumina el símbolo de código de barras que ha de ser leído, un símbolo MaxiCódigo 110 en este ejemplo, y es típicamente un diodo emisor de luz o láser semiconductor. El fotodetector 103 recibe luz reflejada desde el símbolo de MaxiCódigo 110, y convierte la luz recibida en una señal eléctrica. El fotodetector 103 es típicamente un CCD lineal o bidimensional (dispositivo de carga acoplada).
El receptor y el convertidor A/D 104 reciben la señal eléctrica desde el fotodetector 103, y la convierten a una señal que puede ser procesada por la CPU 105. La CPU 105 aplica un proceso de descodificación a la señal de imagen.
El fotodetector 103 genera una señal analógica que representa la luz modulada reflejada desde los elementos del símbolo MaxiCódigo 110. Más específicamente, los elementos de imagen de la matriz CCD del fotodetector 103 emiten típicamente una señal analógica que define la intensidad o cantidad de luz reflejada desde un elemento de imagen particular, de manera similar a una escala de gris o señal de datos de vídeo.
La parte receptora del receptor y convertidor A/D 104 recibe la señal analógica indicativa de la luz modulada, y la sección de convertidor A/D convierte entonces la señal analógica en una señal digital que tiene el número de niveles de gris usado por la CPU y envía la señal digital a la CPU 105. Esta realización ejemplar usa 16 niveles de gris. El receptor y convertidor A/D 104 almacena entonces las señales digitales resultantes en la VRAM 106, acumulando imágenes del símbolo de MaxiCódigo 110 representado por la señal digital. Después de tratar las imágenes acumuladas, la CPU 105 emite el resultado a un dispositivo periférico u ordenador anfitrión (no mostrado en la figura) por medio de un enlace.
Será también obvio que el tratamiento de imagen ejecutado por esta CPU 105 puede ser realizado por el ordenador anfitrión.
Obsérvese que el receptor y convertidor A/D 104 y la CPU 105 están ambos conectados a la VRAM 106. La ROM 107 almacena el programa de control ejecutado por la CPU 105, y los valores específicos descritos además después.
Como se ha descrito antes, el círculo central blanco, dos anillos blancos, y tres anillos negros en el centro del símbolo de MaxiCódigo 110 son el diseño del localizador de MaxiCódigo 111, conocido comúnmente como la diana.
Un aparato para leer un código de barras bidimensional ("lector de código de barras" a continuación) de acuerdo con una realización del presente invento comprende una unidad de búsqueda de módulo de datos para calcular la información de posición y la información de forma para todos los módulos que constituyen el símbolo de código de barras. Consigue esto calculando los ejes de orientación que pasan a través de los módulos de orientación y el punto central del diseño del localizador basado en la posición del diseño del localizador, la posición de los módulos de orientación, y la información de forma acerca de los módulos de orientación en la imagen explorada del símbolo de código de barras.
El lector de código de barras de una realización del presente invento comprende además una unidad de búsqueda del diseño del localizador para encontrar la línea de exploración a lo largo de la cual el diseño detectado en la imagen explorada del símbolo de código de barras en un dirección de exploración específica coincide con un diseño de referencia específico, detectar el diseño del localizador en la imagen explorada del símbolo de código de barras basado en las distintas líneas de exploración encontradas, y obtener la información de posición y de forma acerca del diseño del localizador encontrado.
El lector de código de barras de una realización del presente invento comprende además una unidad de corrección de imagen para calcular una ecuación que representa la relación entre el símbolo del código de barras y la imagen explorada del símbolo del código de barras, y a continuación corregir la imagen explorada del símbolo del código de barras basado en la ecuación resultante.
El lector del código de barras de una realización del presente invento comprende además una unidad de búsqueda del módulo de orientación para encontrar en la imagen explorada del símbolo de código de barras varios grupos de datos de elemento de imagen cuyo diseño de color coincide con un diseño de plantilla de color específico. Los diseños de color comprenden elementos de imagen blanco o negro del grupo de datos de elemento de imagen respectivo, que están a una distancia específica desde un punto específico en la imagen explorada y están dispuestos en un intervalo angular específico. Basada en los varios grupos de datos de elemento de imagen encontrados, una pluralidad de módulos de orientación que constituyen un grupo de módulos de orientación son detectados en la imagen explorada del símbolo del código de barras, y se obtienen la posición y la forma de estos distintos módulos de orientación.
El lector del código de barras de una realización del presente invento comprende además una unidad de conversión de carácter de datos para convertir datos de bit de módulo de datos a palabras código correlacionando la posición de los módulos de datos que constituyen el grupo de módulo de datos en la imagen explorada del símbolo de código de barras bidimensional a palabras de código específicas y valores de bit específicos en las palabras de código específicas basados en una tabla de conversión de palabra de código específica, y a continuación convertir las palabras de código resultantes a caracteres de datos específicos.
El funcionamiento de un lector de código de barras así comprendido de acuerdo con una realización preferida del presente invento es descrito a continuación con referencia a las figuras adjuntas.
La fig. 2 es un diagrama de bloques funcional de un aparato que lee códigos de barras bidimensionales de acuerdo con el presente invento. Las funciones de las partes constitutivas son descritas a continuación.
Como se ha mostrado en la fig. 2, este lector de código de barras ejemplar comprende un controlador 201, una unidad 202 de almacenamiento de datos de elemento de imagen, la unidad 203 de búsqueda del diseño del localizador, la unidad 204 de corrección de imagen, la unidad 205 de búsqueda del módulo de orientación, la unidad 206 de búsqueda del módulo de datos, y el convertidor 207 de carácter de datos.
La unidad 202 de almacenamiento de datos de elemento de imagen almacena datos de imagen procedentes de la imagen explorada capturada por el fotodetector 103 (no mostrado en la figura) a un registro 210 de datos de elemento de imagen en la VRAM 106 como datos de elemento de imagen correlacionados con una posición específica de elemento de imagen.
La unidad 203 de búsqueda del diseño del localizador busca el diseño del localizador del símbolo de MaxiCódigo basado en los datos de elemento de imagen almacenados en el registro 210 de datos de elemento de imagen de la VRAM 106 y un diseño de referencia específico almacenado para descodificar la memoria de datos 220, y a continuación calcula la información de forma del diseño del localizador. La información de forma del diseño del localizador, incluye el punto central, el tamaño, y la forma del diseño del localizador. La unidad 203 de búsqueda del diseño del localizador almacena entonces la información de forma del diseño del localizador en el registro 211 de información del diseño del localizador en la VRAM 106.
Usando la información de forma del diseño del localizador calculada a partir de los datos de elemento de imagen del diseño del localizador situados por la unidad 203 de búsqueda del diseño del localizador, y la información de forma para un símbolo MaxiCódigo real, la unidad 204 de corrección de imagen calcula una ecuación de corrección del ángulo de carga, para los datos de imagen capturados en un ángulo por el fotodetector 103. Usando la ecuación de corrección de ángulo de carga, la unidad 204 de corrección de imagen genera a continuación una tabla de corrección de ángulo de carga, y corrige luego los datos de elemento de imagen de la imagen de símbolo MaxiCódigo capturada basado en esta tabla de corrección de ángulo de carga. La unidad 204 de corrección de imagen almacena también la ecuación o tabla de corrección de ángulo de carga calculada, y los datos de imagen de símbolo MaxiCódigo corregidos, es decir, los datos de elemento de imagen corregidos, en el registro 212 de datos de corrección de imagen en la VRAM 106.
La unidad 205 de búsqueda del módulo de orientación busca módulos de orientación basados en los datos de imagen de símbolo MaxiCódigo corregidos por la unidad 204 de corrección de imagen, los datos de forma para un símbolo MaxiCódigo real, y el diseño de plantilla de color específico previamente almacenado para descodificar la memoria de datos 220, y calcula la información de posición y de forma para los 18 módulos de orientación (tres en cada una de las seis direcciones). La unidad 205 de búsqueda del módulo de orientación determina también la orientación del símbolo Maxicódigo a partir de la información de posición del módulo de orientación calculada. La información de posición del módulo de orientación calculada y la información de forma son a continuación almacenadas en el registro 213 de datos del módulo de orientación en la VRAM 106.
Basado en la información de forma del diseño del localizador calculada por la unidad 203 de búsqueda del diseño del localizador, y la información de posición y forma del módulo de orientación calculada por la unidad 205 de búsqueda del módulo de orientación, la unidad 206 de búsqueda del módulo de datos encuentra todos los módulos de datos en el símbolo Maxicódigo corrigiendo la distorsión en los datos de imagen capturados por el fotodetector 103, y calcula la información de posición y forma del módulo de datos. La información de posición y forma del módulo de datos calculada es almacenada a continuación en el registro 214 de información del módulo de datos en la VRAM 106.
El convertidor 207 de carácter de datos convierte a continuación el color de cada módulo de datos calculado a un diseño de bit. Esta operación convierte un módulo de datos blanco (claro) en un valor de bit de 0, y un módulo de datos negro (oscuro) en un valor de 1, por ejemplo, y se denomina a continuación como "conversión de bit". Los datos de bit convertidos son a continuación almacenados en una tabla de matriz de bits y, basado en una tabla de matriz de palabra código previamente almacenada para descodificar la memoria de datos 220, convertidos en palabras código de datos que representan cada una un carácter de datos y palabras código de corrección que representan datos de corrección de error. Esta operación es denominada a continuación como "conversión de palabra código". Las palabras código de datos son recuperadas a continuación a las palabras de código de datos correctas aplicando un proceso de corrección de error que usa las palabras código de corrección de error.
Las palabras de código de datos resultantes del proceso de corrección de error son a continuación convertidas en caracteres de datos basados en una tabla de conjunto de caracteres por defecto previamente almacenados para descodificar la memoria de datos 220. Los caracteres de datos son almacenados en la memoria de resultados descodificados 215 en la VRAM 106. Obsérvese que los datos de bit convertidos, los datos de código de palabra convertidos, y los datos de error corregidos resultantes de las operaciones intermedias antes indicadas en la operación de conversión de caracteres de datos pueden también ser almacenados en la memoria de resultados descodificados 215 en la
\hbox{VRAM
106.}
El controlador 201 controla la operación e interacción de la unidad 202 de almacenamiento de datos de elemento de imagen, la unidad 203 de búsqueda del diseño del localizador, la unidad 204 de corrección de imagen, la unidad 205 de búsqueda del módulo de orientación, la unidad 206 de búsqueda de módulo de datos, y el convertidor 207 de caracteres de datos.
Un método para leer un código de barras bidimensional de acuerdo con una realización del presente invento comprende una operación de búsqueda de módulo de datos para calcular la información de posición y la información de forma para todos los módulos que constituyen el símbolo de código de barras. Consigue esto calculando los ejes de orientación que pasan a través de los módulos de orientación y el punto central del diseño del localizador basado en la posición del diseño del localizador, la posición de los módulos de orientación, y la información de forma sobre los módulos de orientación en la imagen explorada del símbolo de código de dos barras.
El método de acuerdo con el presente invento comprende además preferiblemente una operación de búsqueda del diseño del localizador para encontrar líneas de exploración a lo largo de las cuales el diseño detectado en la imagen explorada del símbolo de código de barras en una dirección de exploración específica coincide con un diseño de referencia específico, detectar el diseño del localizador en la imagen explorada del símbolo de código de barras basado en las distintas líneas de exploración encontradas, y obtener la información de posición y forma del diseño del localizador.
El método del presente invento comprende además preferiblemente una operación de corrección de imagen para calcular una ecuación que representa la relación entre el símbolo de código de barras y la imagen explorada del símbolo de código de barras, y corregir a continuación la imagen explorada del símbolo de código de barras basado en la ecuación resultante.
El método del presente invento comprende además preferiblemente una operación de búsqueda del módulo de orientación para encontrar en la imagen explorada de los varios grupos de datos de elemento de imagen del símbolo de código de barras cuyo diseño de color coincide con un diseño de plantilla de color específico. Los diseños de color comprenden elementos de imagen blancos o negros del grupo de datos de elementos de imagen respectivo, que están a una distancia específica desde un punto específico en la imagen explorada y están dispuestas en un intervalo angular específico. Basado en los varios grupos de datos de elementos de imagen encontrados, una pluralidad de módulos de orientación que constituyen los grupos del módulo de orientación son detectados en la imagen explorada del símbolo de código de barras, y se obtienen la posición y forma de estos varios grupos de módulos de orientación.
El método del presente invento comprende además preferiblemente una operación de conversión de caracteres de datos para convertir datos de bit de módulo de datos a palabras de código correlacionando la posición de los módulos de datos que constituyen el grupo de módulos de datos en la imagen explorada del símbolo de código de barras en palabras de código específicas y valores de bit específicos en las palabras de código específicas basadas en una tabla de conversión de palabras de código específica, y convirtiendo a continuación las palabras de código resultantes en caracteres de datos específicos.
El funcionamiento de un método para leer un código de barras bidimensional comprendido así, de acuerdo con una realización preferida del presente invento es descrito a continuación con referencia a las figuras adjuntas.
La fig. 3 es un diagrama de flujo del proceso de descodificación en el método para leer un código de barras bidimensional del presente invento.
Como se ha mostrado en la fig. 3, la primera operación es para almacenar datos de imagen procedentes de la imagen explorada capturada por el fotodetector 103 (no mostrado en la figura) en un registro 210 de datos de elementos de imagen en la VRAM 106 como datos de elemento de imagen correlacionados a una posición de elemento de imagen específica (S301).
Los datos de elemento de imagen consisten de coordenadas indicativas de la posición del elemento de imagen, y un valor de escala de grises indicativa del nivel de gris del elemento de imagen. Se ha supuesto aquí que el valor de escala de grises disminuye en la proximidad de negro. Los valores de escala de grises de los datos de elemento de imagen son convertidos a continuación a valores del diseño binario de 1 (= negro) y 0 (= blanco) con referencia a un valor de umbral de escala de grises específico previamente almacenado para descodificar la memoria de datos 220. En otras palabras, si el valor de escala de grises de un elemento de imagen es menor que este valor de umbral de escala de grises, el valor del diseño es 1 (que indica negro), pero si el valor de escala de grises del elemento de imagen es mayor que o igual al valor de umbral de escala de grises, el valor del diseño es 0 (que indica blanco). Debe observarse que estos valores de elemento de imagen de 1 (negro) y 0 (blanco) pueden ser almacenados en el registro 210 de datos de elemento de imagen. El valor de umbral de escala de grises es también variable.
La siguiente operación (S302) es buscar el diseño del localizador, que es necesario para extraer el símbolo de Maxicódigo de la imagen explorada, basado en los datos de elemento de imagen almacenados en el registro 210 de datos de elemento de imagen de la VRAM 106.
La información de forma del diseño del localizador, es decir, el punto central, el tamaño, y la forma del diseño del localizador, son calculados por la búsqueda del diseño del localizador. Como se ha mostrado en la fig. 59 (b), el diseño del localizador de un símbolo Maxicódigo real es un diseño de diana de seis círculos concéntricos que alternan blanco y negro, siendo el círculo interior siempre blanco y el círculo exterior siempre es negro de manera que haya tres círculos blancos y tres negros. Las coordenadas para el punto central del diseño del localizador, y las coordenadas de posición para los límites entre los círculos blanco y negro del diseño del localizador, son por ello calculadas para obtener la información de forma del diseño del localizador.
A continuación, la información de forma para el diseño del localizador localizado es comparada con la información de forma para un diseño del localizador en un símbolo de Maxicódigo estándar para calcular una ecuación de corrección de ángulo de carga basada en el ángulo en el que la imagen fue capturada cuando el fotodetector 103 explora la imagen del símbolo en un ángulo. Una tabla de corrección de ángulo de carga es a continuación generada aplicando la ecuación de corrección de ángulo calculada para alcanzar una precisión de corrección especificada. La tabla de corrección de ángulo de carga resultante es a continuación usada para corregir el ángulo de carga de datos de elemento de imagen (S303).
La fig. 35 muestra la relación entre un símbolo de Maxicódigo normal y la imagen explorada de un símbolo de Maxicódigo capturado desde un ángulo. La fig. 35 es una vista desde la dirección positiva del eje y en un espacio tridimensional derecho en el que el eje y es ortogonal al eje x y al eje z.
Como se ha mostrado en la fig. 35, la forma S donde S = S(x,y,0) en el plano x-y tiene puntos A y B. Supóngase a continuación que la forma S es un círculo en el diseño del localizador de símbolo de Maxicódigo; el segmento de línea AB es el diámetro del diseño del localizador; el punto P fue el punto focal cuando la imagen fue explorada por el fotodetector 103; y el punto C es el centro de la imagen explorada. En este caso la imagen explorada estará sobre un plano ortogonal a la línea PC, y el segmento de línea explorado AB es el segmento de línea A'B' en la imagen explorada. Los triángulos A'B'P y A''B''P son similares, y la línea en la que el segmento de línea AB fue capturado puede ser denominada como segmento de línea A''B''. El punto 0 es el punto central del diseño del localizador.
La relación entre un símbolo de Maxicódigo normal y una imagen explorada capturada desde un ángulo puede ser determinada calculando las ecuaciones siguientes f, g, o h.
A''=f(A')=f(g(A))=h(A)
B''=f(B')=f(g(B)=h(B)
C=f(C')=f(g(C))=h(C)
La relación entre un símbolo de Maxicódigo y una imagen explorada puede también ser determinada calculando las ecuaciones siguientes f_1 y g_1, o h_1.
A=g_1(A')=g_1(f_1(A''))=h_1(A'')
B=g_1(B')=g_1(f_1(B''))=h_1(B'')
C=g_1(C')=g_1(f_1(C))=h_1(C)
Por ello, las ecuaciones f y g, o h, y las ecuaciones f_1 y g_1, o h_1, definen la relación entre la imagen explorada y el símbolo de Maxicódigo real cuando el símbolo de Maxicódigo es capturado desde un ángulo, y pueden ser así usadas como ecuaciones de corrección de ángulo de carga. Una tabla de corrección de ángulo de carga es a continuación generada usando las ecuaciones de corrección de ángulo de carga calculado para conseguir la precisión de corrección especificada.
Los datos de elemento de imagen necesarios en la imagen explorada del símbolo de Maxicódigo es a continuación la imagen corregida basada en la tabla de corrección del ángulo de carga resultante.
Además, debido a que todos los módulos de datos pueden ser encontrados buscando los módulos de orientación del símbolo de Maxicódigo, no es necesario corregir todos los datos de elemento de imagen que constituyen la imagen explorada del símbolo de Maxicódigo. Más específicamente, sólo es necesario corregir los datos de elemento de imagen en las áreas en que los módulos de orientación están presentes. Por ello, las ecuaciones de corrección de ángulo de carga calculado sólo necesitan ser ciertas en el área en que los módulos de orientación de símbolo de Maxicódigo están presentes.
A continuación, son detectados todos los datos de elemento de imagen de imagen corregida que coinciden una plantilla de color específico previamente almacenada para la descodificación de la memoria de datos 220, y la información de posición y de forma para los módulos de orientación son calculados basados en los datos de elemento de imagen detectados (S304).
Como se ha mostrado en la fig. 60 y se ha observado antes, los módulos de orientación indican la orientación de un símbolo de Maxicódigo y están situados en lugares específicos en el símbolo de Maxicódigo. Es por ello posible detectar la orientación del símbolo de Maxicódigo situando los módulos de orientación y a continuación calculando la posición y forma de los módulos de orientación. Además, una vez que la orientación del símbolo de Maxicódigo es conocida, la posición de cada módulo de datos en el símbolo de Maxicódigo es conocida, y el color de cada módulo de datos es también conocido.
Todos los módulos de datos en el símbolo de Maxicódigo son a continuación agrupados como un módulo de datos sobre un eje de orientación o un módulo de datos en un área entre los ejes de orientación, y la posición y forma de cada módulo de datos es a continuación calculada (S305). Esto es conseguido corrigiendo la distorsión de los datos de imagen capturados por el fotodetector 103 basados en los ejes de orientación que pasan a través del punto central del diseño del localizador y los módulos de orientación calculados, y la información de posición y de forma calculada para los módulos de orientación.
La siguiente operación (S306) identifica el color de cada módulo de datos, convierte los bits de todo los módulos de datos, almacena los datos de bit convertidos en la tabla de matriz de bits, convierte los datos a palabras de código basadas en una tabla de conversión de palabra de código bidimensional específica previamente almacenada para descodificar la memoria de datos 220, y aplica un proceso de corrección de error. Las palabras código son a continuación convertidas en caracteres de datos basados en conjuntos de caracteres por defecto especificados previamente almacenados para descodificar la memoria de datos 220, y el proceso de descodificación termina.
Debe observarse que el método del presente invento no tiene necesariamente todas las operaciones S302 a S306, y puede tener sólo alguna de las operaciones S302 a S306.
Las operaciones de búsqueda del diseño del localizador descritos antes son explicados en más detalle a continuación con referencia a las fig. 4, fig. 26, fig. 27, fig. 28 y fig. 29.
La fig. 4 es un diagrama de flujo de un proceso de búsqueda del diseño del localizador en el proceso de descodificación del símbolo de Maxicódigo de acuerdo con el presente invento mostrado en la fig. 3.
La imagen de símbolo de Maxicódigo es explorada en una primera dirección de exploración para encontrar una línea de exploración que pasa cerca del punto central del diseño del localizador comparando el diseño (la "ecuación de relación del diseño de color" a continuación) detectado a lo largo de una línea de exploración particular con un diseño de referencia (la "plantilla del diseño del localizador" a continuación). El punto central es a continuación calculado desde la línea de exploración encontrada. Esta operación es repetida varias veces para encontrar varias de tales líneas de exploración, y el punto central es calculado para cada una de las líneas de exploración así identificadas (S401). Obsérvese que a continuación la línea de exploración próxima al punto central del diseño del localizador explorada en una primera dirección de exploración es denominada como la "línea central candidata en la primera dirección de exploración", el punto central es denominado como el "punto central candidato en la primera dirección de exploración", y el conjunto de varios puntos centrales como el "grupo de puntos centrales candidatos en la primera dirección de exploración". La pluralidad de líneas centrales candidatas en la primera dirección de exploración son encontradas por ello, y un grupo de puntos centrales candidatos en la primera dirección de exploración que comprende varios puntos centrales candidatos en la primera dirección de exploración son calculados. La primera dirección de exploración se ha supuesto además a continuación que es la dirección horizontal (obsérvese que los términos "horizontal" y "vertical" como se han usado en este texto no pretenden imponer ninguna restricción en las otras direcciones respectivas que no sea que las direcciones horizontal y vertical son perpendiculares entre sí).
La fig. 26 es usada para describir una plantilla del diseño del localizador. La fig. 26 (a) muestra un diseño de color en una línea que pasa a través del punto central del diseño del localizador, y la fig. 26 (b) muestra la plantilla del diseño del localizador.
Como se ha mostrado en la fig. 26 (a), el resultado de la línea de búsqueda 2601 que pasa a través del punto central del diseño del localizador en la dirección indicada por la flecha es un diagrama de onda de impulso en el que un impulso elevado indica un área blanca y un impulso bajo indica un área negra. Como se ha mostrado en la fig. 26 (b), si una distancia (relativa) desde el borde exterior del primer círculo negro (indicado por A) al borde exterior del siguiente círculo negro (en C) es 1, entonces la distancia desde el borde exterior del primer círculo negro (B) al mismo borde del siguiente círculo blanco (D) es también 1. Además, la distancia desde el borde exterior (E) del círculo negro que rodea directamente a la diana central blanca al borde interior (G) del mismo círculo negro en el otro lado del centro blanco, y la distancia desde el primer borde (F) del centro blanco al borde interior del siguiente anillo blanco (H), son ambas 1.26.
Por ello, si el diseño de la diana es explorada de izquierda a derecha (A a L) a través del centro como se ha descrito antes, y la relación de distancias de negro-negro (A-C), blanco-blanco (B-D), negro-negro (C-E),...blanco-blanco (J-L)) es acumulada, la relación del diseño de color
AC:BD:CE:DF:EG:FH:GI:HJ:IK:JL = 1:1:1:1:1,26:1,26:1:1:1:1
será cierto cuando AC, por ejemplo, indica la distancia del punto A al punto C.
Esta ecuación que define la relación del diseño de color de un diseño del localizador normal es almacenada en la memoria 220 de datos de descodificación de la ROM 107 como una plantilla del diseño del localizador.
Además, si el centro es explorado de derecha a izquierda (L a A) y las distancias borde a borde son expresadas de nuevo como una relación en el orden negro-negro (L-J), blanco-blanco (K-I), negro-negro (J-H),...blanco-blanco (C-A), la relación será la misma, es decir,
LJ:KI:JH:IG:HF:GE:FD:EC:BD:CD = 1:1:1:1:1,26:1,26:1:1:1:1
Como se ha mostrado en la fig. 27 (a), la primera operación es por ello explorar horizontalmente (en una primera dirección de exploración) la mitad de la imagen explorada completa 2701 del símbolo de MaxiCódigo para generar una onda de impulso (véase fig. 27 (b)) basado en el diseño de color de la línea de exploración 2702 y calcular la ecuación de relación del diseño de color (relación del diseño de color) a lo largo de esa línea de exploración. La relación detectada es a continuación comparada por coincidencia del diseño con la plantilla del diseño del localizador de MaxiCódigo (fig. 26 (b)) almacenada en la memoria 220 de datos de descodificación en la ROM 107. Si la relación detectada coincide con la plantilla, esa línea de exploración es definida como una línea central candidata en la primera dirección de exploración. Obsérvese que esta línea de exploración es aquí definida como una línea central candidata debido a que puede suceder que haya otros datos de negro y blanco que estén dispuestos en los mismos intervalos que la plantilla.
Si como se ha mostrado en la fig. 27 (b) el número de puntos de comparación en la relación del diseño de color y el número de puntos de comparación en la plantilla del diseño del localizador no son los mismos, está claro que la línea no pasa a través del punto central 2703 de la diana del diseño del localizador. En este caso, como se ha mostrado en la fig. 28, la imagen es explorada otra vez, intercalando la línea central 1 de la imagen completa 2801 por encima y por debajo de las líneas de exploración 2, 3, y así sucesivamente en exploraciones sucesivas. El diseño que coincide usando la relación del diseño de color detectado y la plantilla del diseño del localizador es repetido después de cada exploración para encontrar la línea de exploración que coincide un diseño específico como se ha descrito antes, y la línea de exploración determinada para coincidir la plantilla más próxima es definida como la línea central en la dirección horizontal.
El punto medio entre la intersección de esta línea central y el interior del círculo negro más exterior (es decir, el punto correspondiente a B en la fig. 26 (b)), y la intersección de esta línea central y el interior del círculo negro más exterior en el lado opuesto (es decir, el punto correspondiente a K en la fig. 26 (b)), es decir, dos puntos en el borde exterior del círculo blanco más exterior del diseño del localizador, es a continuación encontrado y definido como un punto central candidato (punto central candidato en la primera dirección de exploración).
Debe observarse que el punto medio entre dos puntos de borde exterior del círculo blanco más exterior es usado para obtener las coordenadas centrales en vez de usar el punto medio entre dos puntos de borde exterior del círculo negro más exterior del diseño del localizador ya que los datos del elemento de imagen negro pueden tocar el borde exterior del círculo negro más exterior del diseño del localizador, y la posición de este círculo negro más exterior podría por ello ser mal interpretada.
Hay también casos en los que una coincidencia precisa entre una línea de exploración y la plantilla no puede ser determinada, y hay varias líneas centrales candidatas en la dirección horizontal. En este caso las coordenadas x de las coordenadas centrales candidatas son redondeadas, y solo aquellas coordenadas que redondean el mismo valor entero son almacenadas en la RAM como las coordenadas x candidatas de los puntos centrales candidatos plurales (grupo de puntos centrales candidatos en la primera dirección de exploración). Puede además suponerse que la posición que tiene la distribución más elevada de las coordenadas centrales candidatas en la dirección perpendicular a la línea de exploración horizontal es más probable donde las coordenadas centrales candidatas en esta dirección perpendicular están situadas.
La exploración es repetida a continuación en la dirección horizontal por encima por debajo de la línea central candidata con las líneas de exploración aumentando gradualmente en distancia desde la línea central, y los datos explorados son almacenados en el registro 211 de información del diseño del localizador de la VRAM 106.
La exploración es a continuación realizada en una segunda dirección de exploración diferente de la primera dirección de exploración, y la operación de coincidencia con el mismo diseño es realizada usando la relación del diseño de color detectada en las líneas de exploración en esta segunda dirección de exploración para encontrar las líneas de exploración próximas al punto central del diseño del localizador y calcular el punto central a partir de las líneas de exploración identificadas. Esta operación es repetida varias veces para encontrar varias líneas de exploración y calcular la pluralidad de puntos centrales desde las líneas de exploración (S402). Debe observarse aquí que unas líneas de exploración próximas al centro del diseño del localizador explorado en esta segunda dirección de exploración son denominadas a continuación como una línea central candidata en la segunda dirección de exploración, un punto central como un punto central candidato en la segunda dirección de exploración, y un conjunto de puntos centrales como un grupo de puntos centrales en la segunda dirección de exploración. Por ello, son encontradas varias líneas centrales candidatas en la segunda dirección de exploración y un grupo de puntos centrales candidatos en la segunda dirección de exploración que comprende varios puntos centrales candidatos plurales en la segunda dirección de exploración es calculado.
La exploración es realizada en una segunda dirección de exploración (dirección vertical) desplazada 90 grados con la dirección de exploración horizontal, y se realiza la misma operación de coincidencia del diseño en la dirección horizontal.
La primera línea de exploración en la dirección vertical es una línea perpendicular a la línea central candidata previamente obtenida en la primera dirección de exploración y que pasa a través del punto central calculado de esta línea central candidata horizontal. La velocidad con la que la coordenada central puede ser obtenida puede ser mejorada tomando la primera exploración en la dirección vertical a través de las coordenadas centrales candidatas obtenidas por el proceso de exploración horizontal anterior, en vez de comenzar explorando a través de la mitad de la imagen completa, ya que es mayor la probabilidad de que las coordenadas centrales verdaderas del diseño del localizador estén en este candidato de línea central horizontal.
Como durante la exploración horizontal, la línea de exploración vertical con una relación del diseño de color que coincide más estrechamente con la plantilla como se ha mostrado en la fig. 26 (b) es definida como el centro en la dirección vertical. Donde las coordenadas del punto central en las direcciones horizontal y vertical se cortan es el centro del diseño del localizador. Como durante la exploración horizontal, el punto medio entre puntos en el borde exterior del círculo blanco más exterior del diseño del localizador es usado para las coordenadas centrales en la dirección vertical. A continuación, se obtiene el lugar en la dirección horizontal que tiene la mayor población de coordenadas centrales candidatas (grupo de puntos centrales candidatos en la segunda dirección de exploración) obtenidas en la línea vertical de exploración.
La exploración en la dirección vertical es a continuación repetida con cada línea de exploración aumentando gradualmente la distancia alternativamente a derecha e izquierda de la línea central vertical, y los valores de datos resultantes son almacenados en el registro 211 de información del diseño del localizador de la VRAM 106 (véase fig. 28).
Será obvio que las operaciones de exploración horizontal y vertical pueden conseguirse siendo cualquiera de ellas la primera.
Finalmente, el punto central del diseño del localizador es calculado basado en los grupos de puntos centrales candidatos previamente calculados la primera y segunda direcciones de exploración (S403).
La fig. 29 ilustra el cálculo del punto central del diseño del localizador.
Como se ha mostrado en la fig. 29, la intersección de la línea perpendicular a la primera dirección de exploración calculada partir del grupo de puntos centrales candidatos en la primera dirección de exploración, y la línea perpendicular a la segunda dirección de exploración calculada a partir del grupo de puntos centrales candidatos en la segunda dirección de exploración es el punto central del diseño del localizador. Es decir, se obtiene el punto central del diseño del localizador desde la intersección de la línea vertical donde el punto central obtenido por exploración en la dirección horizontal está muy probablemente presente, y la línea vertical donde el punto central obtenido por exploración en la dirección vertical está muy probablemente presente.
Debe observarse también que después de la exploración y coincidencia del diseño en una primera dirección de exploración (dirección horizontal en esta realización), la dirección de exploración es hecha girar 90 grados para exploración y coincidencia del diseño en la segunda dirección de exploración (dirección vertical en esta realización). El invento no está limitado a la primera y segunda direcciones de exploración que son perpendiculares entre sí; el ángulo entre la primera y segunda direcciones de exploración puede ser cualquier ángulo siempre que las dos direcciones de exploración se corten. Sin embargo, la primera dirección y la segunda dirección son preferiblemente ortogonales entre sí si, después de explorar en la dirección horizontal, e toma una línea vertical a través del punto en el que es mayor la probabilidad de las coordenadas centrales existentes en la dirección vertical como se ha descrito antes. Además, cuando los valores de datos explorados son almacenados en la VRAM como datos bidimensionales en un sistema de coordenadas x-y, que tienen la primera y segunda direcciones mutuamente perpendiculares hacen más fácil el tratamiento y la lectura de datos.
La fig. 5 es un diagrama de flujo del proceso para encontrar el grupo de puntos centrales candidatos en la primera dirección de exploración en el proceso de búsqueda del diseño del localizador.
En primer lugar, se lleva a cabo una búsqueda en la dirección horizontal para el diseño del localizador, y la dirección de búsqueda es ajustada en ambos sentidos (direcciones) (S501). Obsérvese que "ambos sentidos" como se ha usado aquí significa por encima y por debajo de la línea de exploración corriente en la dirección horizontal. A continuación, se inicia la búsqueda con una línea en la mitad de la imagen capturada (altura de imagen capturada/2) (S502). Esto es debido a que el símbolo está en la mitad sustancialmente de una imagen que contiene el símbolo, y el diseño del localizador de un símbolo de MaxiCódigo o Código Azteca está en la mitad del símbolo.
Una línea de datos es a continuación capturada en la dirección horizontal (S503), y la relación del diseño de color (véase fig. 27 (b)) del diseño de negro y blanco es generada (S504). La relación del diseño de color y la plantilla del diseño del localizador antes descrita son a continuación comparados para detectar una coincidencia entre ellos (S505).
Si la relación del diseño de color y la plantilla no coinciden (S505 resulta No) y la exploración de la línea horizontal no ha sido completada (S507 resulta No), es sabido que la relación del diseño de color fue generada para datos de imagen distintos de los del diseño del localizador. La relación del diseño del color es por ello regenerada (por las operaciones S508 y S504), y comparada de nuevo con la plantilla del diseño del localizador (S505).
Si la relación del diseño de color y la plantilla no coinciden (S505 resulta Si), las coordenadas x-y son obtenidas y almacenadas para el punto medio entre los bordes interiores del círculo negro más exterior (el punto medio entre B y K en la fig. 26 (a)) como las coordenadas para el punto central del círculo central del diseño del localizador (S506).
Si la exploración de una línea de datos es completada (S507 resulta Si), el número de coordenadas de punto medio del candidato para esa línea es determinado. Si hay una coincidencia con la plantilla, el número de puntos de coordenadas es uno (S509 resulta No), y el procedimiento avanza a S510.
En la operación S510, la línea de búsqueda es desplazada una línea hacia arriba (correspondiente a una línea de sensor de CCD) (a la línea 2 en la fig. 28), y las operaciones S503 a S509 se repiten. Si como resultado del desplazamiento de la línea hacia arriba hay un par de coordenadas de punto medio (S509 resulta No) y el procedimiento avanza al paso S510, la línea de búsqueda es desplazada dos líneas hacia abajo (correspondiente a dos líneas de sensor de CCD) (a la línea 3 en la fig. 28) porque la dirección de búsqueda es ajustada a "ambos sentidos" en S501, y las operaciones S503 a S509 se repiten.
Si las coordenadas de punto medio no son encontradas como resultado del desplazamiento de dos líneas hacia abajo (S509 resulta Si), el procedimiento avanza hacia S511, que determina si el número total de puntos candidatos obtenidos desde las líneas de exploración 1 a 3 es uno o más. Si hay uno o más puntos candidatos (S511 resulta Si), el procedimiento avanza desde S512 a S513, y la dirección de búsqueda es ajustada a "por encima". Obsérvese que la dirección de búsqueda es ajustada a "por encima" aquí para impedir búsquedas innecesarias debido a que el diseño del localizador no puede ser encontrado por otra exploración por debajo. Debido a que no se ha encontrado un punto medio la primera vez cuando se buscaba la línea más abajo (línea 3 en la fig. 28), la búsqueda puede ser ajustada a una línea por encima ajustando un indicador o banderola que indica que no hay puntos medios por debajo, cambiando por ello la línea de exploración de la siguiente operación de exploración a la línea por encima de la línea 2 en la fig. 28, es decir, a la línea 4 en la fig. 28. En otras palabras, sólo son exploradas las líneas situadas por encima de la línea más elevada para las que la exploración ha sido completada.
En este caso, después de ajustar la dirección de búsqueda a "por encima" en las operaciones S513, S503 a S509 son repetidas de nuevo. Debido a que no se ha encontrado un punto medio en la línea 4 en la fig. 28, S509 resulta Si, S511 resulta Si, y S512 resulta No. La exploración en la dirección horizontal es completada por ello, y el procedimiento avanza a S514.
Si no se ha encontrado una coincidencia de plantilla cuando la exploración de una línea es finalizada (S505 resulta No, S507 resulta Si, y S509 resulta No), el procedimiento avanza a S510, y la línea de exploración es desplazada una línea por encima o por debajo, y el procedimiento vuelve de nuevo a S503.
Además, una banderola que indica que no hay punto medio por encima es ajustada la primera vez que no se ha encontrado un punto medio después de explorar una línea situada en la dirección "por encima" mientras que la exploración es ajustada para ambos sentidos. Como resultado, las operaciones de exploración subsiguientes prosiguen sólo sobre líneas por debajo de la línea más inferior para la que la exploración ha sido completada.
En las operaciones S514 y S515 las partes enteras de las coordenadas x de los puntos candidatos son extraídas, y los puntos candidatos son agrupados de tal manera que en cada grupo todas las coordenadas x tienen el mismo valor entero. El número de puntos candidatos en cada grupo es contado, y los puntos candidatos del grupo con el valor de cómputo más elevado (el grupo de más populoso) es seleccionado como el grupo del punto central candidato final en la primera dirección de exploración (usando las valores de la coordenada x respectiva al segundo lugar decimal) y la coordenada y asociada con cada punto candidato seleccionado (también al segundo lugar decimal) (S516).
La operación prosigue entonces para buscar en la segunda dirección de exploración. Esto se ha descrito a continuación con referencia a la fig. 6, un diagrama de flujo del proceso para encontrar el grupo del punto central candidato en la segunda dirección de exploración en el proceso de búsqueda del diseño del localizador.
Un proceso sustancialmente igual que para las búsquedas horizontales mostradas en la fig. 5 es a continuación realizado después de S516 en la fig. 5. Este proceso es idéntico al proceso de búsqueda horizontal excepto en que una línea en el proceso horizontal mostrado en la fig. 5 es una columna; "por encima" y "por debajo" a la dirección de búsqueda en la fig. 5 son izquierda y derecha, respectivamente, en la fig. 6; y la coordenada x en la fig. 5 es la coordenada y en la fig. 6. Los procesos son por otro lado los mismos, y una descripción adicional del mismo es así omitida aquí.
Por otro lado, mientras S502 en la fig. 5 se refiere a (altura de imagen/2), S602 en la fig. 6 difiere porque usa el valor de la coordenada x del candidato final obtenida en la búsqueda horizontal. El valor de la coordenada x del candidato final obtenido en la búsqueda horizontal (exploración) es usado aquí porque con este valor el valor de la coordenada x del punto central es ya sustancialmente conocido, y el tratamiento puede ser completado más rápidamente buscando en la dirección vertical desde aquí.
En las operaciones S614 a S616 en la fig. 6, el grupo más populoso de puntos candidatos de la misma coordenada entera y es seleccionado a partir de los puntos candidatos de una manera análoga a la explicada en el contexto de la fig. 5. Los valores de coordenada y (al segundo lugar decimal) del grupo seleccionado y los valores de la coordenada x correspondientes (al segundo lugar decimal) son almacenados como las coordenadas del grupo de puntos centrales candidatos finales en la segunda dirección de exploración.
La fig. 7 es un diagrama de flujo del proceso de cálculo del punto central del diseño del localizador en el proceso de búsqueda del diseño del localizador.
Avanzando a S701 en la fig. 7, es obtenida una coordenada y de las almacenadas en la búsqueda horizontal mostrada en la fig. 5 cuya parte entera coincide con el grupo más populoso obtenido en la búsqueda en dirección vertical mostrada en la fig. 6, y la coordenada x (al segundo lugar decimal) para esa coordenada y es usada como la coordenada x (al segundo lugar decimal) del punto central.
Además, en S704, es obtenida una coordenada x de las almacenadas en la búsqueda vertical mostrada en la fig. 6 cuya parte entera coincide con el grupo más populoso obtenido en la búsqueda en dirección horizontal mostrada en la fig. 5, y la coordenada y (al segundo lugar decimal) para esa coordenada x es usada como la coordenada y (al segundo lugar decimal) del punto central.
Si estos valores de coordenadas no pueden ser seleccionados en S702 y S705, se ha decidido que las coordenadas centrales no podrían ser encontradas.
Una realización alternativa de la operación de búsqueda del diseño del localizador está descrita a continuación.
Si el diseño negro y blanco obtenido por exploración del diseño del localizador en la dirección horizontal y el diseño de plantilla están en el orden negro-blanco-negro-blanco-negro-blanco-negro-blanco-negro-blanco-negro es determinado comparando simplemente la secuencia en la que negro y blanco son detectados (no es necesario comparar relaciones). Como resultado, si el diseño negro y blanco explorado coincide con la plantilla, esa línea de exploración puede suponerse que atraviesa sustancialmente la parte media del diseño del localizador (fig. 26 (a)). Las intersecciones (puntos B y K en la fig. 26 (a)) entre esa línea de exploración y el miembro que constituye la parte más exterior del diseño del localizador (el círculo más exterior de los tres círculos negros en el símbolo de MaxiCódigo) son a continuación obtenidas, y el punto medio entre ellas es usado como un punto central candidato.
Como se ha observado antes, el borde interior del círculo negro más exterior es referenciado con el fin de evitar errores de interpretación resultantes de la presencia de un elemento de imagen negro que toca el diseño del localizador.
La exploración es a continuación desplazada en paralelo a la línea de exploración previa, y el punto medio entre los puntos B y K es hecho el punto central. Esto se repite varias veces.
Una línea que pasa a través de varios puntos medios obtenidos explorando en la dirección horizontal es a continuación explorada como la segunda dirección (dirección vertical). Como al explorar horizontalmente, el punto medio entre los puntos B y K es hecho el punto central, y esto es repetido varias veces.
Las coordenadas de la intersección de una línea que une varios puntos centrales obtenidos en la dirección horizontal (primera dirección de exploración) y una línea que une varios puntos centrales obtenidos en la dirección vertical (segunda dirección de exploración), pueden ser obtenidas a continuación como las coordenadas del centro (la intersección de las líneas de trazos en la intersección ampliada en la fig. 33).
Es posible por medio de esta realización obtener exactamente las coordenadas del centro de la diana del diseño del localizador incluso cuando la imagen del diseño del localizador es capturada desde un ángulo, o el diseño del localizador no es un círculo sino una elipse. En este caso, al menos una de las primera y segunda direcciones es ajustada preferiblemente a la dirección del eje mayor o menor del óvalo. (Véase fig. 34).
Otra realización alternativa de las operaciones de búsqueda del diseño del localizador descritas antes es descrita a continuación con referencia a la fig. 8, fig. 26, fig. 27, fig. 28, fig. 30, y fig. 31.
La fig. 8 es un diagrama de flujo de un proceso de búsqueda de diseño del localizador en el proceso de descodificación del símbolo de MaxiCódigo de acuerdo con el presente invento mostrado en la fig. 3.
La imagen de símbolo de Maxicódigo es explorada en una primera dirección de exploración para encontrar una línea de exploración que pasa cerca del punto central del diseño del localizador comparando el diseño (la "ecuación de relación de diseño de color" siguiente) detectado a lo largo de una línea de exploración particular con un diseño de referencia (la "plantilla de diseño del localizador" siguiente). El punto central es a continuación calculado a partir de la línea de exploración encontrada.
La imagen es a continuación explorada desde el punto central en una segunda dirección de exploración, que es diferente de la primera dirección de exploración. La coincidencia de diseño entre la plantilla del diseño del localizador y la relación de diseño de color detectado en esta segunda dirección de exploración (perpendicular) es usada para calcular un punto central candidato para el diseño del localizador a partir de las líneas de exploración (S801). Debe observarse que la línea de exploración próxima al centro del diseño del localizador encontrada cuando se explora en la primera dirección de exploración es denominada a continuación como la línea central de la primera dirección de exploración, el punto central del mismo es denominado como el punto central de la primera dirección de exploración, y la línea de exploración próxima al centro del diseño del localizador encontrada cuando se explora en la segunda dirección de exploración es denominada a continuación como la línea central de la segunda dirección de exploración. La primera dirección de exploración se ha supuesto además a continuación que pasa horizontalmente a través de la imagen explorada, y la segunda dirección de exploración se ha supuesto que pasa verticalmente a través de la imagen explorada.
La fig. 26 es usada para describir una plantilla del diseño del localizador. La fig. 26 (a) muestra un diseño de color en una línea que pasa a través del punto central del diseño del localizador, y la fig. 26 (b) muestra la plantilla del diseño del localizador.
Como se ha mostrado en la fig. 26 (a), el resultado de la línea de búsqueda 2601 que pasa a través del punto central del diseño del localizador en la dirección indicada por la flecha es un diagrama de onda de impulso en el que un impulso alto indica un módulo de datos blancos y un impulso bajo indica un módulo de datos negro. Como se ha mostrado en la fig. 26 (b), si la distancia desde el borde exterior del primer círculo negro (indicado por A) al borde exterior del siguiente círculo negro (en C) es 1, entonces la distancia desde el borde exterior del primer círculo blanco (B) al mismo borde del siguiente círculo blanco (D) es también 1. Además, la distancia desde el borde exterior (E) del círculo negro que encierra directamente la diana del centro blanco al borde interior (G) del mismo círculo negro en el otro lado del centro blanco, y la distancia desde el primer borde (F) del centro blanco al borde interior del siguiente anillo blanco (H) son ambas 1,26.
Por ello, si el diseño de la diana es explorado de izquierda a derecha (A a L) a través del centro como se ha descrito antes, y la relación de distancias de negro-negro (A-C) blanco-blanco (B-D), negro-negro (C-E),... blanco-blanco (J-L) es acumulada, la relación de diseño de color
AC:BD:CE:DF:EG:FH:GI:HJ:IK:JL = 1:1:1:1:1,26:1,26:1:1:1:1
será cierta donde AC, por ejemplo, indica la distancia desde el punto A al punto C.
Esta ecuación que define la relación del diseño de color de un diseño del localizador normal es almacenada en la memoria 220 de datos de descodificación de la ROM 107 como una plantilla de diseño del localizador.
Además, si el centro es explorado de derecha a izquierda (L a A) y las distancias de borde a borde son expresadas de nuevo como una relación en el orden negro-negro (L-J), blanco-blanco (K-I), negro-negro (J-H),... blanco-blanco (C-A), la relación será la misma, es decir,
LJ:KI:JH:IG:HF:GE:FD:EC:BD:CA = 1:1:1:1:1.26:1.26:1:1:1:1
Como se ha mostrado en la fig. 27 (a), la primera operación es por ello explorar horizontalmente (en una primera dirección de exploración) la mitad de la imagen completa 2701 de la imagen explorada que contiene el símbolo de Maxicódigo para generar una onda de impulso (véase fig. 27 (b)) basada en el diseño de color de la línea de exploración 2702 y calcular la ecuación de relación del diseño de color (relación del diseño de color) a lo largo de esa línea de exploración. La relación detectada es a continuación comparada por coincidencia de diseño con la plantilla de diseño del localizador de Maxicódigo (fig. 26 (b)) almacenado en la memoria 220 de datos de descodificación en la ROM 107. Si la relación detectada coincide con la plantilla, esa línea de exploración es definida como una línea central candidata en la primera dirección de exploración (línea central de la primera dirección de exploración). Obsérvese que esta línea de exploración está aquí definida como una línea central candidata ya que puede suceder que otros datos blanco y negro estén dispuestos en los mismos intervalos que la plantilla.
Si como se ha mostrado en la fig. 27 (b) el número de puntos de comparación en la relación de diseño de color y el número de puntos de comparación en la plantilla del diseño del localizador no son los mismos, está claro que la línea no pasa a través del punto central 2703 de la diana del diseño del localizador. En este caso, como se ha mostrado en la fig. 28, la imagen es explorada de nuevo, ahorquillando la línea central 1 de la imagen completa 2801 por encima y por debajo con líneas de exploración 2, 3, y así sucesivamente en exploraciones sucesivas. La coincidencia de diseño usando la relación de diseño de color detectada y la plantilla de diseño del localizador es repetida después de cada exploración para encontrar la línea de exploración que coincide con un diseño específico como se ha descrito antes, y la línea de exploración determinada como que coincide con la plantilla de modo más estrecho es definida como la línea central en la dirección horizontal.
El punto medio entre la intersección de esta línea central y el interior del círculo negro más exterior (es decir, el punto correspondiente a B en la fig. 26 (b)), y la intersección de esta línea central y el interior del círculo negro más exterior en el lado opuesto (es decir, el punto correspondiente a K en la fig. 26 (b)), es decir, dos puntos en el borde exterior del círculo blanco más exterior del diseño del localizador, es a continuación encontrado y definido como un punto central candidato (punto central en la primera dirección de exploración).
Debe observarse que el punto medio entre los dos puntos de borde exterior del círculo blanco más exterior es usado para obtener las coordenadas centrales en vez de usar el punto medio entre dos puntos de borde exterior del círculo negro más exterior del diseño del localizador ya que los datos del elemento de imagen negro pueden tocar el borde exterior del círculo negro más exterior del diseño del localizador, y la situación de este círculo negro más exterior podría por ello ser mal interpretada.
La fig. 30 muestra un diseño del localizador explorado en una segunda dirección de exploración. Se ha encontrado una línea de exploración cerca del punto central del diseño del localizador, y un punto central candidato del diseño del localizador es calculado a partir de la línea de exploración encontrada, explorando desde el punto central de la primera dirección de exploración 3001 en una segunda dirección de exploración que difiere de la primera dirección de exploración, y comparando la relación del diseño de color a lo largo de esta segunda línea de exploración con la plantilla de diseño del localizador.
La exploración es realizada en una segunda dirección de exploración (dirección vertical) desplazada 90 grados con relación a la dirección de exploración horizontal, y la misma operación de coincidencia de diseño aplicada en la dirección horizontal es realizada. Para explorar en la dirección vertical, es explorada una línea (la línea vertical previamente obtenida) ortogonal a la línea central horizontal y que pasa a través del punto central calculado previamente de la línea central. Debe observarse que en vez de explorar la longitud completa en la dirección vertical de la línea que pasa por el punto central obtenido explorando horizontalmente, una relación de diseño de color para sólo una plantilla del diseño del localizador es calculada de manera que el punto central en la primera dirección de exploración está en el centro de la misma, y esta relación del diseño de color es a continuación comparada con la plantilla del diseño de color.
La velocidad con la que las coordenadas centrales verdaderas del diseño del localizador pueden ser obtenidas puede así ser mejorada ya que el punto central antes calculado de la línea de exploración horizontal tiene la probabilidad más elevada de ser el punto central verdadero del diseño del localizador.
Como durante la exploración horizontal, si la relación del diseño de color coincide con la plantilla del diseño del localizador mostrada en la fig. 26 (b), el punto medio entre puntos en el borde exterior del círculo blanco más exterior explorado en la dirección vertical es definido como el punto central candidato del diseño del localizador. Si la relación del diseño de color no coincide con la plantilla del diseño del localizador en la fig. 26 (b), se repite la exploración horizontal a lo largo de una línea de exploración separada verticalmente de la línea central horizontal, y los datos capturados son almacenados en el registro 211 de información del diseño del localizador de la VRAM 106 (véase fig. 28).
Será obvio para un experto ordinario en la técnica relacionada que el orden de las operaciones de exploración vertical y horizontal no es importante, y cualquier dirección puede ser explorada en primer lugar.
Finalmente, el punto central del diseño del localizador es calculado basado en el punto central candidato calculado del diseño del localizador (S802).
La fig. 31 ilustra el cálculo del punto central del diseño del localizador.
Como se ha mostrado en la figura 31, el diseño del localizador es explorado de nuevo en una primera dirección de exploración 3102 a la derecha e izquierda del punto central candidato del diseño del localizador 3101, y los puntos en los que el diseño de color cambia de blanco a negro son etiquetados como P1 y P2. El diseño del localizador es a continuación explorado de nuevo en una segunda dirección de exploración 3103 por encima y por debajo del punto central candidato del diseño del localizador 3101, y los puntos en los que el diseño de color cambia de blanco a negro son etiquetados como P3 y P4. El baricentro 3104 del cuadrilátero de vértices P1, P2, P3 y P4 es a continuación calculado para obtener el centro del diseño del localizador. Aunque el punto central candidato del diseño del localizador puede ser usado como el punto central verdadero del diseño del localizador, la distorsión hace a menudo que el punto central se desplace. Es por ello preferible volver a calcular el punto central verdadero del diseño del localizador.
Debe observarse también que después de la exploración y la coincidencia del diseño en una primera dirección de exploración (dirección horizontal en esta realización), la dirección de exploración es girada 90 grados para exploración y coincidencia de diseño en la segunda dirección de exploración (dirección vertical en esta realización). El invento no está limitado a direcciones perpendiculares, sin embargo, como el ángulo entre las primera y segunda direcciones de exploración puede ser cualquier ángulo siempre que las dos direcciones de exploración se corten. Además, cuando los valores de datos explorados son almacenados en la VRAM como datos bidimensionales en un sistema de coordenadas x-y, que tiene la primera y segunda direcciones mutuamente perpendiculares hace la lectura y tratamiento de datos más fácil.
La fig. 9 es un diagrama de flujo del proceso para encontrar el grupo de puntos centrales candidatos en el proceso de búsqueda del diseño del localizador.
La exploración comienza con una línea en el medio de la imagen (altura de imagen capturada/2) (S901). Esto es debido a que el símbolo está sustancialmente en el medio de una imagen que contiene el símbolo, y el diseño del localizador del símbolo de Maxicódigo o Código Azteca está en el medio del símbolo.
Una línea de datos es a continuación capturada en la dirección horizontal (S902), y es generada una relación del diseño de color (véase fig. 27 (b)) del diseño blanco y negro (S903). La relación del diseño de color y la plantilla del diseño del localizador antes descrita son a continuación comparados para detectar una coincidencia entre ellos (S904).
Si la relación del diseño de color y la plantilla no coinciden (S904 resulta No) y la exploración de la línea horizontal no ha sido completada (S905 resulta No), es sabido que la relación del diseño de color fue generada para otros datos de imagen distintos de los del diseño del localizador. La relación del diseño del color es por ello regenerada (por las operaciones S907 y S903), y comparada de nuevo con la plantilla del diseño del localizador (S904).
Si la relación del diseño de color y la plantilla coinciden (S904 resulta Si), las coordenadas x-y son obtenidas y almacenadas para el punto medio entre los bordes interiores del círculo negro más exterior (el punto medio entre B y K en la fig. 26 (a)) como las coordenadas para el punto central de la diana del diseño del localizador (S909).
Los datos requeridos para la comparación con una plantilla del diseño del localizador son a continuación capturados en una línea de exploración que es perpendicular a la primera dirección de exploración y que pasa a través del punto central obtenido en la operación S909 como se ha mostrado en la fig. 30 (S910). La relación del diseño de color es calculada a continuación y compilada (S911), y comparada con la plantilla del diseño del localizador (S912).
Si la relación del diseño de color y la plantilla del diseño del localizador no coinciden (S912 resulta No), es sabido que el punto central obtenido en la operación S909 no es el punto central del diseño del localizador. El proceso vuelve nuevo por ello a explorar otra línea en la dirección horizontal (S912 a S905).
Si la relación del diseño de color y la plantilla del diseño del localizador coinciden (S912 resulta Si), las coordenadas x-y son obtenidas y almacenadas para el punto medio entre los bordes interiores del círculo negro más exterior (el punto medio entre B y K en la fig. 26 (a)) como las coordenadas para un punto central candidato del diseño del localizador (S913).
Si no se ha encontrado una coincidencia de plantillas cuando ha terminado la exploración de una línea (S904 resulta No, S912 No, y S905 Si), el procedimiento avanza a S906. Si no ha terminado la exploración de todas las líneas (S906 resulta No), la línea de exploración es desplazada una línea por encima o por debajo de la línea de exploración previa (S908), y el procedimiento vuelve de nuevo a S902. Si se ha completado la exploración de todas las líneas (S906 resulta Si), es sabido que el punto central del diseño del localizador podría no ser encontrado, y el proceso termina en una búsqueda fallida.
La fig. 10 es un diagrama de flujo de un proceso de búsqueda de punto central del diseño del localizador en el proceso de búsqueda del diseño del localizador del presente invento.
Los datos son capturados en primer lugar en una dirección de exploración horizontal a la derecha e izquierda del punto central candidato del diseño del localizador obtenido como se ha mostrado en la fig. 9 (S1001), y los puntos donde el color del elemento de imagen cambia de blanco a negro son etiquetados P1 y P2 (S1002) (véase fig. 31). Los datos son capturados a continuación explorando el diseño del localizador desde el punto central del diseño del localizador obtenido como se ha mostrado en la fig. 9 en una dirección de exploración vertical (S1003), y los puntos donde el diseño de color cambia de blanco a negro son etiquetados P3 y P4 (S1004) (véase fig. 31).
A continuación se calcula un cuadrilátero virtual de vértices P1, P2, P3 y P4, y se calculan las coordenadas x, y del baricentro de este cuadrilátero (S1005). El baricentro obtenido por este cálculo es usado como el punto central del diseño del localizador (S1006).
Esta realización del presente invento puede así obtener exactamente el punto central del diseño del localizador cuando la imagen del diseño del localizador es capturada desde un ángulo y el diseño del localizador en la imagen explorada no es ya circular sino elíptico. Lo mismo se aplica cuando la imagen del diseño del localizador no es capturada desde una ángulo sino que el diseño del localizador en el propio símbolo de código es elíptico. Cuando la imagen del diseño del localizador es elíptica, el punto central candidato 201 obtenido en el proceso mostrado en la fig. 9 está a menudo desplazado del verdadero punto central del diseño del localizador (véase fig. 32 (a)). Sin embargo, obteniendo el baricentro 3202 como se ha mostrado en la fig. 10, el punto central del diseño del localizador puede ser situado exactamente (véase fig. 32 (b)).
Una realización preferida de la operación de corrección de imagen antes indicada está descrita a continuación con referencia a la fig. 11, fig. 36, fig. 37 y fig. 61.
La fig. 11 es un diagrama de flujo del proceso de corrección de imagen en el proceso de descodificación del símbolo de MaxiCódigo mostrado como operación S303 en la fig. 3.
Como se ha descrito antes, la operación S302 del proceso de descodificación del símbolo de MaxiCódigo mostrado en la fig. 3 busca el diseño del localizador y calcula las coordenadas para el punto central del diseño del localizador, y las coordenadas de posición para los límites de color entre los círculos blanco y negro del diseño del localizador como la información de forma del diseño del localizador. Además, debido a que todos los módulos de datos pueden ser encontrados situando los módulos de orientación del símbolo de MaxiCódigo, es suficiente aplicar la corrección de imagen a los datos de elemento de imagen en el área en la que hay presentes módulos de orientación. Por ello sólo es necesario que la ecuación de corrección del ángulo de carga sea cierta en el área de imagen donde hay presentes módulos de orientación del símbolo de MaxiCódigo.
Debe observarse además que los módulos de orientación son adyacentes al diseño del localizador en un símbolo de MaxiCódigo. La ecuación de corrección del ángulo de carga para el diseño del localizador puede por ello también ser aplicada a los módulos de orientación.
El proceso de corrección de imagen determina por ello si anillos del diseño del localizador pueden ser aproximados por elipses respectivas basado en las coordenadas del punto central del diseño del localizador y los grupos de coordenadas para los punto de transición en los anillos negro y blanco del diseño del localizador (S1101). Debe observarse que los anillos del diseño del localizador en este caso son los círculos del diseño del localizador del símbolo de MaxiCódigo normales deformados en la imagen explorada.
Si los anillos del diseño del localizador puede ser aproximados por elipses (S1101 resulta Si), el procedimiento avanza a la siguiente operación (S1103). En esta realización preferida del invento los anillos del diseño del localizador puede ser aproximados por elipses si, por ejemplo, la distancia entre el punto central C de la imagen explorada y el punto central O del diseño del localizador están dentro de un intervalo definido (véase fig. 35) (es decir, el punto central O del diseño del localizador está cerca del punto central C de la imagen explorada), y la relación entre la distancia entre el punto focal P y el punto central C, y la longitud del segmento de línea AB, que es el diámetro del diseño del localizador (= longitud de línea PC/longitud del segmento AB) es mayor que o igual a un valor de umbral definido (es decir, el radio del diseño del localizador es bastante menor que la distancia entre el punto focal P y el punto central C).
Si los anillos del diseño del localizador no pueden ser aproximados por elipses (S1101 resulta No), se calcula una ecuación de corrección del ángulo de carga basado en las coordenadas del punto central del diseño del localizador del símbolo de MaxiCódigo y las coordenadas de los límites blanco y negro en el diseño del localizador (S1102), y el procedimiento avanza a la operación S1107.
Obsérvese además, que puede generarse directamente una tabla de corrección del ángulo de carga basado en la relación entre la forma del diseño del localizador en un símbolo de MaxiCódigo real y la forma del diseño del localizador en la imagen explorada, en vez de calcular una ecuación de corrección del ángulo de carga, y a continuación realizar la operación S1107.
La relación entre los círculos en un diseño del localizador normal y las elipses del diseño del localizador en una imagen explorada cuando los anillos del diseño del localizador pueden ser aproximados por elipses es considerada a continuación.
La fig. 36 muestra la relación entre un círculo y una elipse. Como se ha mostrado en la fig. 36, si un círculo es distorsionado en una elipse en la imagen explorada capturada en un ángulo, el punto P del círculo es desplazado al punto P' de la elipse. Supongamos, como se ha mostrado en la fig. 36, que el eje mayor de la elipse es el eje horizontal, el punto central es el punto O, el eje mayor es el segmento AC, y el eje menor es el segmento BD. Si el ángulo AOP es \theta y el ángulo AOP' es \theta', la relación entre el ángulo \theta y el ángulo \theta' es como se ha mostrado en la siguiente ecuación de corrección del ángulo de carga
\theta' = arctg(\gamma*tg\theta)
donde \gamma es la relación de la elipse (= longitud del segmento de línea BO/longitud del segmento de línea AO) y "*" es el operador de multiplicación.
El punto P situado en el ángulo \theta en un círculo es así desplazado al punto P' en el ángulo \theta' en la elipse.
A continuación se genera una tabla de corrección del ángulo de carga basada en esta ecuación de corrección del ángulo de carga. Es decir, se compila una tabla que contiene valores de conversión \theta - \theta', es decir, valores para conversiones entre el ángulo \theta y el ángulo \theta', generados para cada ángulo \alpha de corrección de incremento, que determina la precisión de la corrección.
Esto se consigue ajustando en primer lugar las divisiones de ángulo basadas en el ángulo \alpha de corrección de incremento, que determina la precisión de la corrección de la tabla de corrección del ángulo de carga (S1103). Es decir, el número de divisiones usado para corregir todos los ángulos (360 grados) es calculado basado en el ángulo \alpha de corrección de incremento para ajustar las divisiones de ángulo. Obsérvese que \alpha es un submúltiplo entero de 60. Se observará que los módulos de orientación que indican la orientación del símbolo de MaxiCódigo real están dispuestos a intervalos de 60 grados alrededor del punto central del símbolo de MaxiCódigo. La división del ángulo segmenta así el ángulo completo cada 60 grados, y a continuación divide en 60 grados cada ángulo \alpha de corrección de incremento. Es decir, la división del ángulo expresa el ángulo \theta usando una matriz bidimensional (i,j) que da como resultado la ecuación siguiente donde i es un entero desde 0 a 5, y j es un entero desde 0 a n.
n = 60/\alpha-1
\theta(i,j) = 60*I + \alpha*j
Por ejemplo, si \alpha = 1, es decir, si la precisión de la tabla de conversión de \theta - \theta' es de 1 grado, el ángulo \theta(i,j) es expresado por una matriz de 6 x 60 donde i = 0-5 y j = 0-59.
Un ángulo de desplazamiento es a continuación ajustado (S1104) para generar una tabla de conversión de valores desplazados por un ángulo de desplazamiento con respecto al ángulo \theta.
Como se ha observado antes, los tres módulos de orientación, un módulo de orientación interior, módulo de orientación exterior, y módulo de orientación central, de cada grupo de módulos de orientación tienen casi la misma orientación en un símbolo de MaxiCódigo. El ángulo de desplazamiento es por ello ajustado a un ángulo entre la orientación del módulo de orientación interior y el módulo de orientación exterior, y la orientación del módulo de orientación central.
La fig. 37 muestra la relación entre el ángulo del módulo de orientación interior y el módulo de orientación exterior y el ángulo del módulo de orientación central. La fig. 37 (a) muestra los módulos de orientación en un símbolo de MaxiCódigo real, y la fig. 37 (b) muestra los módulos de orientación en una imagen explorada.
Como se ha mostrado en la fig. 37 (a), el ángulo de desplazamiento \beta está definido por la siguiente ecuación
\beta = \theta1 - \theta2
donde el ángulo \theta1 es el ángulo entre el eje horizontal y la orientación del módulo de orientación interior 3701 y el módulo de orientación exterior 3702, y el ángulo \theta2 es el ángulo entre el eje horizontal y el módulo de orientación central 3703.
Como se ha mostrado en la fig. 61, las siguientes ecuaciones son ciertas en las que el punto O es el punto central del símbolo de MaxiCódigo, el punto D es el punto medio entre el punto central y el módulo de orientación interior y el punto central del módulo de orientación exterior, el punto A es el punto central del módulo de orientación exterior, el punto C es el punto central del módulo de orientación central, y W es la anchura de módulo (distancia entre puntos centrales de módulos adyacentes).
longitud del segmento de línea OD = 6,5*W
longitud del segmento de línea DC = 3/2*W
tg \beta = 3/(2*6)
Como se ha observado antes, el ángulo de desplazamiento \beta puede ser expresado como
\beta = arctg(\sqrt{3}/(2*6) \approx 7,59
Con preferencia a la fig. 37 (a), la relación entre el ángulo \theta1(i,j) y el ángulo \theta2(i,j) está definida por la ecuación
\theta2(i,j) = \theta1(i,j) - \beta
A continuación, se genera una tabla de corrección del ángulo de carga usando la aproximación por elipse basado en las divisiones de ángulo (S1105).
Como se ha mostrado en la fig. 36, si un círculo es distorsionado a una elipse en la imagen explorada capturada desde un ángulo, el punto P en el círculo es desplazado al punto P' en la elipse. Por ello, como se ha mostrado en la fig. 37 (b), si el punto P' es el punto central del módulo de orientación interior 3704 o del módulo de orientación exterior 3705, el ángulo \theta1'(i,j) entre el eje horizontal y el módulo de orientación interior 3704 y el módulo de orientación exterior 3705 de determinado por la ecuación de corrección del ángulo de carga
\theta1'(i,j) = arctg(\gamma*tg\theta1(i,j))
cuando i = 0, 1, o 2.
\theta1'(i,j) = \theta1'(i-3,j) + 180
cuando i = 3, 4 o 5.
Además, si el ángulo de desplazamiento es \beta, el ángulo \theta2'(i,j) entre el eje horizontal y el módulo de orientación central 3706 es determinado por la ecuación de corrección del ángulo de carga
\theta2'(i,j) = arctg(\gamma*tg\theta2(i,j))
\theta2(i,j) = \theta1(i,j) - \beta
cuando i = 0, 1, o 2.
\theta2(i,j) = \theta2'(i-3,j) + 180
cuando i = 3, 4 o 5.
Por ello, el ángulo \theta2, el ángulo \theta1', y el ángulo \theta2' para el ángulo subdividido \theta1 son calculados usando las anteriores ecuaciones de corrección de ángulo de carga, y los resultados son almacenados como elementos de la tabla de corrección del ángulo de carga.
A continuación se determina (S1106) si los elementos de la tabla de corrección del ángulo de carga ha sido calculados para todas las divisiones de ángulo. Si lo han sido (S1106 resulta Si), el procedimiento avanza a la operación S1107. Si no lo han sido (S1106 resulta No), la operación S1105 es repetida hasta que los elementos de la tabla de corrección del ángulo de carga han sido calculados en todos los ángulos.
Los datos de elemento de imagen de la imagen explorada son a continuación corregidos basado en la tabla de corrección del ángulo de carga resultante (S1107).
Finalmente, la tabla de corrección del ángulo de carga resultante es almacenada en el registro 212 de datos de corrección de imagen de VRAM 106 (S1108). Será obvio para un experto en la técnica que las ecuaciones de corrección del ángulo de carga y la información de división podrían ser almacenadas en lugar de la tabla de corrección del ángulo de carga. Además, la tabla de corrección del ángulo de carga puede almacenar las ecuaciones de corrección del ángulo de carga y la información de división.
La operación de búsqueda del módulo de orientación está descrita a continuación con referencia a la fig. 12, fig. 38, fig. 39, y fig. 61.
La fig. 12 es un diagrama de flujo del proceso de búsqueda del módulo de orientación en el proceso de descodificación del símbolo MaxiCódigo del presente invento.
La primera operación es ajustar el intervalo de búsqueda del módulo de orientación (S1201).
La fig. 61 muestra la relación entre el diseño del localizador y los módulos de orientación en un símbolo de MaxiCódigo real. Como se ha mostrado en la figura 61, el polígono virtual 6101 que conecta los puntos centrales de los módulos de orientación interior del símbolo de MaxiCódigo es un hexágono regular cuya longitud de un lado es seis veces la anchura del módulo W, y el polígono virtual 6101 que conecta los puntos centrales de los módulos de orientación exteriores es un hexágono regular cuya longitud de un lado es siete veces la anchura del módulo W. Obsérvese que la anchura del módulo W es la distancia entre los puntos centrales de los módulos adyacentes. Además, el punto O es el punto central del símbolo MaxiCódigo, el punto E es el punto central de un módulo de orientación interior, el punto D es el punto medio entre el punto central de un módulo de orientación interior y el punto central de un módulo de orientación exterior, el punto A es el punto central de un módulo de orientación exterior, y el punto C es el punto central de un módulo de orientación central.
Se ha encontrado por ello que el punto central de un módulo de orientación interior en un círculo cuyo radio es el segmento de línea OE, el punto central de un módulo de orientación exterior se ha encontrado en un círculo cuyo radio es el segmento de línea OA, el punto central de un módulo de orientación central se ha encontrado en un círculo cuyo radio es el segmento de línea OC, y cada uno depende de la anchura de módulo W. Las longitudes de los segmentos de línea OE, OA y OC se han mostrado a continuación.
longitud del segmento OE = 6.000*W
longitud del segmento OA = 7.000*W
longitud del segmento OC = raíz cuadrada de (longitud del segmento OD)^{2} + (longitud del segmento DC)^{2}).
\approx 6.543*W
El intervalo de búsqueda para módulos de orientación en la imagen explorada de un símbolo MaxiCódigo está descrito a continuación con referencia a la fig. 38. La fig. 38 (a) muestra la anchura de módulo W, y la fig. 38 (b) muestra la relación entre la anchura de módulo W y el punto central de un módulo de orientación interior.
Como se ha mostrado la fig. 38 (a), la anchura de módulo W es calculada a partir del radio de límite de color 3803 entre las partes blanca 3801 y negra 3802 del diseño del localizador. Como se ha mostrado en la fig. 61, el límite de color 6103 es un círculo en la imagen explorada de un símbolo MaxiCódigo capturada desde el frente (es decir, sin formar un ángulo), pero cuando la imagen explorada es capturada en ángulo el límite de color 3803 es una forma que se parece a una elipse como se ha mostrado en la fig. 38 (a).
Como se ha mostrado también en la fig. 61, la siguiente ecuación es cierta cuando el punto F es un punto en el límite de color circular 6103 y R' es el radio del círculo.
R' < 4,0*W
Por ello si el radio del límite de color 3803 en la fig. 38 (a) es R, la anchura W del módulo puede ser calculada como
W = R/n
donde n es la tasa, es decir, una variable que correlaciona el radio R y la anchura W del módulo. En este caso la tasa n es un valor desde 4,00 a 3,00 en incrementos de 0,05.
Como se ha mostrado en la fig. 38 (b), la tasa n es variada mientras se busca el punto central del módulo de orientación interior debido a que el punto central del módulo de orientación interior está situado en un círculo de radio L1. En esta realización preferida el radio L1 es = 6.000*W.
Los puntos centrales del módulo de orientación exterior y del módulo de orientación central están probablemente sobre círculos de radios L2 y L3 (no mostrados), respectivamente. Por ello, los puntos centrales de los módulos de orientación exterior y central son por ello buscados también mientras varía la tasa n. En esta realización preferida el radio L2 es = 7.000*W y el radio L3 = 6,543*W.
Además, como se ha mostrado en la fig. 61, la línea que conecta el punto central O y el punto central C de un módulo de orientación central forma una ángulo \beta con la línea que une el punto central O y el punto central A del módulo de orientación exterior. El ángulo \beta es denominado aquí como el ángulo de desplazamiento del módulo de orientación central. Este ángulo de desplazamiento del módulo de orientación central es definido como:
tg\beta = (longitud del segmento DC)/(longitud del segmento OD)
\beta\approx 7,59
El intervalo de búsqueda del módulo de orientación es así ajustado.
A continuación, se genera un diseño de plantilla de color para el grupo de módulos de orientación interior, grupo de módulos de orientación exterior, y grupo de módulos de orientación central usando los valores de bit negro = 1 y blanco = 0 (S1202). Obsérvese que el grupo de módulos de orientación interior consiste del conjunto de seis módulos de orientación interior (uno en cada uno de los seis grupos de módulos de orientación), el módulo de orientación exterior consiste del conjunto de seis módulos de orientación exterior, y el grupo de módulos de orientación central consiste del conjunto de seis módulos de orientación central.
La fig. 39 muestra un diseño de plantilla de color ejemplar. Como se ha mostrado en la fig. 39 las seis orientaciones están mostradas como orientaciones 0 a 5. El diseño de plantilla de color es generado compilando un diseño de bit dónde negro = 1 y blanco = 0 dos veces para cada orientación 0 a orientación 5.
Los diseños de plantilla de color para el grupo de módulos de orientación interior, grupo de módulos de orientación exterior, y grupo de módulos de orientación central así compilados son mostrados a continuación.
diseño de plantilla de color del grupo de módulos de orientación interior = 101101101101
diseño de plantilla de color del grupo de módulos de orientación exterior = 001011001011
diseño de plantilla de color del grupo de módulos de orientación central = 101110101110.
A continuación, son buscados los módulos de orientación candidatos en el grupo de módulos de orientación interior, grupo de módulos de orientación exterior, y grupo de módulos de orientación central que coincidan con el diseño de plantilla de color basados en la tasa n (S1203). Si no hay módulos de orientación que coincidan con el diseño de plantilla de color, se ha concluido que no hay datos de módulo de orientación candidato.
A continuación (S1204) es determinado si hay algún dato de módulo de orientación candidato que se ha encontrado basado en todas las tasas n definidas. Si lo hay (S1204 resulta Si), el procedimiento avanza a la operación S1205. Si no se ha encontrado tal dato de módulo de orientación candidato (S1204 resulta No), se repite la operación S1203 hasta que se hayan encontrado datos de módulo de orientación candidato basado en todas las tasas n definidas.
A continuación (S1205) se determina si hay presentes algunos datos de módulo de orientación candidato. Si los hay (S1205 resulta Si), los módulos de orientación son determinados a partir de los datos del módulo de orientación candidato (S1206), y el proceso de búsqueda del módulo de orientación termina.
Si no hay datos del módulo de orientación candidato (S1205 resulta No), se genera un error que indica que no podría encontrarse un módulo de orientación (S1207), y el proceso de descodificación termina.
El anterior proceso para encontrar datos de módulo de orientación candidato está descrito en mayor detalle a continuación.
La fig. 13 es un diagrama de flujo del proceso de búsqueda actos de módulo de orientación candidato en el proceso de búsqueda de módulo de orientación.
Como se ha descrito en la operación S1201 en la fig. 12, los miembros del grupo de módulos de orientación interior se han encontrado en un círculo de radio L1, los miembros del grupo de módulos de orientación exterior se han encontrado en un círculo de radio L2, y los miembros del grupo de módulos de orientación central se han encontrado en un círculo de radio L3 basado en la tasa n. El ángulo de desplazamiento de los módulos de orientación central es el ángulo \beta. Además, los seis módulos de orientación interior que constituyen el grupo de módulos de orientación interior están situados a intervalos de 60 grados alrededor del punto central del diseño del localizador. Lo mismo es cierto para los seis módulos de orientación del grupo de módulos de orientación exterior y los seis módulos de orientación del grupo de módulos de orientación central.
El ángulo \theta de búsqueda del módulo de orientación es expresado dividiendo el ángulo completo cada 60 grados y a continuación dividiendo éstas divisiones de 60 grados cada ángulo \alpha de incremento de búsqueda usando una matriz bidimensional (i,j), y los módulos de orientación son encontrados entonces. Obsérvese que i es un entero de 0 a 5, y j es un entero de 0 a n.
n = 60/\alpha-1
\theta(i,j) = 60*i + \alpha*j
Por ejemplo, si el ángulo de incremento de búsqueda \alpha = 1, el ángulo \theta(i,j) es expresado por una matriz de 6 x 60 donde i es un entero de 0 a 5 y j es un entero de 0 a 59. El área del ángulo representada por i es el área i. Por ejemplo, el área donde i = 0, es decir, 0 < = \theta < 60, es el área 0.
Un grupo de módulos de orientación interior que coincida con el diseño de plantilla de color del grupo de módulos de orientación interior es detectado en primer lugar en el ángulo de búsqueda \theta para detectar candidatos de módulos de orientación interior (S1301).
\newpage
Entonces se determina (S1302) si se han encontrado candidatos de módulo de orientación interior. Si es si (S1302 resulta Si), el procedimiento avanza a la operación S1303. Si es no (S1302 resulta No), el procedimiento avanza a la operación S1307 para desplazarse al ángulo de búsqueda siguiente.
A continuación, se detecta un grupo de módulos de orientación exterior que coincide con el diseño de plantilla de color del grupo de módulos de orientación exterior para detectar candidatos de módulo de orientación exterior (S1303).
A continuación se determina (S1304) si se han encontrado candidatos de módulos de orientación exterior. Si es si (S1304 resulta Si) el procedimiento avanza a la operación S1305. Si es no (S1304 resulta No), el procedimiento avanza a la operación S1307 para desplazarse al siguiente ángulo de búsqueda.
A continuación, se detecta un grupo de módulos de orientación central que coincide con el diseño de plantilla de color del grupo de módulos de orientación central para detectar candidatos de módulo de orientación central (S1305).
A continuación se determina (S1306) si se han encontrado candidatos de módulos de orientación exterior. Si es si (S1306 resulta Si) el procedimiento avanza a la operación S1307. Si es no (S1306 resulta No), el procedimiento avanza a la operación S1307 para desplazarse al siguiente ángulo de búsqueda.
A continuación se determina (S1307) si se ha usado cada ángulo de búsqueda para situar los datos de candidato. Si se han buscado todos los ángulos de búsqueda (S1307 resulta Si), el procedimiento avanza a la operación S1308. Si no es así (S1307 resulta No), se repiten las operaciones S1301 a S1306 hasta que todos los ángulo de búsqueda han sido buscados.
Debe observarse que debido a que los módulos de orientación están situados a intervalos regulares de 60 grados alrededor del punto central del diseño del localizador, el intervalo de búsqueda del ángulo de búsqueda \theta es una división del ángulo de búsqueda entre 0 grados y menos de 60 grados. El ángulo de búsqueda \theta puede por ello ser denominado como área 0.
A continuación se determina (S1308) si se han encontrado candidatos para los módulos de orientación interior, módulos de orientación exterior, y módulos de orientación central. Si se han encontrado (S1308 resulta Si), los candidatos de módulo de orientación consistentes de los candidatos de módulo de orientación interior, candidatos de módulo de orientación exterior, y candidatos de módulo de orientación central encontrados en la tasa n son fijados (S1309), y el proceso de búsqueda de candidato del módulo de orientación termina.
Sin embargo, si no hay candidato de módulo de orientación interior, candidato de módulo de orientación exterior, o candidato de módulo de orientación central (S1308 resulta No), se produce un error en el proceso de manipulación debido a que no se ha encontrado candidato del módulo de orientación a la tasa n (S1310), y el proceso de búsqueda de candidato de módulo de orientación termina.
Debe observarse que la operación S1301 para detectar candidatos de módulo de orientación interior, la operación S1303 para detectar candidatos de módulo de orientación exterior, y la operación S1305 para detectar candidatos de módulo de orientación central en el proceso anterior de búsqueda de candidatos de módulo de orientación no depende de ningún orden particular. Estas operaciones pueden ser realizadas en cualquier orden en la medida en que los candidatos de módulo de orientación interior, candidatos de módulo de orientación exterior, y candidatos de módulo de orientación central puedan ser detectados.
Un proceso para detectar los candidatos de módulo de orientación interior en el proceso anterior de búsqueda de candidato de módulo de orientación está descrito con más detalle a continuación.
La fig. 14 es un diagrama de flujo del proceso de búsqueda de candidato del módulo de orientación interior en el proceso anterior de búsqueda de candidato del módulo de orientación.
Debido a que hay presente un módulo de orientación interior en seis direcciones, se ha supuesto que hay presente un módulo de orientación interior en el ángulo \theta de búsqueda, y las posiciones de los módulos de orientación interior candidatos en las seis direcciones son calculadas (S1401).
La fig. 40 muestra la posición de un módulo de orientación candidato en el ángulo \theta búsqueda cuanto el punto central del diseño del localizador es el punto O, el punto central del módulo de orientación interior candidato presente en un círculo de radio L1 en el área i es el punto Aij, y el ángulo entre el segmento OAij y el eje x es el ángulo \thetaij; el punto central del módulo de orientación exterior candidato presente en un círculo de radio L2 es el punto A'ij; el punto central del módulo de orientación central candidato presente en un círculo de radio L3 es el punto A''ij; y el ángulo de desplazamiento del módulo de orientación central es \beta, además, las coordenadas del punto Aij son (xij, yij), Las color de nado del punto A'ij son (x'ij, y'ij), Las coordenadas del punto A''ij son (x''ij, y''ij), y las coordenadas del punto \thetaij son \theta(i,j).
Como se ha mostrado en la fig. 40, la situación del punto A0j en el área i=0 está definida por las siguientes ecuaciones.
X0j = L1 * sen(\theta0j)
Y0j = L1 * cos(\theta0j)
\Theta0j = \theta(0,j)
Los puntos centrales Aij de los módulos de orientación interior candidatos en las seis direcciones pueden por ello ser expresados por las siguientes ecuaciones.
xij = L1 * sen(\thetaij)
yij = L1 * cos(\thetaij)
\thetaij = \theta(i,j) = \theta0j+60*I
El color de los datos de elemento de imagen que corresponde a los módulos de orientación interior candidato presente en las seis direcciones calculadas es a continuación extraído y convertido en un diseño de bit en el que negro = 1 y blanco = 0 como se ha señalado antes (S1402). El diseño de bit del grupo del módulo de orientación interior candidato que comprende los diseños de bit de los módulos de orientación interior candidatos presentes en las seis direcciones convertidas es a continuación ajustado como el diseño del módulo de orientación interior candi-
dato.
El diseño del módulo de orientación interior candidato es a continuación comparado con parte del diseño de la plantilla de color del grupo de módulos de orientación interior para detectar una coincidencia ente ellos (S1403). El diseño desde el valor k ésimo desde el lado izquierdo del diseño al valor (k + 6) en el diseño de la plantilla de color del grupo del módulo de orientación interior es a continuación usado como el diseño parcial de la plantilla de color interior. Este diseño parcial y el diseño del módulo de orientación interior candidato son a continuación comparados para detectar una coincidencia entre ellos. Obsérvese que k es denominado aquí como el número de comienzo, y sólo necesita variar de 1 a 6.
Si el diseño parcial de la plantilla de color interior y el diseño del módulo de orientación interior candidato coinciden (S1403 resulta Si), los módulos de orientación interior candidatos situados en las seis direcciones son usados como los datos candidatos para los módulos de orientación interior (S1404), y el procedimiento avanza a la operación S1405 para comparación con el siguiente diseño parcial de la plantilla de color interior.
Si el diseño parcial de la plantilla de color interior y el diseño del módulo de orientación interior candidato no coinciden (S1403 resulta No), el procedimiento avanza a la operación S1405 para comparación con el diseño parcial de la plantilla de color interior.
Por ejemplo, si el diseño del módulo de orientación interior candidato es 110110, el diseño de la plantilla de color del grupo del módulo de orientación interior es 101101101101, y hay una coincidencia con el diseño del módulo de orientación interior 110110 cuando k = 3 y cuando k = 6. El módulo de orientación interior candidato es por ello detectado como el candidato del módulo de orientación interior. Sin embargo, si el diseño del módulo de orientación interior candidato es 100110, no hay diseño parcial de la plantilla de color que coincida.
A continuación se determina (S1405) si todos los diseños parciales de la plantilla de color y los diseños del módulo de orientación interior candidato han sido comparados. Más específicamente, se ha determinado si se han hecho comparaciones para todos los números de comienzo k desde 1 al 6. Si no se han comparado todos los diseños parciales de la plantilla de color interior y los diseños del módulo de orientación interior candidato (S1405 resulta No), las operaciones S1403 a S1404 son repetidas hasta que todos los diseños han sido comparados y S1405 resulta Si.
Si se han comparado todos los diseños parciales de la plantilla de color interior y los diseños del módulo de orientación interior candidato (S1405 resulta Si), se determina (S1406) si el módulo de orientación interior candidato ha sido detectado. Si lo ha sido S1406 resulta Si, el proceso de detección del módulo de orientación interior candidato termina. Si no lo ha sido (S1406 resulta No), S1407 determina que no hay datos candidatos y el proceso de detección del módulo de orientación interior candidato termina.
Un proceso para detectar un módulo de orientación exterior candidato en el proceso anterior de búsqueda del módulo de orientación candidato es descrito de forma más detallada a continuación.
La fig. 15 es un diagrama de flujo del proceso de búsqueda del módulo de orientación exterior candidato en el proceso anterior de búsqueda del módulo de orientación candidato.
Debido a que un módulo de orientación exterior está presente en seis direcciones, se ha supuesto que un módulo de orientación exterior está presente en el ángulo de búsqueda \theta, y son calculadas (S1501) las posiciones de los módulos de orientación exterior candidatos en las seis direcciones.
Como se ha mostrado en la fig. 40, la situación del punto A'0j en el área i = 0 está definida por las ecuaciones siguientes.
x'0j = L2 * sin(\theta0j)
y'0j = L2 * cos(\theta0j)
\theta0j = \theta(0,j)
Los puntos centrales A'ij de los módulos de orientación exterior candidatos en las seis direcciones pueden por ello expresarse por la ecuaciones siguientes.
x'ij = L2 * sen(\thetaij)
y'ij = L2 * cos(\thetaij)
\thetaij = \theta(i,j) = \theta0j + 60*i
El color de los datos de elemento de imagen que corresponde a los módulos de orientación exterior candidatos presentes en las seis direcciones calculadas es a continuación extraído y convertido en un diseño de bit donde negro = 1 y blanco = 0 como se ha señalado antes (S1502). El diseño de bit del grupo del módulo de orientación exterior candidato que comprende los diseños de bit de los módulos de orientación exterior candidatos presentes en las seis direcciones convertidas es a continuación ajustado como diseño del módulo de orientación exterior candi-
dato.
A continuación se determina (S1503) si el número de comienzo k coincide con el de los candidatos de módulo de orientación interior. Un diseño parcial de plantilla de color exterior es generado a partir del diseño de la plantilla de color del grupo de módulos de orientación exterior basado en el número de comienzo k del mismo modo que el diseño parcial de la plantilla de color interior.
Si el número de comienzo k coincide con el de los módulos de orientación interior candidatos (S1503 resulta Si), el diseño del módulo de orientación exterior candidato y el diseño parcial de la plantilla de color exterior son comparados para detectar una coincidencia entre ellos (S1504).
Si el número de comienzo k no coincide con el de los módulos de orientación interior candidatos (S1503 resulta No), el procedimiento avanza a la operación S1506 para su comparación con el siguiente diseño parcial de la plantilla de color exterior.
Si el diseño parcial de la plantilla de color exterior y el diseño del módulo de orientación exterior candidato coinciden (S1504 resulta Si), los módulos de orientación exterior candidatos situados en las seis direcciones son usados como los candidatos para los módulos de orientación exterior (S1505), y el procedimiento avanza a la operación S1506 para su comparación con el siguiente diseño parcial de la plantilla de color exterior.
Si el diseño parcial de la plantilla de color exterior y el diseño del módulo de orientación exterior candidato no coinciden (S1504 resulta No), el procedimiento avanza a la operación S1506 para su comparación con el siguiente diseño parcial de la plantilla de color exterior.
A continuación se determina (S1506) si todos los diseños parciales de la plantilla de color exterior y los diseños del módulo de orientación exterior han sido comparados. Si no han sido comparados todos los diseños parciales de la plantilla de color exterior y los diseños del módulo de orientación exterior candidato (S1506 resulta No), las operaciones S1503 a S1505 son repetidas hasta que todos los diseños han sido comparados (S1506 resulta Si).
Si todos los diseños parciales de la plantilla de color exterior y los diseños del módulo de orientación exterior candidato han sido comparados (S1506 resulta Si), se determina (S1507) si el candidato del módulo de orientación exterior ha sido detectado. Si lo ha sido (S1507 resulta Si), el proceso de detección candidato del módulo de orientación exterior termina. Si no lo ha sido (S1507) resulta No), S1508 determina que no hay datos candidatos y el proceso de detección del módulo de orientación exterior termina.
\newpage
Un proceso para detectar los candidatos del módulo de orientación central en el proceso de búsqueda candidato del módulo de orientación anterior ha sido descrito de forma más detallada a continuación.
La fig. 16 es un diagrama de flujo del proceso de búsqueda del candidato del módulo de orientación central en el proceso de búsqueda del candidato del módulo de orientación anterior.
Debido a que el módulo de orientación central está presente en seis direcciones, se ha supuesto que un módulo de orientación central está presente en el ángulo de búsqueda \theta-\beta, es decir, el ángulo de búsqueda \theta menos el ángulo de desplazamiento \beta, y se calculan (S1601) las posiciones de los módulos de orientación central candidatos en las seis direcciones.
Como se ha mostrado en la fig. 40, la situación del punto A''0j en el área i = 0 está definida por las ecuaciones siguientes.
x''0j = L3 *sen(\theta0j-\beta)
y''0j = L3 * cos(\theta0j-\beta)
\theta0j = \theta(0,j)
Los puntos centrales A''ij de los módulos de orientación central candidatos en las seis direcciones pueden por ello ser expresados por las ecuaciones siguientes.
x''ij = L3 * cos(\thetaij-\beta)
y''ij = L3 * cos(\thetaij-\beta)
\thetaij = \theta(i,j) = \theta0j + 60*I
El color de los datos de elemento de imagen que corresponde a los módulos de orientación central candidatos presentes en las seis direcciones calculadas es a continuación extraído y convertido en un diseño de bit donde negro = 1 y blanco = 0 como se ha señalado antes (S1602). El diseño de bit del grupo de módulos de orientación central candidatos que comprende los diseños de bit de los módulos de orientación central candidatos presentes en las seis direcciones calculadas es a continuación ajustado como el diseño de módulo de orientación central candidato.
A continuación se determina (S1603) si hay un número de comienzo k que coincide con el módulo de orientación central candidato. Obsérvese que aquí los candidatos del módulo de orientación exterior son los candidatos del módulo de orientación interior así como los candidatos del módulo de orientación exterior. Un diseño parcial de la plantilla de color central es a continuación generado a partir del diseño de la plantilla de color del grupo de módulos de orientación central basado en el número de comienzo k del mismo modo que el diseño parcial de la plantilla de color interior.
Si el número de comienzo k coincide con el candidato del módulo de orientación exterior (S1603 resulta Si), el diseño del módulo de orientación central candidato y el diseño parcial de la plantilla de color central son comparados para detectar una coincidencia entre ellos (S1604).
Si el número de comienzo k no coincide con el candidato del módulo de orientación exterior (S1603 resulta No), el procedimiento avanza a la operación S1606 para su comparación con el siguiente diseño parcial de la plantilla de color central.
Si el diseño parcial de la plantilla de color central y el diseño del módulo de orientación exterior coinciden (S1604 resulta Si), los módulos de orientación central candidatos en las seis direcciones son usados como los candidatos para los módulos de orientación central (S1605), y el procedimiento avanza a la operación S1606 para su comparación con el siguiente diseño parcial de la plantilla de color central.
Si el diseño parcial de la plantilla de color central y el diseño del módulo de orientación central candidato no coinciden (S1604 resulta No), el procedimiento avanza a la operación S1606 para su comparación con el diseño parcial de la plantilla de color central siguiente.
A continuación se determina (S1606) si todos los diseños parciales de la plantilla de color central y los diseños del módulo de orientación central candidato han sido comparados. Si no han sido comparados todos los diseños parciales de la plantilla de color central y los diseños del módulo de orientación central candidato (S1606 resulta No), se repiten las operaciones S1603 a S1605 hasta que todos los diseños han sido comparados (S1606 resulta Si).
Si todos los diseños parciales de la plantilla de color central y los diseños del módulo de orientación central candidato han sido comparados (S1606 resulta Si), se determina (S1607) si el candidato del módulo de orientación central ha sido detectado. Si lo ha sido (S1607 resulta Si), el proceso de detección candidato del módulo de orientación exterior termina. Si no lo ha sido (S1607 resulta No), S1608 determina que no hay datos candidatos y el proceso de detección del candidato del módulo de orientación central termina.
Un proceso para determinar los candidatos del módulo de orientación en los procesos de búsqueda del candidato del módulo de orientación descrito se ha descrito en mayor detalle a continuación.
La fig. 17 es un diagrama de flujo de un proceso de determinación del candidato del módulo de orientación en el proceso de búsqueda del candidato del módulo de orientación.
Los datos candidatos para un módulo de orientación interior a la tasa n son determinados basados en los datos candidatos detectados para varios módulos de orientación interior.
Los módulos de orientación son determinados identificando los candidatos del módulo de orientación que tienen las misma orientación basada en los candidatos del módulo de orientación detectados, y obteniendo el promedio de los datos candidatos identificados.
La fig. 41 muestra la conversión de los datos candidatos para módulos de orientación que tienen la misma orientación. La fig. 41 (a) muestra los datos candidatos para módulos de orientación en la misma orientación antes de la conversión de datos, y la fig. 41 (b) muestra los datos candidatos para módulos de orientación en la misma orientación después de la conversión de datos.
Como se ha mostrado en la fig. 41 (a), datos candidatos para módulos de orientación detectados en la misma orientación pueden estar presentes tanto en el área i como en el área (i + 1). En la fig. 41 (a) los puntos A10, A11, A12, y A0m son datos candidatos para módulos de orientación presentes en áreas i=0 e i=1 y tienen la misma orientación. El punto Aij, detectado como candidato del módulo de orientación, está situado en el área i, y ha sido detectado en la división del ángulo de búsqueda j ésima. No es posible por ello usar la expresión Aij para indicar datos candidatos para módulos de orientación en la misma orientación. Los datos expresados en la forma Aij son por ello convertidos a puntos de datos de la forma Bpq, que etiquetan datos candidatos en módulos de orientación en la misma orientación, dónde p es el número del módulo de orientación y q es el número candidato. Las coordenadas de posición del punto Aij y del punto Bpq son las mismas.
Este proceso de conversión comienza detectando si el punto Aij de datos candidatos son datos candidatos para el mismo módulo de orientación que el punto Bpq (S1701). Si lo es (S1701 resulta Si), el punto Aij es convertido al punto Bpq (S1702), y el procedimiento avanza a la operación S1705.
Como se ha mostrado en la fig. 41, por ejemplo, punto A00, los datos candidatos para el mismo módulo de orientación, son convertidos en B00, A01 a B01, y A02 a B02. El punto A10, que son datos candidatos para un módulo de orientación desplazado en 60 grados, es convertido en B10, A11 a B11, y A12 a B12.
Si los datos candidatos no son para el mismo módulo de orientación (S1701 resulta No), se detecta si el punto de datos candidato Aij son datos candidatos para el mismo módulo de orientación que el punto B(p+1)q desplazado en 60 grados del punto Bpq (S1703).
Si son datos candidatos para un módulo de orientación desplazado en 60 grados (S1703 resulta Si), el punto Aij es convertido en el punto B(p+1)q (S1704), y el procedimiento avanza a la operación S1705. Si no son datos candidatos para un módulo de orientación desplazado en 60 grados (S1703 resulta No), los datos no son convertidos y el procedimiento avanza a la operación S1705.
Por ejemplo, como se ha mostrado en la fig. 41, el punto A0m son datos candidatos para un módulo de orientación diferente del punto B02, pero son datos candidatos para el mismo módulo de orientación que el punto B12. El punto A0m candidato del módulo de orientación es por ello convertido en el punto B13.
Debe observarse que si se determina que un punto de datos son datos candidatos para un módulo de orientación desplazado en 60 grados, por ejemplo, sigue. Si la ecuación siguiente es verdadera para la distancia entre el punto A0m y el punto A12 los puntos de datos son para módulos de orientación diferente:
distancia entre puntos A0m y A12 < altura V de módulo
donde la altura V del módulo es determinada por la ecuación siguiente usando la anchura del módulo W.
V = (2/\sqrt{3}) * W
\newpage
A continuación se determina (S1705) si los datos candidatos para todos los módulos de orientación detectados han sido convertidos. Si lo han sido (S1705 resulta Si), el procedimiento avanza a la operación S1706. Si no lo han sido (S1705 resulta No), se repiten las operaciones S1701 a S1704 hasta que todos los datos candidatos han sido convertidos.
Finalmente, las coordenadas medias son calculadas para los datos candidatos convertidos para el mismo módulo de orientación, y las coordenadas calculadas son definidas como las coordenadas del candidato del módulo de orientación a una tasa n (S1706). Obsérvese que las coordenadas medias son calculadas en esta operación obteniendo las medias simples de los valores de coordenada x e y de los datos candidatos en un espacio de coordenadas x-y. La media para las coordenadas polares es el ángulo medio cuando el radio es la tasa n.
La fig. 42 muestra un método para determinar los candidatos del módulo de orientación a tasa n.
Como se ha mostrado en la fig. 42, si las coordenadas medias para puntos B10, B11, B12, y B13, datos candidatos detectados para el mismo módulo de orientación, son las del punto Cn1, entonces el punto Cn1 es un candidato del módulo de orientación a tasa n.
Un proceso para determinar los módulos de orientación en el proceso de búsqueda del módulo de orientación antes descrito se ha descrito a continuación de forma más detallada.
La fig. 18 es un diagrama de flujo del proceso de determinación del módulo de orientación en el proceso de búsqueda del módulo de orientación.
La primera operación es calcular las coordenadas medias para módulos de orientación detectados a tasa n, y determinar la situación del punto central del módulo de orientación (S1801).
La fig. 43 ilustra este método preferido para determinar la posición del punto central de un módulo de orientación.
Como se ha mostrado en la fig. 43, el punto DO es la situación del punto central del módulo de orientación si el punto DO es el punto de las coordenadas medias de puntos C(3,55, 0), C(3,5, 0), y C(3,45, 0), siendo los puntos C datos candidatos para un módulo de orientación detectado a tasa n.
A continuación, se calcula (S1802) el ángulo \theta formado por el eje horizontal y la línea que une el punto central del diseño del localizador y el punto central del módulo de orientación.
La anchura del módulo de orientación W es calculada entonces (S1803).
Finalmente, los datos de imagen de la imagen explorada son convertidos basados en las posiciones del módulo de orientación a fin de detectar las posiciones del módulo de datos en el símbolo MaxiCódigo (S1804).
La fig. 44 es usada para describir la conversión de datos por rotación de imagen. La fig. 44 (a) muestra el proceso de conversión de datos, y la fig. 44 (b) muestra una tabla de números de secuencia del módulo de orientación.
Los números del módulo de orientación son convertidos a números de secuencia como se ha mostrado en la fig. 44 (a). Los números del módulo de orientación indican el área en el que está situado el módulo de orientación, y los números de secuencia conforme a la tabla en la fig. 44 (b).
Un ejemplo de la operación de búsqueda de los datos antes señalados está descrito a continuación con referencia a la fig. 19, fig. 45, y fig. 46.
La fig. 19 es un diagrama de flujo del proceso de búsqueda del módulo de datos en el proceso de descodificación del símbolo MaxiCódigo.
En primer lugar, es estimado un eje de orientación que pasa a través del punto central del diseño del localizador, el punto central de un módulo de orientación interior, y el punto central de un módulo de orientación exterior, y se calculan (S1901) la información de posición y forma para módulos de datos en este eje de orientación.
La fig. 45 muestra un MaxiCódigo sobre un eje de orientación. La fig. 45 (a) muestra un módulo real y un módulo candidato en el eje de orientación, y la fig. 45 (b) muestra la localización de módulos de datos en un eje de orienta-
ción.
Como se ha mostrado en la fig. 45 (a), un eje de orientación que pasa a través del punto central del diseño del localizador, el punto central de un módulo de orientación interior, y el punto central de un módulo de orientación exterior, son estimados, y un número es asignado al eje de orientación. Para describir el cálculo de las posiciones del módulo de datos, se van a considerar dos módulos en el eje de orientación supuesto, siendo uno un módulo que es parte del símbolo MaxiCódigo (un "módulo real" a continuación) y otro un módulo que no es parte del símbolo MaxiCódigo (un "módulo candidato" en lo que sigue).
Usando el ejemplo mostrado en la fig. 45 (b), la posición del punto central de cada módulo es calculada para un grupo de módulos que contiene 10 módulos reales y 8 módulos candidatos en el eje de orientación 0. También se ha considerado aquí un grupo de módulos que contiene 11 módulos reales y 7 módulos candidatos en el eje de orientación 1; un grupo de módulos que contiene 11 módulos reales y 6 módulos candidatos en el eje de orientación 2; un grupo de módulos que contiene 9 módulos reales y 8 módulos candidatos en el eje de orientación 3; un grupo de módulos que contiene 11 módulos reales y 6 módulos candidatos en el eje de orientación 4; y un grupo de módulos que contiene 11 módulos reales y 7 módulos candidatos en el eje de orientación 5. Debe observarse que mientras hay 12 módulos reales en el eje de orientación 1, un módulo real más próximo al punto central del diseño del localizador que un módulo de orientación interior es convertido en bit por separado después de determinar la posición del punto central de ese módulo. El grupo de módulos sobre el eje de orientación 1 puede por ello ser denominado como con 11 módulos reales y 7 módulos candidatos.
Un diseño de bit es entonces generado a partir de los datos de elemento de imagen para la situación del punto central calculado de cada módulo (S1902). Como se ha observado antes, los elementos de imagen negros son bits 1, y los elementos de imagen blancos son bits 0. Los módulos candidatos no son convertidos a un diseño de bit aquí.
La información de posición es calculada entonces para los módulos de datos de símbolo MaxiCódigo presentes en el área entre ejes de orientación (S1903).
La fig. 46 muestra un módulo entre ejes de orientación. La fig. 46 (a) muestra un módulo real y un módulo candidato entre ejes de orientación, y la fig. 46 (b) muestra la posición de un módulo de datos entre ejes de orientación.
Como se ha mostrado en la fig. 46 (a) el área triangular que comprende ejes de orientación 0 y 1 es etiquetada área 0 de símbolo candidato; el área triangular que comprende ejes de orientación 1 y 2 es etiquetada área 1 de símbolo candidato; el área triangular que comprende ejes de orientación 2 y 3 es etiquetada área 2 de símbolo candidato; el área triangular que comprende ejes de orientación 3 y 4 es etiquetada área 3 de símbolo candidato; el área triangular que comprende ejes de orientación 4 y 5 es etiquetada área 4 de símbolo candidato; y el área triangular que comprende ejes de orientación 5 y 0 es etiquetada área 5 de símbolo candidato. El área de símbolo MaxiCódigo en el área i de símbolo candidato comprende un módulo real (hexágono de línea continua) y el área exterior al símbolo MaxiCódigo comprende módulos candidatos (hexágonos mostrados con líneas de trazos).
Como se ha mostrado en la figura 46 (b), los puntos centrales de módulos en el eje de orientación i y los puntos centrales de los módulos en el eje de orientación i + 1 están conectados por líneas rectas, y los puntos que dividen esta línea en (número de módulos entre ejes de orientación + 1) intervalos son usados como el punto central de cada módulo. En otras palabras, si se forman 18 líneas en el área O de símbolo candidato y los puntos centrales de los módulos de orientación interiores en los eje de orientación son A1 y A'1, los puntos de unión de línea A1 y A'1 están divididos en 6 partes, y los puntos separados son usados como los puntos centrales del módulo. Además, la línea que une el puntos Ak y el punto A'k está dividida en (k+5) partes, y los puntos separados son usados como los puntos centrales del módulo.
A continuación, los datos de elemento de imagen detectados desde los puntos centrales calculados de cada módulo son usados para generar un diseño de bit donde negro = 1 y blanco = 0 como se ha observado antes (S1904), y el proceso de búsqueda de módulo de datos termina. Obsérvese que la operación de conversión del diseño de bit de la operación S1904 es aplicada a los módulos reales solamente.
Un proceso para calcular la información de posición y forma para los módulo de datos de los ejes de orientación antes indicados está descrito a continuación con referencia a la fig. 20 y a la fig. 47.
La fig. 20 es un diagrama de flujo del proceso de cálculo de la posición del módulo de datos de eje de orientación en el proceso de búsqueda de módulo de datos.
La primera operación es encontrar un grupo de módulos negros buscando a lo largo del eje de orientación al exterior del símbolo que comienza desde un módulo de orientación interior usado como el módulo de comienzo de búsqueda (S2001). Más específicamente, un grupo consecutivo de módulos negros en el eje de orientación es encontrado basado en los datos de elemento de imagen almacenados en el registro 210 de datos de elementos de imagen de VRAM 106, y la búsqueda de datos de elemento de imagen negros comienza desde el punto central de un módulo de orientación interior. Obsérvese que un grupo de módulos negros como es usado aquí es un grupo de módulos que incluye uno o varios módulos negros consecutivos.
El ángulo del eje de orientación es a continuación corregido basado en el grupo de módulos negros posicionados (S2002). La distorsión en la imagen explorada del símbolo significa que la posición del módulo de orientación encontrado en la operación S304 de la fig. 3 no es necesariamente la posición de un punto central de un módulo de orientación. Por ello, los puntos centrales del módulo de datos no son encontrados necesariamente en el eje de orientación calculado a partir de la posición del punto central del diseño del localizador y la posición del módulo de orientación. Además, incluso si la posición del módulo de orientación es la posición del punto central de un módulo de orientación, los puntos centrales del módulo de datos no son necesariamente encontrados en el eje de orientación en la parte exterior de un símbolo en el que la distorsión de la imagen es grande. Por ello es necesario corregir el ángulo del eje de orientación de modo que el eje de orientación calculado a partir de la posición del módulo de orientación y la posición del punto central del diseño del localizador pase cerca de los puntos centrales de los módulos de orientación y módulos de datos.
La fig. 47 muestra la corrección del ángulo del eje de orientación. Como se ha mostrado en la fig. 47 corregir el ángulo del eje de orientación en la operación S2001 mueve el eje de orientación de modo que pasa cerca de los puntos centrales de los módulos.
A continuación se determina (S2003) si se han encontrado todos los grupos de módulos negros en el eje de orientación. Más específicamente, se ha determinado si el ángulo del eje de orientación estaba corregido basado en todos los grupos de módulos negros. Si no se han buscado todos los grupos de módulos negros en el eje de orientación (S2003 resulta No), el procedimiento vuelve de nuevo a S2001 y las operaciones S2001 y S2002 son repetidas hasta que todos los grupos de módulos negros en el eje de orientación i han sido encontrados.
Si se han encontrado todos los grupos de módulos negros en el eje de orientación (S2003 resulta Si), el eje de orientación i después de que se haya corregido el ángulo del eje de orientación basado en todos los grupos de módulos negros es definido como el eje de orientación corregido (S2004). Es así posible corregir el ángulo del eje de orientación basado en todos los grupos de módulos negros para corregir el eje de orientación i de modo que pase cerca de los puntos centrales de los módulos de datos en el área exterior del símbolo cuando la distorsión de la imagen es
grande.
A continuación se determina (S2005) si se han corregido todos los seis ejes de orientación. Si no se han corregido (S2005 resulta No), el procedimiento vuelve de nuevo a S2001 y las operaciones S2001 a S2004 se repiten hasta que se han corregido los seis ejes de orientación.
Sin embargo, si se han corregido los seis ejes de orientación (S2005 resulta Si), es corregida (S2006) la anchura de todo los módulos reales presentes en los ejes de orientación de ángulo corregido, a continuación es corregida (S2007) la anchura de los módulos candidatos en los eje de orientación de ángulo corregido, y el proceso termina.
Un proceso para corregir el ángulo de los ejes de orientación está descrito en detalle continuación con referencia a la fig. 21, fig. 24, fig. 48, fig. 49, fig. 50, fig. 51 y fig. 52.
La fig. 21 es un diagrama de flujo del proceso de corrección del ángulo del eje de orientación del proceso para calcular posiciones de módulo de datos en los ejes de orientación.
En primer lugar, si el primer punto central corregido del módulo negro más próximo al diseño del localizador en el grupo de módulos es designado punto PO del grupo de módulos negros en el eje de orientación i, la posición del punto P0 es calculada (S2101). Obsérvese que el eje de orientación i en esta operación es cualquiera de los seis ejes de orientación determinados alrededor del punto central del diseño del localizador determinado basado en los seis módulos de orientación. Obsérvese, además, que los números i de eje de orientación aumentan en sentido contrario a las agujas del reloj alrededor del punto central del diseño del localizador, i varía desde 0 a 5, y cuando i = 5, el siguiente eje de orientación en (i+1) es el eje de orientación 0. El proceso para calcular la información de posición del punto central del módulo es escrito adicionalmente a continuación con referencia a la
fig. 24.
A continuación, el eje de orientación i es girado en sentido contrario a las agujas del reloj \thetai grados alrededor del punto P0 para obtener el eje de reserva adyacente i', y un grupo de módulos negros que contiene el módulo negro en el que el punto P0 está situado en el eje de reserva adyacente i' es buscado para (S2102). Obsérvese que el ángulo \thetai es un ángulo entre el eje de orientación i y el eje de orientación (i+1).
La fig. 49 muestra la relación entre el eje de orientación i y el eje de reserva adyacente i'. Como se ha mostrado en la fig. 49, el eje de reserva adyacente i' es el eje de orientación i girado en sentido contrario a las agujas del reloj \thetai alrededor del punto P0.
Basado en el grupo de módulos negros situado en el eje de reserva adyacente i', un candidato para el segundo punto central corregido del módulo negro en el que el punto P0 está situado es designado punto P1, y la posición del punto P1 es calculada (S2103).
La fig. 50 muestra el proceso para calcular la situación del punto P1, un candidato para el segundo punto central corregido del módulo. Como se ha mostrado en la fig. 50, la situación del punto P1 es calculada suponiendo que todos los módulos contenidos en el grupo de módulos negros y situados en el eje de reserva adyacente i' tienen el mismo tamaño.
A continuación, el eje de orientación i es girado en el sentido de las agujas del reloj \thetai-1 grados alrededor del punto P0 para obtener el eje de reserva adyacente i'', y es buscado (S2104) un grupo de módulos negros que contiene el módulo negro en el que el punto P0 está situado en el eje de reserva adyacente i''. Obsérvese que el ángulo \thetai-1 es un ángulo entre el eje de orientación i y el eje de orientación (i-1). Además, cuando el eje de orientación i es el eje de orientación 0, el eje de orientación (i-1) es el eje de orientación 5.
Basado en el grupo de módulos negros situado en el eje de reserva adyacente i'', un candidato para el segundo punto central corregido del módulo negro en el que está situado el punto P0 es designado punto P2, y la posición del punto P2 es calculada (S2105).
La fig. 51 muestra el proceso para calcular la posición del punto P2, un candidato para el segundo punto central corregido del módulo. Como se ha mostrado en la fig. 51, la posición del punto P2 es calculada suponiendo que todos los módulos contenidos en el grupo de módulos negros y situados en el eje de reserva adyacente i'' tienen el mismo tamaño.
El ángulo del corrección del eje de reserva adyacente i' y el ángulo de corrección del eje de reserva adyacente i'' son a continuación comparados para detectar el eje con el menor error de corrección (S2106). Si la corrección del ángulo del eje de reserva adyacente i' es menor (S2106 resulta i'), el punto P1 es ajustado al punto P3 donde P3 es el segundo punto central corregido del módulo negro en el que está presente P0 (S2107). Si la corrección de la ángulo del eje de reserva adyacente i'' es menor (S2106 resulta i''), el punto P2 es ajustado al punto P3 donde P3 es el segundo punto central corregido del módulo negro en el que está presente P0 (S2108). La magnitud del error de corrección es evaluada para el número total de módulos contenidos en el grupo de módulos negros en el eje de orientación. En otras palabras, debido a que se ha supuesto que todos los módulos tienen el mismo tamaño, el error disminuye cuando disminuye el número de módulos. En los casos mostrados en la fig. 50 y fig. 51, por ello, P2 es ajustado como el segundo punto central candidato P3 debido a que el número de módulos en el eje de reserva adyacente i' es mayor que el número de módulos en el eje de reserva adyacente i''.
A continuación es encontrado (S2109) el grupo de módulos negros que contiene el módulo negro en el que está presente P3 en el eje de reserva de orientación j, y es calculada (S2110) la posición del punto P, es decir el punto central del módulo negro en el que está presente P3. Obsérvese que el eje de reserva de orientación j es aquí el eje que pasa a través de P3 y el punto central del diseño del localizador.
La fig. 52 muestra el proceso para calcular la posición del punto P, el punto central del módulo. Como se ha mostrado en la figura 52, la posición del punto P central del módulo es calculada suponiendo que todos los módulos contenidos en el grupo de módulos negros contienen el módulo negro en el que está presente P3 y situados en el eje de reserva de orientación j tienen el mismo tamaño.
El eje de orientación k pasa a través del punto P central del módulo y el punto central del diseño del localizador es ajustado al eje de orientación obtenido por corrección del ángulo del eje de orientación i, y el ángulo \alphai entre este eje de orientación k y el eje de orientación horizontal es calculado (S2111). Como se ha mostrado en la fig. 52, la línea que pasa a través del punto P y del punto central del diseño del localizador es de orientación k obtenida por corrección de ángulo del eje de orientación i. Obsérvese que el eje de orientación k y el eje de reserva de orientación j son la misma línea.
La anchura de los módulos negros en el eje de orientación k que constituyen el grupo de módulos negros es a continuación calculada (S2112), y el proceso termina.
La fig. 24 es un diagrama de flujo de un proceso para calcular la posición del punto central de módulos en un eje de orientación particular.
La longitud L del eje de orientación i que cruza un grupo de módulos que comprenden uno o una pluralidad de módulos contiguos es calculada basada en los datos de elementos de imagen almacenados en el registro 210 de datos de elementos de imagen de VRAM 106 (S2401).
La fig. 48 ilustra el proceso para calcular la posición de un punto central de módulo. La fig. 48 (a) muestra el área L en un grupo de módulos en un eje de orientación, y la fig. 48 (b) muestra la posición del punto central de un módulo en el grupo de módulos.
Como se ha mostrado en la fig. 48 (a), la longitud del eje de orientación i que cruza un grupo de módulos de módulos negros es medida basada en los límites entre los elementos de imagen negro y blanco. Si estos puntos son A y B, La longitud del eje de orientación L = línea AB.
Un valor n' (= L/W) es a continuación calculado basado en la anchura W del módulo (calculada en la operación S304 del proceso de búsqueda del módulo de orientación mostrado en la fig. 3) y la longitud recién calculada L. El número n de módulos en el grupo de módulos es a continuación calculado basado en una tabla de valores del límite o el valor redondeado de n' (S2402).
En la fig. 48 (a), n = 2 debido a que hay dos módulos negros en el grupo de módulos.
Finalmente, la posición del punto central del módulo es calculada basada en el orden r de los módulos en el grupo de módulos (S2403) donde r = 1 indica el módulo más próximo al diseño del localizador en el grupo de módulos, y
r = n indica el módulo más alejado del diseño del localizador. Se ha supuesto además que todos los módulos en el grupo de módulos tienen el mismo tamaño, y la posición del punto central del módulo es calculada sobre la suposición de que el eje de orientación i pasa por el punto central de todos los módulos. Más específicamente, el punto en el que la longitud L se divide en (2r-1):(2n-2r+1) es hecho el punto central del módulo r ésimo. Como ha se ha mostrado en la fig. 48 (b), si el punto PO es el punto central del módulo cuando r = 1, el punto PO es el punto que divide la longitud L (segmento de línea AB) 1:3.
La fig. 22 es un diagrama de flujo de un proceso para corregir la anchura de los módulos reales en un eje de orientación en el proceso que calcula posiciones del módulo de datos en un eje de orientación.
El eje de orientación i es buscado empezando desde un módulo de orientación interior y prosiguiendo al exterior del símbolo para encontrar módulos que comprende módulo reales negros (S2201).
Las posiciones de todos los puntos centrales del módulo real en el grupo de módulos posicionado son calculadas (S2202), y la anchura del módulo real es calculada a continuación (S2203).
A continuación se determina (S2204) si hay algunos módulos reales blancos en el interior de los módulos reales negros más próximos al interior del símbolo (más próximo al diseño del localizador) en el eje de orientación i. Si los hay (S2204 resulta Si), La anchura del módulo real negro más próximo al centro del símbolo es hecha la anchura de los módulos reales blancos (S2206).
A continuación, usando el módulo más próximo al exterior del símbolo en el grupo de módulos posicionados del mismo color, se busca el eje de orientación i al exterior del símbolo para un grupo de módulos que comprende módulos reales de un color diferente del color del grupo de módulos encontrados previamente (S2206).
Las posiciones de los puntos centrales de todos los módulos reales que constituyen el grupo de módulos posicionados son calculadas a continuación (S2207), y la anchura del módulo real es calculada (S 2208).
A continuación se determina (S2209) si un grupo de módulos que contiene módulo reales negros se ha encontrado en la parte más exterior del símbolo sobre el eje de orientación i. Si no se ha encontrado (S2209 resulta No), el procedimiento vuelve de nuevo a S2201 y las operaciones S2206 a S2208 son repetidas hasta que un grupo de módulos que contiene un módulo real negro es encontrado en la parte más exterior del símbolo.
Si tal grupo de módulos es encontrado (S2209 resulta Si), a continuación se determina (S2210) si las posiciones de los puntos centrales del módulo real y las anchura de módulo real han sido calculadas para los seis ejes de orientación. Si los cálculos han sido completados para todos los ejes (S 2210 resulta Si), el proceso termina. Si todos los cálculos han sido completados para todos los ejes (S2110 resulta No), el procedimiento vuelve de nuevo a S2201 y las operaciones S2201 a S2209 son repetidas hasta que los cálculos son completados para todos los ejes.
La fig. 23 es un diagrama de flujo de un proceso para corregir la anchura de módulos candidato sobre el eje de orientación en el proceso para calcular posiciones de módulo de datos en un eje de orientación.
En primer lugar, de los seis ejes de orientación, el eje de orientación que tiene la menor de distorsión es detectado y usado como eje m de orientación de referencia (S2301). Por ejemplo, la magnitud de distorsión Ei de un eje de orientación puede ser calculada usando la ecuación siguiente basada en la relación Ri entre la anchura Wi de los módulos reales negros presentes en la parte más exterior del símbolo y calculada por corrección de anchura de los módulos reales como se ha mostrado en la fig. 22, y la anchura WOi de los módulos reales calculada por lo operación S304 del proceso de búsqueda de módulo de orientación mostrado en la fig. 3. Obsérvese que i es el número del eje.
Ei = | Ri_1 | = | Wi/W0i_1 |
La distorsión Ei es así calculada para cada uno de los seis eje de orientación, y el eje de orientación con la menor distorsión es usado como eje m de orientación de referencia.
Las posiciones de todos los módulos reales y módulos candidato no calculadas en el eje m de orientación de referencia son calculadas a continuación (S2302) suponiendo que la anchura de los módulos reales y la anchura de los módulos candidato no calculadas sobre el eje m de orientación de referencia son la misma que la anchura de los módulos reales negros en la parte más exterior del símbolo. la posición del punto central del módulo en el eje de orientación (i+1) es también considerada basada en las posiciones de los puntos centrales de los módulos reales y módulos candidato sobre el eje de orientación i donde el eje m de orientación de referencia es el eje de orientación i.
La distancia L desde el punto central de un módulo real negro en la parte más exterior del símbolo en el eje de orientación (i+1) al punto central de un módulo candidato en la parte más exterior del área del símbolo candidato en el eje de orientación (i+1) es a continuación calculada basado en la posición del punto central del diseño del localizador, la posición de un módulo en el eje de orientación i, y la posición del punto central de un módulo real negro en la parte más exterior del símbolo en el eje de orientación (i+1) (S2303). Obsérvese que el área de símbolo candidato es el área mostrada en la fig. 46 como se ha descrito antes.
Las posiciones de los puntos centrales de todos los módulos reales y módulos candidato no calculadas sobre el eje de orientación (i=1) son calculadas a continuación basadas en la longitud L calculada y el número de módulos a partir del módulo real negro en la parte más exterior del símbolo sobre el eje de orientación (i+1) al módulo candidato en la parte más exterior del área del símbolo candidato sobre el eje de orientación (i+1) (S2304).
La fig. 53 muestra el proceso para calcular la longitud L y las posiciones de los puntos centrales del módulo no calculadas.
Como se ha mostrado en la fig. 53, el punto 0 es el punto central del diseño del localizador, el punto A' es el punto central del módulo real negro en la parte más exterior del símbolo sobre el eje de orientación (i+1), el punto B' es el centro del módulo candidato en la parte más exterior del área del símbolo candidato en el eje de orientación (i+1), y el punto B es el centro del módulo candidato en la parte más exterior del área del símbolo candidato sobre el eje de orientación i. El punto central del módulo sobre el eje de orientación i en el que el número de módulos desde el módulo de orientación interior sobre el eje de orientación i es igual al número de módulos desde el módulo de orientación interior y sobre el eje de orientación (i+1) al módulo real negro en la parte más exterior del símbolo es ajustado como punto A. Obsérvese que la distancia L desde el punto A' a B' puede ser calculada usando la siguiente ecuación:
L = A'B' = AB * (OA'/OA)
Las posiciones del punto central del módulo son a continuación calculadas suponiendo que los módulos (n+1) desde el módulo en el que el punto A' está presente al módulo en el que el punto B' está presente son las mismas.
Por último, se ha comprobado si las posiciones de los puntos centrales de todos los módulos reales y módulos candidato para los seis ejes ha sido calculadas (S2305). si el proceso de cálculo es completado para todos los ejes de orientación (S2305 resulta Si), el proceso termina. Si no (S2305 resulta No), el procedimiento vuelve de nuevo a S2303, y las operaciones S2303 y S2304 se repiten para completar los cálculos para todos los ejes después de sustituir el eje de orientación (i+1) como eje de orientación i para las siguientes series de cálculos.
A continuación se ha descrito un ejemplo de la operación de conversión de caracteres de datos.
La fig. 25 es un diagrama de flujo del proceso de conversión de caracteres de datos en el proceso de descodificación del símbolo MaxiCódigo de acuerdo con el presente invento.
La conversión de caracteres de datos convierte los módulo de datos en un diseño de bit de 1 y 0 donde el negro tiene un valor de bit de 1 y el blanco tiene un valor de bit de 0, los datos del diseño de bit son a continuación convertidos a una palabra código, y las palabras código son a continuación convertidas en caracteres de datos.
La fig. 54 muestra una palabra código típica.
Como se ha mostrado en la fig. 54, una palabra código es un tren de bits que representa un carácter de datos. Cada palabra código consiste de seis bits de datos procedentes de los seis módulos de datos, y dos bits 0. La conversión de la palabra código calcula así los valores i y j donde los datos de bit respectivos corresponden al j ésimo bit de la palabra código i ésima.
El diseño de bit para la posición del módulo de datos en el símbolo MaxiCódigo es almacenado como los datos de bit en una tabla de matriz de bits (S2501), denominada a continuación como BT(n,m) donde n es un entero desde 0 a 29 y m es un entero desde 0 a 32.
La fig. 55 muestra una tabla de matriz de bits. La fig. 55 (a) muestra la relación entre la posición de un módulo de datos en un símbolo MaxiCódigo, y la posición de los datos almacenados en la tabla de matriz de bits. La fig. 55 (b) muestra los datos almacenados en la tabla de matriz de bits.
Como se ha mostrado en la fig. 55, el valor del tercer módulo de datos desde la derecha y el tercero desde la parte superior en el símbolo MaxiCódigo es almacenado en BT(27,2) en la tabla de matriz de bits.
Basado en los elementos de datos de la tabla de matriz de bits de palabra código, los datos de bit almacenados en la tabla de matriz de bits son convertidos al bit j ésimo en la palabra de código i ésima durante la conversión de la palabra de código (S2502).
La fig. 56 muestra una tabla de matriz de bits de palabras código típica denominada como CT(n,m) donde n es un entero desde 0 a 29 y m es un entero desde 0 a 32.
La relación entre los valores i y j en la operación de conversión de palabra código y la tabla de matriz de bits de palabras código CT(n,m) está mostrada por las siguientes ecuaciones:
i = [CT(n,m)/256]
j = CT(n,m) - I*256
Como se ha mostrado en la fig. 56, el valor de esta tabla de matriz de bits de palabras código en CT(n,m) es 8452. Como resultado, i = [8452/256] = 33, y j = 8452-33*256 = 4, y esta celda almacena los datos de bit para el 4º bit en la palabra de código 33ª. Debe observarse que un proceso de software es llevado a cabo sustituyendo para la palabra código i ésima el valor obtenido desplazando (5-j)bits El valor de bit 1 o 0 expresado por BT(n,m).
La fig. 57 muestra la relación entre los datos de bit almacenados en la tabla de matriz de bits y los elementos de datos en la tabla de matriz de palabras código.
Como se ha mostrado en la fig. 57, los datos de bit en BT(n,m) son el valor del bit j ésimo en la palabra código i ésima calculados a partir de la tabla de palabras código CT(n,m). Por ejemplo, BT(27,2) = 0 que es el valor del 4º bit en la 33ª palabra de código.
A continuación, se determina si todos los módulos han sido convertidos en palabras código (S2503). Si todos los módulos de datos ha sido convertidos (S2503 resulta Si), la operación S2504 es realizada. Si no lo han sido (S2503 resulta No), se repiten las operaciones S2501 y S2502 hasta que todos los módulos de datos son convertidos a palabras código.
Las secuencias de bits perdidas como resultado de las operaciones de conversión y los datos perdidos son a continuación recuperados a los datos correctos por un proceso de corrección de error (S2504). También hay casos en los que el proceso de corrección de error no puede recuperar los datos correctos debido a la cantidad de secuencias de bit perdidas. Por ello se determina si los datos correctos han sido recuperados por un proceso de corrección de error (S2505). Si los datos correctos fueron recuperados (S2505 resulta Si), todas las palabras código son convertidas a caracteres de datos basado en la tabla de conjunto de caracteres por defecto (S2506) y el proceso de descodificación termina. La fig. 58 muestra parte de la tabla de conjuntos de caracteres por defecto.
Si los datos correctos no pudieran haber sido recuperados (S2505 resulta No), se pone en marcha un proceso de manipulación de error debido a que el símbolo MaxiCódigo podría no ser reconocido (S2507), y el proceso de descodificación termina.
Un medio de almacenamiento de datos de acuerdo con el presente invento almacena un programa ejecutable por ordenador que incluye las operaciones del método de lectura de código de barras bidimensional descritas antes.
Un medio de almacenamiento de datos de acuerdo con el presente invento puede ser un Disco Compacto, disco flexible, disco duro, disco magneto-óptico, Disco Versátil Digital (DVD), cinta magnética, tarjeta de memoria u otro medio legible por ordenador.
El presente invento proporciona los siguientes beneficios.
El centro del diseño del localizador de un símbolo de código de barras, por ejemplo un símbolo MaxiCódigo puede ser encontrado rápida y fácilmente en la imagen explorada del símbolo de código de barras buscando los diseños de detección a partir de líneas de exploración que atraviesan la imagen para la detección de un diseño que coincide con un diseño de referencia específico a lo largo de una línea de exploración que pasa a través del punto central del diseño del localizador. Así puede ser fácilmente descodificado un código de barras bidimensional.
Es también posible acortar el tiempo requerido para procesar una imagen explorada de un símbolo de código de barras, por ejemplo un símbolo MaxiCódigo, que es usado en esta descripción como ejemplar de un símbolo de código de barras bidimensional, por medio de un método de búsqueda de módulo de orientación que detecta los datos de elemento de imagen que coinciden con un diseño de plantilla de color en los datos de elemento de imagen del intervalo de búsqueda del módulo de orientación de la imagen explorada del símbolo de código de barras, y a continuación encuentra todos los músculos de orientación basados en los datos de elemento de imagen detectados.
Es también posible descodificar un símbolo de código de barras, por ejemplo un símbolo MaxiCódigo a partir de una imagen explorada capturada en una ángulo en vez directamente desde el frente haciendo que la ecuación que describe la relación entre el diseño del localizador del símbolo de código de barras real y el diseño del localizador en una imagen explorada del símbolo de código de barras capturado desde una ángulo se aproxime a la ecuación de un círculo y una elipse, y la imagen que corrige la imagen explorada basada en esta ecuación.
Además, el método de corrección de distorsión del presente invento es adecuado para distorsión plana en la imagen explorada de un símbolo de código de barras, por ejemplo un símbolo MaxiCódigo, y puede corregir los ejes de orientación de una imagen explorada distorsionada corrigiendo los ángulos de los ejes de modo que pasen a través de los centros de los módulos de orientación y módulos de datos basados en las áreas de los grupos de módulos negros presentes en el eje de orientación que pasa por el punto central del diseño de localizador y módulos de orientación.
Es también posible corregir la información de posición y forma de módulos en los ejes de orientación de una imagen explorada distorsionada basado en las áreas de los grupos de módulos del mismo color en los ejes de orientación corregidos, y corregir las posiciones de módulos de datos entre ejes de orientación basado en la información de posición y forma de los módulos en los eje de orientación corregidos.
Es también aún posible acortar el tiempo necesario para descodificar la imagen explorada de un símbolo de código de barras, por ejemplo un símbolo MaxiCódigo, que es usado como representativo de símbolos de código de barras bidimensional, detectando la información de posición y forma del módulo basado en la corrección de imagen explorada antes descrita.
Es aún posible también acortar el tiempo necesario para descalificar la imagen explorada de un símbolo de código de barras, por ejemplo un símbolo MaxiCódigo, que es usado como representativo de símbolos de un código de barras bidimensional, por medio de un método de conversión de caracteres de datos que almacena datos de bit procedentes de los módulos de datos detectados en una tabla de matriz de bits, convierte los datos de bits a palabras código basado en una tabla de matriz de palabras código, y a continuación convierte los datos de bit en caracteres de datos.
Un programa que realiza las operaciones del método de lectura de código de barras bidimensional del presente invento puede también ser escrito como un producto de software a un medio de almacenamiento de datos, que puede ser fácilmente distribuido y comercializado.
Es también posible proporcionar un aparato de lectura de código de barras bidimensional que tiene medios para realizar el método de lectura de código de barras bidimensional del presente invento.

Claims (16)

1. Un método de lectura de un símbolo de código de barras bidimensional que tiene módulos de orientación y un diseño de localizador con un punto central, comprendiendo el método: 1) explorar el símbolo de código de barras para obtener una imagen explorada, 2) determinar el punto central del diseño de localizador en una imagen explorada del símbolo de código de barras y 3) realizar una operación de búsqueda de módulo de datos para calcular la información de posición y forma para todos los módulos que constituyen el símbolo de código de barras, caracterizado porque la operación 3) incluye calcular un eje de orientación que pasa a través de un módulo de orientación y el punto central del diseño de localizador en una imagen explorada del símbolo de código de barras por: (a) cálculo, basado en la información de posición del diseño de localizador y en la información de posición del módulo de orientación y en la información de forma, de la información de posición y forma para una pluralidad de módulos que constituyen un grupo de módulos en dicho eje de orientación; (b) detección de un diseño de bit de varios de dichos módulos de datos sobre el eje de orientación calculado por la operación de calcular la posición del módulo del eje de orientación; (c) cálculo, basado en la información de posición y forma de los distintos módulos de un grupo de módulos sobre el eje de orientación calculados por la operación de calcular la posición del módulo del eje de orientación, de la información de posición para una pluralidad de módulos que constituyen un grupo de módulos entre ejes de orientación adyacentes; y (d) detección del diseño de bit de los distintos módulos de datos presentes entre los ejes de orientación calculados por la operación de calcular la posición del módulo del eje de orientación.
2. El método de la reivindicación 1ª, en el que la operación (a) comprende las siguientes operaciones: (a1) corregir el ángulo del eje de orientación de modo que el eje de orientación pase por los puntos centrales de la pluralidad de módulos que constituyen un grupo de módulos sobre el eje de orientación; (a2) calcular la información de posición para una pluralidad de módulos reales presentes sobre un eje de orientación corregida por la operación de corrección del ángulo del eje de orientación y basada en la información de posición calculada corrigiendo la altura del módulo, que es información de forma para la pluralidad de módulos reales; (a3) calcular la información de posición para una pluralidad de módulos candidatos presentes en el eje de orientación basado en la información de posición y forma de módulo real calculada por la operación de corregir la anchura del módulo real sobre el eje de orientación.
3. El método de la reivindicación 2ª, en el que la operación (a1) comprende las siguientes operaciones: (a11) calcular, basado en el área de un grupo de módulos negros que contiene uno o una pluralidad de módulos negros contiguos presentes en el eje de orientación, un primer punto central corregido de un módulo negro más próximo al diseño de localizador en el grupo de módulos negros; (a12) calcular un segundo punto central de módulo negro corregido basado en el área de un grupo de módulos negros que comprende uno o una pluralidad de módulos negros contiguos que incluyen el módulo negro presente en un eje de reserva vecino paralelo a un eje de orientación adyacente al eje de orientación y que pasa a través del primer punto central de módulo negro corregido calculado por la operación de cálculo del primer punto central corregido; (a13) calcular un punto central de módulo negro basado en el segundo punto central de módulo negro corregido calculado por lo operación de cálculo del segundo punto central corregido, y el área de un grupo de módulos negros que comprende uno o una pluralidad de módulos negros contiguos que incluyen el módulo negro presente en un eje de reserva de orientación que pasa por el punto central del diseño de localizador; y (a14) calcular un ángulo de corrección de un eje de orientación que pasa por el punto central del diseño del localizador y el punto central del módulo negro calculado por lo operación de cálculo del punto central.
4. El método de la reivindicación 2ª, en el que la operación (a2) comprende una operación para calcular un punto central y anchura de módulo de módulos reales que constituyen un grupo de módulos reales del mismo color basado en el área de un grupo de módulos reales del mismo color que comprenden uno o una pluralidad de módulos reales del mismo color contiguos en el mismo eje de orientación.
5. El método de la reivindicación 2ª, en el que la operación (a3) comprende las siguientes operaciones: (a31) detectar un eje de orientación de referencia como el eje de orientación que tiene la menor corrección de todos los ejes de orientación; (a32) calcular los puntos centrales y las anchura de módulo para una pluralidad de módulos candidatos presentes en un eje de orientación y basado en la información de forma para el módulo negro más alejado del diseño de localizador sobre el eje de orientación de referencia detectado por la operación de detección del eje de orientación de referencia; y (a33) calcular puntos centrales y anchura de módulo para una pluralidad de módulos candidatos presentes en un eje de orientación distinto del eje de orientación de referencia basado en las posiciones de módulo real y módulo candidato sobre el eje de orientación de referencia.
6. El método según cualquiera de las reivindicaciones 1ª a 5ª, en el que el símbolo de código de barras codifica datos por medio de celdas alternativas negra y blanca.
7. El método según cualquiera de la reivindicaciones 1ª a 5ª, en el que el símbolo del código de barras es un símbolo de MaxiCódigo.
8. Un aparato para leer un símbolo de código de barras bidimensional que comprende una unidad de búsqueda de módulo de datos para calcular la información de posición y forma para todos los módulos que constituyen el símbolo de código de barras, incluyendo la unidad (206) de búsqueda de módulo de datos medios para explorar el símbolo del código de barras para obtener una imagen explorada, una unidad (203) de búsqueda de diseño de localizador para determinar el punto central del diseño de localizador en una imagen explorada del símbolo de código de barras caracterizado porque la unidad de búsqueda de módulo de datos incluye además medios para calcular un eje de orientación que pasa a través de un módulo de orientación y el punto central del diseño de localizador en una imagen explorada de símbolo de código de barras que comprende: una unidad de cálculo de la posición del módulo en el eje de orientación para calcular, basado en la información de posición del diseño de localizador y en la información de posición del módulo de orientación y en información de forma, la información de posición y forma para una pluralidad de módulos que constituyen un grupo de módulos sobre dicho eje de orientación; una unidad para detectar un diseño de bit de módulo de datos sobre el eje de orientación para detectar un diseño de bit de dicha pluralidad de módulos de datos sobre el eje de orientación calculada por la unidad de cálculo de la posición del módulo sobre el eje de orientación; una unidad de cálculo de la posición del módulo sobre el eje de orientación, basado en la información de posición y forma de la pluralidad de módulos de la pluralidad de grupos de módulos sobre el eje de orientación calculadas por la unidad de cálculo de la posición del módulo sobre el eje de orientación, constituyendo la información de posición para una pluralidad de módulos un grupo de módulos entre ejes de orientación adyacentes; y una unidad de detección del diseño de bit del módulo de datos sobre el eje de orientación para detectar el diseño de bit de la pluralidad de módulos de datos presentes entre los ejes de orientación calculada por la unidad de cálculo de la posición del módulo sobre el eje de orientación.
9. El aparato de la reivindicación 8ª, en el que La unidad de cálculo de la posición del módulo sobre el eje de orientación comprende: una unidad de corrección del ángulo del eje de orientación para corregir el ángulo del eje de orientación de modo que el eje de orientación pase por los puntos centrales de la pluralidad de módulos que constituyen un grupo de módulos sobre el eje de orientación; una unidad de corrección de la anchura del módulo real sobre el eje de orientación para calcular la información de posición para una pluralidad de módulos reales presentes sobre un eje de orientación corregida por la unidad de corrección del ángulo del eje de orientación y basada en la información de posición calculada que corrige la anchura de módulo, que es información de forma para la pluralidad de módulos reales; una unidad de corrección de la anchura del módulo candidato sobre el eje de orientación para calcular la información de posición para una pluralidad de módulos candidatos presentes sobre el eje de orientación basada en la información de posición y forma del módulo real calculada por la unidad de corrección de anchura del módulo real sobre el eje de orientación.
10. El aparato de la reivindicación 9ª, en el que la unidad de corrección del ángulo del eje de orientación comprende: una unidad de cálculo del primer punto central corregido para calcular, basado en un área de grupo de módulos negros que contiene uno o una pluralidad de módulos negros contiguos presentes sobre el eje de orientación, un primer punto central corregido de un módulo negro más próximo al diseño de localizador en el grupo de módulos negros; una unidad de cálculo del segundo punto central corregido para calcular un segundo punto central del módulo negro corregido basado en el área de un grupo de módulos negros que comprende uno o una pluralidad de módulos negros contiguos que incluyen el módulo negro presente en un eje de reserva vecino paralelo a un eje de orientación adyacente al eje de orientación y que pasa a través del primer punto central del módulo negro corregido calculado por la unidad de cálculo del primer punto central corregido; una unidad de cálculo de punto central para calcular un punto central de módulo negro basado en el segundo punto central de módulo negro corregido calculado por la unidad de cálculo del segundo punto central corregido, y el área de un grupo de módulos negros que comprende uno o una pluralidad de módulos negros contiguos que incluyen el módulo negro presente en un eje de reserva de orientación que pasa por el punto central del diseño de localizador; una unidad de cálculo del ángulo de corrección del eje de orientación para calcular un ángulo de corrección de un eje de orientación que pasa por el punto central del diseño de localizador y el punto central del módulo negro calculado por la unidad de cálculo del punto central.
11. El aparato de la reivindicación 9ª, en el que la unidad de corrección de la anchura del módulo real sobre el eje de orientación comprende una unidad de cálculo para calcular un punto central y la anchura de módulo de módulos reales que constituyen un grupo de módulos reales del mismo color basado en el área del grupo de módulos reales del mismo color que comprende uno o una pluralidad de módulos reales del mismo color contiguos sobre el mismo eje de orientación.
12. El aparato de la reivindicación 9ª, en el que la unidad de corrección de la anchura de módulo candidato sobre el eje de orientación comprende: una unidad de detección del eje de orientación de referencia para detectar un eje de orientación de referencia como el eje de orientación que tiene la menor corrección de todos los eje de orientación; una primera unidad de cálculo para calcular puntos centrales y anchuras de módulo para una pluralidad de módulos candidatos presentes en un eje de orientación basado en la información de forma para el módulo negro más alejado del diseño de localizador sobre el eje de orientación de referencia detectada por la unidad de detección del eje de orientación de referencia; y una segunda unidad de cálculo para calcular puntos centrales y anchuras de módulo para una pluralidad de módulos candidatos presentes sobre un eje de orientación distinto del eje de orientación de referencia basado en las posiciones de módulo real y módulo candidato sobre el eje de orientación de referencia.
13. El aparato según cualquiera de las reivindicaciones 8ª a 12ª, en el que el símbolo del código de barras codifica datos por medio de celdas alternativas negra y blanca.
14. El aparato según cualquiera de la reivindicaciones 8ª a 12ª, en el que el símbolo del código de barras es un símbolo de MaxiCódigo.
15. Un medio de almacenamiento de datos legible por ordenador que pone en práctica un programa para llevar a cabo operaciones del método según se ha definido en cualquiera de la reivindicaciones 1ª a 7ª.
16. El medio de almacenamiento de datos según la reivindicación 15ª, en el que el medio de almacenamiento de datos es un Disco Compacto, disco flexible, disco duro, disco magneto-óptico, Disco Versátil Digital (DVD), cinta magnética, o tarjeta de memoria.
ES01108629T 2000-04-06 2001-04-05 Metodo y aparato para leer un simbolo de codigo de barra bidimensional y medio de almacenamiento de datos. Expired - Lifetime ES2256106T3 (es)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
JP2000-104970 2000-04-06
JP2000104970A JP2001291051A (ja) 2000-04-06 2000-04-06 二次元バーコードの読み取り方法及び装置、情報記録媒体
JP2000201279A JP2002024752A (ja) 2000-07-03 2000-07-03 二次元コード読み取り方法、情報記録媒体及び二次元コード読み取り装置
JP2000-201279 2000-07-03
JP2000-237086 2000-08-04
JP2000237086A JP2002049889A (ja) 2000-08-04 2000-08-04 二次元コード読み取り方法、情報記録媒体及び二次元コード読み取り装置
JP2000355940A JP2002157549A (ja) 2000-11-22 2000-11-22 二次元コード読み取り方法、情報記録媒体及び二次元コード読み取り装置
JP2000-355940 2000-11-22

Publications (1)

Publication Number Publication Date
ES2256106T3 true ES2256106T3 (es) 2006-07-16

Family

ID=27481198

Family Applications (1)

Application Number Title Priority Date Filing Date
ES01108629T Expired - Lifetime ES2256106T3 (es) 2000-04-06 2001-04-05 Metodo y aparato para leer un simbolo de codigo de barra bidimensional y medio de almacenamiento de datos.

Country Status (8)

Country Link
US (1) US6604682B2 (es)
EP (1) EP1143372B1 (es)
KR (1) KR100579356B1 (es)
CN (1) CN1334544A (es)
AT (1) ATE321310T1 (es)
DE (1) DE60118051T2 (es)
ES (1) ES2256106T3 (es)
HK (1) HK1043852A1 (es)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6705526B1 (en) * 1995-12-18 2004-03-16 Metrologic Instruments, Inc. Automated method of and system for dimensioning objects transported through a work environment using contour tracing, vertice detection, corner point detection, and corner point reduction methods on two-dimensional range data maps captured by an amplitude modulated laser scanning beam
US20060082557A1 (en) * 2000-04-05 2006-04-20 Anoto Ip Lic Hb Combined detection of position-coding pattern and bar codes
US20020016750A1 (en) * 2000-06-20 2002-02-07 Olivier Attia System and method for scan-based input, storage and retrieval of information over an interactive communication network
US6666377B1 (en) 2000-07-18 2003-12-23 Scott C. Harris Bar code data entry device
AU2003287495A1 (en) * 2002-11-04 2004-06-07 Deepq Technologies, A General Partnership Document processing based on a digital document image input with a confirmatory receipt output
ATE465468T1 (de) * 2002-12-03 2010-05-15 Silverbrook Res Pty Ltd Rotationssymmetrische markierungen
JP4133298B2 (ja) * 2002-12-19 2008-08-13 株式会社リコー デジタルカメラ装置
CN2591284Y (zh) * 2002-12-27 2003-12-10 萧呈方 散热风扇
JP4257132B2 (ja) * 2003-02-21 2009-04-22 富士通株式会社 バーコード読取装置およびバーコード読取方法
SE0301143D0 (sv) * 2003-04-17 2003-04-17 C Technologies Ab Sätt och anordning för inläsning av data
US7156311B2 (en) * 2003-07-16 2007-01-02 Scanbuy, Inc. System and method for decoding and analyzing barcodes using a mobile device
US7387250B2 (en) * 2003-12-04 2008-06-17 Scanbuy, Inc. System and method for on the spot purchasing by scanning barcodes from screens with a mobile device
US20050227217A1 (en) * 2004-03-31 2005-10-13 Wilson Andrew D Template matching on interactive surface
US7296747B2 (en) 2004-04-20 2007-11-20 Michael Rohs Visual code system for camera-equipped mobile devices and applications thereof
KR100560330B1 (ko) * 2004-04-21 2006-03-30 에이디정보통신 주식회사 색상 보정이 가능한 대용량 2차원 칼라 바코드인코딩/디코딩 시스템 및 그 방법
US8316068B2 (en) 2004-06-04 2012-11-20 Telefonaktiebolaget Lm Ericsson (Publ) Memory compression
US7593593B2 (en) * 2004-06-16 2009-09-22 Microsoft Corporation Method and system for reducing effects of undesired signals in an infrared imaging system
US7309015B2 (en) * 2004-07-14 2007-12-18 Scanbuy, Inc. Mobile device gateway providing access to instant information
US20060050961A1 (en) * 2004-08-13 2006-03-09 Mohanaraj Thiyagarajah Method and system for locating and verifying a finder pattern in a two-dimensional machine-readable symbol
US7201321B2 (en) * 2004-08-27 2007-04-10 Symbol Technologies, Inc. Electro-optically reading direct part markings on workpieces by image capture
JP4089670B2 (ja) * 2004-09-09 2008-05-28 村田機械株式会社 文書管理装置
US7578436B1 (en) 2004-11-08 2009-08-25 Pisafe, Inc. Method and apparatus for providing secure document distribution
WO2006089247A2 (en) * 2005-02-16 2006-08-24 Pisafe, Inc. Method and system for creating and using redundant and high capacity barcodes
WO2006105686A1 (en) * 2005-04-06 2006-10-12 Eidgenössische Technische Hochschule Zürich Method of executing an application in a mobile device
WO2006112866A2 (en) 2005-04-13 2006-10-26 Scanbuy, Inc. Visual code system for camera-equipped mobile devices and applications thereof
US7775428B2 (en) 2005-05-06 2010-08-17 Berkun Kenneth A Systems and methods for generating, reading and transferring identifiers
JP4670464B2 (ja) * 2005-05-10 2011-04-13 日本電気株式会社 情報読取装置、情報処理装置、情報通信システム、情報読取方法、及びプログラム
WO2006127608A2 (en) * 2005-05-23 2006-11-30 Nextcode Corporation Efficient finder patterns and methods for application to 2d machine vision problems
US7911444B2 (en) * 2005-08-31 2011-03-22 Microsoft Corporation Input method for surface of interactive display
US7974435B2 (en) * 2005-09-16 2011-07-05 Koplar Interactive Systems International Llc Pattern-based encoding and detection
US7942340B2 (en) * 2005-11-24 2011-05-17 Canon Kabushiki Kaisha Two-dimensional code, and method and apparatus for detecting two-dimensional code
WO2007075719A2 (en) * 2005-12-16 2007-07-05 Pisafe, Inc. Method and system for creating and using barcodes
US7584891B2 (en) * 2005-12-19 2009-09-08 Pitney Bowes Inc. Black fluorescent optical codes and process for printing and reading
US8016187B2 (en) * 2006-02-21 2011-09-13 Scanbury, Inc. Mobile payment system using barcode capture
CN100377167C (zh) * 2006-03-17 2008-03-26 北京紫光捷通科技有限公司 一种用于二维码识别的二维码区域精确定位方法
US8150163B2 (en) 2006-04-12 2012-04-03 Scanbuy, Inc. System and method for recovering image detail from multiple image frames in real-time
US7857219B2 (en) * 2006-05-26 2010-12-28 Symbol Technologies, Inc. Imaging reader target object finder system
WO2008073455A1 (en) * 2006-12-11 2008-06-19 Koplar Interactive Systems International, L.L.C. Spatial data encoding and decoding
US8212857B2 (en) 2007-01-26 2012-07-03 Microsoft Corporation Alternating light sources to reduce specular reflection
WO2008118425A1 (en) 2007-03-23 2008-10-02 Ltt, Ltd Method and apparatus for using a limited capacity portable data carrier
US7780084B2 (en) 2007-06-29 2010-08-24 Microsoft Corporation 2-D barcode recognition
US8472039B2 (en) * 2007-07-10 2013-06-25 Samsung Electronics Co., Ltd. Copy apparatus having a copy prevention function and a copy prevention method thereof
JP5432714B2 (ja) * 2007-08-03 2014-03-05 学校法人慶應義塾 構図解析方法、構図解析機能を備えた画像装置、構図解析プログラム及びコンピュータ読み取り可能な記録媒体
US20090111584A1 (en) * 2007-10-31 2009-04-30 Koplar Interactive Systems International, L.L.C. Method and system for encoded information processing
MX2010008335A (es) * 2008-01-29 2011-02-22 Veritec Inc Simbolo bidimensional y metodo para leerlo.
JP5567908B2 (ja) * 2009-06-24 2014-08-06 キヤノン株式会社 3次元計測装置、その計測方法及びプログラム
WO2011011051A2 (en) * 2009-07-20 2011-01-27 The Regents Of The University Of California, Santa Cruz Image-based barcode reader
US8531401B2 (en) 2009-08-13 2013-09-10 Hewlett-Packard Development Company, L.P. Computer accessory device
US20110066504A1 (en) * 2009-09-17 2011-03-17 Ehud Chatow System for providing promotion information
US8788325B2 (en) * 2009-11-30 2014-07-22 Ncr Corporation Techniques for generating a product path with custom advertisements
CN101882220B (zh) * 2010-06-01 2013-07-17 福建新大陆电脑股份有限公司 一种基于动态模板的条码图像校正方法及校正点获取方法
KR101109510B1 (ko) * 2010-07-02 2012-01-31 (주) 애니모비 2차원 바코드 인식방법
US9396421B2 (en) 2010-08-14 2016-07-19 Rujan Entwicklung Und Forschung Gmbh Producing, capturing and using visual identification tags for moving objects
FR2968796B1 (fr) 2010-12-10 2014-04-25 Samuel Boury Procede de detection d'un marqueur appose sur la surface d'un objet et systeme de mise en oeuvre
FR2968797A1 (fr) * 2010-12-10 2012-06-15 Samuel Boury Procede de generation d'un marqueur a apposer sur la surface d'un objet
AU2010257441B2 (en) * 2010-12-24 2012-09-20 Canon Kabushiki Kaisha Method, apparatus and system for identifying candidate pairs of finder patterns of a barcode
WO2012136902A1 (fr) 2011-04-05 2012-10-11 Franck Guigan Code-barres de sécurité
KR101865197B1 (ko) * 2011-11-29 2018-07-16 삼성전자주식회사 휴대용 단말기에서 코드 이미지를 획득하기 위한 장치 및 방법
CN102708349B (zh) * 2012-05-11 2014-11-05 深圳市天朗时代科技有限公司 一种矩阵式二维码的解码方法
EP2711866A1 (en) * 2012-09-21 2014-03-26 Biomerieux Method and system for detecting a 2D barcode in a circular label
US9171203B2 (en) * 2013-09-10 2015-10-27 Dropbox, Inc. Scanbox
JP6393226B2 (ja) * 2015-03-31 2018-09-19 日本電産サンキョー株式会社 スタック型バーコード読取装置およびスタック型バーコード読取方法
US9760819B2 (en) 2015-12-14 2017-09-12 International Business Machines Corporation Encoding and decoding data in two-dimensional symbology
EP3199953B1 (en) * 2016-02-01 2021-03-24 Roche Diagniostics GmbH Method for teaching positioning of a bar code scanner and apparatus for processing a sample or reagent
CN106156684B (zh) * 2016-06-30 2019-01-18 南京理工大学 一种二维码识别方法及装置
CN111291584B (zh) 2016-07-22 2023-05-02 创新先进技术有限公司 识别二维码位置的方法及其系统
US9928632B1 (en) 2017-06-14 2018-03-27 Capital One Services, Llc Systems and methods for generating and reading intrinsic matrixed bar codes
CN107590522B (zh) * 2017-08-23 2020-08-21 阿里巴巴集团控股有限公司 一种识别码生成及识别的方法及装置
US10802498B2 (en) 2018-05-30 2020-10-13 Datalogic Ip Tech S.R.L. Target direction estimation using centroid follower
CN110332897A (zh) * 2019-08-08 2019-10-15 珠海博明视觉科技有限公司 一种提高系统对小圆测量精度的补偿模型
JP7408334B2 (ja) 2019-10-03 2024-01-05 Thk株式会社 画像処理装置及び移動体制御システム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4889367A (en) * 1988-10-07 1989-12-26 Frito-Lay, Inc. Multi-readable information system
US5189292A (en) * 1990-10-30 1993-02-23 Omniplanar, Inc. Finder pattern for optically encoded machine readable symbols
JP2764224B2 (ja) 1993-03-01 1998-06-11 ユナイテツド パーセル サービス オブ アメリカ インコーポレイテツド 補足目標の位置を求める方法および装置
US5591956A (en) * 1995-05-15 1997-01-07 Welch Allyn, Inc. Two dimensional data encoding structure and symbology for use with optical readers
GB9408626D0 (en) * 1994-04-29 1994-06-22 Electronic Automation Ltd Machine readable binary code
DK0764307T3 (da) * 1994-06-07 1999-05-10 United Parcel Service Inc Fremgangsmåde og anordning til at dekode todimentionale symboler i det rumlige domæne
US5515447A (en) 1994-06-07 1996-05-07 United Parcel Service Of America, Inc. Method and apparatus for locating an acquisition target in two-dimensional images by detecting symmetry in two different directions
JP3448120B2 (ja) * 1994-12-27 2003-09-16 シャープ株式会社 デジタル情報記録担体
US5637849A (en) * 1995-05-31 1997-06-10 Metanetics Corporation Maxicode data extraction using spatial domain features
US5786583A (en) * 1996-02-16 1998-07-28 Intermec Corporation Method and apparatus for locating and decoding machine-readable symbols
US5742041A (en) * 1996-05-29 1998-04-21 Intermec Corporation Method and apparatus for locating and decoding machine-readable symbols, including data matrix symbols
US5761219A (en) * 1996-07-12 1998-06-02 Intermec Technologies Corporation Error correction for PDF417 and other machine-readable symbologies
ATE206833T1 (de) * 1997-11-17 2001-10-15 Datalogic Spa Maxicode-lokalisierungsverfahren
US6267296B1 (en) * 1998-05-12 2001-07-31 Denso Corporation Two-dimensional code and method of optically reading the same
TW434520B (en) * 1998-06-30 2001-05-16 Sony Corp Two-dimensional code recognition processing method, device therefor and medium
US6412695B1 (en) * 2000-04-07 2002-07-02 Motorola, Inc. Optical code and delineator apparatus and method

Also Published As

Publication number Publication date
EP1143372A3 (en) 2002-04-24
DE60118051T2 (de) 2006-08-31
US6604682B2 (en) 2003-08-12
EP1143372A2 (en) 2001-10-10
DE60118051D1 (de) 2006-05-11
CN1334544A (zh) 2002-02-06
EP1143372B1 (en) 2006-03-22
HK1043852A1 (zh) 2002-11-08
KR100579356B1 (ko) 2006-05-12
ATE321310T1 (de) 2006-04-15
KR20010098464A (ko) 2001-11-08
US20020020747A1 (en) 2002-02-21

Similar Documents

Publication Publication Date Title
ES2256106T3 (es) Metodo y aparato para leer un simbolo de codigo de barra bidimensional y medio de almacenamiento de datos.
US11151346B2 (en) Methods and apparatus for decoding under-resolved symbols
US5951056A (en) Information reproduction system for reproducing a two-dimensional, optically readable code
AU668332B2 (en) Polygonal information encoding article, process and system
KR102427514B1 (ko) 머신 판독 물품들을 위한 폐색 탄성 광학 코드들
US6053407A (en) Maxicode data extraction using spatial domain features
EP0672994A1 (en) Method and apparatus for reading an optically two-dimensional code
WO2018204306A1 (en) Method and apparatus for label detection
ES2616146B2 (es) Método de detección y reconocimiento de marcadores visuales de largo alcance y alta densidad
CN101833641B (zh) 条码解码芯片
ES2947177T3 (es) Células y matrices de células codificadas
CN101908122A (zh) 条空边界处理模块、条码识别装置及其方法
ES2649573T3 (es) Procedimiento de detección de un marcador colocado en la superficie de un objeto y sistema de aplicación
US10733489B2 (en) Optically readable tags and methods and systems for decoding an optically readable tag
US7950581B2 (en) System and method of acquiring a machine-readable symbol
CN101908126B (zh) Pdf417条码解码芯片
Ahsan et al. Grid-Index-Based Three-Dimensional Profilometry
ES2817652B2 (es) Codigo visual, procedimiento para generar un codigo visual y procedimiento para decodificar un codigo visual
CN101833643B (zh) 复合码条码解码芯片
ES2848842T3 (es) Método de detección de código de barras
JP2006331214A (ja) 物体識別タグ及びこれを使用した物体識別システム
JP2002157549A (ja) 二次元コード読み取り方法、情報記録媒体及び二次元コード読み取り装置
KR101479899B1 (ko) 점 패턴 검색 장치 및 방법
ES2817926B2 (es) Codigo visual y procedimiento para codificar y decodificar una imagen bidimensional
CN101833642A (zh) MicroPDF417条码解码芯片