TFG Readme:

# Introduccion al Proyecto

Este proyecto ha sido concebido con la finalidad de la creación de objetos 3D a partir de un video, ofreciendo un proceso completo y guiado de las diferentes etapas necesarias para obtener un objeto 3D que se pueda imprimir por todas las impresoras 3D del mercado.

## Pasos del Proceso

1. **Segmentación del Video:** Dividir el video en frames individuales para su posterior procesamiento.
2. **Procesamiento de los Frames:** Aplicar técnicas de procesamiento a los frames con el objetivo de obtener la mejor calidad posible en la reconstrucción del objeto.
3. **Extracción de Características:** Identificar y extraer características (keypoints) de las imágenes para luego organizar los frames y alimentar los datos a la red neuronal INSTANT NeRFs. (COLMAP)
4. **Renderización de la Escena:** Utilizar la red neuronal INSTANT NeRFs para renderizar la escena tridimensional.
5. **Refinamiento de la Malla:** Realizar ajustes y mejoras en la malla tridimensional resultante para optimizar su calidad. (MeshLab)
6. **Análisis de Resultados:** Como herramienta de investigación, se realiza un análisis exhaustivo de los resultados obtenidos y la calidad del objeto 3D final.


# Microservicio Web (Flask)

Como complemento, se ha desarrollado un microservicio web utilizando Flask, junto con una API y una aplicación (APK) para Android. Esta implementación permite transferir fácilmente videos grabados desde dispositivos móviles al PC, simplificando así la recopilación de datos para alimentar la aplicación principal.

# Requerimientos

Los siguientes requerimientos son totalmente indispensables para asegurar el correcto funcionamiento de las distintas características del proyecto.

### Python

- Para el desarrollo del proyecto se ha utilizado en todo momento la versión 3.11.8 de python, puede ser que en algunas versiones anteriores de errores.
- Para la instalación de las diferentes dependencias puede usarse el comando `pip install -r requirements.txt`.

### Sistema

La aplicación principal ha sido diseñada para ejecutar operaciones avanzadas tanto a nivel de CPU como de tarjeta gráfica. Por lo tanto, se requiere una configuración potente para llevar a cabo todo el proceso de forma óptima.

### Tarjeta Gráfica, mínimo 8 GB de memoria interna:

Si tienes Windows, descarga una de las siguientes versiones correspondientes a tu tarjeta gráfica y extráela.

- [**RTX 3000 & 4000 series, RTX A4000&ndash;A6000**, and other Ampere & Ada cards](https://github.com/NVlabs/instant-ngp/releases/download/continuous/Instant-NGP-for-RTX-3000-and-4000.zip)
- [**RTX 2000 series, Titan RTX, Quadro RTX 4000&ndash;8000**, and other Turing cards](https://github.com/NVlabs/instant-ngp/releases/download/continuous/Instant-NGP-for-RTX-2000.zip)
- [**GTX 1000 series, Titan Xp, Quadro P1000&ndash;P6000**, and other Pascal cards](https://github.com/NVlabs/instant-ngp/releases/download/continuous/Instant-NGP-for-GTX-1000.zip)

## Ejecución del sistema

1. Para crear el entorno de Python, verion 3.11.8:

    ```bash
    python3 -m venv .venv

2. Se activa el entorno:

    ```bash
    .venv\Scripts\activate

3. Y se instalan los requerimientos del proyecto:

    ```bash
    pip install -r requirements.txt


