ES2333851T3 - Metodo para conseguir un codigo de posicion y decodificar un codigo de posicion. - Google Patents

Metodo para conseguir un codigo de posicion y decodificar un codigo de posicion. Download PDF

Info

Publication number
ES2333851T3
ES2333851T3 ES02746246T ES02746246T ES2333851T3 ES 2333851 T3 ES2333851 T3 ES 2333851T3 ES 02746246 T ES02746246 T ES 02746246T ES 02746246 T ES02746246 T ES 02746246T ES 2333851 T3 ES2333851 T3 ES 2333851T3
Authority
ES
Spain
Prior art keywords
sequence
numbers
partial
sequences
primary
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
ES02746246T
Other languages
English (en)
Inventor
Mats Petter Pettersson
Andreas Bjorklund
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.)
Anoto AB
Original Assignee
Anoto AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Anoto AB filed Critical Anoto AB
Application granted granted Critical
Publication of ES2333851T3 publication Critical patent/ES2333851T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0354Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
    • G06F3/03545Pens or stylus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/0304Detection arrangements using opto-electronic means
    • G06F3/0317Detection arrangements using opto-electronic means in co-operation with a patterned surface, e.g. absolute position or relative movement detection for an optical mouse or pen positioned with respect to a coded surface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/0304Detection arrangements using opto-electronic means
    • G06F3/0317Detection arrangements using opto-electronic means in co-operation with a patterned surface, e.g. absolute position or relative movement detection for an optical mouse or pen positioned with respect to a coded surface
    • G06F3/0321Detection arrangements using opto-electronic means in co-operation with a patterned surface, e.g. absolute position or relative movement detection for an optical mouse or pen positioned with respect to a coded surface by optically sensing the absolute position with respect to a regularly patterned surface forming a passive digitiser, e.g. pen optically detecting position indicative tags printed on a paper sheet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/06009Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
    • G06K19/06037Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking multi-dimensional coding
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C21/00Systems for transmitting the position of an object with respect to a predetermined reference system, e.g. tele-autographic system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Position Input By Displaying (AREA)
  • Image Processing (AREA)
  • Error Detection And Correction (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

Un método, que se lleva a cabo en un dispositivo de codificación, para determinar un código (410) de posición que codifica al menos una primera coordenada x para un primer punto y para una primera dimensión en una superficie, que comprende: recibir al menos la primera coordenada x como la señal de entrada al dispositivo (600) de codificación, determinar, basándose en la coordenada x recibida, una secuencia parcial de una secuencia (PD) de números primaria, secuencia parcial que tiene una primera longitud predeterminada y corresponde a la coordenada x recibida, usándose dicha secuencia de números primaria para codificar posiciones en la primera dimensión y teniendo la propiedad de que cada secuencia parcial de una primera longitud predeterminada tiene un lugar determinado inequívocamente en la secuencia de números primaria; caracterizado porque al menos una secuencia parcial de la secuencia (PD) de números primaria puede mapearse con una combinación de una secuencia parcial de cada una de al menos dos secuencias (A1-A4) de números secundarias, cada una de las cuales tiene una base menor que la base de la secuencia de números primaria y porque el dispositivo de codificación usa dichas al menos dos secuencias (A1-A4) de números secundarias para la determinación de la secuencia parcial de la secuencia de números primaria correspondiente a la coordenada x.

Description

Método para conseguir un código de posición y decodificar un código de posición.
Campo de la invención
La presente invención se refiere a códigos de posición.
Técnica de antecedente
El uso de códigos de posición en una superficie como herramienta para grabar de forma electrónica información que está escrita o dibujada en la superficie ya es conocido.
En el documento US 5.477.012 se describe un lápiz que detecta ópticamente un código de posición que consiste en diversos símbolos en una superficie. El lápiz decodifica el código de posición y genera pares de coordenadas que describen el movimiento del lápiz por la superficie. Cada posición se codifica mediante un símbolo específico. Si el código de posición va a codificar muchas posiciones, esto da como resultado la desventaja de que los símbolos se vuelven complejos y por tanto, difíciles de detectarse correctamente. Por otro lado, si los símbolos se hacen más grandes, disminuye la resolución.
En el documento WO 92/17859 se describe un código de posición en el que cada posición se codifica mediante una pluralidad de símbolos y cada símbolo contribuye a la codificación de más de una posición. Por tanto se codifican posiciones adyacentes mediante símbolos parcialmente compartidos.
En el anexo A del documento WO 92/17859 se proporciona el siguiente ejemplo de cómo puede formarse el código de posición y de cómo puede decodificarse una posición.
Pártase de las siguientes secuencias m: s=(0,0,1,0,1,1,1) y t=(0,1,1). Fórmese un patrón de codificación de posición haciendo que una primera columna en el patrón sea la misma que la secuencia s. Con el fin de formar las siguientes columnas, se mira la secuencia t. Si el primer elemento en la secuencia t es 0, entonces la segunda columna consiste en la secuencia s. Si en su lugar el primer elemento es 1, entonces la segunda columna consiste en la secuencia s con un desplazamiento circular de un paso. Se forman columnas subsiguientes de una manera correspondiente según los valores de los elementos en la secuencia t. Por tanto se obtiene el siguiente patrón:
1
Supóngase ahora que se quiere encontrar la posición de una superficie parcial con el siguiente subconjunto del patrón.
2
La primera columna en el subconjunto es (1,0,1). Esta subsecuencia aparece en la posición 2 en la secuencia s. Los desplazamientos circulares en el subconjunto son (1,1). Esta subsecuencia aparece en la posición 1 en la secuencia t. Los desplazamientos acumulados en el patrón son (0,0,1,2) y por tanto la posición vertical del subconjunto es 2+0=2. La posición del subconjunto en la superficie parcial es por tanto (1,2).
Este patrón tiene la ventaja de que puede codificarse basándose en usar símbolos sencillos, por ejemplo un primer símbolo para un cero y un segundo símbolo para un uno.
Una propiedad interesante de un patrón de codificación de posición de este tipo es, sin embargo, la capacidad de codificar un gran patrón con muchas posiciones únicas de modo que puede llevarse a cabo una determinación de posición en una superficie lo más grande posible. En el ejemplo anterior, el tamaño en la dirección vertical está limitado por la longitud de la secuencia s y el tamaño en la dirección horizontal por la longitud de la secuencia t. La longitud de estas secuencias no puede aumentarse sin límite ya que las secuencias deben tener la propiedad de que si se toma una subsecuencia de k bits, entonces esta subsecuencia sólo debe producirse en un único lugar en la secuencia. Un aumento en la longitud de la secuencia puede conllevar por tanto un aumento en la longitud de la subsecuencia y de este modo un aumento en la superficie parcial que necesita grabarse con el fin de poder determinar una posición.
En los documentos WO 01/26032, WO 01/26033 y WO 01/26034 se describe otro patrón de codificación de posición que se basa en los mismos principios básicos que los del documento WO 92/17859, pero que permite la codificación de un mayor número de posiciones.
En una realización de este patrón, se usa una primera secuencia de números que tiene la propiedad de que el lugar en la secuencia de números de cada subsecuencia o secuencia parcial de una longitud predeterminada se determina inequívocamente y esta secuencia de números se imprime en columnas sobre la superficie con diversas rotaciones o desplazamientos circulares. Sin embargo, en lugar de usar una segunda secuencia binaria (la secuencia t en el documento WO 92/17859) se permiten mayores desplazamientos circulares entre columnas adyacentes.
La superficie se divide adicionalmente en ventanas de código. Cada ventana de código comprende al menos tres columnas con secuencias de números y solapa las ventanas de código adyacentes por una secuencia de números. Usando los desplazamientos entre columnas adyacentes, se codifica la posición de la ventana de código a lo largo del eje x. Los desplazamientos entre las secuencias de números en una ventana de código definen por tanto una posición, teniendo la primera ventana de código la posición 0, la siguiente 1, y así sucesivamente.
Cuando se lee el código de posición, el dispositivo de lectura grabará sin embargo con frecuencia partes de dos ventanas de código. Para poder determinar la posición de las ventanas de código con respecto a la imagen leída del código de posición, se usan desplazamientos en un primer intervalo para indicar el desplazamiento menos significativo para la posición y desplazamientos en un segundo intervalo para otros desplazamientos en la posición.
La codificación de una coordenada y se lleva a cabo de una manera correspondiente.
Se ha encontrado que este código de posición funciona muy bien y permite la codificación de un número muy grande de posiciones. Existe, sin embargo, un deseo de mejorar las propiedades de corrección de errores del código de posición.
Supóngase, por ejemplo, que el último subconjunto que codifica inequívocamente una posición en la dirección x comprende cinco desplazamientos. A partir de estos cinco desplazamientos puede determinarse una posición de una ventana de código. Las posiciones de dos ventanas de código adyacentes difieren por tanto habitualmente sólo en el último dígito (el último desplazamiento). Para tres ventanas de código consecutivas los desplazamientos pueden ser, por ejemplo, como sigue:
25,15,34,18,3; 25,15,34,18,4; 25,15,34,18,5.
\vskip1.000000\baselineskip
Un método común para detectar errores se basa en leer más información de la necesaria para la tarea en cuestión. Con la codificación mencionada anteriormente, es difícil leer información adicional que es adecuada para su uso para la detección de errores. Supóngase, por ejemplo, que un dispositivo de lectura graba los dos últimos desplazamientos de la primera de las tres ventanas de código anteriores, y los tres primeros desplazamientos de la siguiente ventana de código, esto es 18,3,25,15,34. Supóngase además que se produce un error que significa que se graba 18,4,25,15,34. La lectura de, por ejemplo, dos desplazamientos más, uno a cada lado de los cinco, no proporciona información adicional que posibilite detectar el error.
Si, cuando se codifica en la dirección x, se usa una secuencia de números con la propiedad de que cada secuencia parcial (subsecuencia) de una longitud predeterminada tiene un lugar determinado inequívocamente en la secuencia de números, se facilita una corrección de errores. Por otro lado, surge el problema práctico de que esta secuencia de números debe tener una base grande, esto es, que debe permitir grandes desplazamientos, si debe ser posible codificar muchas posiciones. Entonces se requiere una tabla muy grande para encontrar el lugar en la secuencia de números al que corresponde una secuencia parcial leída, que a su vez requiere una gran cantidad de memoria. Sin embargo, es deseable que la decodificación pueda llevarse a cabo en, por ejemplo, un dispositivo de lectura de mano con una memoria y capacidad de procesador limitadas. También es deseable que la codificación pudiera llevarse a cabo en dispositivos con una memoria y capacidad de procesador limitadas.
El documento US 5.661.506 da a conocer una superficie codificada ópticamente para lápices digitales. Cada píxel de la superficie está compuesto por un punto de referencia más grande ubicado centralmente y un número menor de puntos de codificación de posición alrededor, dispuestos en una matriz cuadrada. Una de las esquinas se deja vacía para proporcionar una indicación de la orientación del píxel. El código es indicativo de la identidad de superficie y de la posición. El lápiz detecta el patrón con un dispositivo sensor óptico integrado y lo transmite a un ordenador.
El documento US 5.675.129 proporciona información de fondo sobre recuperación de pista inicial aplicada a movimiento bidimensional y determinación de componentes de desplazamiento.
A partir del documento WO 99/23604 se conoce una combinación de un portapapeles y un digitalizador. Una hoja de papel se coloca sobre el portapapeles y el digitalizador realiza un seguimiento del movimiento del lápiz sobre el papel para introducir datos en la copia digital del documento. Cada hoja tiene un código de barras de identificación leído por el lector de código de barras integrado en el lápiz.
Sumario de la invención
Un objetivo de la presente invención es por tanto reducir los problemas mencionados anteriormente proporcionando un código de posición que hace posible codificar un número muy grande de posiciones, que permite una corrección de errores, pero aún así no requiere el almacenamiento de grandes tablas para la codificación y decodificación y que por tanto puede realizarse en dispositivos con una cantidad limitada de memoria y/o capacidad de procesador limitada.
Otro objetivo es hacer posible una decodificación eficaz y correcta de un código de posición que codifique un número muy grande de posiciones.
La invención está definida por las reivindicaciones.
Dado que la secuencia de números primaria se forma por secuencias de números secundarias con una base menor, preferiblemente como mucho la base 5, la tabla que se requiere para convertir lugares en la secuencia de números primaria en secuencias parciales de la misma puede sustituirse por varias tablas más pequeñas que juntas requieren menos memoria. Por tanto en la práctica se vuelve factible codificar coordenadas para un número muy grande de posiciones.
El uso de una secuencia de números primaria para codificar posiciones en al menos una primera dimensión también hace posible conseguir un código de posición con propiedades muy buenas de detección de errores y corrección de errores. Más específicamente, cada número en la secuencia de números primaria se codifica usando secuencias parciales de una secuencia de números principal cíclica. Si se graban ahora secuencias parciales de la secuencia de números principal que son más largas de lo que se requiere para la determinación de posición, puede conseguirse una detección de errores y una corrección de errores diseñando la secuencia de números principal de modo que las secuencias parciales más largas no se producen en determinadas versiones incorrectas, por ejemplo con una cifra incorrecta.
También para la decodificación se usa el hecho de que la secuencia de números primaria se forma por secuencias de números secundarias con bases menores, pudiendo llevarse a cabo la decodificación usando varias tablas más pequeñas y usando el teorema chino del resto. La decodificación puede realizarse de este modo en, por ejemplo, un dispositivo de mano con una memoria y capacidad de procesador limitadas.
La codificación de posición puede utilizarse para codificar posiciones tanto en una como en dos dimensiones. La codificación en la segunda dimensión puede llevarse a cabo usando los mismos principios y con secuencias de números diferentes a las utilizadas para la codificación en la primera dimensión o con las mismas secuencias de números.
Breve descripción de los dibujos
Ahora se describirá la presente invención usando una realización a modo de ejemplo y con referencia a los dibujos que se acompañan, en los que:
la figura 1 muestra esquemáticamente cómo se lleva a cabo la codificación en la dirección x de posiciones en una primera dirección,
la figura 2 muestra esquemáticamente cómo una secuencia PD de números primaria se forma por cuatro secuencias A1-A4 de números secundarias,
la figura 3 muestra un ejemplo de codificación gráfica del código de posición,
la figura 4 muestra un producto con un código de posición ampliado,
la figura 5 muestra cómo pueden grabarse símbolos adicionales para fines de corrección de errores,
la figura 6 es un diagrama de flujo y muestra un ejemplo de cómo puede determinarse el código de posición,
la figura 7 es un diagrama de flujo y muestra un ejemplo de cómo se puede decodificar el código de posición, y
la figura 8 muestra esquemáticamente un dispositivo que puede usarse para la lectura y la decodificación del código de posición.
Descripción de realizaciones
A continuación se describirán los principios generales para la codificación de posición según la invención usando un ejemplo específico. A continuación, se describe cómo puede implementarse en la práctica la codificación y la decodificación. A continuación se describe un ejemplo de un dispositivo de lectura que puede usarse para la decodificación del código de posición. Finalmente, se describen realizaciones alternativas.
\vskip1.000000\baselineskip
Principios generales para la codificación de posición
El código de posición se usa para codificar posiciones en una o más dimensiones. Con el fin de simplificar la descripción, la codificación de posición se considera en primer lugar en una primera dimensión, que en este ejemplo es en la dirección x. Se usa una secuencia de números principal cíclica para la codificación en esta dirección, secuencia de números principal cíclica que tiene la propiedad de que el lugar en la secuencia de números principal cíclica de cada secuencia parcial de una longitud predeterminada se determina inequívocamente. En este ejemplo, la longitud predeterminada es 6. Por tanto, si se toman seis números consecutivos de cualquier lugar en la secuencia de números principal cíclica, entonces estos seis números sólo se producirán una vez en la secuencia de números principal en este orden. La propiedad también vale si el final de la secuencia de números principal está conectado al inicio de la secuencia de números principal. La secuencia de números principal se denomina por tanto cíclica. En este ejemplo, se usa una secuencia de números principal binaria. Si debe determinarse inequívocamente el lugar de una secuencia parcial con seis números, la secuencia de números principal puede tener por tanto una longitud máxima de 2^{6}= 64 y las secuencias parciales de longitud 6 pueden tener los lugares 0-63 en la secuencia de números principal. Sin embargo, si se selecciona una secuencia de números principal de longitud 63, se obtienen propiedades mejoradas de corrección de errores, tal como se describirá a continuación. En lo sucesivo, se supone por tanto que la longitud de la secuencia de números principal es 63 y que por tanto define lugares únicos en el intervalo de 0-62. Con esta longitud de la secuencia de números principal es factible en la práctica tener una tabla que convierta cada secuencia parcial en un lugar en la secuencia de números principal y viceversa.
Supóngase que el comienzo de la secuencia de números principal es la siguiente:
0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,1,0...
\vskip1.000000\baselineskip
La secuencia parcial 0,0,0,0,0,0 tiene entonces, por ejemplo, el lugar inequívoco 0, la secuencia parcial 1,1,1,1,1,0 tiene el lugar inequívoco 9 y la secuencia parcial 1,1,1,0,1,0 tiene el lugar inequívoco 11 en la secuencia de números principal.
La codificación de posición se basa en utilizar diferentes rotaciones o desplazamientos circulares de la secuencia de números principal cíclica. Con el fin de codificar posiciones en la dirección x, la secuencia de números principal se imprime o dispone de alguna manera diferente, se rota o se desplaza circularmente de diversas maneras, en columnas por la superficie, esto es, en la dirección y ortogonal a la dirección en la que van a codificarse posiciones. La secuencia de números principal puede imprimirse de manera repetida en la misma columna, lo que se requiere si van a codificarse más posiciones en la dirección y de lo que corresponde a la longitud de la secuencia de números principal. La misma rotación de la secuencia de números principal se usa entonces para todas las repeticiones. Sin embargo, pueden usarse diferentes rotaciones en diferentes columnas.
La figura 1 muestra esquemáticamente una hoja de papel 1 con siete columnas x - x+6. Sólo se imprimen los primeros números en las diferentes rotaciones de las secuencias de números principales. Una secuencia entera de números principal se marca esquemáticamente mediante un recuadro B. Adicionalmente, en la figura 1 la primera secuencia S parcial de seis números se marca en cada columna mediante un recuadro dibujado con líneas discontinuas. Como se mencionó anteriormente, cada una de las secuencias S parciales tiene un lugar determinado inequívocamente en la secuencia de números principal.
Cada par de columnas adyacentes define un número d de diferencia. El número d de diferencia se proporciona mediante la diferencia entre los lugares en la secuencia de números principal de la primera secuencia parcial en las columnas respectivas. Si en su lugar se toma la diferencia entre los lugares de las secuencias parciales un paso hacia abajo en las columnas, el resultado será el mismo ya que los lugares se desplazan de la misma manera. El número d de diferencia será por tanto el mismo, independientemente de a qué "altura" en las columnas se comparan los lugares de las secuencias parciales en la secuencia de números principal. Para cada par de columnas el número d de diferencia es por tanto constante en la dirección y.
La primera secuencia parcial de la secuencia de números principal en la columna x+5 es 0,0,0,0,0,0, lo que corresponde al lugar 0 en la secuencia de números principal. La primera secuencia parcial de la secuencia de números principal en la columna x+6 es 1,0,0,0,1,1, lo que corresponde al lugar 57 en la secuencia de números principal. La diferencia o el desplazamiento circular entre estas columnas es por tanto 57, de modo que d(x+5) = 57. Debe señalarse que los números de diferencia se determinan módulo de la longitud de la secuencia de números principal.
\newpage
Los números de diferencia que pueden codificarse de esta manera están en el intervalo 0 - K-1, donde K es la longitud de la secuencia de números principal que en este caso es K=63 y con la que es posible por tanto codificar números de diferencia en el intervalo de 0-62. Seleccionando diferentes rotaciones de la secuencia de números principal, es posible crear una secuencia de números de diferencia, denominada en lo sucesivo secuencia de números primaria o secuencia de números de diferencia primaria, que tiene la propiedad de que cada secuencia parcial de una longitud predeterminada tiene un lugar determinado inequívocamente en la secuencia de números primaria. En este ejemplo, la longitud predeterminada es 5. Dado que cada secuencia parcial que consiste en cinco números de diferencia tiene un lugar determinado inequívocamente en la secuencia de números de diferencia primaria, esto puede usarse para codificar posiciones en la dirección x. En la figura 1, las secuencias parciales S(x) - S(x+5) codificarán por tanto cinco números de diferencia d(x) - d(x+4) que proporcionan una secuencia parcial de la secuencia de números primaria.
También debe señalarse que en la práctica las secuencias parciales no se imprimen normalmente con sus valores explícitos, sino con una codificación gráfica.
Las columnas de los números binarios de la secuencia de números principal forman una matriz, que en lo sucesivo se denominará la matriz x.
Si la longitud de la secuencia de números principal es K, la base en la secuencia de números de diferencia primaria será igual a K y su longitud máxima será K^{s}, esto es, en este caso 63^{5}. Sin embargo, en la práctica no es factible usar una tabla para convertir secuencias parciales en lugares en la secuencia de números de diferencia primaria y viceversa para una base que sea tan grande. Sin embargo, si la base se reduce con el fin de poder usar tablas manejables, se reducirá el número de posiciones que pueden codificarse.
Este problema se soluciona formando la secuencia de números de diferencia primaria con secuencias de números de diferencia más cortas, que en lo sucesivo se denominan secuencias de números de diferencia secundarias o secuencias de números secundarias, y usando las secuencias de números de diferencia secundarias, para las que las secuencias parciales y sus lugares pueden disponerse en tablas más pequeñas, cuando se codifica y decodifica el código de posición, con el fin de determinar la secuencia parcial en la secuencia de números de diferencia primaria que corresponde a una coordenada x particular y viceversa.
Las secuencias de números de diferencia secundarias se pueden determinar como sigue:
En primer lugar, los números de diferencia se permiten sólo en un intervalo que es tal que el número de diferentes números de diferencia puede factorizarse en al menos dos factores. En el ejemplo con una secuencia de números principal de longitud 63, se permiten números de diferencia sólo en un intervalo de longitud 54. De hecho, el número 54 puede factorizarse como 2*3*3*3. Como alternativa, podrían seleccionarse 60 números de diferencia, esto es, 5*3*2*2 números de diferencia; sin embargo, con el fin de que las tablas sean lo más pequeñas posibles, puede ser apropiado seleccionar números que proporcionen factores lo más pequeños posible.
En segundo lugar, se forma el mismo número de secuencias de números de diferencia secundarias que el número de factores en los que puede factorizarse el número de diferentes números de diferencia. En este ejemplo, el número de secuencias de números de diferencia secundarias es por tanto igual a cuatro.
Adicionalmente, supóngase que cada factor forma una base en su secuencia de números de diferencia secundaria respectiva. En este ejemplo, se obtiene por tanto una secuencia de números de diferencia secundaria con la base dos y tres secuencias de números de diferencia secundarias con la base tres.
La longitud máxima de las secuencias de números de diferencia secundarias es por tanto 32 y 243 respectivamente si las secuencias de números de diferencia secundarias también deben tener la propiedad de que una secuencia parcial de longitud cinco deba tener un único lugar en la secuencia de números de diferencia secundaria. Con tales longitudes de las secuencias de números de diferencia secundarias, es factible en la práctica convertir secuencias parciales en lugares y viceversa. Si en su lugar se hubiera elegido usar 60 números de diferencia, se habría tenido una secuencia de números de diferencia secundaria con la base 5 y por tanto una longitud máxima de 3125, lo que proporciona una tabla que ocupa considerablemente más memoria, pero que, sin embargo, sigue siendo manejable.
Finalmente, se selecciona la longitud de las secuencias de números de diferencia secundarias de modo que las longitudes son relativamente primas en pares. Esto significa que para cada par de secuencias de números de diferencia secundarias la longitud de una secuencia de números de diferencia no debe tener ningún factor en común con la longitud de la segunda secuencia de números de diferencia. Esto significa adicionalmente que si cada una de las secuencias de números de diferencia se repite, entonces no se producirá la misma combinación de una secuencia parcial a partir de cada secuencia de números de diferencia secundaria hasta después de L=l_{1}*l_{2}*...*l_{m} lugares, donde l_{1} es la longitud de la secuencia 1 de números de diferencia secundaria, l_{2} es la longitud de la secuencia 2 de números de diferencia secundaria, y así sucesivamente, hasta l_{m} que es la longitud de la última secuencia de números de diferencia secundaria. Si hay sólo dos secuencias de números secundarias, evidentemente, L=l_{1}*l_{2}.
Esto se ilustra esquemáticamente en la figura 2. En la parte superior se muestra la secuencia PD de números primaria que discurre en una secuencia larga con números de diferencia que en este caso sólo se indican mediante X. Por debajo se muestran esquemáticamente las secuencias A1-A4 de números secundarias. Las líneas verticales muestran dónde comienzan de nuevo las secuencias de números. Una secuencia parcial de la secuencia de números primaria y las secuencias parciales correspondientes de las secuencias de números secundarias se indican mediante líneas discontinuas. Puede observarse que las secuencias parciales corresponden a diferentes lugares en las secuencias de números secundarias.
La representación de secuencias parciales de la secuencia de números de diferencia primaria mediante combinaciones de secuencias parciales de las secuencias de números de diferencia secundarias es, en este ejemplo, biyectiva. Sin embargo, esto no es necesario.
La codificación de posición en una segunda dimensión, por ejemplo en la dirección y en este caso, puede llevarse a cabo según el mismo principio que la codificación de posición en la primera dimensión. La secuencia de números principal se dispone entonces con diferentes desplazamientos circulares en filas sobre la superficie, esto es, en la dirección x en la figura 1. Los números de diferencia se definen entre filas adyacentes y estos números de diferencia forman una secuencia de números de diferencia primaria, que puede formarse por secuencias de números de diferencia secundarias. Es posible usar otra secuencia de números principal, otra secuencia de números de diferencia primaria y otras secuencias de números de diferencia secundarias en la segunda dimensión. Las bases en las diversas secuencias de números también pueden ser otras que las que se usan para la codificación en la primera dimensión. Sin embargo, en este ejemplo se usan las mismas secuencias tanto en la dirección x como en la dirección y. En una manera correspondiente a la codificación en la dirección x, la codificación en la dirección y da como resultado una matriz en la que los valores de las filas consisten en los valores binarios de la secuencia de números principal.
Si las matrices x e y se superponen, para cada punto en la matriz xy resultante habrá un bit de la matriz x y un bit de la matriz y. En cada punto pueden obtenerse por tanto las siguientes cuatro combinaciones de bit: 0,0; 0,1; 1,0; y 1,1. Estas combinaciones diferentes pueden codificarse gráficamente en una superficie, por ejemplo de la manera mostrada en las figuras 3a-d en las que un punto 30 está desplazado en una cualquiera de cuatro direcciones desde un punto 31 nominal en una trama, en la que cada punto nominal corresponde a la intersección entre las líneas 32 en la trama. Este tipo de codificación gráfica se describe con más detalle en el documento WO 01/26032, en el que sin embargo la codificación de posición subyacente real se lleva a cabo de una manera diferente. La codificación que se usa en este ejemplo es como sigue:
3
La trama puede ser virtual, en cuyo caso por tanto no se imprime explícitamente sobre la superficie con el código de posición.
La figura 4 muestra esquemáticamente una parte de un producto en la forma de una hoja de papel 400 con código 410 de posición. Debe señalarse que el código de posición en la figura 4 está ampliado en gran parte en relación a una versión que es adecuada para digitalizar la escritura a mano, por ejemplo. Adicionalmente, la trama 420 se marca en la figura 4. Sin embargo, normalmente ésta no se imprime.
Evidentemente, pueden seleccionarse otros tipos de codificación gráfica para los cuatro pares de bits, como cuatro puntos de diferentes tamaños, cuatro marcas con diferentes formas o cuatro marcas con diferente rotación.
Dado que la codificación de posición se basa en diferencias entre lugares de diferentes secuencias parciales en la secuencia de números principal y las mismas diferencias pueden obtenerse usando diferentes pares de secuencias parciales, puede conseguirse la secuencia de números de diferencia primaria de diversas maneras. Más específicamente, pueden conseguirse 63 "versiones" diferentes de la secuencia de números de diferencia primaria, dependiendo de qué secuencia parcial, estos es, qué rotación de la secuencia de números principal, se selecciona para iniciar la primera columna (x=0) en la matriz x y la primera fila (y=0) en la matriz y. Es por tanto posible generar K*K (en este ejemplo
63 * 63 = 3969) "versiones" diferentes del código de posición que utilizan la misma secuencia de números de diferencia primaria para la codificación en la dirección x y la dirección y. Estas versiones diferentes del código de posición se denominan en lo sucesivo secciones. El número xs de sección para el código de posición en la dirección x y el número ys de sección para el código de posición en la dirección y pueden designarse como una coordenada adicional para la dirección x y la dirección y respectivamente.
En el ejemplo anterior, se usa sólo un subconjunto de los números de diferencia que teóricamente puede codificarse usando la secuencia de números principal, más específicamente sólo 54 de 63 posibles números de diferencia. El intervalo parcial de los números de diferencia teóricamente posibles puede seleccionarse de diversas maneras. En este ejemplo, los números de diferencia próximos a cero (módulo de la longitud de la secuencia de números principal) pueden crear regularidades no deseadas en el código de posición. Por tanto, en este ejemplo se seleccionan números de diferencia en el intervalo (5,58). Esto debe tenerse en cuenta en conexión con la conversión entre la secuencia parcial en la secuencia de números primaria y las secuencias parciales en las secuencias de números secundarias, que se describirán a continuación. Supóngase ahora que el código de posición está dispuesto en una superficie. Un dispositivo de lectura puede tener un sensor de zona que detecte un subconjunto del código de posición correspondiente a al menos 6 * 6 puntos. Cuando se lee, el dispositivo de lectura puede sujetarse rotado de diversas maneras en relación al código de posición. Una imagen del código de posición no revela en sí misma la rotación entre el código de posición y el dispositivo de lectura, ya que el código de posición en principio tiene el mismo aspecto independientemente de si se rota 0, 90, 180 ó 270 grados. Sin embargo, cuando el código de posición se rota, la dirección del desplazamiento de cada punto cambia, lo que a su vez lleva al par de bits que se codifica mediante el desplazamiento del punto que se cambia. Cómo se produce el cambio depende de la conversión entre el desplazamiento y el par de bits. A continuación se supone que la conversión se lleva a cabo como se describió anteriormente. Hay tres casos diferentes:
1) Con una rotación de 180 grados de la imagen del código de posición, la secuencia principal cíclica que codifica las posiciones x e y en el código de posición no rotado se leerá hacia atrás cuando se realice un intento de decodificar la posición basándose en la imagen. Con la combinación de desplazamientos y pares de bits descrita anteriormente, los bits que se decodifican se invertirán ya que el código de posición se lee de arriba abajo.
2) Con una rotación de 90 grados en el sentido de las agujas del reloj, una secuencia de bits que codifica la posición x en la matriz no rotada se leerá hacia atrás cuando se realice un intento de decodificar la posición y en la matriz rotada y se invertirán los bits.
3) Con una rotación de 270 grados en el sentido de las agujas del reloj, una secuencia de bits que codifica la posición y en la matriz no rotada se leerá hacia atrás cuando se realice un intento de decodificar la posición x en la matriz rotada y se invertirán los bits.
Esto significa que si las secuencias parciales en la matriz boca arriba no rotada no se producen nunca invertidas ni hacia atrás en la secuencia de números principal cíclica, entonces puede detectarse una rotación de 90, 180 y 270 grados. Si debe cumplirse una condición de este tipo para la secuencia de números principal, esto significa que su longitud se reduce considerablemente, lo que a su vez significa que pueden codificarse menos posiciones.
Con el fin de solucionar este problema, supóngase en su lugar que se cumple la condición para secuencias parciales más largas de la secuencia de números principal cíclica. Esto significa que deben leerse secuencias parciales más largas de lo que se requiere para la determinación de posición real. En determinados casos, tales secuencias parciales más largas ya están disponibles durante la lectura. Si el menor subconjunto del código de posición que codifica las coordenadas para una posición es cuadrático, como es el caso en este ejemplo, siempre debe leerse una parte del código de posición que es tan grande que también incluye la totalidad del menor subconjunto incluso cuando el dispositivo de lectura se rota 45 grados en relación al código de posición. Por tanto, siempre se incluye al menos una secuencia parcial que es más larga de lo que se requiere para la determinación de posición. Esto se ilustra en la figura 5, en la que cada cuadrado 50 corresponde a un punto y los cuadrados sombreados en gris ilustran que siempre es posible leer al menos una fila y una columna con dos puntos adicionales.
En el ejemplo actual en el que las secuencias parciales de la secuencia de números principal para la determinación de posición tienen la longitud 6, las secuencias parciales de longitud 8 pueden usarse para la detección de la rotación. Estas secuencias parciales de longitud de ocho bits deben tener por tanto la propiedad de que no se produzcan hacia atrás ni invertidas en la secuencia de números principal. Esta propiedad no puede conseguirse para una secuencia de números principal de longitud de 64 bits, que es el motivo por el cual la longitud se selecciona en su lugar de 63.
En dos de las rotaciones mencionadas anteriormente, concretamente 90 y 270 grados, se leerá una secuencia girada de manera correcta y una secuencia girada de manera incorrecta. Con el método descrito anteriormente para una detección de rotación, se detectará un error de rotación en sólo una primera de las dos direcciones de lectura (x e y). En la segunda dirección de lectura se verán los desplazamientos circulares que codifican la posición en la primera dirección de lectura de la imagen rotada de manera correcta.
En el caso de la rotación de 90 grados en el sentido de las agujas del reloj, los desplazamientos circulares que codifican la coordenada y de la imagen rotada de manera correcta se verán cuando se decodifique en la dirección x. Es por tanto la secuencia parcial de la secuencia de números de diferencia primaria de la dirección y que se ve, pero girada de manera incorrecta (discurriendo desde la derecha hacia la izquierda en lugar de desde la izquierda hacia la derecha, que sería el caso de la secuencia parcial de la secuencia de números de diferencia primaria de la dirección x).
En la manera correspondiente, la secuencia parcial de la secuencia de números de diferencia primaria de la dirección x se verá girada de manera incorrecta, cuando se decodifique en la dirección y en el caso de la rotación de 270 grados.
El motivo por el cual las secuencias parciales aparecen giradas de manera incorrecta, es la orientación relativa de las secuencias de números de diferencia primarias de las direcciones x e y. Partiendo del borde del patrón de codificación de posición total, la secuencia de números de diferencia primaria de la dirección x discurre en el sentido de las agujas del reloj, mientras que la secuencia de números de diferencia primaria de la dirección y discurre en el sentido contrario a las agujas del reloj. Si hubieran discurrido en el mismo sentido, no se habrían girado de manera incorrecta, sino de manera correcta en los casos descritos anteriormente.
Hay varias ventajas respecto a permitir que las secuencias de números de diferencia primarias discurran en sentidos opuestos. En los casos en los que la secuencia parcial de la secuencia de números de diferencia primaria se ve girada de manera correcta, se decodificará la coordenada "correcta", pero en el sentido incorrecto. Esta coordenada no sólo se corresponderá con los seis desplazamientos circulares de la secuencia de números de diferencia primaria requeridos para la decodificación, sino que los desplazamientos de alrededor confirmarán que la coordenada decodificada es correcta. En el caso en el que las secuencias de números de diferencia primarias discurren en sentidos opuestos, se decodifican también seis desplazamientos circulares de una secuencia de números de diferencia primaria, pero en el orden incorrecto, dando como resultado una coordenada que estadísticamente no se corresponderá con las partes de alrededor de la secuencia de números de diferencia primaria girada de manera incorrecta. Este hecho da como resultado mejores posibilidades para una detección de errores.
Otra ventaja es que el riesgo de errores sucesivos, es decir, errores donde una pluralidad de imágenes sucesivas se codifica a posiciones adyacentes, es menor si las secuencias de números de diferencia primarias discurren en sentidos opuestos. Más particularmente, conjuntos adyacentes diferentes de seis desplazamientos circulares en una secuencia de números de diferencia primaria girada de manera incorrecta tienden a no codificar coordenadas adyacentes. Los errores sucesivos son más difíciles de detectar que otros errores en los que la extensión de las coordenadas incorrectas es grande.
Los mismos principios básicos como los que se usan para la detección de rotación pueden usarse para una corrección de errores. La secuencia de números principal puede seleccionarse, por ejemplo, de modo que no se produzcan secuencias parciales de alguna longitud predeterminada que sea mayor de lo que se requiere para una determinación de posición con un bit invertido en la secuencia de números principal. Si todos los bits menos uno en una secuencia parcial más larga de este tipo pueden detectarse con seguridad, entonces puede corregirse el bit incorrecto.
Las propiedades de detección de errores y de corrección de errores de este tipo del código de posición pueden mejorarse considerablemente mediante una elección inteligente de la secuencia de números principal. Puede conseguirse una mejora adicional mediante la selección de las secuencias de números de diferencia secundarias.
En el ejemplo anterior, la secuencia de números principal y las secuencias de números de diferencia secundarias se han seleccionado de la manera mostrada en el anexo A.
Las secuencias de números de diferencia secundarias tienen las siguientes propiedades especiales de corrección de errores:
Supóngase que precisamente una de las secuencias parciales de la secuencia de números principal se decodifica de manera incorrecta, lo que lleva a un lugar incorrecto en la secuencia de números principal que se decodifica. Dado que cada lugar se usa para calcular dos números de diferencia adyacentes, éstos se verán afectados por la decodificación incorrecta. Si uno cualquiera de los números de diferencia está fuera del intervalo de números de diferencia usado (5,58), el error se detectará inmediatamente. Sin embargo, si éste no es el caso, al menos una secuencia parcial en la combinación de secuencias parciales de las cuatro secuencias de números de diferencia secundarias en las que resulta la secuencia parcial de la secuencia de números de diferencia primaria se distorsionará en dos posiciones adyacentes. Dado que las dos primeras secuencias A1 y A2 de números de diferencia secundarias tienen la base 3 y el número de números de diferencia sin usar es 9=3*3, una distorsión en una cualquiera de estas dos secuencias tiene la propiedad de que la suma de los dos números afectados siempre tiene el mismo módulo 3 de valor. Las dos secuencias A1 y A2 de números secundarias tienen la propiedad de que para cada secuencia parcial de longitud 7 al menos una de 14 posibles distorsiones de la secuencia parcial que se provocan mediante una única decodificación de lugar incorrecta se encontrará en la secuencia de números secundaria. La tercera secuencia A3 de números secundaria tiene adicionalmente la propiedad de que para cada secuencia parcial de longitud 7 al menos una de 13 posibles distorsiones de la secuencia parcial que se provocan mediante una única decodificación de lugar incorrecta se encontrará en la secuencia de números secundaria. La cuarta secuencia A4 de números secundaria tiene la misma propiedad para al menos siete de 28 posibles distorsiones. Por tanto, la probabilidad de una única decodificación incorrecta de una secuencia parcial de la secuencia de números principal que se detecta es grande.
Con las secuencias seleccionadas, puede codificarse un total de 410815348 posiciones diferentes en cada dimensión de una sección. El número de diferentes secciones que pueden codificarse es 63^{2}, como se mencionó. El número total de posiciones que pueden codificarse es por tanto 63^{2}*410815348^{2} 6,7*10^{20} posiciones.
Si cada posición corresponde a una superficie de 0,3*0,3 mm^{2}, esto corresponde a posiciones únicas que pueden codificarse en una superficie de 60 millones de km^{2}. Esta superficie que se forma por todos los puntos únicos que teóricamente pueden codificarse por medio del código de posición puede denominarse superficie imaginaria. Las coordenadas que codifica el código de posición son por tanto coordenadas absolutas para puntos sobre la superficie imaginaria. Partes del código de posición pueden aplicarse sobre una superficie o base física. El código de posición codifica entonces posiciones sobre esta base. Sin embargo, las coordenadas no están relacionadas normalmente con coordenadas absolutas para las posiciones sobre la base física sino para los puntos sobre la superficie imaginaria.
Ejemplo práctico de codificación de posición
En lo sucesivo, se describirá cómo puede realizarse la codificación de posición en la práctica. Normalmente un usuario no está interesado en imprimir todo el código de posición desde la coordenada 0 y hacia arriba, sino que el usuario ha asignado una zona de coordenadas específica que puede usarse para una aplicación específica. Un problema práctico es entonces cómo debe determinarse el código de posición para esta zona de coordenadas específica.
El código de posición puede determinarse o generarse en un dispositivo de codificación que puede consistir en una unidad de procesador de algún tipo adecuado. La unidad de procesador comprende entonces un procesador real, una memoria operativa y una memoria de programa, donde se almacena un programa informático con instrucciones para determinar el código de posición. La unidad de procesador puede estar incorporada en un ordenador personal típico, en una impresora o en algún otro dispositivo adecuado. El dispositivo de codificación puede consistir alternativamente en un hardware de propósito especial, como un ASIC (Application-Specific Integrated Circuit, circuito integrado de aplicación específica) o una FPGA (Field Programmable Gate Array, disposición de puertas programables en campo) o una unidad similar que puede adaptarse de modo que sea adecuada para esta tarea específica, o en circuitos digitales y/o analógicos o alguna combinación adecuada de los mismos.
La parte más pequeña del código de posición que tiene sentido generar es la parte que codifica las coordenadas para un único punto. En este ejemplo, esto corresponde a generar una matriz con 6*6 valores de desplazamiento que describen el desplazamiento de 6*6 puntos desde sus respectivos puntos de trama en una trama regular.
Sin embargo, con frecuencia se requiere la generación de un subconjunto del código de posición que codifica coordenadas para una pluralidad de puntos, esto es, una matriz mayor.
La señal de entrada al dispositivo de codificación puede comprender en el caso general seis parámetros:
x: que es la coordenada x para la columna más a la izquierda en el código de posición.
y: que es la coordenada y para la fila más superior.
xs: que indica qué sección del código de posición se usa para el código de posición x.
ys: que indica qué sección del código de posición se usa para el código de posición y.
Anchura: que indica el número de columnas en el código de posición, esto es, el tamaño de la zona de coordenadas en la dirección x.
Altura: que indica el número de filas en el código de posición, esto es, el tamaño de la zona de coordenadas en la dirección y.
Estos parámetros se introducen en el dispositivo de codificación por parte de un usuario o desde una unidad externa. Opcionalmente, también puede incluirse un puntero a una matriz que va a rellenarse con valores de desplazamiento. De otro modo, se asigna memoria para la matriz.
La función del dispositivo de codificación es asociar cada punto en la matriz con un valor o de desplazamiento que indica en qué dirección va a desplazarse un punto en el código de posición que se imprime sobre una base.
El valor o de desplazamiento, que en este ejemplo puede ser 0-3, se determina, tal como se describió anteriormente, mediante los bits en un par de bits, en el que el primer bit constituye el valor m_{x} del código de posición x para el punto actual, mientras que el segundo bit constituye el valor m_{y} del código de posición y para el punto actual. Si se conoce el par de bits, el valor de desplazamiento puede consultarse en una tabla O que convierte pares de bits en valores de desplazamiento.
El valor m_{x} del código de posición x depende, por supuesto, del punto en el que se está situado, esto es, de x e y, pero también de la sección actual del código de posición. Por tanto m_{x}=m_{x}(x,xs,y). De una manera correspondiente, el valor m del código de posición y depende del punto en el que se está situado, esto es, x e y, y de la sección actual del código de posición y. Por tanto, m_{y}=m_{y}(y,ys,x).
Si se determina en qué lugar s empieza la secuencia de números principal cíclica en la columna x en la sección xs y se añade y (tomando el resultado módulo de la longitud de la secuencia de números principal), entonces se obtiene el lugar en la secuencia de números principal en el que se está situado en el punto x,y para la codificación x. Entonces puede consultarse en una tabla M de secuencias de números principales qué número (bit) en la secuencia de números principal tiene este lugar y por tanto constituye el valor de la codificación x en el punto x,y. Esto puede expresarse como m_{x}(x,y,xs)=M[(s(x,xs)+y) (mod 63)].
Llevando a cabo las operaciones correspondientes, el valor de la codificación y puede encontrarse en el punto x,y. De esta manera se tiene acceso al par de bits del que va a determinarse el desplazamiento o que va a almacenarse en el punto x,y en la matriz.
Lo que necesita el dispositivo de codificación para calcular es por tanto en primer lugar en qué lugar s comienza la secuencia de números principal para la columna x que es la columna más a la izquierda en el subconjunto del código de posición que codifica las coordenadas para el punto x,y. En otras palabras, puede decirse que el desplazamiento circular se calcula para la secuencia de números principal en la columna x.
Esto puede llevarse a cabo como sigue.
El número d(x) de diferencia se define, tal como se indicó previamente, mediante los lugares en la secuencia de números principal de la primera secuencia parcial en la columna x y la primera secuencia parcial en la columna adyacente x+1. Más específicamente, es el caso que:
d(x)=(s(x+1,xs)-s(x,xs)
\hskip0.3cm
(módulo de la longitud de la secuencia de números principal)
donde s(x,xs) es por tanto el lugar en la secuencia de números principal o el desplazamiento circular para la secuencia de números principal en la columna x en la sección xs del código de posición.
\vskip1.000000\baselineskip
Como una definición, es además el caso que s(0,xs)=xs, esto es, el desplazamiento circular para la secuencia de números principal en la primera columna en el código de posición x define la sección x.
Basándose en esto, s(x,xs) puede determinarse por tanto como:
s(x,xs)=(xs+sum(j=0...x-1)d(j))
\hskip0.3cm
(módulo de la longitud de la secuencia de números principal)
Dado que en la práctica no es posible almacenar la secuencia de números de diferencia primaria que define valores d(x) de los números de diferencia para todas las x para códigos de posición que codifican coordenadas para muchos puntos, ahora se utiliza el hecho de que cada número de diferencia en la secuencia de números de diferencia primaria puede mapearse con una combinación de un número de cada una de las secuencias de números de diferencia secundarias. Aquí en general es el caso que:
d(x)=dc(1,x)+b_{1}*dc(2,x)+...+b_{1}*...*b_{n-1}*dc(n,x)
donde n es el número de secuencias de números de diferencia secundarias y donde b_{i} es la base en la serie i de números de diferencia para i=1 - n-1 y donde dc(i,x) puede determinarse consultando en una tabla DC_{i} con los números en la secuencia i de números de diferencia, donde por tanto dc(i,x)=DC_{i} [x módulo de la longitud de la secuencia i de números de diferencia]. Debe señalarse que si hay sólo dos secuencias de números de diferencia secundarias, entonces evidentemente sólo se usan los primeros dos términos en la expresión anterior.
\vskip1.000000\baselineskip
En el caso en cuestión, se obtiene de este modo:
d(x)=5+dc(1,x)+3*dc(2,x)+9*dc(2,x)+18*dc(3,x)
donde la constante 5 se origina del hecho de que se usan números de diferencia en el intervalo de 5-58.
\vskip1.000000\baselineskip
Dado que las contribuciones de las diversas secuencias de números de diferencia secundarias son independientes, puede calcularse por separado la suma de todos los números de diferencia hasta la diferencia x para cada secuencia de números de diferencia secundaria. En la figura 2 puede observarse como si todos los números de diferencia hasta el lugar x se sumaran por separado para cada secuencia.
En la práctica, esta suma puede determinarse fácilmente mediante el uso de constantes y tablas. Las contribuciones de todos los ciclos de las secuencias de números de diferencia secundarias son de hecho constantes y pueden determinarse por tanto de antemano y almacenarse como constantes. Estas constantes se designan en este caso DCCS_{i}. Las contribuciones de ciclos incompletos de las secuencias de números de diferencia también pueden haberse determinado de antemano y haberse almacenado en tablas, que para cada lugar en la secuencia de números de diferencia secundaria respectiva proporcionan la suma de números de diferencia hasta e incluyendo este lugar. Esta tabla se ha designado en este caso DCICS_{i}. La contribución del término 5 constante es 5*x.
El término sum(j=0...x-1)d(j) puede determinarse por tanto para cada secuencia de números de diferencia secundaria como DCCS_{i}*(x div 1(i))+DCICS_{i}[x(mod 1(i))], donde 1(i) es la longitud de la secuencia i de números de diferencia secundaria.
\newpage
Cuando se ha determinado s(x,xs), puede determinarse por tanto el valor del código de posición x en el punto x,y, tal como se describió anteriormente, mediante el uso del valor conocido de y y mediante consulta de la tabla.
Para las columnas subsiguientes en el código de posición x, evidentemente no es necesario determinar s(x,xs) tal como se describió anteriormente, sino que se utiliza el hecho de que s(x,xs) ya se conoce y se calcula s(x+1,xs) usando las siguientes relaciones.
d(x)=(s(x+1,xs)-s(x,xs))
\hskip0.3cm
(módulo de la longitud de la secuencia de números principal)
\quad
d(x)=5+dc(1,x)+b_{1}*dc(2,x)+...+b_{1}*b_{2}*b_{m-1}*dc(m,x)
\quad
dc(i,x)=DC_{i} [x módulo de la longitud de la secuencia i de números de diferencia]
\vskip1.000000\baselineskip
Este procedimiento se repite entonces para el número requerido de columnas según el parámetro de entrada "anchura".
Se determina s(y,ys) de una manera correspondiente a s(x,xs) y, usando el parámetro x de entrada, también puede determinarse el valor del código de posición y en el punto x,y.
Cuando se han obtenido ambos valores, el desplazamiento en el punto x,y puede determinarse consultándose en la tabla O.
Con el fin de codificar posiciones, el dispositivo de codificación puede usar por tanto las siguientes tablas y constantes:
M: números en la secuencia de números principal en diferentes lugares en la secuencia
O: el desplazamiento (0-3) para diferentes pares de bits
DC_{i}: números en la secuencia i de números de diferencia secundaria en diferentes lugares en la secuencia
DCICS_{i}: la suma de los números en cada uno de los ciclos incompletos de la secuencia i de números de diferencia secundaria.
\vskip1.000000\baselineskip
Adicionalmente, pueden almacenarse las siguientes constantes:
DCCS_{i}: la suma de todos los números en la secuencia i de números de diferencia secundaria
1(i): la longitud de la secuencia i de números de diferencia secundaria
K: la longitud de la secuencia de números principal.
\vskip1.000000\baselineskip
En la figura 6 se muestra un sencillo diagrama de flujo para la codificación de posición. En primer lugar, en la etapa 600, se recibe la señal de entrada en forma de x, y, xs, ys, anchura, altura. A continuación, la matriz x y la matriz y pueden determinarse en paralelo o secuencialmente con o bien x antes de y o viceversa. Esto se indica en el diagrama de flujo mediante los flujos paralelos. En la etapa 605, se determina en primer lugar el desplazamiento circular s(x,sx) para la primera columna en la codificación de posición x. A continuación, en la etapa 610, se determina el desplazamiento circular s(x+1,xs) para la segunda columna. A continuación, se aplica x=x+1 en la etapa 615 y en la etapa 620 se investiga si los desplazamientos circulares se han determinado para toda la anchura, esto es, para todas las columnas. Si éste no es el caso, el flujo retrocede a la etapa 610 y se repiten esta etapa y la etapa 615. Si éste es el caso, los valores de bit en la matriz x se determinan en la etapa 625 mediante la consulta de la tabla. De una manera correspondiente, los valores de bit para la matriz y se determinan en las etapas 630-650. Finalmente, los desplazamientos para la matriz xy se determinan en la etapa 655 mediante consultas de la tabla.
Esto, por supuesto, es sólo un ejemplo esquemático aproximado de cómo puede llevarse a cabo la codificación de posición y, en la práctica, puede variarse de muchas maneras. Por ejemplo, puede determinarse un par de bits y un desplazamiento correspondiente para un punto de manera continua una vez que se han determinado los desplazamientos circulares para el punto. Como resultado, no es necesario almacenar en memoria intermedia las matrices x e y.
El método puede implementarse en un programa informático. La señal de salida del programa informático no necesita ser precisamente la matriz xy con valores de desplazamiento, sino en su lugar también puede constituir alguna otra indicación de las secuencias parciales de la secuencia de números principal que forman el código de posición.
Ejemplo práctico de decodificación de posición
El código de posición puede decodificarse en un dispositivo de decodificación que puede comprender un sensor para leer el código de posición y una unidad de procesador de algún tipo adecuado. La unidad de procesador comprende el procesador real, memoria operativa y memoria de programa, en la que se almacena un programa informático con instrucciones para decodificar el código de posición. La unidad de procesador puede incorporarse en un ordenador personal típico, en un dispositivo de lectura de mano o en algún otro dispositivo adecuado. El dispositivo de decodificación puede realizarse alternativamente mediante hardware de propósito especial, tal como un ASIC o una FPGA o una unidad similar que puede adaptarse de modo que sea adecuada para esta tarea específica, o mediante circuitos digitales y/o analógicos o mediante alguna combinación adecuada de los mismos.
A continuación se describirá un ejemplo específico de un dispositivo de decodificación.
La siguiente descripción se refiere al diagrama de flujo en la figura 7.
La señal de entrada al dispositivo de codificación consiste en una imagen o alguna otra representación digital de un subconjunto detectado del código de posición, subconjunto que codifica coordenadas para al menos un punto, etapa 700. En este ejemplo, el código de posición está representado gráficamente mediante puntos que están desplazados de una manera predeterminada en relación con puntos de trama en una trama, como describió anteriormente.
En una primera etapa de la decodificación, el dispositivo de decodificación identifica los puntos en la imagen, por ejemplo mediante el uso de umbralización, y adapta una trama a los puntos, etapa 705. La trama puede determinarse, por ejemplo, de la manera que se describe en el documento WO 01/26034, utilizando la distancia entre diferentes pares de puntos o si no de la manera descrita en el documento WO 01/75783 utilizando las transformadas de Fourier. Para cada punto de trama, se determina el desplazamiento del punto asociado y se le da un valor 0-3 dependiendo del desplazamiento. Se selecciona una matriz de al menos el tamaño (n_{1}+1)*(n_{1}+1), donde n_{1} es la longitud de las secuencias parciales de la secuencia de números principal que se usan para la colocación y cuyos lugares se determinan inequívocamente en la secuencia de números principal. En el ejemplo en cuestión, se selecciona una matriz de 8*8 ((n_{1}+2)*(n_{1}+2)). Esta matriz se separa en una matriz x (también denominada código de posición x) y una matriz y (también denominada código de posición y) por los valores de desplazamiento que se convierten en pares de bits consultándose en una tabla OI que convierte valores de desplazamiento en pares de bits, etapa 710. El primer bit en cada par de bits forma la matriz x y el segundo bit en cada par de bits forma la matriz y.
En la siguiente etapa, se investigan los cuatro posibles tipos de rotación de las matrices x e y (0, 90, 180 y 270 grados) y se determina la rotación actual, etapa 715. Se utiliza el hecho previamente descrito de que, en caso de una rotación incorrecta de la matriz, se producen secuencias parciales de longitud 8 que faltan en la secuencia de números principal.
Al mismo tiempo, puede llevarse a cabo un determinado grado de corrección de errores basándose en las secuencias parciales de longitud 8.
Cuando se ha determinado la rotación correcta, en las siguientes etapas sólo se usan las matrices x e y que están en el centro y giradas correctamente y que tienen un tamaño n_{1}*n_{1}, que en este ejemplo son dos matrices de 6*6. La matriz x y la matriz y se decodifican en paralelo o secuencialmente con x antes de y o viceversa, lo que se indica mediante los flujos paralelos en la figura 7.
En una primera etapa 720 de la decodificación de la matriz x, se determina una secuencia parcial de la secuencia de números de diferencia primaria, lo que se denomina secuencia parcial primaria en la figura 7. Más específicamente, en la matriz x, los bits en las columnas en la matriz constituyen secuencias parciales de la secuencia de números principal. Los lugares correspondientes en la secuencia de números principal se determinan consultándose en una tabla MI que convierte secuencias parciales en lugares. A continuación, se determinan los números de diferencia que se codifican por las secuencias parciales de la secuencia de números principal. En este ejemplo, hay un número de cinco. Más específicamente, los números de diferencia se determinan como la diferencia d entre los lugares de secuencias parciales adyacentes, determinándose la diferencia módulo de la longitud de la secuencia de números principal.
La secuencia de números de diferencia así obtenida es por tanto una secuencia parcial de la secuencia de números de diferencia primaria, que se usa para la codificación en la dirección x, pero que debido a su tamaño no se almacena en el dispositivo de decodificación. En su lugar, se utiliza la propiedad de la secuencia de números de diferencia primaria de que cada secuencia parcial puede convertirse en una combinación de una secuencia parcial de cada una de las secuencias de números de diferencia secundarias. En la etapa 725, la secuencia parcial primaria se convierte así en secuencias parciales secundarias. Más específicamente, cada número de diferencia se reescribe de la siguiente
manera:
d=d1+b_{1}*d2+...+b_{1}*b_{2}*b_{n-1}*dn
\newpage
donde n es el número de secuencias de números de diferencia secundarias y b_{i} es la base en la secuencia i de números de diferencia secundaria. En el ejemplo en cuestión, esto es:
d=5+d1+3*d2+9*d3+18*d4
donde d1-d4 pueden determinarse mediante división de número entero o mediante consulta de la tabla.
\vskip1.000000\baselineskip
Así cada uno de los cinco números en la secuencia parcial decodificada de la secuencia de números de diferencia primaria da como resultado cuatro números d1, d2, d3, d4. Así se obtienen cinco números d1 que forman una secuencia parcial de la primera secuencia de números de diferencia secundaria, cinco números d2 que forman una secuencia parcial de la segunda secuencia de números de diferencia secundaria, cinco números d3 que forman una secuencia parcial de la tercera secuencia de números de diferencia secundaria y cinco números d4 que forman una secuencia parcial de la cuarta secuencia de números de diferencia secundaria. A continuación se da un ejemplo:
4
Se determinan los lugares respectivos de las secuencias parciales en las secuencias de números de diferencia secundarias, etapa 730, consultándose en cuatro tablas DCI_{i}, que convierten secuencias de números parciales en las secuencias de números de diferencia secundarias respectivas en lugares en las secuencias de números de diferencia secundarias respectivas.
Para cada secuencia parcial, se obtiene así un lugar pi. Para estos lugares, es el caso que:
\vskip1.000000\baselineskip
P=p1 (mod l1)
P=p2 (mod l2)
.
.
P=pm (mod lm)
\vskip1.000000\baselineskip
donde P es el lugar en la secuencia de números de diferencia primaria que corresponde a la coordenada x, pi es el lugar en la secuencia i de números de diferencia secundaria, li es la longitud de la secuencia i de números de diferencia secundaria y m es el número de secuencias de números de diferencia secundarias.
\vskip1.000000\baselineskip
Este sistema de ecuaciones puede resolverse usando el bien conocido teorema chino del resto, como se describe por ejemplo con más detalle en Niven, Suckerman, Introduction to the theory of numbers, edición Springer. Así, en la etapa 735, se determina x.
Defínase que L=prod(i=1,m)li y qi*(L/li)=1(mod li). El lugar P en la secuencia de números de diferencia primaria puede obtenerse entonces como:
P=(sum(i=1,n)((L/li)*pi*qi))(mod L)
En el ejemplo en cuestión:
L=l1*l2*l3*l4=236*233*31*241=410815348
\newpage
y se obtienen
q1=135
q2=145
q3=17
q4=62.
\vskip1.000000\baselineskip
Si, por ejemplo, se obtienen los lugares p1=97; p2=176; p3=3 y p4=211 para las secuencias parciales de las secuencias de números de diferencia secundarias, entonces el lugar P correspondiente en la secuencia de números de diferencia primaria será 170326961 según el teorema chino del resto.
Cuando se ha determinado P, la siguiente etapa es determinar a qué sección x corresponde el lugar. Esto se lleva a cabo en primer lugar suponiendo que y=0 y calculando s(x,0), que es el lugar en la secuencia de números principal de la secuencia de números parcial para la columna x para xs=0. s(x,0) se calcula usando las secuencias de números de diferencia secundarias de la misma manera a como se ha descrito anteriormente en conexión con la determinación del código de posición para la posición x. Si s(x,0) se resta del lugar de la primera secuencia de números parcial de las seis secuencias de números parciales que se usan para la colocación en la dirección x, se obtiene xs para y=0.
La matriz y se decodifica antes de, en paralelo a o después de la decodificación de la matriz x, determinándose un lugar en la secuencia de números de diferencia primaria para la dirección y, según las etapas 740-755 en la figura 7, de una manera correspondiente a la descrita anteriormente para la dirección x. Además, la sección y ys en cuestión se calcula de una manera correspondiente a la descrita anteriormente para la sección x, pero suponiendo que x=0. Finalmente, en la etapa 760, puede determinarse xs teniendo y en cuenta, y puede determinarse ys teniendo x en cuenta restando y (módulo de la longitud de la secuencia de números principal) de xs para y=0 y restando x (módulo de la longitud de la secuencia de números principal) de ys para x=0.
Así pueden usarse las siguientes tablas para la decodificación del código de posición:
MI: que convierte secuencias parciales de la secuencia de números principal en lugares en la secuencia de números principal,
DCI_{i}: que convierte secuencias parciales de cada una de las n secuencias de números de diferencia secundarias en lugares en las n secuencias de números de diferencia secundarias, y
OI: que convierte valores de desplazamiento en pares de bits.
\vskip1.000000\baselineskip
Debe resaltarse que el diagrama de flujo en la figura 7 es un ejemplo esquemático aproximado de cómo puede realizarse la decodificación de posición, por ejemplo en un programa informático.
\vskip1.000000\baselineskip
Ejemplo de un dispositivo de lectura, de mano
El código de posición puede leerse y decodificarse mediante diversos tipos de dispositivos de lectura. Un dispositivo de este tipo puede tener un sensor para conseguir una representación digital del código de posición y medios para identificar el código de posición en la representación digital y para su decodificación. Estos medios pueden consistir, como se ha descrito anteriormente, en un procesador con memoria y en un programa adecuado o hardware de propósito especial o circuitos digitales y/o analógicos o alguna combinación adecuada de los mismos.
En la figura 8 se muestra un ejemplo de un dispositivo de lectura. Comprende una carcasa 11 que tiene aproximadamente la misma forma que un lápiz. En el lado corto de la carcasa hay una abertura 12. El lado corto está previsto para entrar en contacto con o para mantenerse a una corta distancia con respecto a la superficie sobre la que va a llevarse a cabo la determinación de posición.
La carcasa contiene esencialmente una parte óptica, una parte de circuitos electrónicos y una fuente de alimentación.
La parte óptica comprende al menos un diodo 13 emisor de luz para iluminar la superficie de la que va a tomarse una imagen y un sensor 14 de zona sensible a la luz, por ejemplo un sensor CCD o CMOS, para grabar una imagen bidimensional. Opcionalmente, el dispositivo también puede contener un sistema óptico, tal como un sistema de lente y/o espejo. El diodo emisor de luz puede ser un diodo emisor de luz infrarroja y el sensor puede ser sensible a la luz infrarroja.
\newpage
La fuente de alimentación para el dispositivo se obtiene de una batería 15, que está montada en un compartimento independiente en la carcasa. También es posible obtener la fuente de alimentación a través de un cable de un suministro de alimentación externo (no mostrado).
La parte de circuitos electrónicos contiene una unidad de procesador con un procesador que está programado para grabar imágenes desde el sensor y para llevar a cabo una determinación de posición basándose en estas imágenes, y también una memoria operativa y una memoria de programa.
En esta realización, el dispositivo también comprende una punta 17 de lápiz, con cuya ayuda puede realizarse una escritura basada en pigmentos normal sobre la superficie sobre la que va a llevarse a cabo la determinación de posición. La punta 17 de lápiz puede ser extensible y retraíble de modo que el usuario puede controlar si va a usarse o no. En determinadas aplicaciones, no es necesario que el dispositivo tenga una punta de lápiz.
La escritura basada en pigmentos es de manera adecuada de un tipo que es transparente a la luz infrarroja y las marcas absorben de manera adecuada la luz infrarroja. Usando un diodo emisor de luz que emite luz infrarroja y un sensor que es sensible a la luz infrarroja, puede llevarse a cabo la detección del patrón sin la interferencia de escritura mencionada anteriormente con el patrón.
El dispositivo también puede comprender botones 18, mediante los cuales puede activarse y controlarse el dispositivo. También tiene un transceptor 19 para la transmisión inalámbrica, por ejemplo usando luz infrarroja, ondas de radio o ultrasonido, de información a y desde el dispositivo. El dispositivo también puede comprender una pantalla 20 para visualizar posiciones o información grabada.
El dispositivo puede dividirse entre diferentes carcasas físicas, una primera carcasa que contiene componentes que se requieren para grabar imágenes del patrón de codificación de posición y para transmitirlas a los componentes que están contenidos en una segunda carcasa y que llevan a cabo la determinación de posición basándose en la/s imagen/imágenes grabada/s.
\vskip1.000000\baselineskip
Realizaciones alternativas
En la realización anterior, se describe un código de posición que codifica posiciones en dos dimensiones. El código de posición puede usarse, sin embargo, también para codificar posiciones en una dimensión. En el ejemplo anterior, por ejemplo, puede usarse una "tira" del código de posición a lo largo del eje x con y=0. Alternativamente, puede usarse sólo una matriz de codificación x. En este caso, cada punto en la matriz tendrá por tanto sólo un valor, motivo por el cual con una secuencia de números principal binaria sólo se necesita codificar gráficamente un cero y un uno.
Un uso de la codificación de posición unidimensional puede ser como un equivalente a códigos de barras.
En la realización anterior, se usa una secuencia de números principal binaria. Sin embargo, es posible usar una base diferente para la secuencia de números principal. Entonces, esto puede dar como resultado varios valores diferentes necesarios para codificarse en cada punto en la matriz de codificación de posición.
En la realización anterior, se usan la misma secuencia de números principal y las mismas secuencias de números de diferencia secundarias para la codificación en la dirección x y la dirección y. Esto no es necesario. Pueden usarse diferentes secuencias para codificar en diferentes dimensiones. Sin embargo, con la idea de necesitar espacio de memoria para el almacenamiento de tablas para las secuencias puede ser ventajoso usar las mismas secuencias para la codificación en todas direcciones.
En la realización anterior, se usan 6*6 puntos o símbolos para la codificación de una posición. Naturalmente, pueden usarse menos o más símbolos. No tiene que ser el mismo número de símbolos en ambas dimensiones.
En la realización anterior, las secuencias parciales de la secuencia de números de diferencia primaria se mapean de manera biyectiva con las combinaciones de las secuencias de números parciales y las combinaciones de las secuencias de números parciales de las secuencias de números de diferencia secundarias se mapean de manera biyectiva con las secuencias parciales de la secuencia de números de diferencia primaria. Esto no es necesario. Diferentes secuencias parciales de la secuencia de números de diferencia primaria pueden mapearse con la misma combinación de secuencias parciales de las secuencias de números de diferencia secundarias. Puede haber secuencias parciales de la secuencia de números de diferencia primaria que no se mapean con una combinación de secuencia parcial. También puede haber más combinaciones de secuencia parcial que las secuencias parciales primarias. En la realización anterior, la trama es una cuadrícula ortogonal. También puede tener otras formas, tales como una cuadrícula romboidal, por ejemplo con ángulos de 60 grados, una cuadrícula triangular o hexagonal, etc.
Puede usarse la codificación gráfica con desplazamiento en menos o más de cuatro direcciones, por ejemplo un desplazamiento en tres direcciones a lo largo de una trama virtual hexagonal. En una trama ortogonal, pueden usarse sólo dos desplazamientos, para permitir una recreación de la trama más sencilla.
\newpage
En la realización anterior, se usa un número de diferencia en el intervalo de (5,58) para evitar números de diferencia próximos a cero. Sin embargo pueden usarse otros intervalos, incluyendo por ejemplo números de diferencia de 3 y 4.
En la realización anterior, el patrón puede leerse ópticamente y así, el sensor es óptico. Sin embargo, el patrón puede basarse en un parámetro diferente que un parámetro óptico. En tal caso, el sensor debe ser evidentemente de un tipo que pueda leer el parámetro en cuestión. Ejemplos de tales parámetros son parámetros químicos, acústicos o electromagnéticos. También pueden usarse parámetros capacitivos o inductivos.
El producto se ejemplifica anteriormente mediante una hoja de papel. Sin embargo, puede ser cualquier producto sobre el que pueda aplicarse el código de posición usando cualquiera de los parámetros anteriores. Si el código de posición es óptico, puede imprimirse, por ejemplo, mediante una impresora o imprimirse sobre un producto usando técnicas de impresión normales.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
Apéndice A
5
6

Claims (41)

1. Un método, que se lleva a cabo en un dispositivo de codificación, para determinar un código (410) de posición que codifica al menos una primera coordenada x para un primer punto y para una primera dimensión en una superficie, que comprende:
recibir al menos la primera coordenada x como la señal de entrada al dispositivo (600) de codificación,
determinar, basándose en la coordenada x recibida, una secuencia parcial de una secuencia (PD) de números primaria, secuencia parcial que tiene una primera longitud predeterminada y corresponde a la coordenada x recibida, usándose dicha secuencia de números primaria para codificar posiciones en la primera dimensión y teniendo la propiedad de que cada secuencia parcial de una primera longitud predeterminada tiene un lugar determinado inequívocamente en la secuencia de números primaria;
caracterizado porque al menos una secuencia parcial de la secuencia (PD) de números primaria puede mapearse con una combinación de una secuencia parcial de cada una de al menos dos secuencias (A1-A4) de números secundarias, cada una de las cuales tiene una base menor que la base de la secuencia de números primaria y porque el dispositivo de codificación usa dichas al menos dos secuencias (A1-A4) de números secundarias para la determinación de la secuencia parcial de la secuencia de números primaria correspondiente a la coordenada x.
\vskip1.000000\baselineskip
2. Un método de acuerdo con la reivindicación 1, en el que determinar una secuencia parcial de la secuencia (PD) de números primaria comprende convertir el lugar en la secuencia de números primaria en un lugar en cada una de las secuencias (A1-A4) de números secundarias.
3. Un método de acuerdo con la reivindicación 2, en el que determinar una secuencia parcial de la secuencia (PD) de números primaria comprende además determinar para cada una de las secuencias (A1-A4) de números secundarias la secuencia parcial que corresponde al lugar determinado en la secuencia de números secundaria y determinar la secuencia parcial de la secuencia de números primaria basándose en las secuencias parciales así determinadas de las secuencias de números secundarias.
4. Un método de acuerdo con una cualquiera de las reivindicaciones 1-3, que comprende además codificar los números en la secuencia parcial de la secuencia de números primaria usando secuencias (S) parciales de una segunda longitud predeterminada de una secuencia de números principal cíclica, que tiene la propiedad de que el lugar en la secuencia de números principal cíclica de cada secuencia (S) parcial de la segunda longitud predeterminada se determina inequívocamente, codificándose los números en la secuencia parcial de la secuencia de números primaria como diferencias de las secuencias parciales de la secuencia de números principal cíclica.
5. Un método de acuerdo con la reivindicación 4, que comprende además proporcionar un código de posición que comprende una indicación de las secuencias parciales de la secuencia de números principal cíclica como señal de salida desde el dispositivo de codificación.
6. Método según la reivindicación 4 ó 5, que comprende además hacer que un dispositivo aplique las secuencias parciales de la secuencia de números principal en la superficie de modo que éstas se extiendan en una segunda dimensión y de modo que los números en la secuencia parcial de la secuencia de números primaria se extiendan en la primera dimensión.
7. Un método de acuerdo con una cualquiera de las reivindicaciones 4-6, que comprende además calcular una primera secuencia parcial entre las secuencias parciales de la secuencia de números principal cíclica sumando los x-1 primeros números en cada una de las secuencias de números secundarias repetidas cíclicamente.
8. Un método de acuerdo con la reivindicación 7, en el que los números en las secuencias de números secundarias se suman mediante el uso de sumas previamente calculadas de ciclos completos e incompletos de las secuencias de números secundarias.
9. Un método de acuerdo con la reivindicación 7 u 8, que comprende además recibir el lugar en la secuencia de números principal cíclica de la secuencia parcial para la coordenada x=0 como señal de entrada al dispositivo de codificación y usar el lugar de la coordenada x=0 para el cálculo de la primera secuencia parcial entre las secuencias parciales de la secuencia de números principal.
10. Un método de acuerdo con una cualquiera de las reivindicaciones 7-9, que comprende además determinar una segunda secuencia parcial entre las secuencias parciales de la secuencia de números principal determinando el número d(x) en la secuencia parcial de la secuencia de números primaria que se codifica por las secuencias parciales primera y segunda de la secuencia de números principal.
11. Un método de acuerdo con la reivindicación 10, en el que el número d(x) que se codifica por las secuencias parciales primera y segunda de la secuencia de números principal se calcula como d(x)=dc(1,x)+b_{1}*dc(2,x)+...+b_{1}*...
*b_{n-1}*dc(n,x) donde n es el número de secuencias de números secundarias, b_{i} es la base en la secuencia i de números secundaria y dc(i,x) es el número en el lugar x módulo I_{i} en la secuencia de números secundaria respectiva de
longitud I_{i}.
12. Un método de acuerdo con una cualquiera de las reivindicaciones 1-11, que comprende además:
recibir una segunda coordenada y para el primer punto y para una segunda dimensión en la superficie como señal de entrada al dispositivo de codificación,
determinar, basándose en la coordenada y recibida, una secuencia parcial de una segunda secuencia de números primaria, secuencia parcial que tiene una tercera longitud predeterminada y corresponde a la coordenada y recibida, usándose dicha segunda secuencia de números primaria para codificar posiciones en la segunda dimensión y teniendo la propiedad de que cada secuencia parcial que tiene la tercera longitud predeterminada tiene un lugar determinado inequívocamente en la segunda secuencia de números primaria;
pudiendo mapearse al menos una secuencia parcial de la segunda secuencia de números primaria con una combinación de una secuencia parcial de cada una de al menos dos segundas secuencias de números secundarias, que tienen bases menores que la segunda secuencia de números primaria y que se usan por el dispositivo de codificación para la determinación de la secuencia parcial de la segunda secuencia de números primaria correspondiente a la coordenada y.
\vskip1.000000\baselineskip
13. Un método de acuerdo con una cualquiera de las reivindicaciones anteriores, en el que:
el número de diferentes números en la secuencia (PD) de números primaria que pueden usarse para la codificación de posición es tal que el número puede factorizarse en al menos dos factores,
en el que se usa el mismo número de secuencias (A1-A4) de números secundarias que el número de factores, y
en el que cada uno de los factores forma la base en una secuencia de números secundaria respectiva.
\vskip1.000000\baselineskip
14. Un método de acuerdo con una cualquiera de las reivindicaciones anteriores, en el que las longitudes de las secuencias (A1-A4) de números secundarias son relativamente primas en pares.
15. Un método de acuerdo con una cualquiera de las reivindicaciones anteriores, en el que cada una de las secuencias (A1-A4) de números secundarias tiene la propiedad de que cada secuencia parcial que tiene la primera longitud predeterminada, tiene un lugar determinado inequívocamente en la secuencia de números secundaria respectiva.
16. Un método de acuerdo con una cualquiera de las reivindicaciones anteriores, en el que la base de las secuencias (A1-A4) de números secundarias es como máximo 5, preferiblemente como máximo 3.
17. Un método de acuerdo con una cualquiera de las reivindicaciones anteriores, en el que las secuencias parciales de la secuencia (PD) de números primaria pueden mapearse de manera biyectiva con combinaciones de una secuencia parcial de cada una de las secuencias (A1-A4) de números secundarias.
18. Un método de acuerdo con una cualquiera de las reivindicaciones 1-3, en el que los números en la secuencia (PD) de números primaria se codifican usando secuencias parciales de una segunda longitud predeterminada de una secuencia de números principal cíclica, que tiene la propiedad de que el lugar en la secuencia de números principal cíclica de cada secuencia parcial de la segunda longitud predeterminada se determina inequívocamente, estando dispuestas las secuencias parciales de la secuencia de números principal cíclica en la superficie de modo que se definen números de diferencia que forman los números en la secuencia de números primaria.
19. Un método de acuerdo con la reivindicación 18, en el que las secuencias parciales de la secuencia de números principal cíclica están dispuestas en la superficie de modo que cada secuencia parcial se extiende en una segunda dimensión.
20. Un método de acuerdo con la reivindicación 18 ó 19, en el que sólo se utiliza un subconjunto de los números de diferencia que teóricamente pueden definirse usando las secuencias parciales de la secuencia de números principal, subconjunto que excluye números de diferencia que pueden definirse teóricamente de este tipo que son iguales a o casi cero.
21. Un método de acuerdo con una cualquiera de las reivindicaciones 18-20, en el que la secuencia de números principal es binaria y se selecciona de modo que no se produce ninguna secuencia parcial de una longitud predeterminada que sea más larga que la segunda longitud predeterminada en una forma hacia atrás o invertida en la secuencia de números principal.
\newpage
22. Un método de acuerdo con una cualquiera de las reivindicaciones 18-21, en el que la secuencia de números principal es binaria y se selecciona de modo que no se produce ninguna secuencia parcial de una longitud predeterminada que sea más larga que la segunda longitud predeterminada con un bit invertido en la secuencia de números principal.
23. Un método de acuerdo con una cualquiera de las reivindicaciones 18-22, en el que la secuencia parcial de la secuencia de números principal, secuencia parcial que es de la segunda longitud predeterminada, consiste en seis números, y la secuencia parcial de la secuencia de números primaria, secuencia parcial que es de la primera longitud predeterminada, consiste en cinco números de diferencia.
24. Un método de acuerdo con una cualquiera de las reivindicaciones 18-23, en el que la secuencia M de números principal cíclica es la siguiente:
7
\vskip1.000000\baselineskip
25. Un método de acuerdo con una cualquiera de las reivindicaciones anteriores, en el que la secuencia (PD) de números primaria contiene cincuenta y cuatro números diferentes y las secuencias (A1-A4) de números secundarias son cuatro en número, tres de las cuales tienen la base tres y una de las cuales tiene la base dos.
26. Un método de acuerdo con una cualquiera de las reivindicaciones anteriores, en el que las secuencias de números secundarias son las siguientes:
8
9
\vskip1.000000\baselineskip
27. Un método de acuerdo con una cualquiera de las reivindicaciones 1-11, que comprende además codificar posiciones en una segunda dimensión en la superficie según una segunda secuencia de números primaria que tiene la propiedad de que el lugar en la segunda secuencia de números primaria de cada secuencia parcial de una tercera longitud predeterminada se determina inequívocamente, codificándose cada posición en la segunda dimensión por una de las secuencias parciales en la segunda secuencia de números primaria y pudiendo mapearse al menos una secuencia parcial de la segunda secuencia de números primaria con una combinación de una secuencia parcial de cada una de al menos dos segundas secuencias de números secundarias que tienen bases menores que la base de la segunda secuencia de números primaria y que se usan para la determinación de las secuencias parciales de la segunda secuencia de números primaria correspondiente a las posiciones en la segunda dimensión.
28. Un método de acuerdo con la reivindicación 27, en el que las secuencias de números primaria y secundaria para la codificación de posición en la primera y la segunda dimensión son las mismas.
29. Un método de acuerdo con una cualquiera de las reivindicaciones anteriores, que comprende además imprimir el código de posición con codificación gráfica en la superficie.
30. Un dispositivo para codificar posiciones, dispositivo que comprende una unidad de procesador o hardware de propósito especial adaptado para llevar a cabo un método de acuerdo con una cualquiera de las reivindicaciones 1-29.
31. Un método para decodificar un código (410) de posición que codifica al menos una primera coordenada (x;y) para un primer punto y una primera dimensión en una superficie, método que comprende identificar un primer número predeterminado de números que forman una secuencia parcial de una secuencia (PD) de números primaria basándose en una representación digital del código de posición, secuencia parcial que tiene un lugar P determinado inequívocamente en la secuencia de números primaria, lugar que corresponde a la primera coordenada;
caracterizado porque el lugar P de la secuencia parcial en la secuencia (PD) de números primaria se determina usando al menos dos secuencias (A1-A4) de números secundarias, cada una de las cuales tiene una base que es menor que la base de la secuencia de números primaria, en el que al menos una secuencia parcial de la secuencia de números primaria puede mapearse con una combinación de una secuencia parcial de cada una de las al menos dos secuencias de números secundarias.
\vskip1.000000\baselineskip
32. Un método de acuerdo con la reivindicación 31, en el que determinar el lugar P de la secuencia parcial en la secuencia (PD) de números primaria comprende convertir la secuencia parcial de la secuencia de números primaria en una combinación de una secuencia parcial de cada una de las secuencias (725; 745) de números secundarias.
33. Un método de acuerdo con la reivindicación 31 ó 32, que comprende además determinar el lugar en la secuencia de números secundaria respectiva de cada una de las secuencias parciales en la combinación (730) y determinar el lugar P en la secuencia de números de diferencia primaria basándose en la combinación de los lugares en las secuencias (735; 755) de números secundarias.
\newpage
34. Un método de acuerdo con la reivindicación 32 ó 33, en el que convertir la secuencia parcial de la secuencia de números primaria en una secuencia parcial de cada una de las secuencias de números secundarias comprende convertir cada número d en la secuencia parcial de la secuencia de números primaria en un conjunto de números d_{1},...,d_{n}, según lo siguiente: d=d_{1}+b_{i}*d_{2}+...b_{1}*b_{2}...*b_{n-1}*d_{n}, donde n es el número de secuencias de números secundarias y b_{i} es la base en la secuencia i de números secundaria.
35. Un método de acuerdo con una cualquiera de las reivindicaciones 32-34, en el que el lugar P en la secuencia de números primaria se determina usando el teorema chino del resto como:
P=(sum(i=1,n)((L/l_{i})*p_{i}*q_{i}))(mod L)
donde L = prod(i=1,n)l_{i}, p_{i} es el lugar en la secuencia i de números secundaria, l_{i} es la longitud de la secuencia i de números secundaria y n es el número de secuencias de números secundarias y q_{i}*(L/l_{i})=1(mod l_{i}).
\vskip1.000000\baselineskip
36. Un método de acuerdo con una cualquiera de las reivindicaciones 31-35, que comprende además determinar una coordenada (xs;ys) adicional para el primer punto y la primera dimensión determinando el lugar en la secuencia de números principal de la secuencia parcial para la coordenada 0.
37. Un método de acuerdo con una cualquiera de las reivindicaciones 31-36, en el que el código (410) de posición codifica además una segunda coordenada (y;x) para la primera posición y para una segunda dimensión y que comprende además la etapa de identificar un tercer número predeterminado de números que forman una secuencia parcial de una segunda secuencia de números primaria, basándose en la representación digital del código de posición, secuencia parcial que tiene un lugar determinado inequívocamente en la segunda secuencia de números primaria, lugar que corresponde a la segunda coordenada; y de determinar el lugar de la secuencia parcial en la segunda secuencia de números primaria usando al menos dos segundas secuencias de números secundarias, cada una de las cuales tiene una base que es menor que la base de la segunda secuencia de números primaria.
38. Un método de acuerdo con una cualquiera de las reivindicaciones 31-37, en el que el método se lleva a cabo en un dispositivo de decodificación que recibe la representación digital del código de posición como señal de entrada y proporciona al menos la primera coordenada para el primer punto como señal de salida.
39. Un dispositivo para decodificar un código (410) de posición, que codifica al menos una primera coordenada para un primer punto y una primera dimensión en una superficie, dispositivo que comprende un sensor (14) para proporcionar una representación digital del código de posición que va a decodificarse, y un procesador (16) que está dispuesto para identificar un primer número predeterminado de números que forman una secuencia parcial de la secuencia (PD) de números primaria, basándose en la representación digital del código de posición, secuencia parcial que tiene un lugar P determinado inequívocamente en la secuencia de números primaria, lugar que corresponde a la primera coordenada;
caracterizado porque el dispositivo comprende además una memoria que almacena al menos dos secuencias (A1-A4) de números secundarias cada una de las cuales tiene una base que es menor que la base de la secuencia de números primaria, en el que al menos una secuencia parcial de la secuencia de números primaria puede mapearse con una combinación de una secuencia parcial de cada una de las al menos dos secuencias de números secundarias, y porque el procesador (16) está dispuesto además para determinar el lugar P en la secuencia de números primaria mediante las secuencias de números secundarias.
\vskip1.000000\baselineskip
40. Un dispositivo de acuerdo con la reivindicación 39, en el que el procesador (16) está dispuesto además para convertir la secuencia parcial de la secuencia (PD) de números primaria en una combinación de una secuencia parcial de cada una de las secuencias (A1-A4) de números secundarias para determinar el lugar P de la secuencia parcial en la secuencia (PD) de números primaria.
41. Un dispositivo de acuerdo con la reivindicación 40, en el que el procesador (16) está dispuesto además para determinar el lugar en la secuencia (A1-A4) de números secundaria respectiva de cada una de las secuencias parciales en la combinación y determinar el lugar P en la secuencia (PD) de números de diferencia primaria basándose en la combinación de los lugares en las secuencias de números secundarias.
ES02746246T 2001-06-25 2002-06-25 Metodo para conseguir un codigo de posicion y decodificar un codigo de posicion. Expired - Lifetime ES2333851T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
SE2001102235 2001-06-25
SE0102235A SE519277C2 (sv) 2001-06-25 2001-06-25 Anordning och förfarande för positionskodning och för avkodning av en positionskod

Publications (1)

Publication Number Publication Date
ES2333851T3 true ES2333851T3 (es) 2010-03-02

Family

ID=20284587

Family Applications (1)

Application Number Title Priority Date Filing Date
ES02746246T Expired - Lifetime ES2333851T3 (es) 2001-06-25 2002-06-25 Metodo para conseguir un codigo de posicion y decodificar un codigo de posicion.

Country Status (8)

Country Link
EP (2) EP2133824B1 (es)
JP (2) JP4455055B2 (es)
CN (2) CN1242358C (es)
AT (1) ATE443884T1 (es)
DE (1) DE60233794D1 (es)
ES (1) ES2333851T3 (es)
SE (1) SE519277C2 (es)
WO (1) WO2003001440A1 (es)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7145556B2 (en) 2001-10-29 2006-12-05 Anoto Ab Method and device for decoding a position-coding pattern
JP4406430B2 (ja) 2003-05-26 2010-01-27 アノト アクティエボラーク コンピュータからプリンタに送信されるページ記述コードを含むデジタル表現を圧縮するための方法
US7753283B2 (en) 2003-06-13 2010-07-13 Anoto Aktiebolag (Anoto Ab) On-demand printing of coding patterns
SE0301729D0 (sv) * 2003-06-13 2003-06-13 Anoto Ab Behovsstyrd utskrift av kodningsmönster
SE0303370D0 (sv) 2003-12-16 2003-12-16 Anoto Ab Method, apparatus, computer program and storage medium for recording a movement of a user unit
KR101236809B1 (ko) * 2005-06-17 2013-02-25 아노토 아베 위치 및 정보 코드를 결합하는 방법 및 시스템
US8411071B2 (en) 2006-02-22 2013-04-02 Anoto Ab Electronic pen
GB201008955D0 (en) 2010-05-28 2010-07-14 Optaglio Sro Holographic matrix, system of holographic personalization of ID cards and synthesis of holograms of desired visual properties and method of production thereof
WO2013179595A1 (ja) 2012-05-31 2013-12-05 パナソニック株式会社 位置コードの読み取り装置及び読み取り方法
KR101974483B1 (ko) * 2012-12-03 2019-05-02 삼성전자주식회사 패턴을 구비한 디스플레이 장치 및 패턴을 구비한 디스플레이 장치에서 화소 위치 검출 방법
EP2813918A1 (en) 2013-06-11 2014-12-17 Anoto AB Electronic pen
GB2526261B (en) 2014-04-28 2017-08-02 Gelliner Ltd Encoded cells and cell arrays
CN107408214B (zh) 2015-01-30 2021-07-09 惠普发展公司,有限责任合伙企业 M进制循环编码
EP3139132B1 (de) 2015-09-03 2020-02-19 Hexagon Technology Center GmbH Flächen-absolutcodierung
CN108665036A (zh) * 2017-04-02 2018-10-16 田雪松 位置编码方法
CN108664868A (zh) * 2017-04-02 2018-10-16 田雪松 一种解码装置和解码方法
CN108664531A (zh) * 2017-04-02 2018-10-16 田雪松 一种基于编码图案的位置信息获取装置和获取方法
CN108664964A (zh) * 2017-04-02 2018-10-16 田雪松 具有编码图案的文件输出方法
CN118015636A (zh) * 2024-02-29 2024-05-10 祝你云记科技有限公司 基于点阵智能笔的数字化应用方法及系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992017859A1 (en) 1991-04-03 1992-10-15 Hewlett Packard Company Position-sensing apparatus
US5477012A (en) 1992-04-03 1995-12-19 Sekendur; Oral F. Optical position determination
US5852434A (en) 1992-04-03 1998-12-22 Sekendur; Oral F. Absolute optical position determination
WO1994008316A1 (en) * 1992-09-30 1994-04-14 Hewlett Packard Company Initial track recovery in position-sensing systems that use windowing patterns
US5661506A (en) * 1994-11-10 1997-08-26 Sia Technology Corporation Pen and paper information recording system using an imaging pen
US6050490A (en) * 1997-10-31 2000-04-18 Hewlett-Packard Company Handheld writing device and related data entry system
SE517445C2 (sv) 1999-10-01 2002-06-04 Anoto Ab Positionsbestämning på en yta försedd med ett positionskodningsmönster
ATE472778T1 (de) 2000-04-05 2010-07-15 Anoto Ab Identifizierung eines virtuellen rastermusters

Also Published As

Publication number Publication date
CN1520575A (zh) 2004-08-11
EP1405254A1 (en) 2004-04-07
WO2003001440A1 (en) 2003-01-03
CN1782973A (zh) 2006-06-07
CN1242358C (zh) 2006-02-15
EP2133824B1 (en) 2014-04-23
EP1405254B1 (en) 2009-09-23
SE0102235L (sv) 2002-12-26
EP2133824A2 (en) 2009-12-16
JP2010102723A (ja) 2010-05-06
DE60233794D1 (de) 2009-11-05
JP4455055B2 (ja) 2010-04-21
JP2004535011A (ja) 2004-11-18
ATE443884T1 (de) 2009-10-15
SE0102235D0 (sv) 2001-06-25
SE519277C2 (sv) 2003-02-11
JP5048045B2 (ja) 2012-10-17
EP2133824A3 (en) 2011-02-16

Similar Documents

Publication Publication Date Title
ES2333851T3 (es) Metodo para conseguir un codigo de posicion y decodificar un codigo de posicion.
US6667695B2 (en) Position code
ES2341533T3 (es) Papel codificado para lectura optica.
EP3520031B1 (en) Occlusion-resilient optical codes for machine-read articles
EP3520093B1 (en) Multi-dimensional optical code with static data and dynamic lookup data optical element sets
JP4294025B2 (ja) インターフェース表面を生成する方法、および符号化データを読み取る方法
US10691908B2 (en) Hierarchichal optical element sets for machine-read articles
US8174374B2 (en) Method and system for coding digital information in lane markings using an optical sensor
CN1641683B (zh) 通过m阵列解码和快速图像匹配的笔划定位
TW201110031A (en) Position-coding pattern having tag coordinates encoded by bit-shifted subsequences of cyclic position code
ES2769399T3 (es) Patrón de código de puntos para posición absoluta y otra información usando un lápiz óptico, proceso de impresión del código de puntos, proceso de lectura del código de puntos
US7918404B2 (en) Orientation-indicating cyclic position codes
JP2009540473A (ja) 誤り訂正を用いる位置特定
JP4898920B2 (ja) 表面上に絶対位置コードパターンを有する製造物及びその絶対位置コードパターンの形成方法
WO2021123483A1 (es) Método, dispositivo y sistema para el almacenamiento, la codificación y la decodificación de información basada en códigos con capacidad de detección de errores