wikillm

Concept · 1 paper · updated 2026-10-19

Local surface descriptors

A local surface descriptor encodes the 3D shape of a small patch around a keypoint so the same patch matches across noise, mesh resolution changes, occlusion and clutter. One card so far: RoPS, a fixed-scale descriptor of 135 values built on a sign-disambiguated local frame. Its author-reported recognition rates are 100% on Bologna and 98.9% on UWA.

3d-visionlocal-descriptorobject-recognitionpoint-cloud

Markdown4 min read

AI-compiled overview, updated 2026-10-19, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.

Overview

A local surface descriptor summarises the geometry of a small patch of a 3D surface, centred on a feature point. Descriptors are matched between a model and a scene, and the matches vote for an object pose. The descriptor has to stay stable under noise, changes in mesh resolution, occlusion and clutter 1304.3192 §1. Most designs first fix a local reference frame at the feature point, express the nearby surface in that frame, and then summarise it. An ambiguous frame, or one that leaves a rotation undefined, weakens the descriptor 1304.3192 §2.1.

This page rests on one card. It covers the RoPS design and its author-reported numbers. The baseline descriptors the paper compares against have no cards, so this page does not describe how they work.

Variants

RoPS, fixed support radius (the default)

The descriptor takes the neighbourhood of a feature point, expresses it in the point's local frame 1304.3192 §3.1 1304.3192 §3.2, and rotates it about each frame axis at three angles. Each rotated cloud is projected onto the three coordinate planes, and each projection is counted in a 5 × 5 histogram. Four central moments and the entropy are kept per histogram. With 5 values, 3 planes, 3 angles and 3 axes, the length is 135 1304.3192 §4.1 1304.3192 tab. 2. The support radius is 15 mesh resolutions 1304.3192 tab. 2. Of eight statistics combinations, the paper picked the one with the four moments and the entropy 1304.3192 §4.2.1 1304.3192 tab. 1. Card: Rotational Projection Statistics for 3D Local Surface Description and Object Recognition.

RoPS, adaptive support radius

The paper also reports an adaptive-scale variant, taken from Mian et al. 2010. It is marginally worse than the fixed 15 mesh-resolution setting, so the fixed setting is the default 1304.3192 §7.2.

Baseline descriptors

The paper compares spin images, NormHist, LSP, THRIFT, SHOT and 3DSC. It replaces their original frames with its own frame, so the baseline numbers test each descriptor together with the new frame 1304.3192 §7.1. In the tuning step, the paper lists lengths of 225 for spin images, NormHist and LSP, 32 for THRIFT and 320 for SHOT 1304.3192 tab. 2. No cards exist for these methods.

When to use which

The table lists the constraints the paper's results address. All numbers are author-reported.

SituationUseWhy
Noise between 0.1 and 0.5 mesh resolutionRoPS, fixed 15 mr100% recognition on Bologna at every noise level in that range 1304.3192 §7.1 fig. 11. Spin image and NormHist exceed 97% only below 0.1 mr 1304.3192 §7.1
Heavy decimation of the scene meshRoPSBologna at 1/8 decimation: RoPS 100%, NormHist 97.8%, spin image 91.1% 1304.3192 §7.1 fig. 11
Partial occlusion and clutter, as in UWARoPS98.9% overall. 100% up to 80% occlusion and 93.1% at 85%. 2 of 188 objects missed, no false positives 1304.3192 §7.2
Only one correspondence per pose hypothesis is affordableRoPS with single-correspondence votingThe paper argues one correct match is enough because its frame is reliable 1304.3192 §6.3 1304.3192 §7.4. Frame reliability was measured only on the tuning set, where 83.5% of pairs have error below 10° against 43.2% for the next best method 1304.3192 §3.3 fig. 3
Object scale varies across the scenePlan a separate scale stepThe paper does not handle keypoint scale selection and uses a fixed radius 1304.3192 §4.2.4. The adaptive variant is marginally worse 1304.3192 §7.2
Only point clouds, no meshesExpect the meshing step to matterThe frame is computed on a mesh. Queen's scenes were triangulated in 2-D and models were meshed by marching cubes, so results depend on that step 1304.3192 §7.3
Symmetric objects in the sceneFilter by eigenvalue ratioFeature points whose eigenvalue ratio is close to 1 are dropped 1304.3192 §6.2. The threshold is not stated
Tight compute budgetMeasure on your own hardwareThe paper's per-object times, from MATLAB on 2013 hardware, are 42.6 s for keypoints and frames, 7.2 s for RoPS and 46.6 s for matching 1304.3192 §7.3. They do not carry over

Implementation sketch

The sketch follows the paper's frame and descriptor steps, written here in our own words. Values the paper does not state are marked as choices.

Pseudocode
# Local frame at feature point p  [arxiv:1304.3192 §3.1-§3.2]
def local_frame(p, triangles, r):
    # Weight triangles by area and by closeness to p  [eq. 4-6]
    weights = area_weights(triangles) * closeness_weights(triangles, p, r)
    # Weighted scatter matrix of the surface about p  [eq. 2-4]
    scatter = sum(w * scatter_of(t, p) for w, t in zip(weights, triangles))
    # Axes from the eigen-decomposition, largest eigenvalue first  [eq. 7]
    v1, v2, v3 = eigenvectors_descending(scatter)
    # Eigenvector signs are arbitrary: flip each to point with the mass  [§3.2]
    v1 = v1 * sign(sum(weights * first_moment(triangles, p, v1)))  # [eq. 8-9]
    v3 = v3 * sign(sum(weights * first_moment(triangles, p, v3)))  # [eq. 10]
    # Right-handed frame: the second axis is v3 cross v1  [§3.2]
    v2 = cross(v3, v1)
    return [v1, v2, v3]
Pseudocode
# RoPS descriptor for one feature point  [arxiv:1304.3192 §4.1]
def rops(points_in_frame, L=5, T=3):
    values = []
    # Rotate about each frame axis by T angles; the angles are not stated
    for axis in ["x", "y", "z"]:
        for theta in angles(T):  # choice: record the values used
            rotated = rotate(points_in_frame, axis, theta)
            # Project onto the three coordinate planes  [§4.1] [fig. 4]
            for plane in ["xy", "xz", "yz"]:
                # L x L histogram, normalised to sum to one  [§4.1]
                D = normalise(histogram2d(project(rotated, plane), L))
                # Four central moments and the entropy  [§4.2.1] [eq. 12-15]
                values += [mu(D, 1, 1), mu(D, 2, 1), mu(D, 1, 2)]
                values += [mu(D, 2, 2), entropy(D)]
    # 5 values x 3 planes x T angles x 3 axes = 135  [tab. 2]
    return values

Points the paper leaves open, and that change every histogram: the angle values, which in-plane axis is horizontal, how the bounding rectangle is chosen, how points on bin edges are assigned, and the log base of the entropy 1304.3192 §4.1 eq. 15. Record each choice next to the descriptor.

Contradictions

Only one card, so no cross-paper disagreement is possible. Within the paper:

  • Ca' Foscari. The abstract gives 96.0%. The body gives 99% precision and 96% recall 1304.3192 §7.4 1304.3192 tab. 7. The paper does not say which figure the abstract reports.
  • UWA. The body gives 98.9% overall and 98.8% for a second passage limited to the occlusion range 1304.3192 §7.2. Report both with that context.

Papers

Source and license

Compiled from the papers listed on this page, all published under CC BY, CC BY-SA or CC0, with citations. See each paper's page for its authors and license.