{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Laser calibration" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this article is presented the laser calibration process. This method is used to determine the position and orientation of a line laser, respect to the camera coordinate system. ![](https://raw.githubusercontent.com/Jesus89/3DScanScience/master/notebooks/images/4.4.%20Laser%20calibration/pattern-position.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Capture laser point cloud" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pattern is automatically moved on the turntable from -90º to 90º respect to the initial position. Each step (5º) it is captured a point cloud of the laser ([Laser segmentation](http://nbviewer.ipython.org/github/Jesus89/3DScanScience/blob/master/notebooks/3.%20Laser%20segmentation.ipynb)) intersecting with the plane of the pattern ([Point cloud generation](http://nbviewer.ipython.org/github/Jesus89/3DScanScience/blob/master/notebooks/6.%20Point%20cloud%20generation.ipynb)). It is used the normal and minimum distance of the plane defined by the pattern. This values are obtained using the pattern pose ([Pattern detection](http://nbviewer.ipython.org/github/Jesus89/3DScanScience/blob/master/notebooks/4.1.%20Pattern%20detection.ipynb))." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At the end of the capture process, a complete point cloud of the laser is obtained. All points in this point cloud are near to the real laser plane. Therefore, this point cloud will be used to determine the plane parameters: the normal vector and the minimum distance respect to the camera coordinate system." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "from util import *\n", "\n", "# Load point cloud\n", "X = load_ply('laser-pc.ply').vertexes" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot point cloud\n", "pylab.rcParams['figure.figsize'] = (10, 7)\n", "plt.gca(projection='3d')\n", "\n", "plt.plot(X[:,0], X[:,1], X[:,2], '.r')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fit laser plane" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to fit a plane from a point cloud $\\textbf{X}$, SVD (Singular Value Decomposition) can be used. This method provides a fast way to obtain the normal $\\textbf{n}$ and the distance $d$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", "\\textbf{X}_i = \\begin{bmatrix} x_i \\\\ y_i \\\\ z_i \\\\ \\end{bmatrix}\n", "\\:\\:\\:\\:\\:\\:\\:\\:\\:\\:\n", "\\overline{\\textbf{X}} = \\frac{1}{n}{\\sum{\\textbf{X}_i}}\n", "\\:\\:\\:\\:\\:\\:\\:\\:\\:\\:\n", "\\widetilde{\\textbf{X}_i} = \\textbf{X}_i - \\overline{\\textbf{X}}\n", "\\:\\:\\:\\:\\:\\:\\:\\:\\:\\:\n", "M = \\begin{bmatrix} \\widetilde{\\textbf{X}_1} \\: ... \\: \\widetilde{\\textbf{X}_i} \\: ... \\: \\end{bmatrix}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Problem\n", "$$\n", "min \\: M^T \\textbf{n}\n", "\\:\\:\\:\\:\\:\\:\n", "\\| \\textbf{n} \\| = 1\n", "$$\n", "### Solution\n", "$$\n", "M = USV^T\n", "\\:\\:\\:\\:\\:\\:\n", "\\textbf{n} = U \\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\\\ \\end{bmatrix}\n", "\\:\\:\\:\\:\\:\\:\n", "d = \\textbf{n} \\: \\overline{\\textbf{X}}\n", "$$" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Normal vector\n", "\n", "[ 0.85110861 -0.00122944 0.52498829]\n", "\n", "\n", "Plane distance\n", "\n", "159.526931763 mm\n", "\n", "\n", "Standard deviation\n", "\n", "0.0884132683277 mm\n", "\n" ] } ], "source": [ "# import numpy.linalg\n", "from scipy.sparse import linalg\n", "\n", "def compute_pc(name):\n", " # Load point cloud\n", " X = load_ply(name).vertexes\n", "\n", " n = X.shape[0]\n", " Xm = X.sum(axis=0) / n\n", " M = np.array(X - Xm).T\n", " \n", " # Equivalent to:\n", " # numpy.linalg.svd(M)[0][:,2]\n", " # But 1200x times faster for large point clouds\n", " U = linalg.svds(M, k=2)[0]\n", " normal = np.cross(U.T[0], U.T[1])\n", " if normal[2] < 0:\n", " normal *= -1\n", "\n", " dist = np.dot(normal, Xm)\n", " std = np.dot(M.T, normal).std()\n", "\n", " print(\"\\nNormal vector\\n\\n{0}\\n\".format(normal))\n", " print(\"\\nPlane distance\\n\\n{0} mm\\n\".format(dist))\n", " print(\"\\nStandard deviation\\n\\n{0} mm\\n\".format(std))\n", " \n", "compute_pc('laser-pc.ply')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### RANSAC\n", "Random sample consensus is used to choose the best points that fits the plane with the minimum error." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# import numpy.linalg\n", "from scipy.sparse import linalg\n", "\n", "class PlaneDetection(object):\n", "\n", " def fit(self, X):\n", " M, Xm = self._compute_m(X)\n", " U = linalg.svds(M, k=2)[0]\n", " normal = np.cross(U.T[0], U.T[1])\n", " # normal = numpy.linalg.svd(M)[0][:,2]\n", " if normal[2] < 0:\n", " normal *= -1\n", " dist = np.dot(normal, Xm)\n", " return dist, normal, M\n", "\n", " def residuals(self, model, X):\n", " _, normal, _ = model\n", " M, Xm = self._compute_m(X)\n", " return np.abs(np.dot(M.T, normal))\n", "\n", " def is_degenerate(self, sample):\n", " return False\n", " \n", " def _compute_m(self, X):\n", " n = X.shape[0]\n", " Xm = X.sum(axis=0) / n\n", " M = np.array(X - Xm).T\n", " return M, Xm\n", "\n", "def ransac(data, model_class, min_samples, threshold, max_trials=500):\n", " best_model = None\n", " best_inlier_num = 0\n", " best_inliers = None\n", " data_idx = np.arange(data.shape[0])\n", " for _ in xrange(max_trials):\n", " sample = data[np.random.randint(0, data.shape[0], 3)]\n", " if model_class.is_degenerate(sample):\n", " continue\n", " sample_model = model_class.fit(sample)\n", " sample_model_residua = model_class.residuals(sample_model, data)\n", " sample_model_inliers = data_idx[sample_model_residua < threshold]\n", " inlier_num = sample_model_inliers.shape[0]\n", " if inlier_num > best_inlier_num:\n", " best_inlier_num = inlier_num\n", " best_inliers = sample_model_inliers\n", " if best_inliers is not None:\n", " best_model = model_class.fit(data[best_inliers])\n", " return best_model, best_inliers" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Normal vector\n", "\n", "[ 0.84936136 -0.00132746 0.5278101 ]\n", "\n", "\n", "Plane distance\n", "\n", "160.235092163 mm\n", "\n", "\n", "Standard deviation\n", "\n", "0.0539078749716 mm\n", "\n" ] } ], "source": [ "def compute_ransac_pc(name):\n", " # Load point cloud\n", " X = load_ply(name).vertexes\n", "\n", " model, inliers = ransac(X, PlaneDetection(), 3, 0.1)\n", " \n", " dist, normal, M = model\n", " std = np.dot(M.T, normal).std()\n", " \n", " print(\"\\nNormal vector\\n\\n{0}\\n\".format(normal))\n", " print(\"\\nPlane distance\\n\\n{0} mm\\n\".format(dist))\n", " print(\"\\nStandard deviation\\n\\n{0} mm\\n\".format(std))\n", " \n", "compute_ransac_pc('laser-pc.ply')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## References\n", "* http://www.ltu.se/cms_fs/1.51590!/svd-fitting.pdf\n", "* https://github.com/ahojnnes/numpy-snippets/blob/master/ransac.py" ] } ], "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 }