[en] Many images are associated to plenty of text that describe the image somehow. Within this text, you can find words that can describe the image, which you can use as a label or "tag" to define it. The problem we face is how to get those words and decide which describes the picture best. The goal we have proposed in this project is to develop a tool to obtain the words in a text that best describe a picture. First we created an algorithm to extract the most important words in a text to later decide the best word that describes the picture. For that, we make queries on an images database with those words to make a comparison between those images and the one we want to tag. Image comparison is based on comparing the color histograms and comparing edges. We go into detail later in the document, but in the end we get a numerical result that measure the degree of similarity of two images. When we compare the results of all images of every word we decide, using some method (such as the arithmetic mean) the word that produces the best results. We develop this algorithm in a number of libraries that implement each algorithm module (word choice, image search, image comparison and tagging the image) and a test program. This paper will detail the performance of the algorithm and some theoretical aspects on which it is based. Then we explain the technologies used are and why we chose them. After this, we show the design of the library we developed. Finally, we show the results of the test program.

[es] Muchas imágenes, vienen acompañadas de gran cantidad de texto que se relaciona con dicha imagen de algún modo. Dentro de esto texto podemos encontrar palabras que pueden describir la imagen, que sirven como etiqueta o "tag" para definirla. El problema que se nos plantea es como obtener esas palabras y decidir cuál describe mejor la imagen. El objetivo que nos hemos propuesto en este proyecto es desarrollar una herramienta para a obtener de un texto las palabras que mejor describen una imagen. Primero plantearemos un algoritmo para extraer las palabras más importantes de un texto para posteriormente decidir que palabra es la que mejor describe la imagen. Para ello realizaremos búsquedas sobre una base de datos de imágenes de esas palabras para posteriormente realizar una comparación de esas imágenes con la que queremos etiquetar. La comparación de imágenes se basará en comparar los histogramas de color y la comparación de bordes. Ya entraremos en detalle en cuerpo del documento, pero al final obtendremos un resultado numérico que medirá el grado de similitud de ambas imágenes. Cuando tengamos los resultados de comparar todas las imágenes de cada palabra podremos decidir, aplicando algún método (como por ejemplo la media aritmética) que palabra produce los mejores resultados. Desarrollaremos este algoritmo en una serie de bibliotecas que implementan cada módulo del algoritmo (selección de palabras, búsqueda de imágenes, comparación de imágenes y etiquetado de la imagen) y probaremos los resultados con un programa de prueba. En el presente documento se detallará en primer lugar el funcionamiento del algoritmo y algunos aspectos teóricos en los que se basa. A continuación, se explican las tecnologías utilizadas y por qué hemos optado por ellas. Luego se mostrará el diseño de las bibliotecas desarrolladas. Finalmente, enseñaremos un ejemplo de ejecución en el que se etiquetará una imagen.