UnitCompose CI demos / image-registration

Image registration

Kornia ORB matching, seeded homography estimation, and perspective warp.

commit 93d38190866a | rustc 1.89.0 (29483883e 2025-08-04) | generated 2026-08-20 08:11:11 UTC

Latest result

grayscale -> ORB -> match -> homography -> warp -> metrics

matches=281 inliers=199 reprojection_rmse=0.862886 inlier_ratio=0.7082

Module structure and measured execution

Prepared topology

flowchart TD
  unit_677261797363616c65["grayscale<br/>Unit<br/>image.grayscale/v1"]:::unit
  unit_686f6d6f677261706879["homography<br/>Unit<br/>image.homography/v1"]:::unit
  unit_6d61746368["match<br/>Unit<br/>image.match/v1"]:::unit
  unit_6d657472696373["metrics<br/>Unit<br/>image.metrics/v1"]:::unit
  unit_6f7262["orb<br/>Unit<br/>image.orb/v1"]:::unit
  unit_77617270["warp<br/>Unit<br/>image.warp/v1"]:::unit
  resource_63616e6469646174655f6d617463686573(["candidate_matches<br/>Resource<br/>image.CandidateMatches/v1"]):::resource
  unit_6d61746368 -->|out| resource_63616e6469646174655f6d617463686573
  resource_63616e6469646174655f6d617463686573 -->|input| unit_686f6d6f677261706879
  resource_677261797363616c655f70616972(["grayscale_pair<br/>Resource<br/>image.GrayscalePair/v1"]):::resource
  unit_677261797363616c65 -->|out| resource_677261797363616c655f70616972
  resource_677261797363616c655f70616972 -->|input| unit_6f7262
  resource_677261797363616c655f70616972 -->|grayscale| unit_77617270
  resource_696d6167655f70616972[/"image_pair<br/>Module input<br/>image.ImagePair/v1"/]:::moduleInput
  resource_696d6167655f70616972 -->|pair| unit_677261797363616c65
  resource_696e6c6965725f6d617463686573(["inlier_matches<br/>Resource<br/>image.RegistrationGeometry/v1"]):::resource
  unit_686f6d6f677261706879 -->|out| resource_696e6c6965725f6d617463686573
  resource_696e6c6965725f6d617463686573 -->|geometry| unit_77617270
  resource_6f72625f6665617475726573(["orb_features<br/>Resource<br/>image.OrbFeatures/v1"]):::resource
  unit_6f7262 -->|out| resource_6f72625f6665617475726573
  resource_6f72625f6665617475726573 -->|input| unit_6d61746368
  resource_726567697374726174696f6e5f726573756c74{{"registration_result<br/>Module output<br/>image.RegistrationResult/v1"}}:::moduleOutput
  unit_6d657472696373 -->|out| resource_726567697374726174696f6e5f726573756c74
  resource_7761727065645f696d616765{{"warped_image<br/>Module output<br/>image.WarpedRegistration/v1"}}:::moduleOutput
  unit_77617270 -->|out| resource_7761727065645f696d616765
  resource_7761727065645f696d616765 -->|input| unit_6d657472696373
  classDef unit fill:#eef2ff,stroke:#4338ca,stroke-width:1px
  classDef resource fill:#f8fafc,stroke:#64748b,stroke-width:1px
  classDef moduleInput fill:#ecfdf5,stroke:#047857,stroke-width:2px
  classDef moduleOutput fill:#fff7ed,stroke:#c2410c,stroke-width:3px
  classDef moduleInputOutput fill:#fefce8,stroke:#a16207,stroke-width:3px

Completed-run timing

flowchart TD
  unit_677261797363616c65["grayscale<br/>Unit<br/>image.grayscale/v1<br/>avg 21.683 ms / p99 22.231 ms / n=8"]:::unit
  unit_686f6d6f677261706879["homography<br/>Unit<br/>image.homography/v1<br/>avg 5.695 ms / p99 6.026 ms / n=8"]:::unit
  unit_6d61746368["match<br/>Unit<br/>image.match/v1<br/>avg 519.534 ms / p99 524.532 ms / n=8"]:::unit
  unit_6d657472696373["metrics<br/>Unit<br/>image.metrics/v1<br/>avg 70.2 us / p99 113.3 us / n=8"]:::unit
  unit_6f7262["orb<br/>Unit<br/>image.orb/v1<br/>avg 499.336 ms / p99 558.287 ms / n=8"]:::unit
  unit_77617270["warp<br/>Unit<br/>image.warp/v1<br/>avg 24.587 ms / p99 29.942 ms / n=8"]:::unit
  resource_63616e6469646174655f6d617463686573(["candidate_matches<br/>Resource<br/>image.CandidateMatches/v1"]):::resource
  unit_6d61746368 -->|out| resource_63616e6469646174655f6d617463686573
  resource_63616e6469646174655f6d617463686573 -->|input| unit_686f6d6f677261706879
  resource_677261797363616c655f70616972(["grayscale_pair<br/>Resource<br/>image.GrayscalePair/v1"]):::resource
  unit_677261797363616c65 -->|out| resource_677261797363616c655f70616972
  resource_677261797363616c655f70616972 -->|input| unit_6f7262
  resource_677261797363616c655f70616972 -->|grayscale| unit_77617270
  resource_696d6167655f70616972[/"image_pair<br/>Module input<br/>image.ImagePair/v1"/]:::moduleInput
  resource_696d6167655f70616972 -->|pair| unit_677261797363616c65
  resource_696e6c6965725f6d617463686573(["inlier_matches<br/>Resource<br/>image.RegistrationGeometry/v1"]):::resource
  unit_686f6d6f677261706879 -->|out| resource_696e6c6965725f6d617463686573
  resource_696e6c6965725f6d617463686573 -->|geometry| unit_77617270
  resource_6f72625f6665617475726573(["orb_features<br/>Resource<br/>image.OrbFeatures/v1"]):::resource
  unit_6f7262 -->|out| resource_6f72625f6665617475726573
  resource_6f72625f6665617475726573 -->|input| unit_6d61746368
  resource_726567697374726174696f6e5f726573756c74{{"registration_result<br/>Module output<br/>image.RegistrationResult/v1"}}:::moduleOutput
  unit_6d657472696373 -->|out| resource_726567697374726174696f6e5f726573756c74
  resource_7761727065645f696d616765{{"warped_image<br/>Module output<br/>image.WarpedRegistration/v1"}}:::moduleOutput
  unit_77617270 -->|out| resource_7761727065645f696d616765
  resource_7761727065645f696d616765 -->|input| unit_6d657472696373
  classDef unit fill:#eef2ff,stroke:#4338ca,stroke-width:1px
  classDef resource fill:#f8fafc,stroke:#64748b,stroke-width:1px
  classDef moduleInput fill:#ecfdf5,stroke:#047857,stroke-width:2px
  classDef moduleOutput fill:#fff7ed,stroke:#c2410c,stroke-width:3px
  classDef moduleInputOutput fill:#fefce8,stroke:#a16207,stroke-width:3px

Interactive recording

The fixed Rerun 0.24.1 blueprint shows domain outputs, quality metrics, and Unit timings from this CI run.

This downloaded report cannot serve the recording to the Web Viewer. Use the download link above and open the file with Rerun 0.24.1.