MIN_SHARPNESS

Minimum frame sharpness (variance of the image Laplacian) required to reach inference. Motion-blurred frames below this are skipped before the expensive BoQ step, since they rarely localize. Higher = stricter (demands sharper frames). 0 disables the gate.

The scale is this SDK's own, and is not comparable with the research bench's threshold of 25: BlurFilter normalises every frame to a 480 px max side first (so the value survives a change of capture resolution), and the bench scores unnormalised frames. It is also not comparable between devices — the same scenes score ~11× lower on a low-end phone than on a flagship, because normalising equalises pixel count, not optics or ISP.

10 is deliberately low: cheap insurance rather than a tuned filter. It is inert in good conditions (1 frame in 80 on a front-camera walk, 0 on two handheld walks) and only bites in genuinely blurred sessions, where ~28% of frames have fallen below it. Catching harmful fixes would need something like 50, which measured at 13 good fixes lost to prevent 2 bad ones — a trade this SDK should not make by default, since a missing fix costs the user far less than a wrong one and dead reckoning covers the gap.

An earlier default of 0 disabled the gate on the strength of a cost table weighing accepted fixes lost against wasted inferences saved. That table could not see the problem it was meant to catch: it counted every accepted fix as a win, so a blurred frame that localizes to the wrong place scored as a success. Judge this threshold on whether fixes are correct, never on how many there are.