A flow chart of the object detection and recognition method is shown in Figure 3.2. First of all, I acquireaakinectimagetogetapointcloud. IremoveoutlierpointsusingthePCLstatisticaloutliers removal algorithm.
Next, I detect and subtract any large planar surface in order to segment objects from the background
13
Figure3.4: Screenshot of a simple application for capturing and uploading object templates as well as requesting recognition of an object currently in the fielf of view.
(usually a table or other flat surface). Finally, I identify specific objects using template matching followtheapproachof Rusuetal. (R.Rusuetal., 2007). Forrecognitionusingtemplatematching, I computes the point cloud surface normals and store it in kd-tree for search.
Finally,Iperformtemplatealignment,alsoknownastemplatematching/fitting/registration,usingthe newly acquired data. A template is a small group of pixels or points that show a known part of a larger object or scene. By aligning a template to a new image or point cloud, I can find the position and orientation of the object that the template represents. I start by defining a structure to store the alignment results. It contains a floating point value that give score as the fitness of the alignment (lowerthefitnessmeansabettermatchofthealignmentandatransformationmatrixthatexplainhow template points should translated and rotated in order to get the best alignment with the points in the target cloud.)
For calculating the fitness score, I use the sample consensus initial alignment algorithm to get the alignments fitness score and final transformation matrix. First, I select the sample point where the pairwise distance is greater than minimum distance. For each of them, I find which histogram is similar to the sample histogram. Then compute the rigit transformation from the sample point and correspondences. ThenIcomputetherigiterrormatrixfromthepointcloud. Therigidtransformation can be decomposed into a 3-dimensional translation vector (tx, ty, tz) and a 3 x 3 rotation matrix R as follows: