Monday, October 20, 2014

Programación lúdica: Un experimento fallido


Recientemente conseguí una tesis de maestría, de la Universidad de Alberta, en Canadá, la cual habla de un tema que estoy investigando. La tesis se puede descargar directamente en formato PDF del sitio de la mencionada institución. Descubrí que en realidad el PDF es una colección de imágenes, es decir, no es un texto convertido a PDF sino que pareciera que alguien escaneo -quizás página por página- la tesis original y la hace accesible como PDF, aunque investigando un poco más, hallé que no se escaneó, sino que es una imagen microfilmada y pasada a PDF de alguna manera.

La cuestión es que el escaneo de la tesis permite leerla pero, por alguna razón, quedó muy oscura, es decir, cada página muestra las palabras como si estuviesen en “súper-negritas”. Se puede leer, pero cansa, resulta de alguna manera incómodo. Como que el cerebro tiene que esforzarse para entender algunas palabras. Como me empezó a fastidiar esto, pensé que algo se podría hacer, y considerando que de procesamiento de imágenes algo sé, pues he dado este curso por algunos semestres en la Facultad de Ciencias de la UNAM, empecé a buscar qué filtro podría usar para hacer más legible el documento en cuestión.

Se me ocurrió entonces la siguiente idea: tomar cada página del texto, como una imagen JPG y procesarla con un filtro aún por determinar. El primer problema era cómo pasar un archivo PDF a imágenes. Sorpresivamente hallé que más de uno ha tenido esta necesidad y hay algunos programas que funcionan de manera gratuita, en línea, que hacen esta tarea. El que hallé muy conveniente es éste, el cual puede procesar un archivo PDF hasta de 25 megabytes. Suficiente, mi archivo era de 3 megas, aproximadamente.

El convertidor me presenta cada una de las hojas procesadas como imágenes, las cuales puedo descargar una por una, pero el propio sistema en línea me crea un archivo comprimido con todas las imágenes creadas. Así me ahorro el dar unos 102 clics para descargar cada imagen (la tesis en cuestión contiene 102 páginas de principio a fin). Una vez con las páginas convertidas a imágenes JPG, me puse a ver qué filtro podía ser el más adecuado. Hallé que probablemente el filtro “máximo” podría hacer la tarea. Este filtro toma una vecindad de 5 x 5 pixeles y calcula los colores en cada uno de ellos. Se halla el más brillante y ése se coloca en el punto de interés, es decir, en el centro de la vecindad de 5 x 5. Esto es básicamente un filtro llamado de “convolución”, el cual permite hacer filtros como los siguientes: hallar bordes, hacer la imagen más difusa, hacerla más precisa, etcétera.

Como todas las imágenes las tenía en una carpeta, escribí un pequeño programa que lee imagen por imagen (de la carpeta que yo especifico), las procesa y me entrega cada una de las imágenes convertidas. Cuando se tienen todas las imágenes convertidas, entonces se hace el proceso inverso, es decir, se suben a una página todas ellas y un programa en línea las convierte en un archivo PDF (también de forma gratuita).


Hice una prueba usando la imagen que venía en donde leí sobre el filtro máximo y parecía convincente. Entonces tomé las imágenes y las empecé a procesar… El proceso es lento, pues cada una de ellas es de unos 1275 x 1650 pixeles. Además, en un afán de ser más eficiente, antes de procesar cada imagen la pasaba a blanco y negro. Hice un par de pruebas ya con las primeras páginas de la tesis a ver cómo funcionaba el asunto y hallé estos resultados: No funcionó. No fue el filtro adecuado… Habrá que buscar otro. Quizás el filtro “Sharpen” sea el correcto. Fue todo este trabajo fue experimento fallido, pero aprendí bastante al programarlo. Esta es otra de las virtudes de la programación lúdica.

No comments: