# Tecnologías multimedia e interacción/Curso 2016-2017: Caso 5
## ColorBot

Este proyecto fue creado para la asignatura de TMI en el curso 2016/2017. El resultado es un bot de Telegram capaz de dar color a imágenes en blanco y negro. Además se le añadió la funcionalidad de conversión de formato de la imagen.

### Motivación e idea

Los comienzos del proyecto fueron bastante complicados por la falta de una idea que convenciera y motivara tanto al grupo como al profesor. Esta condición vino, en parte, motivada por la escasa experiencia de los miembros del grupo con el desarrollo multimedia. Para intentar solucionar este problema inicial se decidió investigar entre varias tecnologías posibles.
Una de las ideas surgidas durante el periodo de exploración fue la de crear un vídeo interactivo e, incluso, combinarlo con la grabación de vídeo 360º. No obstante, esta idea fue descartada debido a que las herramientas para editar el vídeo resultaban demasiado limitadas reduciendo la parte de desarrollo a la mínima expresión. Además, se realizaron pruebas con el nuevo motor de videojuegos Lumberyard desarrollado por Amazon y con un gran potencial para desarrollar videojuegos. Si bien en este caso contábamos con una herramienta realmente potente y bien documentada, nuestro problema apareció a la hora de instalarlo ya que exigía unos requisitos que no podía cumplir la mayoría del grupo.
Fue el descubrimiento del algoritmo de coloreado desarrollado por Richard Zhang lo que motivo la idea definitiva. Siendo conscientes del potencial que alberga el algoritmo, puesto que hoy en día no existe una forma automatizada de colorear imágenes en blanco y negro, decidimos hacer su uso más accesible. Es por ello que tomamos la decisión de adaptarlo a un bot de Telegram ya que es una aplicación popular, de fácil uso y que puede utilizarse tanto desde dispositivos móviles como desde ordenadores.
Además, durante el desarrollo del proyecto decidimos añadir la funcionalidad de conversión de formato para hacer a nuestro bot más funcional.

### Desarrollo

Para el desarrollo del bot fueron empleadas las siguientes herramientas
* BotFather: Bot de Telegram diseñado específicamente para facilitar la creación de bots. Permite la edición de diversos elementos del bot, además de proporcionar un token para controlar la configuración y el desarrollo.
* Api Telegram para Python (Telebot): API proporcionada por Telegram para el desarrollo de bots. Además la elección de python viene motivada porque tanto la api de Telegram como el algoritmo de coloreado se integraban a la perfección en este lenguaje.
* Algoritmo de coloreado: Fue desarrollado por Richard Zhang para la Universidad de Berkeley y se encuentra bajo licencia BSD. Permite tanto el despliegue y entrenamiento de una red neuronal convolucional de coloreado como el uso de modelos ya preentrenados.
* Algorithmia: Sitio web que permite alojar algoritmos en la nube y permite realizar llamadas al algoritmo mediante una API de python. Se decidió almacenar en ella el algoritmo de coloreado debido a la capacidad de computo y a los requisitos gráficos requeridos por el propio algoritmo.

### Uso del bot

Para comenzar a utilizar el bot basta con enviar el comando /inicio. Una vez comenzada la comunicación el bot informa al usuario de cuales son sus funciones y que basta enviarle una foto para dar comienzo. En ese caso mostrará dos opciones:
* Colorear la imagen: Si se selecciona esta opción el bot hará una llamada al algortimo de coloreado y devolverá la imagen resultante. Además, al acabar preguntará si desea realizar un cambio de formato.
* Cambiar formato: En este caso, se desplegará un segundo menú con los formatos de conversión posibles. Realizará la conversión al formato elegido y se la devolverá al usuario, quedando a la espera de recibir una nueva imagen.
* ↑ «Amazon Lumberyard – Motor de juegos AAA gratuito». Amazon Web Services, Inc. (en español de España). Consultado el 2017-06-19.