<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">WJET</journal-id><journal-title-group><journal-title>World Journal of Engineering and Technology</journal-title></journal-title-group><issn pub-type="epub">2331-4222</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/wjet.2015.33C045</article-id><article-id pub-id-type="publisher-id">WJET-60549</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Chemistry&amp;Materials Science</subject><subject> Engineering</subject></subj-group></article-categories><title-group><article-title>
 
 
  An Improved Iterative Closest Points Algorithm
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Hao</surname><given-names>Yang</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Jialan</surname><given-names>Jiang</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Guowei</surname><given-names>Zhao</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Jie</surname><given-names>Zhao</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>School of Astronautics, Beijing University of Aeronautics and Astronautics, Beijing, China</addr-line></aff><aff id="aff2"><addr-line>School of Mechanical Engineering, University of Science and Technology, Beijing, China</addr-line></aff><pub-date pub-type="epub"><day>22</day><month>10</month><year>2015</year></pub-date><volume>03</volume><issue>03</issue><fpage>302</fpage><lpage>308</lpage><history><date date-type="received"><day>12</day>	<month>September</month>	<year>2015</year></date><date date-type="rev-recd"><day>accepted</day>	<month>15</month>	<year>October</year>	</date><date date-type="accepted"><day>22</day>	<month>October</month>	<year>2015</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
   Visual method including binocular stereo vision method and monocular vision method of the relative position and pose measurement for space target has become relatively mature, and many researchers focus on the method based on three-dimension measurement recently. ICP alignment, which is the key of three-dimension pattern measurement method, has the problem of low efficiency in large data sets. Considering this problem, an improved ICP algorithm is proposed in this paper. The improved ICP algorithm is the combination of the original ICP algorithm and KD-TREE. The experimental comparison between the improved ICP algorithm and the traditional ICP algorithm in efficiency has been given in this paper, which shows that the improved ICP algorithm can get much better performance. 
 
</p></abstract><kwd-group><kwd>The Relative Position and Pose Measurement of Space Target</kwd><kwd> ICP Algorithm</kwd><kwd> KD-TREE</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>The space target has been carried out in orbit demonstration of real experiment currently, a method based on two dimensional vision image technique is one of the most common approach in relative position and pose measurement of space target, such as the closing camera system on ETS-VII [<xref ref-type="bibr" rid="scirp.60549-ref1">1</xref>], the frequency measurement system on ATV et al. [<xref ref-type="bibr" rid="scirp.60549-ref2">2</xref>]. But the two dimensional visual sensor can only provide sight angel information, it can not provide distance information, which is a problem of poor observe ability in the measurement.</p><p>Based on the three-dimensional shape measurement, a particular light is projected on the target, it is modulated by the target. Through demodulated, the three dimensional information of target can be get. Since the structure of the target remains unchanged in a very short time, it can be regarded as a rigid body, so different times of the three-dimensional data include a posture change of the target, there is a certain space similarity transformation relationship between the data, so the data of the t + 1 moment can be regarded as a rotation about a spatial coordinate system of the t moment. Thus, through registering the different three-dimension data of the target, the relative posture change of target to the measuring device can be obtained.</p><p>ICP algorithm is a kind of matching algorithms which is mostly used in three-dimension point cloud registration. It is based on the iterative optimization matrix. In each iteration, each point of the target point set is focused to find the nearest point of the reference point set. Using these closest points, the corresponding rotation matrix and translation vector is calculated. Through the calculated rotation matrix and translation vector, a new point set changed by the target point set can be got, then the algorithm goes into the next iteration. Finally, the best optimal transformation matrix and the accurate registration between two set of points is achieved [<xref ref-type="bibr" rid="scirp.60549-ref3">3</xref>]. The efficiency of the originally proposed ICP algorithm is not very high, the main problem is to find the corresponding point, it requires each point of the target point set and the reference point set is compared to determine the neatest distance. Considering the above problem, many researchers have made a lot of improvements, such as:</p><p>(1) The use of tangent plane to approach point cloud [<xref ref-type="bibr" rid="scirp.60549-ref4">4</xref>], the final resolution is to find the least square distance of the tangent, but the efficiency is still very low.</p><p>(2) The use of ICL algorithm, by directly focus on the line of the two point sets and use the corresponding line registration instead of point registration [<xref ref-type="bibr" rid="scirp.60549-ref5">5</xref>].</p><p>An improved ICP algorithm based on KD-TREE is proposed in this paper. It is based on the traditional ICP algorithm, but it uses KD-TREE to search the nearest points [<xref ref-type="bibr" rid="scirp.60549-ref6">6</xref>]. The corresponding point set is stored in the KD-TREE. KD-TREE can arrange the point set more effectively, and then establish the relationship between the discrete points. Through the relationship, KD-TREE can speed up the search of corresponding points. The efficiency of the algorithm is greatly improved through this method.</p></sec><sec id="s2"><title>2. Traditional ICP Algorithm</title><p>ICP (Iterative Closest points) algorithm is a three-dimensional matching algorithm. The key of the algorithm is called the corresponding point set registration algorithm. The corresponding point set registration algorithm is to solve the coordinate transformation matrix and find the relationship between the point sets. Through the relationship, the registration is completed.</p><p>The quaternion method is used to solve the transformation matrix between the two point sets [<xref ref-type="bibr" rid="scirp.60549-ref7">7</xref>]. If the two point sets exist in some coincidence parts, setting the coincidence part of target point set as P and setting the coincidence part of reference point set as Q, the corresponding point set should meet the following conditions:</p><p>(1) The number of P is<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x4.png" xlink:type="simple"/></inline-formula>, the number of Q is<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x5.png" xlink:type="simple"/></inline-formula>, and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x6.png" xlink:type="simple"/></inline-formula></p><p>(2) For each point <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x7.png" xlink:type="simple"/></inline-formula> of P should be corresponded to <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x8.png" xlink:type="simple"/></inline-formula> of Q</p><p>The rotation vector is supposed an unit quaternion<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x9.png" xlink:type="simple"/></inline-formula>, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x10.png" xlink:type="simple"/></inline-formula>, and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x11.png" xlink:type="simple"/></inline-formula>, a <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x12.png" xlink:type="simple"/></inline-formula> rotation matrix <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x13.png" xlink:type="simple"/></inline-formula> can be got. Then take the translation vector<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x14.png" xlink:type="simple"/></inline-formula>, and the</p><p>complete coordinate transformation matrix is<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x15.png" xlink:type="simple"/></inline-formula>. In order to best match the two point sets, the distance between the corresponding points set should be the minimum. The final solution of the coordinate transformation is to solve q to find the minimum value of the following objective function.</p><disp-formula id="scirp.60549-formula382"><label>(1)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/60549x16.png"  xlink:type="simple"/></disp-formula><p>The process of the traditional algorithm is as follows:</p><p>Step 1: Get the target point set P and the reference point set Q;</p><p>Step 2: Calculate the center of P and Q;</p><disp-formula id="scirp.60549-formula383"><label>(2)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/60549x17.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.60549-formula384"><label>(3)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/60549x18.png"  xlink:type="simple"/></disp-formula><p>Step 3: Construct the Covariance matrix of P and Q;</p><disp-formula id="scirp.60549-formula385"><label>(4)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/60549x19.png"  xlink:type="simple"/></disp-formula><p>Step 4: Construct a <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x20.png" xlink:type="simple"/></inline-formula> symmetric matrix of the Covariance matrix;</p><disp-formula id="scirp.60549-formula386"><label>(5)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/60549x21.png"  xlink:type="simple"/></disp-formula><p>In this matrix, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x22.png" xlink:type="simple"/></inline-formula>is a <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x23.png" xlink:type="simple"/></inline-formula> unit matrix, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x24.png" xlink:type="simple"/></inline-formula>is the trace of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x24.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x25.png" xlink:type="simple"/></inline-formula></p><p>Step 5: Calculate the eigenvalues and eigenvectors of<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x26.png" xlink:type="simple"/></inline-formula>, find the biggest eigenvalue and its eigenvector, the eigenvector is the best rotation vector;</p><disp-formula id="scirp.60549-formula387"><label>(6)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/60549x27.png"  xlink:type="simple"/></disp-formula><p>Step 6: Calculate the best translation vector;</p><disp-formula id="scirp.60549-formula388"><label>(7)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/60549x28.png"  xlink:type="simple"/></disp-formula><p>In Equation (7):</p><disp-formula id="scirp.60549-formula389"><label>(8)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/60549x29.png"  xlink:type="simple"/></disp-formula><p>Step 7: Get the final coordinate transformation vector <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x30.png" xlink:type="simple"/></inline-formula> and obtain the least mean square error<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x30.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x31.png" xlink:type="simple"/></inline-formula>;</p><p>Step 8: End</p><p>As a three-dimensional point cloud registration algorithm, ICP algorithm can be summarized as some following steps: First, find the closest point between the reference point set and the target point set in each iteration, and calculate the coordinate transformation vector and error by using these closest points, and then get the new point set in next iteration until the error meeting the given conditions by employing the coordinate transformation vector and error on the target point set next. Finally, the final transformation vector can be got. Although the ICP algorithm is widely used in various fields, the efficiency is very low especially for large scale data sets. It wastes a lot time to find the closest points. Considering this problem, a new method mentioned in the later part is proposed to improve the traditional ICP algorithm.</p></sec><sec id="s3"><title>3. ICP Algorithm Based on KD-TREE</title><p>The efficiency of the traditional ICP algorithm is the most important problem, so this paper gives an improved ICP algorithm based on KD-TREE to solve this problem, through the effective management of the point sets, the relationship between the discrete points can be established, and the registration efficiency can be improved greatly.</p><sec id="s3_1"><title>3.1. Construct KD-TREE</title><p>Select a sample <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x32.png" xlink:type="simple"/></inline-formula> of the sample data set exset, the sample set can be divided into two parts when<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x32.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x33.png" xlink:type="simple"/></inline-formula>, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x32.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x33.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x34.png" xlink:type="simple"/></inline-formula>is a point of d-dimensional space; exset is the whole sample set; <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x32.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x33.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x34.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x35.png" xlink:type="simple"/></inline-formula>is the value of k-dimension and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x32.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x33.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x34.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x35.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x36.png" xlink:type="simple"/></inline-formula> is the value of the first dimension. Take<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x32.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x33.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x34.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x35.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x36.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x37.png" xlink:type="simple"/></inline-formula>. The</p><p>method of dividing the sample set is shown in Equation (9). Set a left sub-tree when the dimension is less than the coordinate point and set a right sub-tree when the dimension is bigger than the coordinate point. Then continue to construct tree of the left sub-tree and right sub-tree, select the second dimension (<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x38.png" xlink:type="simple"/></inline-formula>) as the standard of dividing line. Follow this steps until <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x38.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x39.png" xlink:type="simple"/></inline-formula> or<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x38.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x39.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x40.png" xlink:type="simple"/></inline-formula>.</p><disp-formula id="scirp.60549-formula390"><label>(9)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/60549x41.png"  xlink:type="simple"/></disp-formula><p>In Equation (9), k is the dimension and one-dimension represents a property of the multidimensional space. Exsetleft is the left sub-tree and exsetright is the right sub-tree. A sketch map of KD-TREE established in MATLAB is shown as <xref ref-type="fig" rid="fig1">Figure 1</xref></p><p>For the division of KD-TREE, different ways will produce different KD-TREE, one is divided according to the density of the points, and another is divided according to the middle of dividing line.</p></sec><sec id="s3_2"><title>3.2. Find the Nearest Point through KD-TREE</title><p>Using the constructed KD-TREE to find the minimum norm distance of the target point is the nearest point search of KD-TREE. Using KD-TREE to find the nearest point, a hyper rectangle hr and a hyper circle should be defined, the center of the hyper circle is t and the radius is r, by comparing the distance between the hyper rectangle and hyper circle, the nearest point p in the hyper rectangle to the center of the hyper circle (t) is found. The comparison method is shown in Equation (10).</p><disp-formula id="scirp.60549-formula391"><label>(10)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/60549x42.png"  xlink:type="simple"/></disp-formula><p>As shown in Equation (10), if the two norm distance to t is smaller than r, the hyper rectangle and the hyper circle is intersected. Firstly, the algorithm compares the distance of the point to toot node. Secondly, it determine s whether the left sub-tree or right sub-tree should be used based on the dimension of the point and the root node.</p><p>Due to the effective management of point cloud data based on KD-TREE, the average searching length is<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x43.png" xlink:type="simple"/></inline-formula>. If a point set has n points, compared with the traditional searching method, the complexity of time is changed from n to<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x44.png" xlink:type="simple"/></inline-formula>. Thus, the method based on KD-TREE accelerates the registration process, and the efficiency of the algorithm is greatly improved.</p><p>The process of the improved algorithm based on KD-TREE is shown in <xref ref-type="fig" rid="fig2">Figure 2</xref>. It contains some following steps:</p><p>Step 1: Get the target point set and the reference point set. The number of the target point set is NP and the number of the reference point set is NQ;</p><p>Step 2: Initialize<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x45.png" xlink:type="simple"/></inline-formula>, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x45.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x46.png" xlink:type="simple"/></inline-formula>, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x45.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x46.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x47.png" xlink:type="simple"/></inline-formula></p><p>Step 3: Use KD-TREE to find the nearest point of P in Q, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x48.png" xlink:type="simple"/></inline-formula></p><p>Step 4: Use the corresponding point set registration algorithm to calculate the coordinate transformation vector <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x49.png" xlink:type="simple"/></inline-formula> and error <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x49.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x50.png" xlink:type="simple"/></inline-formula></p><p>Step 5: Apply the coordinate transformation <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x51.png" xlink:type="simple"/></inline-formula></p><fig id="fig1"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref></label><caption><title> A sketch map of KD-TREE established in MATLAB</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/60549x52.png"/></fig><fig id="fig2"  position="float"><label><xref ref-type="fig" rid="fig2">Figure 2</xref></label><caption><title> The process of the algorithm based on KD-TREE</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/60549x53.png"/></fig><p>Step 6: Determine whether the error converges, if<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x54.png" xlink:type="simple"/></inline-formula>, the error converges, otherwise, return to Step 3;</p><p>Step 7: Get the final coordinate transformation <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x55.png" xlink:type="simple"/></inline-formula></p><p>Step 8: End</p><p>The time efficiency of the ICP algorithm is mainly reflected on the search of nearest points, in the traditional algorithm, it needs to compare every point and find the nearest point. If the size of the point set is very large, it will take a lot time. Improved algorithm based on the KD-TREE makes up the shortcoming of the traditional algorithm. Above all, the improved ICP algorithm is better than the traditional algorithm, it does not need to compare all the points in the search of the nearest points.</p></sec></sec><sec id="s4"><title>4. Simulation Experiment</title><p>In this part, two experiments are done to compare the efficiency of the two algorithms. The first experiment is to compare the time efficiency when the number of the target point set and reference point set is same. The second experiment is to compare the time efficiency when the number of the target point set and reference point set is different.</p><sec id="s4_1"><title>4.1. First Experiment</title><p>Randomly generate reference point set Q which has N points, in order to understand the registration effect of ICP algorithm, the target point set which has N points is produced by rotation and translation of the reference point set. Both of the algorithms are finished on MATLAB. Experiments are done on several different data sets. The experimental results are shown in <xref ref-type="table" rid="table1">Table 1</xref> and <xref ref-type="fig" rid="fig3">Figure 3</xref></p><p>From <xref ref-type="table" rid="table1">Table 1</xref> and <xref ref-type="fig" rid="fig3">Figure 3</xref>, when the size of the reference point set and the target point set is same, the registration time of the traditional algorithm changes longer and longer with the size of the point set increasing. And the registration time of the improved algorithm changes a little with the size of point set increasing. When the size of the two algorithms is same, the time of improved algorithm is much less than the traditional algorithm and with the size increasing, the difference is more obvious.</p></sec><sec id="s4_2"><title>4.2. Second Experiment</title><p>Randomly generate reference point set Q which has N points, taking the first 5000 points of Q as the target point set and then rotate it and translate it. The experimental environment is the same as the first experiment. The experimental results are shown in <xref ref-type="table" rid="table2">Table 2</xref>.</p><p>From <xref ref-type="table" rid="table2">Table 2</xref>, it can be concluded that when the size of the reference point set is different and the size of the target point set remains the same, the efficiency of the improved algorithm based on KD-TREE is much better</p><fig id="fig3"  position="float"><label><xref ref-type="fig" rid="fig3">Figure 3</xref></label><caption><title> The registration time of two algorithms</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/60549x56.png"/></fig><table-wrap id="table1" ><label><xref ref-type="table" rid="table1">Table 1</xref></label><caption><title> Two kinds of ICP algorithms registration speed at the same ponit size</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >The size of the reference point set</th><th align="center" valign="middle" >10,000</th><th align="center" valign="middle" >20,000</th><th align="center" valign="middle" >30,000</th><th align="center" valign="middle" >40,000</th></tr></thead><tr><td align="center" valign="middle" >Traditional ICP time (t/)</td><td align="center" valign="middle" >36.2</td><td align="center" valign="middle" >78.5</td><td align="center" valign="middle" >247.6</td><td align="center" valign="middle" >502.4</td></tr><tr><td align="center" valign="middle" >Improved ICP time (t/s)</td><td align="center" valign="middle" >0.49</td><td align="center" valign="middle" >1.1</td><td align="center" valign="middle" >1.8</td><td align="center" valign="middle" >2.4</td></tr></tbody></table></table-wrap><table-wrap id="table2" ><label><xref ref-type="table" rid="table2">Table 2</xref></label><caption><title> Two kinds of ICP algorithms registration speed at the different ponit size</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >The size of the reference point set</th><th align="center" valign="middle" >10,000</th><th align="center" valign="middle" >20,000</th><th align="center" valign="middle" >30,000</th><th align="center" valign="middle" >40,000</th></tr></thead><tr><td align="center" valign="middle" >Traditional ICP time (t/s)</td><td align="center" valign="middle" >36.2</td><td align="center" valign="middle" >78.5</td><td align="center" valign="middle" >247.6</td><td align="center" valign="middle" >502.4</td></tr><tr><td align="center" valign="middle" >Improved ICP time (t/s)</td><td align="center" valign="middle" >0.49</td><td align="center" valign="middle" >1.1</td><td align="center" valign="middle" >1.8</td><td align="center" valign="middle" >2.4</td></tr></tbody></table></table-wrap><p>than traditional algorithm.</p><p>Through these two experiments, it can be concluded that the improved ICP algorithm based on KD-TREE is much better than traditional ICP algorithm.</p><p>Take the size of reference point set and target data point as<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/60549x57.png" xlink:type="simple"/></inline-formula>, the registration results of the original data set and the reference point set which is transformed by the improved ICP algorithm based on the KD-TREE are shown in <xref ref-type="fig" rid="fig4">Figure 4</xref> and <xref ref-type="fig" rid="fig5">Figure 5</xref>.</p></sec></sec><sec id="s5"><title>5. Conclusion</title><p>ICP algorithm is widely used in three-dimensional point cloud registration, for the large data sets, its efficiency is very low, this paper presents an improved ICP algorithm based on KD-TREE, In this method, the data is stored and managed by KD-TREE, it uses KD-TREE to search the nearest point and fully takes advantage of KD-TREE in the data index search, it solves the problem of low efficiency of traditional ICP algorithm. Through the experimental results, it can be concluded that the improved ICP algorithm based on KD-TREE is much better than the traditional algorithm, in practical applications, the size of the data sets is relatively large. Therefore, the improved ICP algorithm based on KD-TREE is expected to register the point clouds.</p><fig id="fig4"  position="float"><label><xref ref-type="fig" rid="fig4">Figure 4</xref></label><caption><title> The original data set</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/60549x58.png"/></fig><fig id="fig5"  position="float"><label><xref ref-type="fig" rid="fig5">Figure 5</xref></label><caption><title> The data set changed by the ICP algorithm based on KD-TREE</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/60549x59.png"/></fig></sec><sec id="s6"><title>Acknowledgements</title><p>This paper is completed under the guidance of my tutor Guowei Zhao, so I want to express my best wishes to him.</p></sec><sec id="s7"><title>Cite this paper</title><p>Hao Yang,Jialan Jiang,Guowei Zhao,Jie Zhao, (2015) An Improved Iterative Closest Points Algorithm. World Journal of Engineering and Technology,03,302-308. doi: 10.4236/wjet.2015.33C045</p></sec><sec id="s8"><title>NOTES</title></sec></body><back><ref-list><title>References</title><ref id="scirp.60549-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Kawano, I., Mokuno, M., Kasai, T. and Suzuki, T. (2001) Result of Autonomous Rendezvous Docking Experiment of Engineering Test Satellite-VII. Journal of Spacecraft and Rockets, 38, 105-111. http://dx.doi.org/10.2514/2.3661</mixed-citation></ref><ref id="scirp.60549-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Mokuno, M. and Kawano, I. (1994) Engineering Test Satellite VII Rendezous Docking Optical Sensor System. AIAA 3698, 1314-1322.</mixed-citation></ref><ref id="scirp.60549-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">Zhang, G.P., Zhang, Y.L. and Guo, Z. (2006) 3D Face Registration Based on ICP and Accurate Analysis of the Spindle. Computer Engineering and Application, 42, 62-64. http://dx.doi.org/10.3321/j.issn:1002-8331.2006.29.019</mixed-citation></ref><ref id="scirp.60549-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Chen, Y. and Medioni, G. (1991) Object modeling by Registration of Multiple Range Images. Proceedings of the 1991 IEEE International Conference on Robotics and Automation, Sacramento, CA, 9-11 April 1991, 2724-2729.  
http://dx.doi.org/10.1109/ROBOT.1991.132043</mixed-citation></ref><ref id="scirp.60549-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Li, Q. and Griffiths, J.G. (2000) Iterative Closest Geometric Objects Registration. Computer and Mathematic with Application, 40, 1171-1188. http://dx.doi.org/10.1016/S0898-1221(00)00230-3</mixed-citation></ref><ref id="scirp.60549-ref6"><label>6</label><mixed-citation publication-type="journal" xlink:type="simple"><name name-style="western"><surname>Bentley</surname><given-names> J.L. </given-names></name>,<etal>et al</etal>. (<year>1975</year>)<article-title>Multi Dimensional Binary Search Trees Used Associative Searching</article-title><source> Communication of the ACM</source><volume> 18</volume>,<fpage> 509</fpage>-<lpage>517</lpage>.<pub-id pub-id-type="doi"></pub-id></mixed-citation></ref><ref id="scirp.60549-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">Dai, J.L., Chen, Z.Y. and Ye, X.Z. (2007) Application of ICP Algorithm in Point Cloud Registration ICP. Journal of Image and Graphics, 12, 517-521.</mixed-citation></ref></ref-list></back></article>