{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Scanning process\n", "In this article is explained the algorithm used to scan an object with a 3D laser scanner over a turntable.\n", "\n", "![](https://raw.githubusercontent.com/Jesus89/3DScanScience/master/notebooks/images/5.%20Scanning%20process/scanning-process.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Complete algorithm\n", "\n", "The algorithms consists on capture \"line point clouds\" for each angle of the platform, from 0 to 360 degrees.\n", "\n", "This is the process for each iteration:\n", "\n", "* **[Image capture](http://nbviewer.ipython.org/github/Jesus89/3DScanScience/blob/master/notebooks/2.%20Image%20capture.ipynb)**:\n", "\n", " * Capture texture: sets texture camera settings and captures an image in order to include the color of the scanned object.\n", " \n", " * Capture lasers: sets laser camera settings and captures the correspondent images for the selected lasers.\n", "\n", "\n", "* **[Laser segmentation](http://nbviewer.ipython.org/github/Jesus89/3DScanScience/blob/master/notebooks/3.%20Laser%20segmentation.ipynb)**: from laser image captures, 2d points are obtained using laser segmentation.\n", "\n", "\n", "* **[Point cloud generation](http://nbviewer.ipython.org/github/Jesus89/3DScanScience/blob/master/notebooks/6.%20Point%20cloud%20generation.ipynb)**: from 2d points and all calibration parameters final point cloud in world coordinate system is obtained using point cloud generation.\n", "\n", "\n", "Finally, all the \"line point clouds\" computed are merged into a common final point cloud." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Time cost" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Motor movement\n", "Total time of motor movement can be obtained using $v$, the motor speed, and $a$ the motor acceleration. It can be defined two possible situations, depending also on the step $S$.\n", "$$\n", "T_l = \\frac{2·v_{max}}{a}\n", "\\:\\:\\:\\:\\:\\:\n", "S_l = \\frac{{v}^2_{max}}{a}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### $S < Sl$\n", "Maximum speed is not reached. Total time only depends on \n", "displacement and acceleration.\n", "$\n", "T = 2 \\: \\sqrt{\\frac{S}{a}}\n", "$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### $S > Sl$\n", "Maximum speed is reached. Total time has a new expression.\n", "$\n", "T = \\frac{S+S_l}{a}\n", "$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Image capture\n", "\n", "Experimentally, it is determined that each image costs 66 ms to be captured. Also, flip, transpose and format color conversion increases 4 ms, 5 ms and 2.5 ms respectively." ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 }