Not a results figure: this is the full chain with every tunable quantity
exposed, so a defect can be attributed to a stage. Columns:
1 raw · 2 reference · 3 dI = img−ref (×3) ·
4 max|dI| · 5 valid mask · 6 LUT bin observed? ·
7 gx · 8 gy · 9 |grad| · 10 div(g) = Poisson RHS ·
11 depth · 12 depth halo-removed · 13 radial profile vs
analytic cap · 14 Open3D mesh.
Reproduce: xvfb-run -a -s "-screen 0 1400x1000x24" python -m
force_recovery.recon_study glowtact
1. Up to 22% of contact pixels land in LUT bins never observed during
calibration (column 6, dark = value invented by nearest-neighbour fill).
It grows with depth: star 2% → 22% from shallow to deep. Steep rim colours at
large indentation are outside the calibrated set, so their gradient is made up.
2. Flat-topped indenters reconstruct as domes, not plateaus. The
centre/rim height ratio should be ≈1.0 for a flat punch; measured 1.23–1.42 for
star / triangle / quad / B. The sphere's 1.43–1.46 is correct — for a sphere a
dome IS the right answer, which is why the same number means different things
per row. The interior of a flat contact carries no colour change, so Poisson
can only raise it by integrating inward from the rim.
3. The valid mask is halo-dominated (column 5): for star/triangle/quad
it is a round blob while column 3 shows the shape crisply. The mask threshold
|dI| > 8 admits the diffuse halo, and the halo pedestal then
has to be removed downstream (column 12) rather than never being integrated.
| sample | peak [mm] | unobserved LUT | centre/rim | grad angle chance 90° |
profile RMS |
|---|---|---|---|---|---|
| round z=2.12mm F=4.4N | 1.60 | 0% | 1.46 | 6.8° | 69 µm |
| round z=3.21mm F=9.4N | 2.55 | 4% | 1.43 | 5.8° | 35 µm |
| round z=3.80mm F=14.8N | 2.94 | 1% | 1.44 | 5.1° | 105 µm |
| star z=1.73mm F=3.0N | 1.61 | 2% | 1.44 | ||
| star z=2.34mm F=8.0N | 2.07 | 10% | 1.33 | ||
| star z=2.96mm F=11.0N | 2.03 | 14% | 1.36 | ||
| star z=3.53mm F=16.0N | 2.30 | 22% | 1.35 | ||
| triangle z=2.28mm F=4.9N | 1.40 | 5% | 1.42 | ||
| triangle z=3.11mm F=9.7N | 2.05 | 9% | 1.31 | ||
| triangle z=3.75mm F=14.7N | 2.66 | 10% | 1.32 | ||
| quad z=2.16mm F=3.6N | 1.19 | 4% | 1.32 | ||
| quad z=2.94mm F=9.2N | 1.75 | 9% | 1.24 | ||
| quad z=3.52mm F=14.2N | 2.32 | 10% | 1.23 | ||
| quad_small z=1.51mm F=3.9N | 1.43 | 7% | 1.32 | ||
| quad_small z=2.55mm F=9.2N | 2.51 | 6% | 1.35 | ||
| quad_small z=3.47mm F=13.7N | 2.93 | 8% | 1.35 | ||
| quad_small z=3.97mm F=17.4N | 2.66 | 12% | 1.42 | ||
| B z=2.91mm F=4.9N | 1.96 | 7% | 1.39 | ||
| B z=4.04mm F=10.6N | 2.83 | 6% | 1.39 | ||
| B z=4.48mm F=13.7N | 2.87 | 5% | 1.40 |
Grad angle and profile RMS are only defined where the indenter
is a sphere of known radius (the round family): the LUT gradient
sits 5.1–6.8° from the analytic sphere gradient and the radial profile matches
the cap to 35–105 µm, so on this sensor the table and the solver are both
sound — the defects above are about coverage, mask and flat-top geometry, not
about the photometric map being wrong.



















