pymvis 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. pymvis-0.1.0/COMMERCIAL-LICENSE.md +40 -0
  2. pymvis-0.1.0/LICENSE +674 -0
  3. pymvis-0.1.0/PKG-INFO +625 -0
  4. pymvis-0.1.0/README.md +578 -0
  5. pymvis-0.1.0/pyproject.toml +103 -0
  6. pymvis-0.1.0/setup.cfg +4 -0
  7. pymvis-0.1.0/src/mvis/__init__.py +20 -0
  8. pymvis-0.1.0/src/mvis/analysis/__init__.py +22 -0
  9. pymvis-0.1.0/src/mvis/analysis/cam_imu_report.py +1046 -0
  10. pymvis-0.1.0/src/mvis/analysis/display_frame.py +58 -0
  11. pymvis-0.1.0/src/mvis/analysis/generate_report.py +309 -0
  12. pymvis-0.1.0/src/mvis/analysis/html_report.py +898 -0
  13. pymvis-0.1.0/src/mvis/analysis/imu_correlation.py +128 -0
  14. pymvis-0.1.0/src/mvis/analysis/motion_analysis.py +277 -0
  15. pymvis-0.1.0/src/mvis/analysis/plot_3d.py +1136 -0
  16. pymvis-0.1.0/src/mvis/analysis/plot_errors.py +1116 -0
  17. pymvis-0.1.0/src/mvis/analysis/pose_images.py +245 -0
  18. pymvis-0.1.0/src/mvis/analysis/reference.py +100 -0
  19. pymvis-0.1.0/src/mvis/analysis/regenerate_html.py +500 -0
  20. pymvis-0.1.0/src/mvis/analysis/report.py +97 -0
  21. pymvis-0.1.0/src/mvis/analysis/report_shell.py +1067 -0
  22. pymvis-0.1.0/src/mvis/analysis/reprojection_error.py +83 -0
  23. pymvis-0.1.0/src/mvis/analysis/rerun_viz.py +298 -0
  24. pymvis-0.1.0/src/mvis/analysis/verdict.py +251 -0
  25. pymvis-0.1.0/src/mvis/analysis/views/__init__.py +26 -0
  26. pymvis-0.1.0/src/mvis/analysis/views/assets/views.css +76 -0
  27. pymvis-0.1.0/src/mvis/analysis/views/assets/views.js +495 -0
  28. pymvis-0.1.0/src/mvis/analysis/views/geometry.py +174 -0
  29. pymvis-0.1.0/src/mvis/analysis/views/html.py +60 -0
  30. pymvis-0.1.0/src/mvis/analysis/views/legacy.py +152 -0
  31. pymvis-0.1.0/src/mvis/analysis/views/spec.py +385 -0
  32. pymvis-0.1.0/src/mvis/calibration/__init__.py +21 -0
  33. pymvis-0.1.0/src/mvis/calibration/board_shape.py +39 -0
  34. pymvis-0.1.0/src/mvis/calibration/cam_imu_init.py +1092 -0
  35. pymvis-0.1.0/src/mvis/calibration/cam_run.py +754 -0
  36. pymvis-0.1.0/src/mvis/calibration/corner_accounting.py +272 -0
  37. pymvis-0.1.0/src/mvis/calibration/factors/__init__.py +20 -0
  38. pymvis-0.1.0/src/mvis/calibration/factors/_calib_memo.py +137 -0
  39. pymvis-0.1.0/src/mvis/calibration/factors/aci.py +640 -0
  40. pymvis-0.1.0/src/mvis/calibration/factors/camera_calib.py +161 -0
  41. pymvis-0.1.0/src/mvis/calibration/factors/camera_feature_factor.py +224 -0
  42. pymvis-0.1.0/src/mvis/calibration/factors/camera_imu_factor.py +427 -0
  43. pymvis-0.1.0/src/mvis/calibration/factors/camera_interp_factor.py +259 -0
  44. pymvis-0.1.0/src/mvis/calibration/factors/camera_intrinsics.py +49 -0
  45. pymvis-0.1.0/src/mvis/calibration/factors/camera_projection.py +218 -0
  46. pymvis-0.1.0/src/mvis/calibration/factors/corner_reproj.py +85 -0
  47. pymvis-0.1.0/src/mvis/calibration/factors/custom_projections.py +916 -0
  48. pymvis-0.1.0/src/mvis/calibration/factors/imu_calib.py +84 -0
  49. pymvis-0.1.0/src/mvis/calibration/factors/imu_factor.py +231 -0
  50. pymvis-0.1.0/src/mvis/calibration/factors/imu_factor_gyro.py +179 -0
  51. pymvis-0.1.0/src/mvis/calibration/factors/imu_factor_multi.py +213 -0
  52. pymvis-0.1.0/src/mvis/calibration/factors/imu_segment.py +261 -0
  53. pymvis-0.1.0/src/mvis/calibration/factors/lie_groups.py +301 -0
  54. pymvis-0.1.0/src/mvis/calibration/factors/numdiff.py +72 -0
  55. pymvis-0.1.0/src/mvis/calibration/factors/pose_interpolation.py +173 -0
  56. pymvis-0.1.0/src/mvis/calibration/factors/projection.py +74 -0
  57. pymvis-0.1.0/src/mvis/calibration/init_frame_selector.py +184 -0
  58. pymvis-0.1.0/src/mvis/calibration/initializer.py +1125 -0
  59. pymvis-0.1.0/src/mvis/calibration/lm_params.py +97 -0
  60. pymvis-0.1.0/src/mvis/calibration/lm_progress.py +113 -0
  61. pymvis-0.1.0/src/mvis/calibration/lm_rescue.py +99 -0
  62. pymvis-0.1.0/src/mvis/calibration/mono_sfm.py +507 -0
  63. pymvis-0.1.0/src/mvis/calibration/multi_board_init.py +178 -0
  64. pymvis-0.1.0/src/mvis/calibration/multi_board_pipeline.py +159 -0
  65. pymvis-0.1.0/src/mvis/calibration/omni_schedule.py +120 -0
  66. pymvis-0.1.0/src/mvis/calibration/optimizer.py +1056 -0
  67. pymvis-0.1.0/src/mvis/calibration/outlier_rejection.py +223 -0
  68. pymvis-0.1.0/src/mvis/calibration/pipeline_cam.py +2236 -0
  69. pymvis-0.1.0/src/mvis/calibration/pipeline_cam_imu.py +2365 -0
  70. pymvis-0.1.0/src/mvis/calibration/pose_alignment.py +955 -0
  71. pymvis-0.1.0/src/mvis/calibration/reproj_stats.py +58 -0
  72. pymvis-0.1.0/src/mvis/calibration/result_projector.py +179 -0
  73. pymvis-0.1.0/src/mvis/calibration/selection_ledger.py +188 -0
  74. pymvis-0.1.0/src/mvis/calibration/sensor_clock.py +153 -0
  75. pymvis-0.1.0/src/mvis/calibration/state_dump.py +441 -0
  76. pymvis-0.1.0/src/mvis/calibration/tga_relin.py +168 -0
  77. pymvis-0.1.0/src/mvis/camera/__init__.py +28 -0
  78. pymvis-0.1.0/src/mvis/camera/camera_model.py +241 -0
  79. pymvis-0.1.0/src/mvis/camera/double_sphere.py +80 -0
  80. pymvis-0.1.0/src/mvis/camera/eucm.py +78 -0
  81. pymvis-0.1.0/src/mvis/camera/fov_model.py +76 -0
  82. pymvis-0.1.0/src/mvis/camera/kb4.py +69 -0
  83. pymvis-0.1.0/src/mvis/camera/kb_domain.py +115 -0
  84. pymvis-0.1.0/src/mvis/camera/normalized_points.py +64 -0
  85. pymvis-0.1.0/src/mvis/camera/omni_radtan.py +75 -0
  86. pymvis-0.1.0/src/mvis/camera/pinhole_equidistant.py +115 -0
  87. pymvis-0.1.0/src/mvis/camera/pinhole_radtan.py +113 -0
  88. pymvis-0.1.0/src/mvis/camera/ucm.py +87 -0
  89. pymvis-0.1.0/src/mvis/cli/__init__.py +27 -0
  90. pymvis-0.1.0/src/mvis/cli/blas_threads.py +142 -0
  91. pymvis-0.1.0/src/mvis/cli/main.py +1101 -0
  92. pymvis-0.1.0/src/mvis/core/__init__.py +26 -0
  93. pymvis-0.1.0/src/mvis/core/camera_models.py +231 -0
  94. pymvis-0.1.0/src/mvis/core/config.py +754 -0
  95. pymvis-0.1.0/src/mvis/core/config_parser.py +479 -0
  96. pymvis-0.1.0/src/mvis/core/config_validator.py +122 -0
  97. pymvis-0.1.0/src/mvis/core/eigen_cache.py +132 -0
  98. pymvis-0.1.0/src/mvis/core/paths.py +34 -0
  99. pymvis-0.1.0/src/mvis/core/rotation.py +31 -0
  100. pymvis-0.1.0/src/mvis/core/shutter.py +69 -0
  101. pymvis-0.1.0/src/mvis/core/system_info.py +161 -0
  102. pymvis-0.1.0/src/mvis/core/timing.py +173 -0
  103. pymvis-0.1.0/src/mvis/core/types.py +171 -0
  104. pymvis-0.1.0/src/mvis/datasets/__init__.py +27 -0
  105. pymvis-0.1.0/src/mvis/datasets/catalog.py +323 -0
  106. pymvis-0.1.0/src/mvis/datasets/cli.py +121 -0
  107. pymvis-0.1.0/src/mvis/datasets/conversion.py +150 -0
  108. pymvis-0.1.0/src/mvis/datasets/converters/__init__.py +44 -0
  109. pymvis-0.1.0/src/mvis/datasets/converters/archive.py +99 -0
  110. pymvis-0.1.0/src/mvis/datasets/converters/euroc_folder_to_rosbag.py +183 -0
  111. pymvis-0.1.0/src/mvis/datasets/converters/gilabs_mcap.py +195 -0
  112. pymvis-0.1.0/src/mvis/datasets/converters/image_folder_to_rosbag.py +78 -0
  113. pymvis-0.1.0/src/mvis/datasets/converters/looper_mav0.py +221 -0
  114. pymvis-0.1.0/src/mvis/datasets/converters/mcap_to_euroc_folder.py +41 -0
  115. pymvis-0.1.0/src/mvis/datasets/converters/penncosyvio_to_rosbag.py +129 -0
  116. pymvis-0.1.0/src/mvis/datasets/converters/rosbag_mono16_to_mono8.py +74 -0
  117. pymvis-0.1.0/src/mvis/datasets/converters/rosbag_to_mcap.py +39 -0
  118. pymvis-0.1.0/src/mvis/datasets/converters/tumvie_to_euroc_folder.py +76 -0
  119. pymvis-0.1.0/src/mvis/datasets/dataset_catalog.json +2015 -0
  120. pymvis-0.1.0/src/mvis/datasets/download.py +192 -0
  121. pymvis-0.1.0/src/mvis/datasets/huggingface.py +214 -0
  122. pymvis-0.1.0/src/mvis/datasets/recipe_export.py +217 -0
  123. pymvis-0.1.0/src/mvis/detection/__init__.py +36 -0
  124. pymvis-0.1.0/src/mvis/detection/apriltag_board.py +644 -0
  125. pymvis-0.1.0/src/mvis/detection/apriltag_features.py +159 -0
  126. pymvis-0.1.0/src/mvis/detection/aruco_board.py +236 -0
  127. pymvis-0.1.0/src/mvis/detection/aruco_features.py +168 -0
  128. pymvis-0.1.0/src/mvis/detection/board.py +112 -0
  129. pymvis-0.1.0/src/mvis/detection/board_factory.py +86 -0
  130. pymvis-0.1.0/src/mvis/detection/boards.py +33 -0
  131. pymvis-0.1.0/src/mvis/detection/chessboard.py +130 -0
  132. pymvis-0.1.0/src/mvis/detection/corner_subsample.py +236 -0
  133. pymvis-0.1.0/src/mvis/detection/detectors.py +92 -0
  134. pymvis-0.1.0/src/mvis/detection/frame_quality.py +499 -0
  135. pymvis-0.1.0/src/mvis/detection/frontend.py +43 -0
  136. pymvis-0.1.0/src/mvis/detection/quality.py +24 -0
  137. pymvis-0.1.0/src/mvis/detection/quality_gate.py +346 -0
  138. pymvis-0.1.0/src/mvis/detection/sweep.py +60 -0
  139. pymvis-0.1.0/src/mvis/doctor/__init__.py +17 -0
  140. pymvis-0.1.0/src/mvis/doctor/check_config.py +337 -0
  141. pymvis-0.1.0/src/mvis/doctor/findings.py +44 -0
  142. pymvis-0.1.0/src/mvis/doctor/inspect.py +292 -0
  143. pymvis-0.1.0/src/mvis/imu/__init__.py +31 -0
  144. pymvis-0.1.0/src/mvis/imu/allan.py +79 -0
  145. pymvis-0.1.0/src/mvis/imu/calyx.py +54 -0
  146. pymvis-0.1.0/src/mvis/imu/imu_model.py +517 -0
  147. pymvis-0.1.0/src/mvis/imu/kalibr.py +52 -0
  148. pymvis-0.1.0/src/mvis/imu/resample.py +61 -0
  149. pymvis-0.1.0/src/mvis/imu/rpng.py +52 -0
  150. pymvis-0.1.0/src/mvis/io/__init__.py +42 -0
  151. pymvis-0.1.0/src/mvis/io/basalt.py +185 -0
  152. pymvis-0.1.0/src/mvis/io/cam_imu_loader.py +357 -0
  153. pymvis-0.1.0/src/mvis/io/cam_imu_output.py +258 -0
  154. pymvis-0.1.0/src/mvis/io/camera_input.py +181 -0
  155. pymvis-0.1.0/src/mvis/io/capture_key.py +58 -0
  156. pymvis-0.1.0/src/mvis/io/compressed_image.py +85 -0
  157. pymvis-0.1.0/src/mvis/io/data_loader.py +97 -0
  158. pymvis-0.1.0/src/mvis/io/data_source.py +93 -0
  159. pymvis-0.1.0/src/mvis/io/detection_cache.py +208 -0
  160. pymvis-0.1.0/src/mvis/io/detection_pipeline.py +867 -0
  161. pymvis-0.1.0/src/mvis/io/euroc_image_source.py +100 -0
  162. pymvis-0.1.0/src/mvis/io/fileutil.py +44 -0
  163. pymvis-0.1.0/src/mvis/io/frame_detector.py +64 -0
  164. pymvis-0.1.0/src/mvis/io/frame_selector.py +314 -0
  165. pymvis-0.1.0/src/mvis/io/image_decode.py +158 -0
  166. pymvis-0.1.0/src/mvis/io/image_source.py +75 -0
  167. pymvis-0.1.0/src/mvis/io/imu_reader.py +43 -0
  168. pymvis-0.1.0/src/mvis/io/kalibr.py +312 -0
  169. pymvis-0.1.0/src/mvis/io/output_writer.py +291 -0
  170. pymvis-0.1.0/src/mvis/io/result_schema.py +139 -0
  171. pymvis-0.1.0/src/mvis/io/ros1_bag_source.py +70 -0
  172. pymvis-0.1.0/src/mvis/io/ros2_bag_source.py +92 -0
  173. pymvis-0.1.0/src/mvis/io/ros_stamp.py +40 -0
  174. pymvis-0.1.0/src/mvis/io/safe_yaml.py +102 -0
  175. pymvis-0.1.0/src/mvis/io/segment_select.py +66 -0
  176. pymvis-0.1.0/src/mvis/io/sensor_clock.py +98 -0
  177. pymvis-0.1.0/src/mvis/io/stream_store.py +184 -0
  178. pymvis-0.1.0/src/mvis/io/timestamped_image_source.py +65 -0
  179. pymvis-0.1.0/src/mvis/mvisdb/__init__.py +28 -0
  180. pymvis-0.1.0/src/mvis/mvisdb/bridge.py +192 -0
  181. pymvis-0.1.0/src/mvis/mvisdb/estimates.py +284 -0
  182. pymvis-0.1.0/src/mvis/mvisdb/exports.py +140 -0
  183. pymvis-0.1.0/src/mvis/mvisdb/manager.py +719 -0
  184. pymvis-0.1.0/src/mvis/mvisdb/migrations/__init__.py +61 -0
  185. pymvis-0.1.0/src/mvis/mvisdb/migrations/m0001_initial.py +26 -0
  186. pymvis-0.1.0/src/mvis/mvisdb/migrations/m0002_cam_only_base_state.py +45 -0
  187. pymvis-0.1.0/src/mvis/mvisdb/migrations/m0003_reproj_stats.py +34 -0
  188. pymvis-0.1.0/src/mvis/mvisdb/mvisdatabase.py +775 -0
  189. pymvis-0.1.0/src/mvis/mvisdb/schema.sql +303 -0
  190. pymvis-0.1.0/src/mvis/mvisdb/shim.py +159 -0
  191. pymvis-0.1.0/src/mvis/mvisdb/spec.py +143 -0
  192. pymvis-0.1.0/src/mvis/recalib/__init__.py +29 -0
  193. pymvis-0.1.0/src/mvis/recalib/apply.py +381 -0
  194. pymvis-0.1.0/src/mvis/recalib/bagio.py +84 -0
  195. pymvis-0.1.0/src/mvis/recalib/calib_spec.py +174 -0
  196. pymvis-0.1.0/src/mvis/recalib/correct_imu.py +35 -0
  197. pymvis-0.1.0/src/mvis/recalib/prior.py +90 -0
  198. pymvis-0.1.0/src/mvis/recalib/provenance.py +59 -0
  199. pymvis-0.1.0/src/mvis/recalib/restamp.py +36 -0
  200. pymvis-0.1.0/src/mvis/recalib/restamp_sensor_clock.py +329 -0
  201. pymvis-0.1.0/src/mvis/recalib/result_metrics.py +149 -0
  202. pymvis-0.1.0/src/mvis/recalib/roundtrip.py +227 -0
  203. pymvis-0.1.0/src/mvis/recalib/sensor_map.py +97 -0
  204. pymvis-0.1.0/src/mvis/recalib/undistort.py +65 -0
  205. pymvis-0.1.0/src/mvis/simulation/__init__.py +68 -0
  206. pymvis-0.1.0/src/mvis/simulation/bspline_se3.py +184 -0
  207. pymvis-0.1.0/src/mvis/simulation/camera_measurements.py +183 -0
  208. pymvis-0.1.0/src/mvis/simulation/config.py +198 -0
  209. pymvis-0.1.0/src/mvis/simulation/data/examples/twin_gs/README.md +33 -0
  210. pymvis-0.1.0/src/mvis/simulation/data/examples/twin_gs/setup.yaml +78 -0
  211. pymvis-0.1.0/src/mvis/simulation/data/examples/twin_gs/trajectory.txt +1522 -0
  212. pymvis-0.1.0/src/mvis/simulation/data/gt_3cam.json +1 -0
  213. pymvis-0.1.0/src/mvis/simulation/data/trajectories/sine_3d.txt +5983 -0
  214. pymvis-0.1.0/src/mvis/simulation/examples.py +183 -0
  215. pymvis-0.1.0/src/mvis/simulation/from_result.py +220 -0
  216. pymvis-0.1.0/src/mvis/simulation/imu_measurements.py +168 -0
  217. pymvis-0.1.0/src/mvis/simulation/multi_board.py +482 -0
  218. pymvis-0.1.0/src/mvis/simulation/multicam.py +132 -0
  219. pymvis-0.1.0/src/mvis/simulation/noise.py +95 -0
  220. pymvis-0.1.0/src/mvis/simulation/report.py +221 -0
  221. pymvis-0.1.0/src/mvis/simulation/run.py +169 -0
  222. pymvis-0.1.0/src/mvis/simulation/scenario.py +150 -0
  223. pymvis-0.1.0/src/mvis/simulation/synth.py +237 -0
  224. pymvis-0.1.0/src/mvis/simulation/trajectories.py +65 -0
  225. pymvis-0.1.0/src/mvis/simulation/trajectory_io.py +107 -0
  226. pymvis-0.1.0/src/mvis/simulation/twin.py +515 -0
  227. pymvis-0.1.0/src/mvis/simulation/video.py +735 -0
  228. pymvis-0.1.0/src/mvis/simulation/visualization.py +124 -0
  229. pymvis-0.1.0/src/pymvis.egg-info/PKG-INFO +625 -0
  230. pymvis-0.1.0/src/pymvis.egg-info/SOURCES.txt +236 -0
  231. pymvis-0.1.0/src/pymvis.egg-info/dependency_links.txt +1 -0
  232. pymvis-0.1.0/src/pymvis.egg-info/entry_points.txt +2 -0
  233. pymvis-0.1.0/src/pymvis.egg-info/requires.txt +30 -0
  234. pymvis-0.1.0/src/pymvis.egg-info/top_level.txt +1 -0
  235. pymvis-0.1.0/tests/test_eigen_cache.py +172 -0
  236. pymvis-0.1.0/tests/test_intr_bounds.py +81 -0
  237. pymvis-0.1.0/tests/test_spdx_headers.py +82 -0
  238. pymvis-0.1.0/tests/test_system_info.py +45 -0
@@ -0,0 +1,40 @@
1
+ # Licensing
2
+
3
+ MVIS is Copyright (C) 2026 Yulin Yang and the MVIS contributors (see `AUTHORS`).
4
+
5
+ MVIS is dual-licensed:
6
+
7
+ 1. **GPL-3.0-only** (see `LICENSE`). Free for everyone, including companies,
8
+ for research, teaching, and internal use. If you distribute software that
9
+ includes or is derived from MVIS, you must release it under GPL-3.0.
10
+
11
+ 2. **Commercial licence.** If you want to use MVIS in a closed-source product,
12
+ or otherwise cannot meet GPL-3.0 terms, a commercial licence is available.
13
+ Contact: licensing@openmvis.com
14
+
15
+ ## Calibration results
16
+
17
+ The GPL covers the MVIS code, not what it computes. Calibration results you
18
+ produce by running MVIS on your own recordings (intrinsics, extrinsics, time
19
+ offsets, residuals, plots, reports) are yours. You may publish them anywhere,
20
+ including on commercial product pages, without a commercial licence.
21
+
22
+ Results computed on a dataset follow that dataset's licence. For example,
23
+ results from the CC BY-NC 4.0 VI-Rig data may not be used commercially
24
+ without a dataset licence (licensing@openmvis.com).
25
+
26
+ ## Names
27
+
28
+ You may say that results were computed with MVIS (for example, "Calibrated
29
+ with MVIS", with a link to https://openmvis.com). Do not use the MVIS or
30
+ OpenMVIS names or logos in a way that suggests the project endorses or
31
+ certifies your product without written permission.
32
+
33
+ ## Datasets
34
+
35
+ Datasets referenced by MVIS have their own licences. The VI-Rig and Looper
36
+ recordings are CC BY-NC 4.0 with gated access on Hugging Face; commercial use
37
+ is available by request (licensing@openmvis.com). The converted third-party
38
+ sets hosted there are CC BY 4.0, and TUM-VI is CC BY 4.0. Other third-party
39
+ datasets are not distributed here; download them from their owners under the
40
+ owners' terms.