Commit 3c05de2f authored by Andrey Filippov's avatar Andrey Filippov

CLAUDE: fopen_pose_compare.py — add frame-numbering cross-reference docs

Documents the ImageJ (1-based slice:timestamp), INTERFRAME.corr-xml
(timestamp_microseconds key), and COLMAP (0-based frame_NNNN) conventions
in the module docstring so any frame can be cross-referenced across tools.
Also clarifies the underscore→dot timestamp conversion in parse_interframe_xml.
Co-authored-by: 's avatarClaude <claude@elphel.com>
parent 40bc3da4
...@@ -33,6 +33,21 @@ Output: ...@@ -33,6 +33,21 @@ Output:
delta-orientation RMSE (deg), top-10 worst frames delta-orientation RMSE (deg), top-10 worst frames
- CSV (--out): per-frame positions, position residuals, absolute COLMAP & ERS - CSV (--out): per-frame positions, position residuals, absolute COLMAP & ERS
orientation angles in Sim(3)-aligned world frame, delta-angle diffs orientation angles in Sim(3)-aligned world frame, delta-angle diffs
Frame numbering across systems
-------------------------------
ImageJ GUI shows slices 1-based with a timestamp label:
"47:1763233715_106222" ← slice 47, timestamp 1763233715.106222 s
*-INTERFRAME.corr-xml keys use the same timestamp with an underscore:
EYESIS_DCT_AUX.scenes_1763233715_106222
COLMAP images.txt assigns 0-based sequential names (sorted by timestamp):
frame_0046.png ← same scene; 0-based so ImageJ slice N = frame_N-1
This script's CSV output keeps both the 0-based COLMAP 'frame' index and
the float 'timestamp' so any frame can be cross-referenced unambiguously
regardless of which sub-sequence was used (full 498 frames or a subset).
""" """
import argparse import argparse
...@@ -218,7 +233,9 @@ def parse_interframe_xml(path, skip_rows=None): ...@@ -218,7 +233,9 @@ def parse_interframe_xml(path, skip_rows=None):
continue continue
if len(vals) != 6: if len(vals) != 6:
continue continue
# "1763233715_106222" → 1763233715.106222 # Key suffix is "seconds_microseconds" with an underscore separator,
# e.g. "1763233715_106222" → 1763233715.106222 s (Unix-ish epoch).
# Replace only the first underscore so the integer part is preserved.
ts_float = float(ts_str.replace("_", ".", 1)) ts_float = float(ts_str.replace("_", ".", 1))
raw[ts_float] = vals raw[ts_float] = vals
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment