Sigo avanzando con el Escáner 3D SinapTec. Hoy desarrolle un primer algoritmo para detectar la línea laser, no se si va a ser el algoritmo definitivo, pero funciona relativamente bien, como para hacer las primeras pruebas.
domingo, 26 de junio de 2016
sábado, 25 de junio de 2016
Avances en Escáner 3D SinapTec
Finalmente después de trabajar en la matemática y algunos
algoritmos, decidí que forma física va a tener el escáner 3D. Los elementos
necesarios son: una cámara estática que grabe video (webcam, smartphone,
etc.), una línea laser vertical estática, un patrón de calibración y una cama
con un patrón impreso.
Se filmarán videos con la pieza a escasear ubicada sobre la
cama y se moverá la cama usando los dedos, la misma se puede rotar, trasladar,
levantar, etc.; de forma tal que la línea laser se interfiera con al pieza a
escasear.
Pros:
1) Hardware mínimo y económico.
2) Pegando la pieza a la cama se podrían hacer uno o varios
escaneos con distintas posiciones de la cámara y el laser, sin necesidad de
hacer un alineado posterior de las nubes de puntos.
3) Al no trabajar en tiempo real se podrán procesar los
videos en cualquier computadora sin importar el poder de cómputo, simplemente
tardará mas o menos tiempo; y no hace falta que soporte OpenGL.
Contras:
1) Puede que la interpretación de la posición de la cama en
el espacio no sea lo suficientemente precisa para lograr escaneos de calidad.
2) Algoritmo más complicado que usando una cama giratoria.
3) Al trabajar con videos no se podrá ver en tiempo real
como se genera la nube de puntos.
El video es un ejemplo de cómo el programa interpreta el
patrón de la cama y de esta forma determina a partir de la información 2D de la
cámara, su posición en el espacio 3D. Está tomado con un smartphone viejo de
gama baja que solamente filma de 640x480
domingo, 19 de junio de 2016
Escáner 3D SinapTec - Primeros Experimentos
Este fin de semana largo empecé un nuevo proyecto, el diseño y construcción de un scanner 3D económico con el menor hardware posible.
Lo primero que hice fue trabajar en el álgebra y en los primeros algoritmos, si bien me queda bastante álgebra por resolver creo que ya tengo resuelta una de las partes mas complicadas.
En la imagen se ve una cuadricula, el soft detecta esa cuadricula con la que calibra la cámara, calcula las distorsión radial y la distorsión tangencial (apropósito uso una webcam de mala calidad para ver como resuelve la distorsión); luego dibuja los eje XYZ en perspectiva. Por último hago click en la imagen y calcula la posición donde hice click en la cuadricula (X, Y y Z=0).
Lo primero que hice fue trabajar en el álgebra y en los primeros algoritmos, si bien me queda bastante álgebra por resolver creo que ya tengo resuelta una de las partes mas complicadas.
En la imagen se ve una cuadricula, el soft detecta esa cuadricula con la que calibra la cámara, calcula las distorsión radial y la distorsión tangencial (apropósito uso una webcam de mala calidad para ver como resuelve la distorsión); luego dibuja los eje XYZ en perspectiva. Por último hago click en la imagen y calcula la posición donde hice click en la cuadricula (X, Y y Z=0).
La primer hoja de fórmulas muestra como llevar puntos 3D al plano de la imagen, algo así como realidad aumentada (lo que hice con los ejes dibujados), esta parte es la mas sencilla ya que OpenCv lo resuelve automáticamente, pero tuve que analizar como hacerlo manualmente para lograr el proceso inverso, es decir como a partir de puntos del plano de la imagen calcular punto 3D en el mundo real (lo que hace un escaner 3D); esto se ve reflejado en la segunda hoja de fórmulas.
domingo, 5 de junio de 2016
sábado, 4 de junio de 2016
SinapTec - 3D Printer Host 1.1 DISPONIBLE!!!
Ya está disponible la segunda versión del 3D Printer Host SinapTec,
esta versión tiene un visualizardor de Gcode muy sencillo y liviano. Otras funciones que
agregué son: el cálculo de las
dimensiones de la pieza a imprimir, el número de capas y también muestra las
cantidad de capas impresas (ejemplo: 10 de 100 capas).
Al igual que la versión anterior hay que tener instalado
Python 2.7.11 y PySerial 2.5
Suscribirse a:
Entradas (Atom)