machinevision-toolbox-python 1.0.3__py3-none-any.whl → 2.0.1__py3-none-any.whl

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 (63) hide show
  1. {machinevision_toolbox_python-1.0.3.dist-info → machinevision_toolbox_python-2.0.1.dist-info}/METADATA +103 -73
  2. machinevision_toolbox_python-2.0.1.dist-info/RECORD +68 -0
  3. {machinevision_toolbox_python-1.0.3.dist-info → machinevision_toolbox_python-2.0.1.dist-info}/WHEEL +1 -1
  4. {machinevision_toolbox_python-1.0.3.dist-info → machinevision_toolbox_python-2.0.1.dist-info}/entry_points.txt +3 -0
  5. machinevisiontoolbox/BagOfWords.py +74 -121
  6. machinevisiontoolbox/BundleAdjust.py +95 -77
  7. machinevisiontoolbox/Camera.py +642 -580
  8. machinevisiontoolbox/ImageBlobs.py +872 -505
  9. machinevisiontoolbox/ImageColor.py +105 -81
  10. machinevisiontoolbox/ImageConstants.py +674 -213
  11. machinevisiontoolbox/ImageCore.docstring +2877 -0
  12. machinevisiontoolbox/ImageCore.py +1644 -460
  13. machinevisiontoolbox/ImageFiducials.py +170 -98
  14. machinevisiontoolbox/ImageIO.py +330 -191
  15. machinevisiontoolbox/ImageLineFeatures.py +71 -37
  16. machinevisiontoolbox/ImageMorph.py +296 -117
  17. machinevisiontoolbox/ImageMultiview.py +129 -82
  18. machinevisiontoolbox/ImagePointFeatures.py +363 -419
  19. machinevisiontoolbox/ImageProcessing.py +703 -321
  20. machinevisiontoolbox/ImageRegionFeatures.py +79 -88
  21. machinevisiontoolbox/ImageReshape.py +308 -214
  22. machinevisiontoolbox/ImageSpatial.py +398 -936
  23. machinevisiontoolbox/ImageTensor.py +242 -0
  24. machinevisiontoolbox/ImageWholeFeatures.py +972 -310
  25. machinevisiontoolbox/Kernel.py +753 -0
  26. machinevisiontoolbox/PointCloud.py +122 -81
  27. machinevisiontoolbox/Sources.py +3695 -292
  28. machinevisiontoolbox/VisualServo.py +140 -99
  29. machinevisiontoolbox/__init__.py +160 -13
  30. machinevisiontoolbox/_image_typing.py +207 -0
  31. machinevisiontoolbox/base/__init__.py +11 -6
  32. machinevisiontoolbox/base/color.py +257 -156
  33. machinevisiontoolbox/base/data.py +25 -24
  34. machinevisiontoolbox/base/findpeaks.py +35 -10
  35. machinevisiontoolbox/base/graphics.py +378 -164
  36. machinevisiontoolbox/base/imageio.py +507 -216
  37. machinevisiontoolbox/base/meshgrid.py +13 -3
  38. machinevisiontoolbox/base/shapes.py +121 -62
  39. machinevisiontoolbox/base/types.py +28 -16
  40. machinevisiontoolbox/base/version.py +12 -5
  41. machinevisiontoolbox/bin/_bintools.py +61 -0
  42. machinevisiontoolbox/bin/bagtool.py +286 -0
  43. machinevisiontoolbox/bin/imtool.py +118 -45
  44. machinevisiontoolbox/bin/labeltool.py +147 -0
  45. machinevisiontoolbox/bin/mvtbtool.py +227 -47
  46. machinevisiontoolbox/bin/ocrtool.py +155 -0
  47. machinevisiontoolbox/bin/tagtool.py +163 -123
  48. machinevisiontoolbox/blocks/camera.py +14 -56
  49. machinevisiontoolbox/blocks/test_blocks.py +6 -5
  50. machinevisiontoolbox/camera_derivatives.py +1096 -5
  51. machinevisiontoolbox/cvfuncs.py +40 -0
  52. machinevisiontoolbox/decorators.py +17 -9
  53. machinevisiontoolbox/docbugs.py +47 -0
  54. machinevisiontoolbox/mvtb_types.py +15 -7
  55. machinevisiontoolbox/newcameras.py +4 -2
  56. machinevisiontoolbox/test_skimage.py +12 -0
  57. machinevisiontoolbox/testblobplots.py +17 -0
  58. machinevisiontoolbox/x.json +296 -0
  59. machinevision_toolbox_python-1.0.3.dist-info/RECORD +0 -58
  60. machinevisiontoolbox/base/esttheta.py +0 -97
  61. machinevisiontoolbox/bin/ce.py +0 -27
  62. machinevisiontoolbox/machinevision-toolbox-python.code-workspace +0 -7
  63. {machinevision_toolbox_python-1.0.3.dist-info → machinevision_toolbox_python-2.0.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,13 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machinevision-toolbox-python
3
- Version: 1.0.3
4
- Summary: Python tools for machine vision - education and research
3
+ Version: 2.0.1
4
+ Summary: Object-oriented machine vision for Python.
5
5
  Project-URL: Homepage, https://github.com/petercorke/machinevision-toolbox-python
6
6
  Project-URL: Bug Tracker, https://github.com/pypa/sampleproject/issues
7
7
  Project-URL: Documentation, https://petercorke.github.io/machinevision-toolbox-python
8
8
  Project-URL: GitHub Source, https://github.com/petercorke/machinevision-toolbox-python
9
- Project-URL: Changelog, https://github.com/petercorke/machinevision-toolbox-python/blob/master/CHANGELOG.md
10
- Author: Dorian Tsai
9
+ Project-URL: Changelog, https://github.com/petercorke/machinevision-toolbox-python/blob/main/CHANGELOG.md
11
10
  Author-email: Peter Corke <rvc@petercorke.com>
12
11
  License-File: LICENSE
13
12
  Keywords: blobs,bundle adjustment,color,computer vision,image features,image segmentation,machine vision,morphology,multiview geometry,open3d,opencv,stereo vision,visual servoing
@@ -18,6 +17,7 @@ Classifier: Operating System :: OS Independent
18
17
  Classifier: Programming Language :: Python :: 3.10
19
18
  Classifier: Programming Language :: Python :: 3.11
20
19
  Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
21
  Requires-Python: >=3.10
22
22
  Requires-Dist: ansitable
23
23
  Requires-Dist: matplotlib
@@ -26,85 +26,113 @@ Requires-Dist: numpy
26
26
  Requires-Dist: opencv-contrib-python
27
27
  Requires-Dist: opencv-python
28
28
  Requires-Dist: pgraph-python
29
+ Requires-Dist: pillow
30
+ Requires-Dist: requests
29
31
  Requires-Dist: scipy
30
32
  Requires-Dist: spatialmath-python
33
+ Requires-Dist: tqdm
34
+ Provides-Extra: all
35
+ Requires-Dist: ipympl; extra == 'all'
36
+ Requires-Dist: ipywidgets; extra == 'all'
37
+ Requires-Dist: open3d-python; extra == 'all'
38
+ Requires-Dist: pytesseract; extra == 'all'
39
+ Requires-Dist: rosbags; extra == 'all'
40
+ Requires-Dist: roslibpy; extra == 'all'
41
+ Requires-Dist: torch; extra == 'all'
42
+ Requires-Dist: websockets; extra == 'all'
31
43
  Provides-Extra: dev
32
44
  Requires-Dist: coverage; extra == 'dev'
33
- Requires-Dist: flake8; extra == 'dev'
45
+ Requires-Dist: nbmake; extra == 'dev'
34
46
  Requires-Dist: pytest; extra == 'dev'
47
+ Requires-Dist: ruff; extra == 'dev'
35
48
  Provides-Extra: docs
36
- Requires-Dist: recommonmark; extra == 'docs'
49
+ Requires-Dist: pydata-sphinx-theme; extra == 'docs'
37
50
  Requires-Dist: sphinx; extra == 'docs'
38
51
  Requires-Dist: sphinx-autorun; extra == 'docs'
52
+ Requires-Dist: sphinx-codeautolink; extra == 'docs'
53
+ Requires-Dist: sphinx-copybutton; extra == 'docs'
54
+ Requires-Dist: sphinx-design; extra == 'docs'
39
55
  Requires-Dist: sphinx-favicon; extra == 'docs'
40
- Requires-Dist: sphinx-markdown-tables; extra == 'docs'
41
- Requires-Dist: sphinx-rtd-theme; extra == 'docs'
42
- Requires-Dist: sphinxcontrib-jsmath; extra == 'docs'
56
+ Requires-Dist: sphinxcontrib-programoutput; extra == 'docs'
43
57
  Provides-Extra: jupyter
44
58
  Requires-Dist: ipympl; extra == 'jupyter'
45
59
  Requires-Dist: ipywidgets; extra == 'jupyter'
60
+ Provides-Extra: ocr
61
+ Requires-Dist: pytesseract; extra == 'ocr'
46
62
  Provides-Extra: open3d
47
63
  Requires-Dist: open3d-python; extra == 'open3d'
64
+ Provides-Extra: ros
65
+ Requires-Dist: rosbags; extra == 'ros'
66
+ Requires-Dist: roslibpy; extra == 'ros'
67
+ Requires-Dist: websockets; extra == 'ros'
68
+ Provides-Extra: torch
69
+ Requires-Dist: torch; extra == 'torch'
48
70
  Description-Content-Type: text/markdown
49
71
 
50
72
  # Machine Vision Toolbox for Python
51
73
 
74
+ <div align="center">
75
+ <img src="https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/VisionToolboxLogo_NoBackgnd@2x.png" width="350">
76
+ <br>
77
+ <strong>A high-productivity framework for computer vision research and education.</strong>
78
+ <br><br>
79
+
80
+ [![JupyterLite](https://img.shields.io/badge/Try_it_Now-JupyterLite-orange?style=for-the-badge&logo=jupyter)](https://petercorke.github.io/machinevision-toolbox-python/lite/lab?path=index.ipynb)
81
+ [![PyPI version](https://img.shields.io/pypi/v/machinevision-toolbox-python?style=for-the-badge&color=blue)](https://pypi.org/project/machinevision-toolbox-python/)
82
+ [![Documentation](https://img.shields.io/badge/Docs-View_Online-blue?style=for-the-badge)](https://petercorke.github.io/machinevision-toolbox-python/)
83
+
84
+ <p>
85
+ <a href="https://github.com/petercorke/machinevision-toolbox-python">GitHub</a> •
86
+ <a href="https://github.com/petercorke/machinevision-toolbox-python/wiki">Wiki</a> •
87
+ <a href="https://github.com/petercorke/machinevision-toolbox-python/blob/main/CHANGELOG.md">Changelog</a> •
88
+ <a href="#installation">Installation</a>
89
+ </p>
90
+ </div>
91
+
92
+ ---
93
+
94
+ ### Status & Ecosystem
52
95
  [![A Python Robotics Package](https://raw.githubusercontent.com/petercorke/robotics-toolbox-python/master/.github/svg/py_collection.min.svg)](https://github.com/petercorke/robotics-toolbox-python)
53
- [![Powered by Spatial Maths](https://raw.githubusercontent.com/petercorke/spatialmath-python/master/.github/svg/sm_powered.min.svg)](https://github.com/petercorke/spatialmath-python)
54
96
  [![QUT Centre for Robotics Open Source](https://github.com/qcr/qcr.github.io/raw/master/misc/badge.svg)](https://qcr.github.io)
55
-
56
- [![PyPI version](https://badge.fury.io/py/machinevision-toolbox-python.svg)](https://badge.fury.io/py/machinevision-toolbox-python)
97
+ [![Build Status](https://github.com/petercorke/machinevision-toolbox-python/actions/workflows/ci.yml/badge.svg)](https://github.com/petercorke/machinevision-toolbox-python/actions/workflows/ci.yml)
98
+ [![Coverage](https://codecov.io/gh/petercorke/machinevision-toolbox-python/branch/main/graph/badge.svg)](https://codecov.io/gh/petercorke/machinevision-toolbox-python)
57
99
  ![Python Version](https://img.shields.io/pypi/pyversions/machinevision-toolbox-python.svg)
58
- [![Powered by OpenCV](https://raw.githubusercontent.com/petercorke/machinevision-toolbox-python/master/.github/svg/opencv_powered.svg)](https://opencv.org)
59
- [![Powered by Open3D](https://raw.githubusercontent.com/petercorke/machinevision-toolbox-python/master/.github/svg/open3d_powered.svg)](https://open3d.org)
60
100
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
61
-
62
- [![Build Status](https://github.com/petercorke/machinevision-toolbox-python/actions/workflows/main.yml/badge.svg)](https://github.com/petercorke/machinevision-toolbox-python/actions?query=workflow%3Abuild)
63
- [![Coverage](https://codecov.io/gh/petercorke/machinevision-toolbox-python/branch/master/graph/badge.svg)](https://codecov.io/gh/petercorke/machinevision-toolbox-python)
64
101
  [![PyPI - Downloads](https://img.shields.io/pypi/dw/machinevision-toolbox-python)](https://pypistats.org/packages/machinevision-toolbox-python)
65
102
 
66
- <!-- [![GitHub stars](https://img.shields.io/github/stars/petercorke/machinevision-toolbox-python.svg?style=social&label=Star)](https://GitHub.com/petercorke/machinevision-toolbox-python/stargazers/) -->
67
-
68
- <table style="border:0px">
69
- <tr style="border:0px">
70
- <td style="border:0px">
71
- <img src="https://github.com/petercorke/machinevision-toolbox-python/raw/master/figs/VisionToolboxLogo_NoBackgnd@2x.png" width="200"></td>
72
- <td style="border:0px">
73
-
74
- <li><a href="https://github.com/petercorke/machinevision-toolbox-python">GitHub repository </a></li>
75
- <li><a href="https://petercorke.github.io/machinevision-toolbox-python/">Documentation</a></li>
76
- <li><a href="https://github.com/petercorke/machinevision-toolbox-python/wiki">Wiki (examples and details)</a></li>
77
- <li><a href="installation#">Installation</a></li>
78
- <li><a href="https://github.com/petercorke/machinevision-toolbox-python/blob/master/CHANGELOG.md">Changelog</a></li>
79
- </ul>
80
- </td>
81
- </tr>
82
- </table>
83
- <p style="font-size:80%">A Python implementation of the <a href="https://github.com/petercorke/machinevision-toolbox-matlab">Machine Vision Toolbox for MATLAB<sup>&reg;</sup></a></p>
103
+ ### Powered by
104
+ [![Powered by Spatial Maths](https://raw.githubusercontent.com/petercorke/spatialmath-python/master/.github/svg/sm_powered.min.svg)](https://github.com/petercorke/spatialmath-python)
105
+ [![Powered by NumPy](https://img.shields.io/badge/powered_by-NumPy-013243?logo=numpy&logoColor=white)](https://numpy.org)
106
+ [![Powered by OpenCV](https://raw.githubusercontent.com/petercorke/machinevision-toolbox-python/main/.github/svg/opencv_powered.svg)](https://opencv.org)
107
+ [![Powered by Open3D](https://raw.githubusercontent.com/petercorke/machinevision-toolbox-python/main/.github/svg/open3d_powered.svg)](https://open3d.org)
84
108
 
85
109
  ## Synopsis
86
110
 
87
- The Machine Vision Toolbox for Python (MVTB-P) provides many functions that are useful in machine vision and vision-based control. The main components are:
111
+ A unified, object-oriented Python API that bridges the gap between raw pixels and high-level spatial reasoning by harmonizing a 'best-of-breed' foundation of NumPy, OpenCV, and Open3D. It bridges the gap between raw pixel manipulation and high-level spatial reasoning and robotics.
112
+
113
+ ### 🚀 Key components
114
+
115
+ * The _power_ object: `Image` is a single class wrapping 200+ methods. It handles everything from monadic/dyadic ops and edge detection to advanced feature extraction (blobs, lines, and point features) with full operator overloading.
116
+
117
+ * Advanced Camera Modeling: Comprehensive support for Central (perspective), Fisheye, Catadioptric, and Spherical camera geometries.
118
+
119
+ * Spatial AI Integration: Native compatibility with the Spatial Math Toolbox and seamless "play" with PyTorch and ROS.
120
+
121
+ * High-Level 3D Vision: Sophisticated wrappers for Open3D, including multiview geometry, camera calibration, stereo vision, and bundle adjustment.
88
122
 
89
- - An `Image` object with nearly 200 methods and properties that wrap functions
90
- from OpenCV, NumPy and SciPy. Methods support monadic, dyadic, filtering, edge detection,
91
- mathematical morphology and feature extraction (blobs, lines and point/corner features), as well as operator overloading. Images are stored as encapsulated [NumPy](https://numpy.org) arrays
92
- along with image metadata.
93
- - An object-oriented wrapper of Open3D functions that supports a subset of operations, but allows operator overloading and is compatible with the [Spatial Math Toolbox](https://github.com/petercorke/spatialmath-python).
94
- - A collection of camera projection classes for central (normal perspective), fisheye, catadioptric and spherical cameras.
95
- - Some advanced algorithms such as:
96
- - multiview geometry: camera calibration, stereo vision, bundle adjustment
97
- - bag of words
123
+ ### 🛠 Why MVTB?
98
124
 
99
- Advantages of this Python Toolbox are that:
125
+ * Expressive Method Chaining: Build complex pipelines in a single, readable line:
126
+ `Image.Read("monalisa.png").convolve(Kernel.Gauss(4)).disp()`
100
127
 
101
- - it uses, as much as possible, [OpenCV](https://opencv.org) and [NumPy](https://numpy.org) which are portable, efficient, comprehensive and mature collection of functions for image processing and feature extraction;
102
- - it wraps the OpenCV functions in a consistent way, hiding some of the gnarly details of OpenCV like conversion to/from float32 and the BGR color order.
103
- - it is has similarity to the Machine Vision Toolbox for MATLAB.
128
+ * "Sanity-Preserving" OpenCV Wrappers: We handle the "gnarly" bits of OpenCV for you—automatically managing BGR-to-RGB conversions and float32 scaling so you can focus on the vision, not the boilerplate.
104
129
 
105
- # Getting going
130
+ * NumPy-Native: Every image is an encapsulated NumPy array, meaning you have zero-overhead access to the entire Python scientific stack.
106
131
 
107
- ## Using pip
132
+ * 2026 Ready: Optimized for modern workflows, including JupyterLite for zero-install browser demos and VS Code integration.
133
+
134
+
135
+ # Quick start
108
136
 
109
137
  Install a snapshot from PyPI
110
138
 
@@ -112,15 +140,9 @@ Install a snapshot from PyPI
112
140
  % pip install machinevision-toolbox-python
113
141
  ```
114
142
 
115
- ## From GitHub
116
-
117
- Install the current code base from GitHub and pip install a link to that cloned copy
143
+ Install locally with help from the [detailed installation guide](https://petercorke.github.io/machinevision-toolbox-python/installation.html#installing-the-toolbox).
118
144
 
119
- ```
120
- % git clone https://github.com/petercorke/machinevision-toolbox-python.git
121
- % cd machinevision-toolbox-python
122
- % pip install -e .
123
- ```
145
+ Or skip setup and run the [browser-based JupyterLite examples](https://petercorke.github.io/machinevision-toolbox-python/lite/lab/index.html?path=files/index.ipynb).
124
146
 
125
147
  # Examples
126
148
 
@@ -132,7 +154,7 @@ mona = Image.Read("monalisa.png")
132
154
  mona.disp()
133
155
  ```
134
156
 
135
- ![Mona Lisa image](https://github.com/petercorke/machinevision-toolbox-python/raw/master/figs/mona.png)
157
+ ![Mona Lisa image](https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/mona.png)
136
158
 
137
159
  Images can also be returned by iterators that operate over folders, zip files, local cameras, web cameras and video files.
138
160
 
@@ -144,7 +166,7 @@ The toolbox supports many operations on images such as 2D filtering, edge detect
144
166
  mona.smooth(sigma=5).disp()
145
167
  ```
146
168
 
147
- ![Mona Lisa image with smoothing](https://github.com/petercorke/machinevision-toolbox-python/raw/master/figs/mona_smooth.png)
169
+ ![Mona Lisa image with smoothing](https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/mona_smooth.png)
148
170
 
149
171
  There are also many functions that operate on pairs of image. All the arithmetic operators are overloaded, and there are methods to combine images in more complex ways. Multiple images can be stacked horizontal, vertically or tiled in a 2D grid. For example, we could display the original and smoothed images side by side
150
172
 
@@ -155,7 +177,7 @@ Image.Hstack([mona, mona.smooth(sigma=5)]).disp()
155
177
  where `Hstack` is a class method that creates a new image by stacking the
156
178
  images from its argument, an image sequence, horizontally.
157
179
 
158
- ![Mona Lisa image with smoothing](https://github.com/petercorke/machinevision-toolbox-python/raw/master/figs/mona+smooth.png)
180
+ ![Mona Lisa image with smoothing](https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/mona+smooth.png)
159
181
 
160
182
  ### Binary blobs
161
183
 
@@ -183,7 +205,7 @@ blobs.plot_centroid(label=True) # put a circle+cross on the centroid of each bl
183
205
  plt.show(block=True) # display the result
184
206
  ```
185
207
 
186
- ![Binary image showing bounding boxes and centroids](https://github.com/petercorke/machinevision-toolbox-python/raw/master/figs/shark2+boxes.png)
208
+ ![Binary image showing bounding boxes and centroids](https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/shark2+boxes.png)
187
209
 
188
210
  #### Binary blob hierarchy
189
211
 
@@ -194,7 +216,7 @@ im = Image.Read("multiblobs.png")
194
216
  im.disp()
195
217
  ```
196
218
 
197
- ![Binary image with nested blobs](https://github.com/petercorke/machinevision-toolbox-python/raw/master/figs/multi.png)
219
+ ![Binary image with nested blobs](https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/multi.png)
198
220
 
199
221
  and we see that some blobs are contained within other blobs. The results in tabular form
200
222
 
@@ -225,7 +247,7 @@ labels = blobs.label_image()
225
247
  labels.disp(colormap="viridis", ncolors=len(blobs), colorbar=dict(shrink=0.8, aspect=20*0.8))
226
248
  ```
227
249
 
228
- ![False color label image](https://github.com/petercorke/machinevision-toolbox-python/raw/master/figs/multi_labelled.png)
250
+ ![False color label image](https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/multi_labelled.png)
229
251
 
230
252
  We can also think of the blobs forming a hiearchy and that relationship is reflected in the `parent` and `children` attributes of the blobs.
231
253
  We can also express it as a directed graph
@@ -234,7 +256,7 @@ We can also express it as a directed graph
234
256
  blobs.dotfile(show=True)
235
257
  ```
236
258
 
237
- ![Blob hierarchy as a graph](https://github.com/petercorke/machinevision-toolbox-python/raw/master/figs/blobs_graph.png)
259
+ ![Blob hierarchy as a graph](https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/blobs_graph.png)
238
260
 
239
261
  ### Camera modelling
240
262
 
@@ -289,7 +311,7 @@ X, Y, Z = mkcube(0.2, pose=SE3(0, 0, 1), edge=True)
289
311
  cam.plot_wireframe(X, Y, Z)
290
312
  ```
291
313
 
292
- ![Perspective camera view of cube](https://github.com/petercorke/machinevision-toolbox-python/raw/master/figs/cube.png)
314
+ ![Perspective camera view of cube](https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/cube.png)
293
315
 
294
316
  <!---or with a fisheye camera
295
317
 
@@ -301,7 +323,7 @@ cam.plot_wireframe(X, Y, Z)
301
323
  >> [X,Y,Z] = mkcube(0.2, 'centre', [0.2, 0, 0.3], 'edge');
302
324
  >> cam.mesh(X, Y, Z);
303
325
  ```
304
- ![Fisheye lens camera view](figs/cube_fisheye.png)
326
+ ![Fisheye lens camera view](docs/figs/cube_fisheye.png)
305
327
 
306
328
 
307
329
  ### Bundle adjustment
@@ -316,7 +338,7 @@ plot_chromaticity_diagram("xy");
316
338
  plot_spectral_locus("xy")
317
339
  ```
318
340
 
319
- ![CIE chromaticity space](https://github.com/petercorke/machinevision-toolbox-python/raw/master/figs/colorspace.png)
341
+ ![CIE chromaticity space](https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/colorspace.png)
320
342
 
321
343
  Load the spectrum of sunlight at the Earth's surface and compute the CIE xy chromaticity coordinates
322
344
 
@@ -343,7 +365,7 @@ im.disp(darken=True)
343
365
  h.plot_lines(lines, "r--")
344
366
  ```
345
367
 
346
- ![Hough transform](https://github.com/petercorke/machinevision-toolbox-python/raw/master/figs/hough.png)
368
+ ![Hough transform](https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/hough.png)
347
369
 
348
370
  ### SURF features
349
371
 
@@ -383,7 +405,7 @@ matches.subset(100).plot("w")
383
405
 
384
406
  in this case, a subset of 100/813 of the correspondences.
385
407
 
386
- ![Feature matching](https://github.com/petercorke/machinevision-toolbox-python/raw/master/figs/matching.png)
408
+ ![Feature matching](https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/matching.png)
387
409
 
388
410
  Clearly there are some bad matches here, but we we can use RANSAC and the epipolar constraint implied by the fundamental matrix to estimate the fundamental matrix and classify correspondences as inliers or outliers
389
411
 
@@ -403,7 +425,13 @@ matches.outliers.subset(100).plot("r", ax=plt.gca())
403
425
 
404
426
  where green lines show correct correspondences (inliers) and red lines show bad correspondences (outliers)
405
427
 
406
- ![Feature matching after RANSAC](https://github.com/petercorke/machinevision-toolbox-python/raw/master/figs/matching_ransac.png)
428
+ ![Feature matching after RANSAC](https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/matching_ransac.png)
429
+
430
+ # Ecosystem
431
+
432
+ The Toolbox plays nicely with other parts of the robotics and machinevision ecosystem.
433
+
434
+ ![Feature matching after RANSAC](https://github.com/petercorke/machinevision-toolbox-python/raw/main/docs/figs/package-connections.svg)
407
435
 
408
436
  # History
409
437
 
@@ -422,6 +450,8 @@ image metadata, rather than just a native object holding pixel data. The many
422
450
  functions become methods of the image object which reduces namespace pollutions,
423
451
  and allows the easy expression of sequential operations using "dot chaining".
424
452
 
425
- The first version was created by Dorian Tsai during 2020, and based on the
453
+ # Acknowledgement
454
+
455
+ The first version was built by Dorian Tsai during 2020-21, and based on the
426
456
  MATLAB version. That work was funded by an Australian University Teacher of
427
457
  the year award (2017) to Peter Corke.
@@ -0,0 +1,68 @@
1
+ machinevisiontoolbox/BagOfWords.py,sha256=CYNvYkVhE_aDijV7v3gIxXHkN60QD3MNu9-Xh97q5Y4,19036
2
+ machinevisiontoolbox/BundleAdjust.py,sha256=RsrVRlTxlS4ycgs810pnXnP7ZbOf89O8H4MKGB_Ua3o,37064
3
+ machinevisiontoolbox/Camera.py,sha256=PPsm0f1jEsnJsblaXQHgEBrIzsN8i63vdPXoh-Sdm_w,139131
4
+ machinevisiontoolbox/ImageBlobs.py,sha256=vzz-dMJmJTpFSpBBe3kXVLZTmB5jn6pe3fepwJG-FIs,89071
5
+ machinevisiontoolbox/ImageColor.py,sha256=fueFYDNlvqSJPgcKsG5v2wBxaW7mYNa6OA-_rK-UJK0,17577
6
+ machinevisiontoolbox/ImageConstants.py,sha256=R0sc9z8sbraruI6qkixLso6fTgxUAC5cQMSw4ms9m2k,38774
7
+ machinevisiontoolbox/ImageCore.docstring,sha256=o--QfvUsp1_tRlD31jvX01rsPZ7qp8fvLogtF9IcmHc,88029
8
+ machinevisiontoolbox/ImageCore.py,sha256=Als1G5Cd2Z6e1xIThff1yqyDaX6KcLQY1MUYZpP7UJk,140497
9
+ machinevisiontoolbox/ImageFiducials.py,sha256=0CXDgRVY8cA8sIsqd9liPLDRBFRXkolxZwu8rj8TxsM,24124
10
+ machinevisiontoolbox/ImageIO.py,sha256=cHdezZyoXzWRRM_1w-1K19cS6TLB9dJ_sd61x57E_PQ,26889
11
+ machinevisiontoolbox/ImageLineFeatures.py,sha256=5D4MfbNTaRSErdD-HIVlxG9RrtfPAO7WpG4FhESJb4w,10338
12
+ machinevisiontoolbox/ImageMorph.py,sha256=WioUD2Jr9Ejnk7Let4Vf3iTFz5DhMkZ7l_ZBCbvgl4U,30237
13
+ machinevisiontoolbox/ImageMultiview.py,sha256=swzNsxX39dijPdPa-a4LFOl7T7liTcQeP7NJf5ODGQU,15605
14
+ machinevisiontoolbox/ImagePointFeatures.py,sha256=hc3DrIzvy7cRDW6zmOpdMUb8Ut-mWJoPH4oBOvFsxSg,77109
15
+ machinevisiontoolbox/ImageProcessing.py,sha256=70yql1K_wYOSymIINaYgAhd9QBt5y_NIomq2mb6S3Bg,51659
16
+ machinevisiontoolbox/ImageRegionFeatures.py,sha256=-UOYYv0p2EkNcsF8BK4ZYnh41gUlTSdR-I2v-sH4wT4,14908
17
+ machinevisiontoolbox/ImageReshape.py,sha256=F8eNrJ1to6d5jrIJeT1D2RqX-7EnARrQ03UGUCvljXg,50204
18
+ machinevisiontoolbox/ImageSpatial.py,sha256=nzgScDprv7UQXhKcOps80gKjx4Ve6y498lCRm21sEtw,55622
19
+ machinevisiontoolbox/ImageTensor.py,sha256=ohNbThdsQid2AQbDIHaCoxj00tpRggFWv0TTpIHAJQk,9006
20
+ machinevisiontoolbox/ImageWholeFeatures.py,sha256=Fsv92YImQM4mmxtHC-0zdS4w8FjQ0L4ERuhXH96z6D4,61161
21
+ machinevisiontoolbox/Kernel.py,sha256=VWobkVDlgMvQDo1eoC0fSLxAn2SGu2pQG13QaUIrRNE,21501
22
+ machinevisiontoolbox/PointCloud.py,sha256=FJP-gFmd16ePFfBQ2Y-Tdu6SSw_HyEhtDjNeLyknJFY,25239
23
+ machinevisiontoolbox/Sources.py,sha256=x3fB2bw3BgeUqadhSkFN4JUgeU9PNXzHuehsTZmciTk,152703
24
+ machinevisiontoolbox/VisualServo.py,sha256=2q_szKZo51McduLUMnN8-O6foLyLAR-o0h10-UDWKPY,60947
25
+ machinevisiontoolbox/__init__.py,sha256=V-oUeFjcanyZxbLF5F-HbEOjnd2kJyyrtgDIR9lPgiw,3831
26
+ machinevisiontoolbox/_image_typing.py,sha256=FjdzZpuxEH9nBrj8gb-tkwUZDjpCNH92sQS3meemCVE,7286
27
+ machinevisiontoolbox/aruco0.pdf,sha256=a_JZT-TfVv7tQNOvlHSZPf9QCNiOScm_q30jMF8T2ME,75233
28
+ machinevisiontoolbox/aruco50.pdf,sha256=wUwqNaDmZ5EFNl1GNF_O3YRztWOZBhTq7DdMdMTskQw,77285
29
+ machinevisiontoolbox/camera_derivatives.py,sha256=ysaP8PvgeBpFf8e37AmYQTW28SiFBK4fCl9LGONgVQg,39513
30
+ machinevisiontoolbox/cvfuncs.py,sha256=Pf4sxB0VvxHT2UqfpY2G9cs75aaqHp0UQZEzSJs94FI,1307
31
+ machinevisiontoolbox/decorators.py,sha256=6wEoLFozK2RFcGb9QrLy2bAw4sjkbm_2q3PpnIS9Rtk,2623
32
+ machinevisiontoolbox/docbugs.py,sha256=HEJvRPOlXgyY5_UyxQXHCVVmJ7UO7SgMV0tpoUSFQbE,1344
33
+ machinevisiontoolbox/fiducial.py,sha256=syC7iIz95nYBTr_njo4ZzLXOyAdAIqoAZq_wRVhyUHQ,1374
34
+ machinevisiontoolbox/mvtb_types.py,sha256=YD2P9mDXhz75GgC7Cyeer8luBpSHckkrLZ0GDVvGOnE,728
35
+ machinevisiontoolbox/newcameras.py,sha256=WQ3w8NawL7vcRexJwjRkBouHQpvdisXf1LgCL3zD3cM,1243
36
+ machinevisiontoolbox/test_skimage.py,sha256=2nIdV5MK3gnz-BA33d2H0vAt-aK3wwb-C35jAYaz5Z8,320
37
+ machinevisiontoolbox/testblobplots.py,sha256=DwX2hc5PEeG7l9oUhC8or8mUdeDENX6mYlDUN3e1HRw,465
38
+ machinevisiontoolbox/x.json,sha256=bEpuzzQtJYf96nvjZkjxthWVzm0PKI5ZU6uiNuxWnMs,4643
39
+ machinevisiontoolbox/base/__init__.py,sha256=DxtRJJF6vnY2S1n33xJmXTBf504RCkctmoyKwBW4pc4,1645
40
+ machinevisiontoolbox/base/color.py,sha256=F1eBcjyQPFV1uiTkeOe6UtBf_2V4s5wkQH-0egh7Ru0,58432
41
+ machinevisiontoolbox/base/data.py,sha256=PF1HyrYQ-EDR-0heHMG1oDxs63AtQshNWbUvN8GOKsY,6130
42
+ machinevisiontoolbox/base/findpeaks.py,sha256=Ag0UIw2CPVioB356Pvj-_k_wjxMODGpsW7qdkt6UvEs,11251
43
+ machinevisiontoolbox/base/graphics.py,sha256=R8hbf_jK3mvq_dEoATxkjcbxUJvoSMovNbrk3W4BQe8,36974
44
+ machinevisiontoolbox/base/imageio.py,sha256=d6ytMGVPfC1D4Dpj-K4pVEdd_afs4vmjQ0j2_y0_kbg,51986
45
+ machinevisiontoolbox/base/meshgrid.py,sha256=Bo2GIlk0tRT2CV5sP5I9i-mZy-6c3BPozLOuOiEVHT0,3162
46
+ machinevisiontoolbox/base/shapes.py,sha256=d-DmB_9iEsHyC6AT6lv2LMHvb-PMqHTXtehqMKk3aRQ,11430
47
+ machinevisiontoolbox/base/types.py,sha256=AEiyEsmX5ljifC_PldaOcJnZRDyUSF3kwRbAihNDslQ,5055
48
+ machinevisiontoolbox/base/version.py,sha256=uSKKfk9fOu5XF_21Kzfh3N111U-39mobNwiRyelOqcU,976
49
+ machinevisiontoolbox/bin/_bintools.py,sha256=WwzyOqXEv4T-TB2GMBym4pGU2NACM5ACDCg7exGRl0I,1918
50
+ machinevisiontoolbox/bin/bagtool.py,sha256=jY7_kQpy904JiYcVGxuvV2ves-jCeqHTDOVOB51rp6w,9039
51
+ machinevisiontoolbox/bin/imtool.py,sha256=BAteBohTcM7C_kpHQ73Bpx41vPhrKphMonFvY_iXi4k,6870
52
+ machinevisiontoolbox/bin/labeltool.py,sha256=npt-SzyJfUpQObmj6u7hHRymV9CZwDkHdQubQyFkMTk,4267
53
+ machinevisiontoolbox/bin/mvtbtool.py,sha256=tPfEPLOZ451fOifGvFyRE2RAkjm-4-0wYvWIgWoBs9o,11089
54
+ machinevisiontoolbox/bin/ocrtool.py,sha256=HtkbLnjij40oy83nBtZlbJSFJ2pn7lcQAmOifvCLw0I,4719
55
+ machinevisiontoolbox/bin/tagtool.py,sha256=io-NCIMdMc5zIFYMa6U2ITTv2T-Q8Y0bwh_pB1qZ4IQ,8523
56
+ machinevisiontoolbox/blocks/__init__.py,sha256=EsdfK2WxYLSo0SA5HSmlgsivLT1kDnoH9v-RTBDnWwc,142
57
+ machinevisiontoolbox/blocks/camera.py,sha256=v0kLMa97bTcLkNtq8c-oGFH7DWqRbp8HTtA0X8wI13g,8627
58
+ machinevisiontoolbox/blocks/test_blocks.py,sha256=dsJiK3BwvNRvzK95bUbPhgbZdoWZhVWQD-yHD-YZRMw,1767
59
+ machinevisiontoolbox/blocks/Icons/camera.png,sha256=CGcTB_llMoucN-rfnP6ZP_7AfE_92z6JnCdam-hDLgs,1642
60
+ machinevisiontoolbox/blocks/Icons/estpose_p.png,sha256=1XrwL4OkotGWMwKmhnar3tt8cQWUdZiO7PxXD354T-E,4320
61
+ machinevisiontoolbox/blocks/Icons/icons.sh,sha256=teezrmF3es8c3-MvwG1lDCt9SKWEqA0eVHOKFeBugig,115
62
+ machinevisiontoolbox/blocks/Icons/imageplane.png,sha256=34FYQMzkq6foxvRU8pn0KkcHxpHRvsJRJSYKfNu13Eg,3902
63
+ machinevisiontoolbox/blocks/Icons/visjac_p.png,sha256=8X023l-C9Y5DfAN8wCdWYjSjq6wp1vRzuZ85sUbwxv8,3819
64
+ machinevision_toolbox_python-2.0.1.dist-info/METADATA,sha256=ZIkYeTli9nrYhokYJUq_fdD8BpWZF8SwTEej-H8gZgg,21125
65
+ machinevision_toolbox_python-2.0.1.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
66
+ machinevision_toolbox_python-2.0.1.dist-info/entry_points.txt,sha256=R0sRa7JufKCG1VPkgo5KcL7j7pW4-E0Ch2Og4AqmXg4,310
67
+ machinevision_toolbox_python-2.0.1.dist-info/licenses/LICENSE,sha256=niCzY_CzbIMKuUZlUkGimjrKp0vkLAtcwFmoSuSKrdw,1068
68
+ machinevision_toolbox_python-2.0.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.28.0
2
+ Generator: hatchling 1.29.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,4 +1,7 @@
1
1
  [console_scripts]
2
+ bagtool = machinevisiontoolbox.bin.bagtool:main
2
3
  imtool = machinevisiontoolbox.bin.imtool:main
4
+ labeltool = machinevisiontoolbox.bin.labeltool:main
3
5
  mvtbtool = machinevisiontoolbox.bin.mvtbtool:main
6
+ ocrtool = machinevisiontoolbox.bin.ocrtool:main
4
7
  tagtool = machinevisiontoolbox.bin.tagtool:main