{"submission_id":"0294c41f-3c32-4f9e-9eab-b2678a59add6","submission_revision_id":"5b6a9978-eab1-4573-b05e-42447b2ff77e","revision_version":1,"submission_status":"submitted","submitted_at":"2026-07-09T22:23:51.053260Z","submitter_name":"Nikola Zubic and Davide Scaramuzza","submitter_email":"zubic@ifi.uzh.ch","task":{"status":"submitted","version":1,"extra_fields":{},"submitted_at":"2026-07-09T22:23:51.053260+00:00","industry_domain":"Robotics & Autonomous Systems — Event-Based Computer Vision","task_short_name":"event_vision_rotation_compensation_instance_1","operating_system":"Linux","task_description":"Objective: Estimate the three-axis angular velocity of a moving event camera from asynchronous polarity events, then produce motion-compensated event images for every specified time window.\n\nStarting State: The input directory contains:\n* events.h5: a 346×260 event-camera recording. It contains /events/x (uint16), /events/y (uint16), /events/t_us (int64), and /events/p (int8, values -1 or +1). Timestamps are relative integer microseconds and are nondecreasing.\n* calibration.yaml: image dimensions, camera matrix, Brown–Conrady distortion coefficients, and rectified camera matrix.\n* windows.csv: 20 non-overlapping processing intervals with columns window_id,t_start_us,t_end_us.\n* valid_mask.npy: Boolean mask identifying the valid rectified image region.\n* README_INPUT.md: exact schemas and coordinate conventions.\n\nThe recording depicts a static, textured 3D scene viewed by a rotating event camera. Angular velocity is constant inside each supplied interval but changes between intervals and includes rotation around all three axes. The stream also contains background-activity noise, timestamp jitter, and persistent hot pixels. No APS/RGB frames, camera poses, or reference angular velocities are provided.\n\nInstructions and Rules:\n1. Validate the files and undistort the event coordinates using calibration.yaml.\n2. For each half-open interval [t_start_us,t_end_us), estimate angular velocity (wx,wy,wz) in radians per second using only the supplied event data.\n3. Event filtering may be used when estimating motion, but the final motion-compensated images must be generated from all events, including events excluded during estimation.\n4. For each window, use its midpoint as t_ref. For an undistorted normalized event ray q, calculate: \ndt = (t_ref_us - t_us) × 10^-6\nq_ref = exp([omega]x × dt) q\nHere, [omega]x is the standard skew-symmetric matrix. Project q_ref using the rectified camera matrix.\n5. Retain a warped event only when its continuous coordinate lies inside [0,width-1) × [0,height-1). Do not clip out-of-bounds events.\n6. Accumulate positive and negative events separately using four-neighbor bilinear splatting. Divide each plane by the number of retained events of that polarity. The supplied sequence guarantees at least one retained event for each plane.\n7. Store output planes as little-endian float32. The first dimension must follow the row order of windows.csv.\n8. Do not use APS/RGB frames, pretrained models, downloaded data, network access, reference results, or hard-coded motion values.\n9. The solution must be deterministic, CPU-only, and runnable with:\nbash run.sh <input_directory> <output_directory>\n\nRequired Deliverables:\n* angular_velocity.csv, containing exactly:\nwindow_id,t_start_us,t_end_us,wx_rad_s,wy_rad_s,wz_rad_s,event_count\n* motion_compensated_iwe.npz, containing arrays positive and negative, each with dtype float32 and shape (20,260,346)\n* run.sh\n* All source code needed by run.sh\n* A pinned dependency manifest\nevent_count must equal the number of unfiltered input events in the corresponding half-open interval. Do not alter any input file.","software_licensing":"Free/Open Source","evaluation_criteria":null,"verification_method":"Run the submission twice in clean environments using `bash run.sh <input_directory> <output_directory>`. Compare each run with the supplied reference using `grade.py`. All of the following checks are mandatory:\n1. All required output files must exist and be readable. CSV columns, row count, window IDs, and timestamps must exactly match the reference. Numeric outputs may not contain NaN or infinity.\n2. Every `event_count` must exactly equal the count independently calculated from `events.h5` for `[t_start_us,t_end_us)`.\n3. Across all 60 submitted angular-velocity components, RMSE against the reference must be no greater than `0.15 rad/s`.\n4. The 95th percentile of per-window vector error `||omega_submitted−omega_reference||₂` must be no greater than `0.35 rad/s`, and no individual window may exceed `0.60 rad/s`.\n5. Integrate the piecewise-constant velocities using `R₀=I` and `Rₖ₊₁=exp([omegaₖ]x Δtₖ)Rₖ`. The final orientation geodesic error must be no greater than `1.5°`, and the maximum geodesic error at any window boundary must be no greater than `2.0°`.\n6. The NPZ keys, shapes, and `float32` dtypes must exactly match the specification. For each window and polarity, apply a 7×7 Gaussian blur with `sigma=1.0` to both submitted and reference planes. Calculate cosine similarity over `valid_mask.npy`. Mean similarity across all 40 planes must be at least `0.95`, and every individual plane must score at least `0.85`.\n7. Between the two executions, corresponding CSV numeric values and NPZ elements must agree within absolute tolerance `1×10^-6`.\n\nMetrics are calculated in `float64`. No rescaling, temporal alignment, manual cropping, interpolation, or human visual judgment is permitted.","software_and_version":"Python 3.11.9; NumPy 2.0.1; SciPy 1.14.1; OpenCV-Python-Headless 4.10.0.84; h5py 3.11.0; PyYAML 6.0.2","specific_requirements":null,"expected_completion_time":null},"files":[{"file_id":"c3897152-6aa8-4ecb-bd61-f6a01f852047","filename":"event_rotation_input_v1.zip","category":"input_materials","content_type":"application/zip","size_bytes":1353900},{"file_id":"2b237d8d-14d8-47a9-87a3-039fbea351ba","filename":"event_rotation_reference_v1.zip","category":"reference_output","content_type":"application/zip","size_bytes":3136027}],"deep_review":{"overall_verdict":"Strong Accept","review_text":"**Overall Verdict:** Strong Accept — The submission is complete, internally consistent, professionally constructed, and supports a deterministic end-to-end implementation and objective evaluation workflow.\n\n**Completeness Check:**\n- Instruction: Complete — The motion convention, interval semantics, coordinate handling, bilinear splatting, normalization, output schemas, runtime command, restrictions, and determinism requirements are explicit.\n- Inputs: Complete — The input archive contains the declared HDF5 event stream, calibration, 20-window CSV, Boolean validity mask, documentation, schema helper, pinned dependencies, licensing, and integrity manifest.\n- Toolchain: Complete — The specified Linux/Python CPU stack is freely obtainable, pinned, compatible with the supplied formats, and requires neither network access nor specialized hardware at runtime.\n- Reference output: Complete — The segregated gold CSV has 20 matching windows and 440,758 total events; the NPZ contains exactly `positive` and `negative` little-endian float32 arrays with shape `(20,260,346)`, finite nonnegative values, and normalized per-plane mass.\n- Rubric: Complete — The offline evaluator implements all stated schema, event-count, angular-velocity, integrated-orientation, blurred-IWE, and two-run determinism gates with exact thresholds and machine-readable results.\n\n**File and Task Reachability:**\nAttachment classification: reachable. Task classification: reachable. I inspected `event_rotation_input_v1.zip` and `event_rotation_reference_v1.zip`, including their complete inventories, integrity manifests, licenses, input documentation and schemas, calibration, windows, validity mask, HDF5 evidence, reference CSV and NPZ, evaluator source and tests, grading configuration, diagnostics, and provenance generator/configuration. Both archive byte counts match the manifest; both are readable, unencrypted, free of unsafe paths or special filesystem entries, and all internal checksums match. The solver-visible input is separated from the reference motion schedule, gold outputs, generator, and evaluator. No manifest attachment was unreviewed. Native HDF5 dataset traversal and video frame decoding were unavailable in the review environment; the HDF5 file was instead corroborated through its valid signature, embedded dataset/schema markers, checksum-linked provenance source, and passing reference validation report, while the H.264 MP4 is explicitly non-authoritative and has zero grading weight. An ordinary CPU-only Linux workflow can load the supplied inputs, run a deterministic Python solution twice through the required shell interface, and have both outputs evaluated offline against the hidden reference. License keys, accounts, tokens, and other credentials are not required from the contributor. Confidential, proprietary, or internal material may be evaluated as submitted evidence without requiring additional disclosure.\n\n**Special Screening:**\nNone\n\n**Recommended Changes:**\nThe submission already provides unusually strong schema documentation, provenance, integrity checks, evaluator tests, positive and negative controls, and answer separation. No changes are required.","reviewed_at":"2026-08-21T17:00:03.059465Z"},"claim":null}