Tras describir cual ha sido el procedimiento que he seguido durante la práctica, es hora de analizar los resultos. Para visualizar mejor los puntos he decidido utilizar un visor de puntos 3D externo, Meshlab. He notado que a medida que se van pintando los puntos obtenidos en el visor que se adjunta con Gazebo el tiempo de ejecución aumento. Por ello he optado por ir almacenando los puntos en una lista para finalmente guardarlos en un fichero .obj. De esta manera, una vez finalizada la ejecución, es posible cargar el archivo en el visualizador y y observar el resultado de la reconstrucción.
Debido a un fallo de programación la reconstrucción salía con los contornos bien dibujados pero en un plano 2D dentro del mundo. Después de arreglar ese pequeño error en una condición, he podido representar los bordes de las figuras en tres dimensiones. Sin embargo, el resultado obtenido tampoco era del todo bueno. Era posible intuir alguna de las figuras pero realmente no estaba bien. Revisando el código me dí cuenta que el error se encontraba en el cálculo de la ecución de la línea epipola. Las variables no estaban restringidas a enteros, por lo que iba acumulando decimales a lo largo de las operaciones. Esto provocó que en ocasiones la epipolar se viese desplazada uno o dos pixeles hacia arriba, evitando así el correcto emparejamiento del los puntos. Simplemente haciendo un cast a entero en las distintas operaciones he podido conseguir corregir el error y obtener la epipolar adecuada.
A pesar de que el MSE no es la mejor métrica para emparejar parches, los resultados no son nada malos. He probado a realizar una comparación de histogramas, en RGB, pero la reconstrucción no era mucho mejor además de aumentar el tiempo de cómputo.
En las capturas de pantalla podemos ver el resultado de la reconstrucción. Los contornos de las figuras se pueden apreciar perfectamente, distinguiéndose unas de otras. Incluso es posible ver leer las letras inscritas en los cubos. Sin embargo, cuando giramos los puntos, estos aperecen divididos en planos 2D separados. Esto se produce por la baja resolución del software para medir la profundidad. Aunque parezca que el resultado es malo, realmente es algo que no se puede solucionar.
Debido a un fallo de programación la reconstrucción salía con los contornos bien dibujados pero en un plano 2D dentro del mundo. Después de arreglar ese pequeño error en una condición, he podido representar los bordes de las figuras en tres dimensiones. Sin embargo, el resultado obtenido tampoco era del todo bueno. Era posible intuir alguna de las figuras pero realmente no estaba bien. Revisando el código me dí cuenta que el error se encontraba en el cálculo de la ecución de la línea epipola. Las variables no estaban restringidas a enteros, por lo que iba acumulando decimales a lo largo de las operaciones. Esto provocó que en ocasiones la epipolar se viese desplazada uno o dos pixeles hacia arriba, evitando así el correcto emparejamiento del los puntos. Simplemente haciendo un cast a entero en las distintas operaciones he podido conseguir corregir el error y obtener la epipolar adecuada.
A pesar de que el MSE no es la mejor métrica para emparejar parches, los resultados no son nada malos. He probado a realizar una comparación de histogramas, en RGB, pero la reconstrucción no era mucho mejor además de aumentar el tiempo de cómputo.
En las capturas de pantalla podemos ver el resultado de la reconstrucción. Los contornos de las figuras se pueden apreciar perfectamente, distinguiéndose unas de otras. Incluso es posible ver leer las letras inscritas en los cubos. Sin embargo, cuando giramos los puntos, estos aperecen divididos en planos 2D separados. Esto se produce por la baja resolución del software para medir la profundidad. Aunque parezca que el resultado es malo, realmente es algo que no se puede solucionar.
Comentarios
Publicar un comentario