CLAUDE: Fix renderNadirSequence(): missing ref->scene transform of pXpYD
getNadirDisparityMaps() returns pXpYD in the SEGMENT REFERENCE frame
(Cuas.transformFromVirtual() output), but renderNadirSequence() passed it
to renderGPUFromDSI() with ZERO3 pose and the scene as its own reference,
so each scene image was sampled at reference-frame coordinates. Each nadir
frame thus carried an extra ref->scene terrain warp: effective camera
poses vs the segment reference were ~doubled (ground translation 2x, small
rotations ~2x), and the identity transform also canceled ERS compensation.
On flat terrain the extra plane homography mimics a valid pose change, so
COLMAP converged self-consistently but disagreed with the exported poses
(Sim(3)/free monocular scale absorbs the 2x translation; rotations do not
scale, explaining the large angular residuals, worst on high-rotation-rate
sequences).
Now transformToScenePxPyD() maps the reference-frame pXpYD into each
scene's own frame (pose + ERS, same machinery as the verified
frozen-terrain path) before rendering with ZERO3/self, where the identity
pass is an exact pass-through. Output becomes a global-shutter virtual
view at each scene's nominal pose. Also converts disparity to the scene
frame for 16-sensor parallax compensation, and drops the defensive clone
(the transform returns new arrays). Docs updated to state the frame
conventions.
Co-authored-by:
Claude <claude@elphel.com>
Showing
Please register or sign in to comment