Part III, Chapter 13
Local Descriptors and Feature Matching
You can now strip the outliers from a tile, orient its normals, separate its ground from what stands on it, and hand every point the scalar features a classifier reads. All of that happens inside a single point cloud. Chapter 8 was the exception, and it left one thing open. Feature-based coarse registration needs correspondences between two point clouds before iterative closest point (ICP) has anything to refine, and section 8.5.1 took them as given. This chapter is where they come from.
Here is what makes it hard. Two point clouds of the same surface, measured from two positions, share no points. Each acquisition samples the surface wherever its own pulses happen to land, so no coordinate triple of the first set recurs in the second. A search for the nearest coordinate returns a neighbour rather than a counterpart. Now look at the two airborne strips of figure 13.7, flight lines flown separately over one block of central Amsterdam. Every roof there is sampled twice and no return of one strip is a return of the other. So you build the match on the ridges, gutters and dormers the two passes share rather than on the coordinates.
What do you do when you pick seed correspondences by hand in a registration tool? You compare no coordinates. You recognise the same arrangement of surfaces in the two views and you mark the two points as a pair. A local descriptor turns that recognition into a computation, summarising the geometry around a point as a short vector of fixed length. Two points sampling the same piece of surface then receive nearly the same vector, so matching reduces to a nearest-neighbour search among vectors.
How well does that work? Here is the number to carry through the chapter. FPFH, the descriptor the rest of it takes as its baseline, allots 33 numbers per point to that summary. On the two strips of figure 13.7 it is computed at 94 keypoints in the first and 92 in the second. Pairing each vector with its nearest counterpart gets 34 of the 94 right, 36 per cent. So nearly two of your matches in three are wrong before anything downstream has run.
That definition is easiest to hold through FPFH, worked out in section 13.3.3, whose 33 numbers count how often each angle between neighbouring normals occurs inside the support. Rotate the point cloud and an angle between two normals does not change, so the invariance follows from the choice of what to measure rather than from a correction applied afterwards. Distinctiveness you have to check separately. A vector can be perfectly invariant and still be identical at every point of a flat wall. Figure 13.11 is that check, run on a wall point, an edge point and a corner point whose three histograms differ visibly enough for a matcher to separate them.
Continue reading Local Descriptors and Feature Matching
€39 opens all 20 chapters in this reader and the 840-page PDF.