LA DECODIFICACIÓN DE LOS INGENIEROS

En la pagina web  de la Biblioteca de la Universidad fue publicado el artículo del Instituto de Informática de la Facultad de Ingeniería que detalla el método que permitió la decodificación del tapiz. A continuación se ofrece el texto completo del artículo académico.

Reporte Técnico RT 15-10

Jorge Tiscornia*
Juan José Cabezas**

Resumen

A finales de 2014, Jorge Tiscornia le envía a Juan José Cabezas una imagen digitalizada de un tapiz de 55×36 cm tejido en lana (ver figura 1). Fue hecho en el Penal de Libertad durante la dictadura militar en 1980. Se sospecha que contiene un informe codificado sobre la situación política de los presos en el Penal.

El código se construye sobre pares de seis colores para el primer elemento del par y tres para el segundo. Esto cubre un alfabeto reducido de 18 letras. El tapiz contiene aproximadamente unas 6.500 letras. La información disponible por Jorge Tiscornia indica que el tapiz no llegó a su destino en el exterior y, por tanto, nunca fue decodificado. Hasta donde se sabe, no hay documentos, de esta clase, provenientes del Penal de Libertad durante la dictadura. Su valor histórico parece indudable.

Luego de 35 años el estado del tapiz no es bueno. Las polillas han borrado cerca de un 10% del mismo. También en algunas partes los colores se han degradado. Para decodificar su informe, se han usado dos algoritmos de reconocimiento de imagen complementados con la observación ampliada del tapiz. El contenido se ha recuperado en su mayor parte.

Figura 1: Imagen digitalizada del tapiz.

El código del tapiz
El código secreto se construye sobre pares de seis colores para el primer elemento del par y tres para el segundo (ver Figura 2). Los colores utilizados son:
1. N – naranja
2. G – verde oscuro
3. O – beige, ocre, rosado
4. V – verde claro
5. B – blanco, gris claro
6. L – lila

Figura 2: Los colores del tapiz.

Jorge Tiscornia ha obtenido, del autor del tapiz, el código que permite determinar qué letra se asocia con una cierta pareja de colores:

Esto cubre un alfabeto reducido de 18 letras (A,D,E,F,H,I,J,K,L,M,N,O,P,R,S,T,U y V).

En realidad, estos símbolos fonéticos representan más de una letra:
K representa la letra k, la c cuando suena como la k y la q.
B representa la letra b y la v.
S representa la letra s y la c cuando suena como la s.
J representa la letra j y la g.

Por ejemplo, la siguiente lista de parejas de colores: {(B,O),(B,N),(L,G),(G,N),(V,N),(B,G),(V,G),(G,N),(L,G)} corresponde a las letras HOLAKETAL y, sabiendo que el código no contiene separadores o signos de puntuación debemos deducir que HOLAKETAL representa la frase Hola qué tal.

Obsérvese que la ausencia de separadores, acentos y signos de puntuación hace que una cierta tira de letras de este código pueda representar varias sentencias del español, válidas gramatical y semánticamente. En otras palabras, el código del tapiz es ambiguo.
El tapiz contiene aproximadamente unas 6.400 letras, dispuestas en una matriz de 96 filas por 67 columnas.

El estado actual del tapiz

Conocemos el código y tenemos una imagen digitalizada con buena resolución. El tapiz debería ser decodificado sin problemas.
Entonces, ¿cuáles son las dificultades?

Al observar el tapiz e intentar decodificar algunas líneas de manera manual o artesanal, constatamos varias dificultades:

1. aproximadamente el 10% de las parejas de colores están dañadas total o parcialmente por las polillas (ver ángulos superior izquierdo e inferior derecho de la Figura 2).

2. aproximadamente un 5% de los colores se han corrido de su lugar original invadiendo otras parejas de colores y distorsionando la información del tapiz

3. luego de 35 años, los colores, en ciertas partes del tapiz, se han degradado. Hay lugares que es difícil distinguir el blanco del ocre o el verde claro del oscuro.

4. la ausencia de separadores y símbolos de puntuación complica el proceso de traducción. Por ejemplo, la tira de caracteres AKNTPERONOA refiere a a CNT pero no a donde CNT es la Convención Nacional de Trabajadores.

En estas condiciones se resuelve hacer el trabajo de extracción de la información en cinco etapas:

1. Convertir la imagen digitalizada en una matriz de puntos de color apta para ser procesada por computadora.

2. Construir un programa que pueda distinguir los 6 colores teniendo en cuenta los daños que presenta el tapiz.

3. Convertir la matriz de puntos de color en una matriz de letras incluyendo información sobre las parejas de colores dañadas. Esta etapa se hará por computadora.

4. Transformar la matriz de letras en texto separando las palabras. Esta etapa se hace manualmente.

5. Generar el documento final. Esta etapa se hace manualmente.

Decodificación

4.1. matriz de puntos de color.

La imagen digitalizada del tapiz es convertida de su formato original JPG a Postscript[?]. Luego, la imagen en Postscript es convertida a un formato matricial de texto plano. Cada punto de color se representa por una terna (RGB)[?] de números con un rango de 0 a 25. El primer miembro de la terna representa el componente rojo, el segundo verde y el tercero azul. El negro se representa con (0,0,0) y el blanco con (25,25,25). Una pequeña parte de la matriz posee el siguiente aspecto:

Los colores del tapiz

Se construye un programa que dado un punto de color de la matriz determina si es válido y, en ese caso, cuál de ellos ( N, G, O, V, B o L). Para hacer el programa se toman muestras de puntos de colores en diferentes lugares del tapiz. Luego se determina el rango de cada componente de la terna de colores que representa el punto. También se incluyen las relaciones de proporcionalidad entre ellos.

Se comprueba que en algunos casos los rangos y relaciones definidos para un color pueden aceptar otro. Esto ocurre principalmente entre V (verde claro) y G (verde oscuro) y entre O (ocre) y B (blanco). Dado que G y B son colores más dominantes en superficie que V y O, se opta por priorizar V y O en casos ambiguos.

El lenguaje de programación utilizado es C5 [?].

Decodificación

Para convertir la matriz de puntos de color en una matris de letras se ha experimentado con algoritmos de tipo vectorial y matricial[?]:

1. matricial: el algoritmo intenta determinar una matriz probablemente válida y busca el color dominante.

2. vectorial: el algoritmo se activa al encontrar dos puntos del mismo color c en una línea horizontal probablemente válida. Luego intenta por medio de vectores horizontales y verticales determinar si c es el color dominante.

El algoritmo matricial se comportó levemente mejor que el vectorial en la mayoría de las líneas del tapiz.

Traducción

El proceso de traducción se realizó manualmente tomando como base la matriz de letras generada por computadora (ver Apéndice A) y la observación de la imagen digitalizada en forma ampliada. Se traduce cada línea en cuatro etapas:

1. detección de palabras posiblemente válidas que surgen de forma evidente. Estas palabras se denominan palabras básicas.

2. búsqueda de palabras anteriores y posteriores a las palabras básicas.

3. en el caso de partes dañadas observación directa de la imagen digitalizada.

4. estructuración de la lista de palabras obtenida. Por ejemplo, la siguiente línea boxes Nr.22x=166y=112N[U|*L(SLF)ARD(DINTEL)SARROLLOIDARESPLIKASION[I|*K[D|*EP(?)*OTATRESTENDENSIAAN<I>TIM<D>LN[a|*(KTV)J[N|*FALSO(?)*— fin — x=976 y=107

se traduce, en la primer etapa, a N[U|*L(SLF)AR DESARROLLO IDARESPLIKASION [I|*K[D|*EP(?)*OTATRES TENDENSIA AN<I>TIM<D>LN[a|*(KTV)J[N|* FALSO

se traduce, en la segunda etapa, a N[U|*L(SLF)AR DESARROLLO I DAR ESPLIKASION [I|*K[D|*EP(?)*OTATRES TENDENSIA ANTI MLN [a|*(KTV)J[N|* FALSO

se traduce, en la tercer etapa, a pULSAR DESARROLLO I DAR ESPLIKASION DErrOTATRES TENDENSIA ANTI MLN KoN FALSO

y se traduce, en la cuarta etapa, a … pulsar desarrollo y dar explicación derrota. 3 – tendencia anti-MLN con falso …

Conclusiones

El principal resultado de este trabajo ha sido, sin dudas, positivo: más del 95% del contenido del tapiz pudo ser recuperado. En estas condiciones, el tapiz puede iniciar su camino para convertirse en un objeto de valor histórico importante.

El tapiz y su contenido constituyen un objeto interesante desde el punto de vista técnico: se ha logrado codificar un volumen no despreciable de información en un medio sencillo y disponible por los presos del Penal de Libertad, probablemente se invirtió una cantidad considerable de horas de trabajo para su construcción, pero el tiempo es un recurso abundante para los presos, se utilizó un código simple y minimal que, los hecho así lo indican, resultó seguro pasando todos los controles del Penal.

La única dificultad que podemos señalar está referida a los receptores de la información del tapiz y se debe principalmente a la ausencia de separadores en el texto. Esto enlentece el proceso de decodificación y deja ambiguedades que el texto no permite resolver. En muchos casos, se resolvieron recurriendo al conocimiento personal de los autores (especialmente Jorge Tiscornia) sobre la situación y contexto político y social del MLN y el Penal de Libertad en 1980.

En síntesis, nuestra principal conclusión es que el tapiz fue una buena idea, implementada correctamente, de forma segura, eficiente y económica en las condiciones concretas del Penal, en ese época. El hecho de decodificarlo 35 años después, en cierto modo, lo demuestra.