ANÁLISIS Y COLOCACIÓN DE ETIQUETAS EN UNA IMAGEN DE UN DOCUMENTO CODIFICADO POR SU POSICIÓN
Campo de la Invención Las modalidades de la presente invención se refieren a la interacción entre un medio codificado por su posición y una pluma digital. En particular, las modalidades de la invención se refieren a la colocación de etiquetas en las imágenes de documentos, las cuales contienen información codificada por su posición, con base en un grado en el que el contenido del documento ocluye la información que codifica la posición. Antecedentes de la Invención Los usuarios de computadoras están acostumbrados a usar un ratón y un teclado como la manera de interactuar con una computadora personal. Aunque las computadoras personales proporcionan ciertas ventajas sobre los documentos escrito, la mayoría de los usuarios siguen realizando ciertas funciones usando papel impreso. Algunas de estas funciones incluyen la lectura y anotación en documentos escritos. En el caso de anotaciones, el documento escrito asume una mayor importancia debido a que las anotaciones las hizo un usuario. Sin embargo, una de las dificultades con un documento impreso que contiene anotaciones es que posteriormente será necesario introducir las anotaciones en la forma electrónica del documento. Para esto es necesario que el usuario original u otro usuario lea las anotaciones y las introduzca en una computadora personal. En algunos casos, un usuario puede digitalizar las anotaciones y el texto original, creando de esta manera un nuevo documento. Esto pasos múltiples hacen que la interacción entre el documento impreso y la versión electrónica del documento sea difícil de manejar en repetidas ocasiones. Además, las imágenes digitalizadas con frecuencia no se pueden modificar. Es posible que no exista la manera de separar las anotaciones del texto original. Esta situación hace que el uso de las anotaciones sea difícil. De esta manera, es necesaria una manera mejorada para manejar las anotaciones. Una técnica para capturar información escrita a mano es mediante el uso de una pluma cuya ubicación se pueda determinar durante la escritura. Una pluma que proporciona esta capacidad es la Anoto pen de Anoto Inc. Esta pluma funciona usando una cámara que captura una imagen del papel codificado con un patrón definido previamente. En la Figura 21 se muestra un ejemplo de este patrón de imagen. Este patrón lo usa la Anoto pen (de Anoto Inc.) para determinar la ubicación de una pluma en un pedazo de papel. Sin embargo, no es clara la eficiencia en cuanto a la determinación de la ubicación en el sistema que usa Anoto pen. Para proveer una determinación eficiente de la ubicación de la imagen capturada, se necesita un sistema que proporcione una decodificación eficiente de la imagen capturada. Al hacer anotaciones a un documento, un usuario puede marcar el documento moviendo la punta de una pluma con respecto al documento. El trayecto de la punta de la pluma puede incluir una pluralidad de golpes, en donde cada golpe corresponde a una serie de imágenes capturadas. De esta manera es deseable la identificación eficiente del trayecto de la pluma para procesar la anotación en un documento. Las porciones de la información que codifica la posición, como el patrón de un laberinto de marca de agua, se puede ocluir mediante el contenido del documento, como texto o gráficos. Cuando el contenido de un documento ocluye una cantidad relativamente pequeña (o ninguna) de la información que codifica la posición en un área de un documento, entonces la ubicación del área dentro del documento se puede determinar de manera eficiente sin que sea necesario realizar cálculos costosos para determinar la ubicación. Sin embargo, cuando el contenido del documento ocluye una cantidad relativamente grande de la información que codifica la ubicación en un área del documento, puede ser necesario usar más técnicas de cómputo intensivas para determinar la ubicación del área dentro del documento. De esta manera, es deseable contar con técnicas para distinguir entre los casos en donde una cantidad relativamente pequeña de la información que codifica la ubicación se ocluye y los casos en donde una cantidad relativamente grande se ocluye para aumentar la eficiencia con la que los usuarios puedan interactuar con documentos que contienen información codificada por su posición. Sumario de la Invención Las modalidades de la presente invención se refieren a analizar imágenes de documentos que contienen información codificada por su posición, por ejemplo, patrones de laberintos, y a la colocación de etiquetas en las imágenes capturadas. El resultado de dicho análisis de un documento se puede usar para determinar de manera eficiente la ubicación de una imagen capturada con una cámara dentro de un documento codificado por su posición. Un sistema incluye un módulo de captura de imagen y un módulo de análisis y colocación de etiquetas. El módulo de análisis y colocación de etiquetas recibe, como entrada, salidas de datos de imagen capturada mediante el módulo de captura de imágenes y datos de capacitación fuera de línea; realiza el procesamiento de análisis y colocación de etiquetas, y emite información sobre etiquetas e imágenes. En los documentos impresos se coloca una marca de agua con patrones de laberinto. Dichos patrones de laberinto pueden ser ocluidos por el contenido de un documento, como texto. Dependiendo del grado de dicha oclusión, es posible que no se logren extraer suficientes bits que codifican la posición de una imagen capturada con una cámara para determinar la ubicación de la imagen capturada con una cámara dentro del documento. Las imágenes en un documento con marca de agua se analizan y etiquetan. El proceso de análisis y colocación de etiquetas se refiere a una capacidad para determinar la posición x-y dentro de un documento con marca de agua basado en un grado de visibilidad del patrón de laberinto en una ubicación particular dentro del documento. Las características y utilidades adicionales de la invención serán evidentes al revisar la siguiente descripción detallada. Breve Descripción de los Dibujos La breve descripción de la invención a continuación. Así como la siguiente descripción detallada de las modalidades preferidas, será mejor comprendida al leerse en conjunto con los dibujos anexos, los cuales se incluyen a manera de ejemplo y no a manera de limitante con respecto a la invención que se reivindica. La Figura 1 muestra una descripción general de una computadora que se puede usar en conjunto con las modalidades de la presente invención;
las Figuras 2A y 2B muestran un sistema de captura de imágenes y la imagen capturada correspondiente de conformidad con las modalidades de la presente invención; las Figuras de la 3A a la 3F muestran varias secuencias y técnicas de plegado de conformidad con las modalidades de la presente invención; las Figuras de la 4A a la 4E muestran varios sistemas de codificación de conformidad con las modalidades de la presente invención; las Figuras de la 5A a la 5D muestran cuatro esquinas resultantes posibles asociadas con el sistema de codificación de conformidad con las modalidades de la presente invención; la Figura 6 muestra la rotación de una porción de una imagen capturada de conformidad con las modalidades de la presente invención; la Figura 7 muestra varios ángulos de rotación usados en conjunto con el sistema de codificación de las Figuras de la 4A a la 4E; la Figura 8 muestra un proceso para determinar la ubicación de una matriz capturada de conformidad con las modalidades de la presente invención; la Figura 9 muestra un método para determinar la ubicación de una imagen capturada de conformidad con las modalidades de la presente invención; la Figura 10 muestra otro método para determinar la ubicación de una imagen capturada de conformidad con las modalidades de la presente invención; la Figura 11 ilustra un módulo de captura de imágenes y un módulo de análisis y colocación de etiquetas de conformidad con las modalidades de la presente invención; la Figura 12 ilustra los pasos para generar una imagen en un documento en escala de grises con marca de agua, lo que se puede analizar y etiquetar de conformidad con las modalidades de la presente invención; la Figura 13 ilustra una imagen de una porción del contenido de un documento, una porción de un patrón de laberinto codificado por su posición, el contenido y el patrón de laberinto combinado y una vista con acercamiento de una porción del contenido y el patrón de laberinto; la Figura 14 muestra una sub ventana y el píxel central de la sub ventana del patrón de laberinto y el documento combinados de la Figura 13; la Figura 15 muestra el resultado del análisis de un documento de un documento ejemplar de conformidad con varias modalidades de la presente invención; la Figura 16 ilustra una imagen capturada con una cámara que tiene un ángulo de rotación diferente de cero y un ángulo de rotación de 45 grados; la Figura 17 ilustra los dos granos en espiral que forman el operador de borde de Sobel.
la Figura 18 muestra un histograma de imágenes de gradiente de una imagen capturada que contiene sólo patrones de laberinto; la Figura 19 muestra un histograma de imágenes de gradiente de una imagen capturada que contiene el contenido del documento; la Figura 20 muestra un resultado ejemplar de capacitación en línea, que incluye un umbral seleccionado para distinguir entre imágenes de patrón de laberinto puro e imágenes de conformidad con la técnica anterior; la Figura 21 muestra una representación de un espacio de codificación en un documento de conformidad con la técnica anterior. Descripción Detallada de la Invención Algunos aspectos de la presente invención se refieren a la determinación de la ubicación de una imagen capturada con relación a una imagen más grande. El método y sistema de determinación de la ubicación que se describen en la presente se pueden usar en combinación con una pluma de funciones múltiples. Lo que se muestra a continuación está separado por sub encabezados para facilidad de comprensión del lector. Los sub encabezados incluyen: términos, computadora de uso genérico, pluma de captura de imágenes, codificación de matriz, decodificación, determinación de la ubicación, y análisis y colocación de etiquetas de imágenes capturadas con una cámara. I . Términos Pluma - cualquier implemento de escritura que pueda o no incluir la capacidad de dar golpes de tinta. En algunos ejemplos, un estilo que no tiene la capacidad de tinta se puede usar como una pluma de conformidad con modalidades de la presente invención. Cámara - un sistema de captura de imágenes que es capaz de capturar una imagen desde un papel o cualquier otro medio. II. Computadora de Uso Genérico La Figura 1 es un diagrama de bloques funcionales de un ejemplo de un entorno de cómputo digital de objetivo genérico convencional que se puede usar para implementar varios aspectos de la presente invención. En la Figura 1, una computadora 100 incluye una unidad de procesamiento 110, una memoria del sistema 120, y una barra de distribución 130 que acopla varios componentes, entre ellos la memoria del sistema a la unidad de procesamiento 110. La barra de distribución 130 puede ser de muchos tipos de estructuras de barras de distribución, entre ellas una barra de distribución de memoria o un controlador de memoria, una barra de distribución periférica y una barra de distribución local que usa cualquiera de una variedad de arquitecturas de barra de distribución. La memoria del sistema 120 incluye una memoria de sólo lectura (ROM) 140 y una memoria de acceso aleatorio (RAM) 150. Un sistema básico de entras y salidas (BIOS) 160, que contiene las rutinas básicas que ayudan a transferir información entre elementos dentro de la computadora 100, por ejemplo durante el arranque, se almacena en la memoria de sólo lectura (ROM) 140. La computadora 100 también incluye una unidad de disco duro 170 para leer y escribir en un disco duro (no se muestra), una unidad de disco magnético 180 para leer o escribir en un disco magnético extraíble 190 y una unidad de disco óptico 191 para leer o escribir en un disco óptico 192, como un CD ROM u otro medio óptico. La unidad de disco duro 170, la unidad de disco magnético 180 y la unidad de disco óptico 191 están conectadas a la barra de distribución del sistema 130 a través de una ¡nterfaz de disco duro 192, una interfaz de unidad de disco magnético 193 y una interfaz de unidad de disco óptico 194, respectivamente. Las unidades y sus medios legibles a través de una computadora asociados proporcionan almacenamiento permanente de instrucciones, estructura de datos, módulos de programas y otros datos para la computadora personal 100. Será evidente para expertos en la técnica que otros tipos de medios legibles a través de una computadora que pueden almacenar datos y a los que se puede tener acceso a través de una computadora, por ejemplo casetes magnéticos, tarjetas de memoria instantánea, discos de video digitales, cartuchos de Bernoulli, memorias de acceso aleatorio (RAM), memorias de sólo lectura (ROM), y similares también se pueden usar en el entorno operativo del ejemplo. Se pueden almacenar diversos módulos de programas en la unidad de disco duro 170, en el disco magnético 190, en el disco óptico 192, en ROM o RAM 150, incluyendo un sistema operativo 195, uno o más programas de aplicación 196, otros módulos de programas 197 y datos de programas 198. Un usuario puede introducir comandos e información en la computadora 100 a través de dispositivos de entrada como un teclado 101 y un dispositivo puntero 102. Otros dispositivos de entrada (no se muestran) pueden incluir un micrófono, una palanca de mando, una almohadilla de juegos, un digitalizador o similares. Estos y otros dispositivos de entrada con frecuencia se conectan a una unidad de procesamiento 110 a través de una interfaz de puerto en serie 106 que se acopla a la barra de distribución del sistema, pero puede conectarse a través de otras interfaces, por ejemplo, a través de un puerto paralelo, un puerto de juegos o una barra de distribución universal en serie (USB). Además, estos dispositivos pueden acoplarse directamente a la barra de distribución del sistema 130 a través de una interfaz adecuada (no se muestra). Un monitor 107 u otro tipo de dispositivo de visualización también se conecta a la barra de distribución del sistema 130 a través de una ¡nterfaz, como un adaptador de video 108. Además del monitor, las computadoras personales típicamente incluyen otros dispositivos de salida periférica (no se muestran), como altavoces e impresoras. En una modalidad que se prefiere, se proporcionan un digitalizador de pluma 165 y una pluma anexa o estilo 166 para capturar digitalmente entradas de captura a mano libre. Aunque se muestra una conexión directa entre el digitalizador de pluma 165 y el puerto en serie, en la práctica, el digitalizador de pluma 165 puede acoplarse directamente a la unidad de procesamiento 110, a través de un puerto paralelo u otra interfaz y la barra de distribución del sistema 130, como se conoce en la técnica. Adicionalmente, aunque el digitalizador 165 se muestra separado del monitor 107, se prefiere que el área de entrada útil del digitalizador 165 se extienda hasta el área de visualización del monitor 107. Además, el digitalizador 165 puede estar integrado al monitor 107, o puede existir como un dispositivo superior o de otra manera anexo al monitor 107. La computadora 100 puede funcionar en un entorno conectado en red usando conexiones lógicas a una o más computadoras remotas, como una computadora remota 109. La computadora remota 109 puede ser un servidor, un enrutador, una computadora personal (PC) en red, un dispositivo compañero u otro nodo de red común, y típicamente incluye muchos o todos los elementos descritos en párrafos anteriores relativos a la computadora 100, aunque sólo un dispositivo de almacenamiento de memoria 111 se ilustra en la Figura 1. Las conexiones lógicas que se ilustran en la Figura 1 incluyen una red de área local (LAN) 112 y una red de área extensa (WAN) 113. Tales entornos de red son lugares comunes en oficinas, redes de cómputo de toda una empresa, redes internas e Internet. Cuando se usa en un entorno conectado en una red
LAN, la computadora 100 se conecta a la red local 112 a través de una interfaz o adaptador de red 114. Cuando se usa en un entorno conectado en red WAN, la computadora personal 100 típicamente incluye un módem 115 u otros medios para establecer comunicación sobre la red de área extensa 113, como Internet. El módem 115, que puede ser interno o externo, se conecta a la barra de distribución del sistema 130 a través de la interfaz del puerto en serie 106. En un entorno conectado en red, los módulos de programa ilustrados relativos a la computadora personal 100, o porciones de éstos, se pueden almacenar en el dispositivo remoto de almacenamiento de memoria. Será evidente que las conexiones en red que se muestran son ilustrativas y se pueden usar otras técnicas para establecer un enlace de comunicaciones entre las computadoras. Se presume la existencia de cualquiera de varios protocolos ya conocidos como TCP/IP, Ethernet, FTP, HTTP, Bluetooth, IEEE 802.11x y el sistema puede funcionar en una configuración de cliente-servidor para permitir que un usuario recupere páginas de la red. III. Pluma para Capturar Imágenes Aspectos de la presente invención incluyen colocar una corriente de datos codificada en una forma desplegada que representa el flujo de datos codificados (por ejemplo, como se analizará en la Figura 4B, el flujo de datos codificados se usa para crear un patrón gráfico). La forma desplegada puede ser papel impreso (u otro medio físico) o se puede ser una pantalla que proyecta el flujo de datos codificados en conjunto con otra imagen o conjunto de imágenes. Por ejemplo, el flujo de datos codificados se pueden representar como una imagen gráfica sobre el papel o una imagen gráfica sobrepuesta en la imagen desplegada (por ejemplo, representando el texto de un documento) o puede ser una imagen gráfica física (no modificable) en una pantalla de visualización (de manera que una porción de la imagen capturada con un pluma se pueda localizar en la pantalla de visualización). Esta determinación de la ubicación de una imagen capturada se puede usar para determinar la ubicación de la interacción de un usuario con el papel, medio o pantalla de visualización . En algunos aspectos de la presente invención, la pluma puede ser de tinta para escribir en el papel. En otros aspectos, la pluma puede ser un estilo con el usuario escribiendo en la superficie de una pantalla de computadora. Cualquier interacción se puede proveer de vuelta al sistema conociendo la imagen codificada en el documento o dando soporte al documento visualizado en la pantalla de la computadora. Al capturar mensajes de manera repetida con una cámara en la pluma o estilo mientras recorre la pluma o el estilo el documento, el sistema puede seguir el movimiento del estilo, el cual controla el usuario. La imagen que aparece o se imprime puede ser una marca de agua asociada con el papel en blanco o rico en contenido o puede ser una marca de agua asociada con la imagen desplegada o una codificación fija que está por encima de una pantalla o integrada en una pantalla. La Figura 2A y 2B muestran un ejemplo ilustrativo de la pluma 201 con una cámara 203. La pluma 201 incluye una punta 202 que puede o no incluir un depósito de tinta. La cámara 203 captura una imagen 204 de la superficie 207.. La pluma 201 además puede incluir sensores y/ o procesadores adicionales como se representa en el cuadro abierto 206. Estos sensores y/ o procesadores 206 además pueden incluir la capacidad de transmitir información a otra pluma 201 y/ o a una computadora personal (por ejemplo, a través de Bluetooth u otros protocolos inalámbricos). La Figura 2B representa una imagen como sería vista por la cámara 203. En un ejemplo ilustrativo, el campo de visión de la cámara 203 (es decir, la resolución del sensor de imagen de la cámara) es 32x32 píxeles (en donde N=32). En la modalidad, una imagen capturada (32 píxeles por 32 píxeles) corresponde a un área de aproximadamente 5 mm por 5 mm del plano de la superficie capturada por la cámara 203. De esta manera, la Figura 2B muestra un campo de visión de 32 píxeles de largo por 32 píxeles de ancho. El tamaño de N es ajustable, de manera que un N mayor corresponde a una imagen con mayor resolución. De igual manera, aunque el campo de visión de la cámara 203 se muestra como un cuadrado para propósitos ilustrativos en la presente, el campo de visión puede incluir otras formas ya conocidas en la técnica. Las imágenes capturadas por la cámara 203 se pueden definir como una secuencia de marcos de imagen {l¡}, en donde l¡ se captura con la pluma 201 en el momento de la toma de muestra t¡. La tasa de toma de la muestra puede ser grande o pequeña, según la configuración del sistema y los requerimientos de desempeño. El tamaño del marco de la imagen capturada puede ser grande o pequeño, según la configuración del sistema y los requerimientos de desempeño. La imagen capturada por la cámara 203 puede ser usada directamente por el sistema de procesamiento o puede someterse a un filtrado previo. Este filtrado previo puede producirse en la pluma 201 o puede producirse fuera de la pluma 201 (por ejemplo, en una computadora personal). El tamaño de la imagen de la Figura 2B es 32x32 píxeles. Si cada tamaño de la unidad de codificación es de 3x3 píxeles, entonces el número de unidades codificadas capturadas será de aproximadamente 100 unidades. Si el tamaño de la unidad de codificación es de 5x5 píxeles, entonces el número de unidades codificadas capturadas es de aproximadamente 36. La Figura 2A también muestra el plano de la imagen 209 en el que la imagen 210 del patrón de la ubicación 204 se forma. La luz recibida desde el patrón en el plano del objeto 207 se enfoca con el lente 208. El lente 208 puede ser un lente único o un sistema de lentes de múltiples partes, pero aquí se representa como un lente único por razones de simplicidad. El sensor de captura de Imagen 211 captura la imagen 2 0. El sensor de imagen 211 puede tener un tamaño suficiente para capturar la imagen 210. De manera alternativa, el sensor de Imagen 211 puede tener un tamaño suficiente para capturar una imagen de la punta de la pluma 202 en la ubicación 212. Para referencia, la imagen en la ubicación 212 se denomina punta de la pluma virtual. Se observa que la ubicación de la punta de la pluma virtual es fija respecto al sensor de imagen 211 debido a la relación constante entre la punta de la pluma, los lentes 208 y el sensor de imagen 211. La siguiente transformación F s?p transforma las coordenadas de la posición en la imagen capturada por la cámara para colocar las coordenadas en la imagen real en el papel: L papel ~ F s?p(L sensor) Durante la escritura, la punta de la pluma y el papel no están en el mismo plano. De esta manera la transformación de la punta de la pluma virtual a la punta de la pluma real también es F s?p- L- punta de pluma ~ F s ?P punta de pluma virtual) La transformación F s?p puede estimarse como una transformación relacionada. Esto se simplifica como:
s,. s'm&,. stcos0r eos ? sin ?? - eos ?? sin < eos 0X sin ?? - eos 6y sin s ,. sin s .. cos¿? F' - eos ?? sin ?? - eos 0y sin ?? ' eos ?? sin ?? - eos 0y sin 0X ' 0, 0. 1
como la estimación de F s?p en donde ??, ??, sx, y sy son la rotación y escala de dos orientaciones del patrón capturado en la ubicación 204. Además, se puede refinar F' S?P mediante la correspondencia de la imagen capturada con la imagen real correspondiente en el papel. "Refinar" significa obtener una estimación más precisa de la transformación de F s?p mediante un tipo de algoritmo de optimización referido como un método recurrente. El método recurrente trata a la matriz F' s?p como el valor inicial. La estimación refinada describe la transformación entre S y P de manera más precisa. Después, se puede determinar la ubicación de la punta de la pluma mediante la calibración. Se coloca la punta de la pluma 202 en una ubicación fija L punta de pluma en el papel. Después, se inclina la pluma, permitiendo que la cámara 203 capture una serie de imágenes con diferentes poses de la pluma. Para cada imagen capturada, se puede obtener la transformación F S?P. Desde esta transformación, se puede obtener la ubicación de la punta de la pluma Virtual L punta de pluma virtual- L punta de pluma virtual ~ F p _>s (L punta de pluma) En donde L punta de pluma se inicializa como (0, 0) y p?S — L punta de pluma = (F s ??G Al promediar el valor de L punta de pluma virtual obtenido de cada imagen, se puede determinar la ubicación de la punta de la pluma Virtual L punta de pluma virtual- Con L punta de pluma virtual, Se puede obtener una estimación más precisa de L punta de pluma. Después de algunas veces de repetición, se puede determinar una ubicación precisa de la punta de la pluma virtual L punta de pluma virtual- Ahora ya se conoce la ubicación de la punta de la pluma virtual L punta de p¡uma virtual- También se puede obtener la transformación F s?p de las imágenes capturadas. Finalmente, se puede usar esta transformación para determinar la ubicación de la punta de la pluma real L punta de pluma · L punta de pluma ~ F s ?P punta de pluma virtual) IV. Codificación de la Matriz Se puede construir una matriz bidimensional mediante la multiplicación de una secuencia de una sola dimensión. Cualquier porción de la matriz bidimensional que contiene un número suficientemente grande de bits se puede usar para determinar su ubicación en la matriz bidimensional completa. Sin embargo, puede ser necesario determinar la ubicación de una imagen capturada o algunas imágenes capturadas. De manera que se reduzca al mínimo la posibilidad de una porción de imagen capturada asociada con dos o más ubicaciones en la matriz bidimensional, una secuencia sin repetición se puede usar para crear la matriz. Una propiedad de una secuencia creada es que la secuencia no se repite en una longitud (o ventana) n. A continuación se describe la creación de una secuencia de una sola dimensión y después la multiplicación de la secuencia en una matriz.
IV.A. Secuencia de la Construcción Una secuencia de números se puede usar como el punto de partida del sistema de codificación. Por ejemplo, una secuencia (también denominada una secuencia m) se puede representar como un conjunto de elemento q en el campo Fq. Aquí, q=pn en donde n = 1 y p es un número primo. La secuencia o secuencia m se puede generar mediante una variedad de técnicas que incluyen, sin limitarse a ésta, división polinominal. Usando la división polinominal, la secuencia se puede definir como se indica a continuación:
en donde Pn (x) es un polinominal primitivo de grado n en el campo Fq[x] (con qn elementos). Ri(x) es un polinominal diferente de cero de grado / (en donde /< ?) en el campo Fq[x]. La secuencia se puede crear usando un procedimiento repetitivo con dos pasos: primero, dividir los dos polinominales (que da como resultado un elemento del campo Fq) y, segundo, multiplicar el resultado por x. EL cálculo se detiene cuando el resultado se empieza a repetir. Este proceso se puede implementar usando un registro de cambio de la retroalimentación lineal como se estableció en un artículo de Douglas . Clark y Lih-Jyh Weng, "Secuencias de registro de cambios maximal y cerca de maximal: Contadores eficientes de eventos y logaritmos discretos y fáciles", IEEE Transactions on Computers 43.5 (mayo de 1994, pp 560-568).
En este entorno, se establece una relación entre los cambios cíclicos de la secuencia y Ri(x): al cambiar Ri(x) sólo se cambia la secuencia de manera cíclica y cada cambio cíclico corresponde a un polinominal Ri(x). Una de las propiedades de la secuencia resultante es que, la secuencia tiene un periodo de q" -1 y dentro de un periodo, sobre la anchura (o longitud) n, cualquier porción existe una sola vez y sólo una vez en la secuencia. A esto se denomina la "propiedad de ventana". El periodo qn -1 también se denomina como la longitud de la secuencia y n es el orden de la secuencia. El proceso descrito en el párrafo anterior es sólo uno de una variedad de procesos que se pueden usar para crear una secuencia con la propiedad de ventana. IV.B. Construcción de la Matriz La matriz (o m-matriz) que se pueden usar para crear la imagen(de la que la cámara puede capturar una porción) es una extensión de una secuencia de una sola dimensión o m-secuencia. Permite que A sea una matriz de periodo (m,, m2), a saber A(k + m I) = A(k, I + m2) = A{k, I). Cuando una ventana n-¡ x n2 cambia a través de un periodo de A, todas las matrices rii x n2 diferente de cero sobre Fq aparecen una vez y solo una vez. Esta propiedad también se denomina una "propiedad de ventana" en la que cada ventana es única. Entonces una ventana se puede expresar como una matriz de periodo (mi, m2) (con mi y m2 siendo el número horizontal y vertical de bits presentes en la matriz) y orden {n-¡, n2). Una matriz binaria (o m-matriz) se puede construir al duplicar la secuencia. Un enfoque es obtener una secuencia y después duplicarla a un tamaño de mí;x m2, en donde la longitud de la matriz es L = m-, x m2 = 2" -1. Alternativamente, se puede iniciar con un tamaño predeterminado del espacio que se desea cubrir (por ejemplo, una hoja de papel, 30 hojas de papel, ó el tamaño de un monitor de cómputo), determinar el área {m-¡ x m2), después se usa el tamaño para permitir que L > m( x m?, en donde L = 2n -1. Se puede usar una variedad de diferentes técnicas de multiplicación. Por ejemplo, las figuras de la 3A a la 3C muestran tres secuencias diferentes. Cada una de éstas se puede multiplicar en la matriz que se muestra en la Figura 3D. Los tres métodos de multiplicación diferentes se muestran como la cubierta en la Figura 3D y como los trayectos de trama en las figuras 3E a 3F. Se adopta el método de multiplicación que se muestra en la Figura 3D. Para crear el método de multiplicación que se muestra en la Figura 3D, se crea una secuencia {a,} de longitud L y orden n. Después, una matriz {bk¡} de tamaño mi x m2, en donde gcd(mí, m2) = 1 y L = mi x m2, se crea a partir de la secuencia {a,} al permitir que cada bit de la matriz se calcule como se muestra en la ecuación 1: bki = a¡, en donde k = / modfm^, I = / mod(m2), i = O, L -1. (1) Este enfoque de multiplicación se puede expresar de manera alternativa como puesta en la secuencia en la diagonal de la. matriz, después continuando desde el borde opuesto cuando se alcanza un borde. La Figura 4A muestra un ejemplo de técnicas de codificación que se pueden usar para codificar la matriz de la Figura 3D. Se aprecia que se pueden usar otras técnicas de codificación. Por ejemplo, una técnica de codificación alternativa se muestra en la Figura 11. Haciendo referencia a la Figura 4A, un primer bit 401 (por ejemplo, "1") se representa con una columna de tinta obscura. Un segundo bit 402 (por ejemplo "0") se representa con una flecha de tinta obscura. Se aprecia que se puede usar cualquier color de tinta para representar los diversos bits. El único requisito para seleccionar el color de la tinta es que proporcione un contraste significativo con el fondo del medio para que se pueda diferenciar por un sistema de captura de imagen. Los bits de la Figura 4A se representan por una matriz de celdas de 3x3. El tamaño de la matriz se puede modificar para que tenga cualquier tamaño ya que se basa en el tamaño y resolución de un sistema de captura de imagen. En las figuras 4C a 4E se muestra una representación alternativa de los bits 0 y 1. Será evidente que la representación de un uno o cero para los ejemplos de codificación de las figuras de la 4A a la 4E se pueden cambiar sin que esto tenga efecto alguno. La Figura 4C muestra representaciones de bits que ocupan dos filas o dos columnas en la disposición intercalada. La Figura 4D muestra una modalidad alternativa de los píxeles en las filas y columnas en forma de guiones. Finalmente la Figura 4E muestra representaciones de píxeles en columnas y filas en un formato de separación irregular (por ejemplo, dos puntos obscuros seguidos por un punto blanco). Haciendo referencia nuevamente a la Figura 4A, si un bit se representa por una matriz de 3x3 y un sistema de generación de imágenes detecta una fila obscura y dos filas blancas en la región de 3x3, entonces se detecta un cero (o un uno). Si se detecta una imagen con una columna obscura y dos columnas blancas, entonces se detecta un uno (o un cero). En este caso, se usa más de un píxel o punto para representar un bit. Usando un solo píxel (o bit) para representar un bit, es frágil. El polvo, arrugas en el papel, superficies rugosas y similares dificultan la lectura de las representaciones de unidades de bits de un solo bit. Sin embargo, será evidente que se pueden usar diferentes enfoques para representar de manera gráfica la matriz sobre una superficie. En las Figuras de la 4C a la 4E se muestran algunos enfoques. Será evidente que se pueden usar otros enfoques de igual manera. En la Figura 11 se establece un enfoque que usa sólo puntos con espacios cambiados. Una corriente de bits se usa para crear el patrón gráfico 403 de la Figura 4B. El patrón gráfico 403 incluye 12 filas y 18 columnas. Las filas y columnas se forman a través de una corriente de bits que se convierte en una representación gráfica que usa representaciones de bits 401 y 402. La Figura 4B se puede visualizar con la siguiente representación de bits:
V. Decodificación Cuando una persona escribe con la pluma de la Figura
2A o mueve la pluma cerca del patrón codificado, la cámara captura una imagen. Por ejemplo, la pluma 201 puede utilizar un sensor de presión cuando se ejerce presión sobre la pluma 201 contra el papel y la pluma 201 atraviesa un documento en el papel. Entonces la imagen s procesa para determinar la orientación de la imagen capturada respecto a la representación completa de la imagen codificada y extrae los bits que forman la imagen capturada. Para determinar la orientación de la imagen capturada con relación al área codificada completa, se puede observar que no todas las esquinas perceptibles que se muestran en las figuras 5A a 5D pueden representar el patrón gráfico 403. De hecho, con la operación correcta, el tipo de esquina que aparece en la Figura 5A no puede existir en el patrón gráfico 403. Por lo tanto, la orientación en la que el tipo de esquina que aparece en la Figura 5A falta es la orientación adecuada.
Continuando con la Figura 6, la imagen capturada por la cámara 601 se puede analizar y se puede determinar su orientación de manera que se pueda interpretar como la posición representada realmente por la imagen 601. Primero, la imagen 601 se revisa para determinar el ángulo 9 necesario para rotar la imagen de manera que los píxeles se ordenen vertical y horizontalmente. Se observa que son posibles las alineaciones de rejilla alternativas, incluyendo una rotación de la rejilla subyacente a una disposición no horizontal y vertical (por ejemplo, 45 grados). Al usar una disposición no horizontal y vertical se puede proporcionar el beneficio probable de eliminar las distracciones visuales del usuario, ya que los usuarios pueden tener una tendencia a observar patrones horizontales y verticales antes de otros. Por razones de simplicidad, la orientación de la rejilla (horizontal y vertical y cualquier otra rotación de la rejilla subyacente) se denomina colectivamente como la orientación de rejilla definida previamente. A continuación la imagen 601 se analiza para determinar qué esquina es la faltante. La cantidad de rotación o necesaria para girar la imagen 601 a una imagen lista para decodificar 603 se muestra como o = (T más la cantidad de rotación {definida por la esquina faltante}). La cantidad de rotación se muestra a través de la ecuación de la Figura 7. Haciendo referencia nuevamente a la Figura 6, el ángulo T se determina en primer lugar por el diseño de los píxeles que llegan a la disposición horizontal y vertical (u otra orientación de rejilla preferida) de los píxeles y la imagen rota como se muestra en 602. Entonces se realiza un análisis para determinar la esquina faltante y la imagen 602 se rota a la imagen 603 para determinar la imagen para decodificar. En este caso la imagen se rota 90 grados en dirección opuesta al sentido de las manecillas del reloj, de manera que la imagen 603 tiene la orientación correcta y se puede usar para decodificar. Es evidente que el ángulo de rotación T se puede aplicar antes o después de rotar la imagen 601 para que cuente para la esquina faltante. También es evidente que al considerar el ruido en la imagen capturada, los cuatro tipos de esquinas pueden estar presentes. Se puede contar el número de esquinas de cada tipo y seleccionar el tipo que tiene el número menor como el tipo de esquina faltante. Finalmente, el código en la imagen 603 se lee y se correlaciona con la corriente de bits originales que se usan para crear la imagen 403. la correlación puede realizarse de diferentes maneras. Por ejemplo, se puede realizar mediante un recurso recurrente en donde una corriente de bits recuperados se compara con todos los demás fragmentos de la corriente de bits dentro de la corriente de bits original. Segundo, un análisis estadístico se puede realizar entre la corriente de bits recuperada y la corriente de bits original, por ejemplo, al usar una distancia extravagante entre dos corrientes de bits. Será evidente que se pueden usar una variedad de enfoques para determinar la ubicación de la corriente de bits recuperada dentro de la corriente de bits original. Una vez que se tienen los bits recuperados, se necesita ubicar la imagen capturada dentro de la matriz original (por ejemplo, la que se muestra en la Figura 4B). El proceso para determinar la ubicación del segmento de bits dentro de la matriz completa se complica por un número de elementos. Primero, los bits reales que se capturan se pueden obscurecer (por ejemplo, la cámara puede capturar una imagen una imagen con escritura a mano que obscurece el código original). Segundo, el polvo, arrugas, reflejos, y similares pueden generar errores en la imagen capturada. Estos errores hacen que el proceso de localización sea más difícil. A este respecto, es posible que el sistema de captura de imagen necesite funcionar con bits no secuenciales extraídos de la imagen. A continuación se representa un método para operar con bits no secuenciales de la imagen. Permita que la secuencia (o secuencia-m) I corresponda a la serie de energía l(x) = 1/Pn(x), en donde n es el orden de la secuencia-m, y la imagen capturada contiene K bits de I b = (b0 bi b2 ... bk.-¡)1, en donde K = n y el superíndice t representa la transposición de la matriz o vector. La ubicación s de los bits K es sólo el número de cambios cíclicos de I de manera que b0 cambia al principio de la secuencia. Después esta secuencia de cambio R corresponde a la serie de energía xs / Pn (x) , o R = Ts (I), en donde T es el operador de cambio cíclico. Encontramos esta s de manera indirecta. El módulo de polinominales Pn(x) forma un campo. Es garantía que xs = ro + fix + ·-· rn-i xn~1 mod(Pn(x)) . Por lo tanto, podemos encontrar (r0, r1t ... rn.i) y resolver para s. La relación xs = r0 + r-¡x + ... rn-í xn~1 mod(Pn(x)) implica que R = xs = r0 + T + ...+ rn.i Tn~1 (I). Escrito mediante una ecuación lineal binaria, se convierte en R = r* A (2) en donde r = (r0 rY r2 ... r n.i)1, y A = (I 7(1) ... T (I))' la cual consiste en los cambios cíclicos de I de cambio 0 al cambio (n-1). Ahora sólo los bits K escasos están disponibles en R para resolver r. Permitamos que las diferencias de índices entre b¡ y b0 en R sean k¡, i = 1,2, ... , k — 1, entonces los elementos 1o y (k¡ + 1)° de R,i =1, 2, ... , k -1, son exactamente b0, b-i, b k.-t. Al seleccionar las columnas 1a y (k¡ + 1)a de A, / = 1, 2, k -1, se forma la siguiente ecuación lineal binaria: bf = r' (3) en donde M es una sub matriz de A. Si b no tiene errores, la solución de r se puede expresar como: R* = bl "1 (4) en donde M es una sub matriz nxn sin degeneración cualquiera de M y "b es el sub vector correspondiente de b. Con r conocida, se puede usar el algoritmo Pohlig-Hellman-Silver como lo observa Douglas Clark y Lih-Jy Weng en "Secuencias de registro de cambios maximal y cerca de maximal: Contadores eficientes de eventos y logaritmos discretos y fáciles", IEEE Transactions on Computers 43.5 (mayo de 1994, pp 560-568) para encontrar s de manera que xs = r0 + rxx + ...rn_xxn- mod( „(x)).
Debido a que la matriz A (con el tamaño de n por L, en
donde L=2 —1) puede ser enorme, se debe evitar almacenar la matriz entera A. De hecho, al observar el proceso anterior, dados los bits extraídos con la diferencia k¡ de índice, sólo las columnas primera y (k¡ + 1) de A son pertinentes para el cálculo. Dichas opciones de k¡ están limitadas, dado el tamaño de la imagen capturada. De esta manera, sólo esas columnas que se pueden involucrar en el cálculo deben guardarse. El número total de columnas tales es mucho menor
que L (en donde L=2 — 1 es |a longitud de la secuencia m). VI Corrección de Errores Si existen errores en b, entonces la solución de r se hace más compleja. Los métodos tradicionales de decodificación con corrección de errores pueden no aplicarse rápidamente, debido a que la matriz asociada con los bits capturados pueden cambiar de una imagen capturada a otra. Se adoptó un enfoque estoico. Asumiendo que el número de bits por error en b, ne, es relativamente pequeño en comparación con K, entonces la probabilidad de elegir bits n correctos de los bits K de b y la sub matriz correspondiente de M sin degeneración es alta. Cuando los bits n elegidos son todos correctos, la distancia extravagante entre b* y r*M, o el número de bits de error asociados con r, debe ser mínimo, en donde r se calcula mediante la ecuación (4). Repitiendo el proceso varias veces, es probable que la r correcta que resulta en los bits de error mínimos pueda identificarse. Si sólo hay una r que se asocia con el número mínimo de bits de error, entonces se observa como la solución correcta. De otra manera, si hay más de una r que se asocia con el número mínimo de bits de error, la probabilidad de que n exceda la capacidad de corrección de errores del código generado por M es mayor y el proceso de codificación falla. El sistema entonces se puede mover para procesar la siguiente imagen capturada. En otra implementación, la información sobre las ubicaciones anteriores de la pluma se puede tomar en consideración. Esto es, para cada imagen capturada, se puede identificar un área de destino en donde la pluma se puede esperar. Por ejemplo, si el usuario no levantó la pluma entre la captura de dos imágenes de la cámara, la ubicación de la pluma como la determina la segunda imagen capturada no debe estar tan alejada de la primera ubicación. Cada r que se asocia con el número mínimo de bits de error se puede comprobar para ver si la ubicación s calculada de r satisface la restricción local, es decir, si la ubicación está dentro del área de destino especificada. Si la ubicación s satisface la restricción local, las posiciones X, Y de los bits extraídos en la matriz regresan. De no ser así, el proceso de decodificación falla. La Figura 8 ilustra un proceso que se puede usar para determinar una ubicación en una secuencia (o secuencia m) de una imagen capturada. Primero, en el paso 801, se recibe un flujo de datos referentes a la imagen capturada. En el paso 802, se extraen la columnas correspondientes de A y se construye una matriz M. En el paso 803, los vectores de la columna independiente n se seleccionan de manera aleatoria desde la matriz IV1 y el vector r se determina resolviendo la ecuación (4). Este proceso se realiza Q veces (por ejemplo, 100 veces) en el paso 804. La determinación del número de veces del ciclo se analiza en la sección Cálculo de las veces del ciclo. En el paso 805, r se clasifica de conformidad con su número asociado de bits de error. La clasificación se puede hacer usando una variedad de algoritmos de clasificación como se conoce en la técnica. Por ejemplo, se puede usar un algoritmo de clasificación y selección. El algoritmo de clasificación y selección es benéfico cuando el número Q no es grande. Sin embargo, si Q se hace más grande, se pueden usar otros algoritmos de clasificación (por ejemplo, una clasificación de fusión) que maneja números mayores de elementos de manera más eficiente. El sistema entonces determina en el paso 806 si se realizó la corrección de errores de manera satisfactoria, comprobando su se asociaron múltiples r con el número mínimo de bits de error. Si la respuesta es afirmativa, se devuelve un error en el paso 809, que indica que falló el proceso de decodificación. Si la respuesta es negativa, la posición de s de los bits extraídos en la secuencia (o secuencia m) se calcula en el paso 807, por ejemplo, al usar el algoritmo Pohing-Hellman-Silver. Después, la posición (X,Y) en la matriz se calcula como x = s mod m 1 e y - s mod m2 y el resultado se obtiene en el paso 808. Vil. Determinación de la Ubicación La Figura 9 muestra un proceso para determinar la ubicación de una punta de pluma. La entrada es una imagen capturada por una cámara y la salida puede ser las coordenadas de la posición de la punta de la pluma. De igual manera, la salida puede incluir (o no) otra información, como el ángulo de rotación de la imagen capturada. En el paso 901, se recibe una imagen de una cámara.
Después, la imagen recibida se puede procesar previamente en el paso 902 (como se muestra en el paso 902 con la línea de guiones) para que ajuste el contraste entre los píxeles claros y los obscuros y datos similares. Después, en el paso 903, la imagen se analiza para determinar el flujo de bits en ésta. Después, en el paso 904, los bits n se seleccionan de manera aleatoria del flujo de bits durante varias ocasiones y la ubicación del flujo de bits recibido dentro de la secuencia original (o secuencia m) se determina. Por último, una vez que la ubicación de la imagen capturada se determina en el paso 904, la ubicación de la punta de la pluma se puede determinar en el paso 905. La Figura 10 proporciona más detalles sobre 903 y 904 y muestra el enfoque para extraer el flujo de bits dentro de la imagen capturada. Primero, se recibe una imagen desde la cámara en el paso 1001. Entonces la imagen puede someterse opcionalmente a un procesamiento previo de imagen en el paso 1002 (como se muestra con la línea de guiones del paso 1002). El patrón se extrae en el paso 1003. Aquí, los píxeles de las diversas líneas se pueden extraer para encontrar la orientación del patrón y el ángulo T. Después la imagen recibida se analiza en el paso 1004 para determinar las líneas de la matriz subyacente. Si las líneas de la matriz se encuentran en el paso 1005, entonces el código se extrae del patrón en el paso 1006. El código entonces se decodifica en el paso 1007 y la ubicación de la punta de la pluma se determina en el paso 1008. Si no se encontraron líneas de matriz en el paso 1005, entonces se devuelve un error en el paso 1009. VIII. Imágenes con Marca de Agua: Generación, Análisis y Colocación de Etiquetas Las modalidades de la invención se refieren a analizar imágenes de documentos, que contienen información codificada por posición, como patrones de laberintos y colocación de etiquetas en imágenes. Los resultados de dicho análisis del documento se pueden usar para determinar de manera eficiente una ubicación de la imagen capturada con la cámara dentro de un documento codificado por posición. Haciendo referencia a la Figura 11 , un sistema 1100, de conformidad con diversas modalidades de la invención incluye un módulo de generación y captura de imágenes 1102 y un módulo de análisis y colocación de etiquetas 1106. Las técnicas adecuadas para capturar imágenes para análisis posteriores y colocación de etiquetas se analizaron en párrafos anteriores en la sección III, titulada Pluma para capturar imágenes y en párrafos posteriores en esta sección y en la sección VIII. A, titulada Generación de imágenes de documentos en escala de grises con marca de agua. El módulo de análisis y colocación de etiquetas 1106 recibe, como entrada, datos de la imagen 1104 que emite a través del módulo de generación y captura de imágenes 1102 y daros de capacitación fuera de línea 1110; realiza procesos de análisis y colocación de etiquetas, como se analiza con mayor detalle a continuación y emite información de etiqueta e imagen 1 08. De conformidad con diversas modalidades de la invención, el tamaño de la imagen capturada por la cámara 203 es de 32*32 píxeles. El orden de la matriz-m incrustada, que se usa para codificar posiciones de conformidad con la ubicación en la superficie 207, es 36, a saber, el tamaño de la matriz-m es (2 8+1) * (218-1). Por lo tanto, para decodificar una posición única x-y desde una matriz-m del sub bloque, el número de bits de un sub bloque que se usa para determinar una posición en la superficie 207 debe ser al menos 36.
De conformidad con diversas modalidades de la invención, los documentos impresos reciben una marca de agua con patrones de laberinto. Dichos patrones de laberinto pueden ocluirse mediante el contenido del documento. Por ejemplo texto. Dependiendo del grado de dicha oclusión, puede no ser posible extraer suficientes bits de la matriz-m desde una imagen capturada con la cámara para determinar la ubicación de la imagen capturada con la cámara dentro del documento. De conformidad con diversas modalidades de la invención, las imágenes del documento con marca de agua se analizan y etiquetan. El análisis y colocación de etiquetas se refiere a la capacidad de determinar la posición x-y dentro de un documento con marca de agua con base en el grado de visibilidad de las celdas del patrón de laberinto en una ubicación particular dentro del documento. VIII.A. Generación de Imágenes de Documentos en Escala de Grises con Marca de Agua La Figura 12 ¡lustra los pasos para generar una imagen de un documento en escala de grises con marca de agua, la cual se puede analizar y etiquetar de conformidad con varias modalidades de la invención. Se obtienen imágenes del documento, por ejemplo, introduciendo un documento electrónico en un mapa de bits que corresponde a un documento impreso, como se muestra en 1200 y 1204, o mediante la digitalización de un documento en papel, como se muestra en 1202 y 1206. Los mapas de bits entonces se vuelven a tomar en una resolución adecuada, como se muestra en 1208. La determinación de la resolución se basa en las siguientes consideraciones: (1) la resolución de la imagen del documento no debe ser menor que la de la imagen capturada, ya que cuando la ubicación de la imagen capturada no se puede determinar a través de la decodificación de la matriz-m, la imagen capturada se acoplará con la imagen del documento en escala de grises con marca de agua para determinar la ubicación; (2) una celda del patrón del laberinto impreso debe correlacionarse con un número entero de los píxeles de la imagen del documento de manera que el algoritmo de correspondencia pueda funcionar de manera efectiva. Por ejemplo, si la resolución de la cámara es 0.15mm/píxel, es decir 0.15 mm en el mundo físico se correlaciona a un píxel de la cámara, el tamaño de la celda del patrón de laberinto impreso es 0.45 mm * 0.45 mm, es decir, una celda de patrón de laberinto impreso se correlaciona con 3*3 píxeles en el sensor de la cámara, la resolución de la imagen del documento también debe establecerse en 0.15 mm/ píxel de manera que la celda del patrón de laberinto impreso se correlaciones con un área de 3*3 píxeles en la imagen del documento. Las imágenes obtenidas reciben una marca de agua. La Figura 13 ilustra una imagen de una porción del contenido de un documento 1300, una porción de un patrón de laberinto codificado por posición 1302, el contenido y el patrón de laberinto combinado 1304. y una vista con acercamiento de una porción del contenido y el patrón de laberinto 1306 que muestra: (1) una ubicación en donde no es visible una celda del patrón de laberinto debido a que está ocluido por el texto subyacente 1308, y (2) una ubicación en la que la celda del patrón de laberinto no está ocluido por el contenido del documento y, por lo tanto, es visible 1310. VIll.B. Análisis y Generación de Etiquetas para la Imagen de un Documento De conformidad con varias modalidades de la invención, las imágenes del documento se analizan mediante la división de la imagen en bloques relativamente pequeños que son sustancialmente del mismo tamaño que las celdas del patrón de laberinto; determinar si estos bloques pequeños están ocluidos por el contenido del documento, como texto del documento; y, para cada píxel, contando el número de bloques completamente visibles en una ventana cercana con el píxel como el centro de la ventana; y etiquetar el píxel basado en el número. La ventana cercana puede tener sustancialmente el mismo tamaño que la imagen capturada por la cámara 203, es decir, 32 por 32 píxeles. Observe que el proceso mencionado anteriormente no requiere que la imagen del documento en escala de grises tenga marca de agua, es decir, el contenido combinado con los patrones de laberinto. Mientras la imagen del documento se divide en bloques relativamente pequeños que tienen sustancialmente el mismo tamaño que las celdas del patrón de laberinto, analizar la oclusión de las celdas del patrón de laberinto por el contenido del documento es equivalente a analizar la oclusión de los bloques por el contenido del documento. La Figura 14 muestra un ejemplo de dicha ventana cercana de 32 por 32 píxeles 1400 y su píxel central 1402. De conformidad con varias modalidades de la invención, los píxeles de las imágenes del documento se pueden etiquetar como uno de cuatro tipos: Tipo I: la ventana cercana de 32 por 32 píxeles (con el píxel en consideración como el centro) contiene sustancialmente sólo celdas del patrón de laberinto codificado por posición. Tipo II: la ventana cercana de 32 por 32 píxeles contiene 60 o más celdas del patrón de laberinto visibles. Tipo III: la ventana cercana de 32 por 32 píxeles contiene de 36 a 60 celdas del patrón de laberinto visibles. Tipo IV: la ventana cercana de 32 por 32 píxeles contiene de 35 o menos celdas del patrón de laberinto visibles. De conformidad con la diversas modalidades de la invención, cuando el centro de una imagen capturada se ubica en las áreas de tipo I o tipo II, la ubicación de la imagen dentro de un documento se puede determinar de manera exclusiva mediante la decodificación de la matriz-m. La Figura 15 muestra el resultado del análisis del documento de un documento ejemplar en el que las áreas del documento tienen color (o sombra) diferentes para representar el tipo (es decir, tipo I, II, III, o IV) en la que se ha etiquetado la porción del documento con base en la cantidad de celdas de patrón de laberinto que son visibles en la ventana cercana de 32 por 32 de cada píxel. Observe que al contar el número de celdas de patrón de laberinto, la ventana cercana de 32 por 32 píxeles debe girar 360 grados para que cuente para el hecho de que la cámara puede haber capturado una imagen del documento en cualquier ángulo. Sin embargo, para facilitar la implementación sólo se analiza la vista sin inclinación, y los errores causados por un ángulo inclinado se suman en el umbral para determinar el tipo de píxel. Por ejemplo, la Figura 16 ilustra un caso en donde la imagen capturada gira 45 grados. Esta es la representación del peor caso en donde un máximo de 17.2% de las celdas de patrón de laberinto visibles pueden haberse perdido. Incluso, si los píxeles de tipo II aún tienen al menos 49( = 60*1 -17.2%)) celdas de patrón de laberinto visible, lo que permite una posición c-y exclusiva determinada por la decodificación de la matriz m. En otras palabras, si se etiqueta un píxel como tipo I o II, debe existir un número suficiente de celdas de patrón de laberinto sin importar en qué ángulo pudo haber capturado la cámara una imagen, para determinar la posición x-y con la decodificación de la matriz-m. Por consecuencia, si una imagen capturada falla en la decodificación, es más probable que se ubique en las áreas de tipo III o IV. Si no se pueden decodificar las posiciones x-y de una secuencia de imágenes de un golpe de pluma debido a que no hay suficientes celdas del patrón de laberinto visibles, se puede usar un algoritmo de búsqueda para determinar la ubicación de Imágenes, como en las áreas de píxel de tipo III y IV, dentro del documento. Usando tal algoritmo de búsqueda sólo en las áreas del tipo III y IV disminuye el costo del cálculo para determinar la ubicación de las imágenes relacionadas con el uso del algoritmo de búsqueda para sustancialmente todas las partes de un documento. Por ejemplo, en el documento ejemplar de la Figura 15, sólo 13.7% de las áreas está etiquetado como tipo III (11.1%) o tipo IV (2.6%). El costo del cálculo asociado con la búsqueda del documento completo es mucho mayor que el de la búsqueda en sólo áreas de tipo III y IV. En una ¡mplementación, es posible que se requiera más de 10 segundos buscar en todo el documento, mientras que se necesita menos de 1 segundo para buscar sólo en las áreas de tipo III y IV. El análisis de la imagen disminuye el costo del cálculo en gran medida. IX. Generación de Etiquetas para las Imágenes Capturadas por la Cámara Las imágenes capturadas por la cámara también pueden estar etiquetadas con los cuatro tipos analizados anteriormente en la sección VIII. B titulada Análisis y generación de etiquetas para la imagen de un documento. Se puede hacer una determinación si la imagen capturada por la cámara contiene sustancialmente sólo patrones de laberinto codificado por posición. Dicho de otra manera, se puede hacer una determinación de si la imagen es o no una imagen de tipo I. Esta determinación inicial se analizará con mayor detalle a continuación. Si una imagen capturada con la cámara no es una imagen de tipo I, entonces un patrón de laberinto codificado por posición de la imagen capturada por la cámara se analiza para determinar un número de bits que codifican la posición que se pueden extraer de la imagen. Los parámetros de las líneas de la matriz del patrón de laberinto (escala y rotación a lo largo de cada dimensión, es decir afinar la transformación) se calculan primero, y después se determina la dirección original (o cuadrante) en donde el patrón de laberinto está incrustado. En consecuencia, la información de los bits de la matriz-m se determina con base en las líneas de matriz y direcciones de barra. Si el número de bits extraídos es mayor de aproximadamente 60, la imagen se etiqueta con el tipo II; si aproximadamente se extraen entre 36 y 60 bits, la imagen se etiqueta como tipo III, y si se extraen menos de 36 bits, entonces la imagen se etiqueta como tipo IV. Para dar una categoría a las imágenes capturadas con la cámara de esta manera, se puede usar un algoritmo de umbral, que se analiza posteriormente en la sección IX. B, titulada Algoritmo de umbral, para separar las áreas de patrón de laberinto de las áreas de texto. Después las imágenes se puede etiquetar con base en el número de bits extraídos. Los bits extraídos del tipo I, II y III se pueden usar para determinar la posición x-y de la imagen capturada con la cámara dentro de un documento más grande. El proceso de determinación de posición de este tipo se puede omitir para las imágenes de tipo IV, ya que no contienen suficientes bits para la decodificación de x-y. Para determinar si una imagen contiene patrones de laberinto codificados por posición de manera sustancial solamente, opuesto a los que contienen tanto contenido de documento como patrones de laberinto, se puede usar una característica denominada intervalo de soporte del histograma de imagen del gradiente (SIGIH) de conformidad con varias modalidades de la invención. El SIGIH se usa con base en el conocimiento de que las imágenes de patrón de laberinto puras típicamente no contienen bordes, mientras que las imágenes con contenido de documento, como texto, contienen típicamente bordes, ya que el contenido del documento con frecuencia es más obscuro que las celdas de patrón de laberinto o las áreas vacías. IX. A. Extracción de Características De conformidad con varias modalidades de la presente invención, un primer paso de la extracción de características es un operador gradiente, como el operador de borde Sobel u otro operador gradiente, se puede usar para obtener imágenes de gradiente. Con referencia a la Figura 17, los dos granos de convolución, 1700 y 1702, forman el operador de borde Sobel. Para usar el operador de borde Sobel, cada píxel en una imagen se envuelve con ambos granos de convolución 1700 y 1702. Un grano responde de manera maximal a un borde generalmente vertical y el otro grano responde a un borde horizontal. Un valor "de la suma de vectores" de las dos convoluciones se toma como el valor de salida para un píxel particular. El resultado es una imagen de gradiente. Se puede calcular un histograma de la imagen de gradiente producida por el operador gradiente. El intervalo de soporte del histograma de imagen de gradiente (SIGIH) se puede obtener entonces del histograma de la imagen de gradiente. Por ejemplo, la Figura 18 muestra un histograma de la imagen de gradiente de una imagen capturada que contiene sólo patrones de laberinto. La característica SIGIH es 17, que es número mayor en el eje x que puede tener un valor diferente de cero, para el histograma de la Figura 17. La Figura 19 muestra un histograma de la imagen de gradiente de una imagen capturada que contiene el contenido del documento, como texto y/ o uno o más dibujos. La característica SIGIH es 44 para el histograma de la Figura 19. IX.B. Algoritmo de Umbral Un algoritmo de umbral, para determinar si una imagen es de tipo I o no, de conformidad con diversas modalidades de la invención, se puede dividir en 2 sesiones: (1) capacitación fuera de línea y (2) generación de etiquetas en línea. IX.B.1. Capacitación en Línea En una sesión de capacitación fuera de línea, la característica SIGIH se puede calcular para un número relativamente grande de imágenes con etiquetas conocidas (es decir, tipos I, II, III o IV). El SIGIH de las imágenes del patrón de laberinto puro con frecuencia es menor que el SIGIH para las imágenes de otros tipos. Un umbral óptimo ? se puede seleccionar con base en los resultados del proceso de los datos de capacitación. Para sustancialmente todas las imágenes de patrón de laberinto puro en el conjunto de capacitación, los SIGIH son menores que 77, y para sustancialmente todas las imágenes de patrón de laberinto no puras, su SIGIH es mayor que 77. La Figura 20 muestra un resultado ejemplar de la capacitación fuera de línea en donde ?, un umbral 2004 óptimo, se selecciona en 32. También, se muestran las barras 2002 del histograma que corresponden a las imágenes de patrón de laberinto puro y las barras del histograma 2006 que corresponden a imágenes de patrón de laberinto no puras (es decir, que incluye el contenido de documento). IX.B.2 Generación dé Etiquetas en Línea Durante la generación de etiquetas, se calcula cada
SIGIH de la imagen. Si el SIGIH es menor que ?, entonces la imagen se etiqueta como imagen de tipo I. De otra manera, si el SIGIH es mayor que 77, la etiqueta se etiqueta con un tipo diferente de l (es decir, tipo II, III y IV). El análisis anterior referente al análisis y generación de etiquetas del documento asume que el contraste de las imágenes capturadas permanece siendo relativamente consistente. Dicho de otra manera, se asume que el amplificador del sensor y/ o las condiciones de iluminación de la cámara siguen siendo relativamente consistentes. Si estas condiciones cambian de manera no trivial, puede llevarse a cabo una nueva capacitación para actualizar los parámetros de las características. X. Notas Concluyentes La descripción anterior es meramente ilustrativa de la solicitud de los principios de la presente invención. Los expertos en la técnica pueden implementar otras disposiciones y métodos sin separarse del espíritu y alcance de la presente invención. Cualquiera de los métodos de la invención se puede implementar en programas y sistemas de programación que se pueden almacenar en los discos de la computadora o en otros medios legibles mediante una computadora.