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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000036961 partial effect Effects 0.000 claims abstract description 196
- 125000004122 cyclic group Chemical group 0.000 claims description 22
- 239000011159 matrix material Substances 0.000 description 38
- 238000006073 displacement reaction Methods 0.000 description 34
- 238000001514 detection method Methods 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000000049 pigment Substances 0.000 description 2
- 101100171060 Caenorhabditis elegans div-1 gene Proteins 0.000 description 1
- 101100457838 Caenorhabditis elegans mod-1 gene Proteins 0.000 description 1
- 101150110972 ME1 gene Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0354—Pointing 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/03545—Pens or stylus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/0304—Detection arrangements using opto-electronic means
- G06F3/0317—Detection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/0304—Detection arrangements using opto-electronic means
- G06F3/0317—Detection 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/0321—Detection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record 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/06009—Record 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/06037—Record 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
-
- G—PHYSICS
- G08—SIGNALLING
- G08C—TRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
- G08C21/00—Systems 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.
La presente invención se refiere a códigos de
posición.
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:
Supóngase ahora que se quiere encontrar la
posición de una superficie parcial con el siguiente subconjunto del
patrón.
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.
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.
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.
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
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:
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.
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.
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.
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:
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:
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
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
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
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}.
*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:
\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:
\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.
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)
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)
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 |
-
2001
- 2001-06-25 SE SE0102235A patent/SE519277C2/sv not_active IP Right Cessation
-
2002
- 2002-06-25 DE DE60233794T patent/DE60233794D1/de not_active Expired - Lifetime
- 2002-06-25 CN CNB02812703XA patent/CN1242358C/zh not_active Expired - Fee Related
- 2002-06-25 EP EP09171031.9A patent/EP2133824B1/en not_active Expired - Lifetime
- 2002-06-25 JP JP2003507753A patent/JP4455055B2/ja not_active Expired - Fee Related
- 2002-06-25 EP EP02746246A patent/EP1405254B1/en not_active Expired - Lifetime
- 2002-06-25 ES ES02746246T patent/ES2333851T3/es not_active Expired - Lifetime
- 2002-06-25 AT AT02746246T patent/ATE443884T1/de not_active IP Right Cessation
- 2002-06-25 WO PCT/SE2002/001243 patent/WO2003001440A1/en active Application Filing
- 2002-06-25 CN CNA2005101296102A patent/CN1782973A/zh active Pending
-
2009
- 2009-12-11 JP JP2009281717A patent/JP5048045B2/ja not_active Expired - Fee Related
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 |