You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/features/depth_estimation.md
+12-43Lines changed: 12 additions & 43 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
**Category:** Lifting (2D → 3D)
4
4
**Experimental:** No
5
5
6
-
Depth estimation predicts the per-pixel distance from the camera for every pixel in a 2D RGB image, producing a depth map and optionally unprojecting it into a 3D point cloud or surface mesh. vizion3d uses [Depth Anything V2](https://github.com/DepthAnything/Depth-Anything-V2) as its default backend.
6
+
Depth estimation predicts the per-pixel distance from the camera for every pixel in a 2D RGB image, producing a depth map and optionally unprojecting it into a 3D point cloud. vizion3d uses [Depth Anything V2](https://github.com/DepthAnything/Depth-Anything-V2) as its default backend.
7
7
8
8
---
9
9
@@ -40,7 +40,6 @@ Set `VIZION3D_MODEL_CACHE` in your environment to change the default cache direc
40
40
|`model_backend`|`str`| No | vizion3D release checkpoint URL | Model backend identifier. See [Model backends](#model-backends) above. |
41
41
|`return_depth_image`|`bool`| No |`False`| If `True`, the result includes a 16-bit grayscale Open3D Image of the depth map. |
42
42
|`return_point_cloud`|`bool`| No |`False`| If `True`, the result includes an Open3D PointCloud unprojected from the RGB-D image. |
43
-
|`return_mesh`|`bool`| No |`False`| If `True`, the result includes an Open3D TriangleMesh reconstructed from the point cloud via ball-pivoting. |
44
43
|`advanced_config`|`DepthEstimationAdvanceConfig`| No | PrimeSense defaults | Camera intrinsics and depth range settings. See [Advanced config](#10-advanced-config-camera-intrinsics-depth-range) below. |
45
44
46
45
---
@@ -57,7 +56,6 @@ Set `VIZION3D_MODEL_CACHE` in your environment to change the default cache direc
57
56
|`backend_used`|`str`| Yes | Resolved model identifier that processed the request (local file path). |
58
57
|`depth_image`|`open3d.geometry.Image \| None`| When `return_depth_image=True`| 16-bit grayscale image, dtype `uint16`, shape `(H, W)`. The full 0–65535 range maps to `[min_depth, max_depth]`. |
59
58
|`point_cloud`|`open3d.geometry.PointCloud \| None`| When `return_point_cloud=True`| Coloured 3D point cloud unprojected from the RGB-D image using the intrinsics in `advanced_config`. Coordinates are in metres. |
60
-
|`mesh`|`open3d.geometry.TriangleMesh \| None`| When `return_mesh=True`| Triangle mesh surface reconstructed from the point cloud via ball-pivoting. Includes vertex colours. |
61
59
|`point_cloud_scale`|`float`| Yes | Scale factor: multiply any distance measured between two points in the point cloud by this value to get the equivalent distance in metres. Always `1.0` — Open3D produces point cloud coordinates directly in metres. |
@@ -284,15 +254,14 @@ Send a request with `multipart/form-data`:
284
254
```bash
285
255
curl -X POST "http://localhost:8000/lifting/depth-estimation" \
286
256
-F "image=@scene.png" \
287
-
-F "return_point_cloud=true" \
288
-
-F "return_mesh=true"
257
+
-F "return_point_cloud=true"
289
258
```
290
259
291
-
The response is a JSON-serialised `DepthEstimationResult`. Binary fields (`depth_image`, `point_cloud`, `mesh`) are base64-encoded in the JSON response.
260
+
The response is a JSON-serialised `DepthEstimationResult`. Binary fields (`depth_image`, `point_cloud_ply`) are base64-encoded in the JSON response.
292
261
293
262
---
294
263
295
-
## 9. gRPC API
264
+
## 8. gRPC API
296
265
297
266
Start the server:
298
267
@@ -321,7 +290,6 @@ with open("scene.png", "rb") as f:
## 10. Advanced config: camera intrinsics & depth range
303
+
## 9. Advanced config: camera intrinsics & depth range
336
304
337
305
`DepthEstimationAdvanceConfig` lets you supply the actual camera intrinsics and depth range for your sensor, replacing the built-in PrimeSense defaults. This is required for accurate metric 3D geometry when your camera is not a 640×480 PrimeSense sensor.
338
306
@@ -362,8 +330,9 @@ The same config is available in the REST and gRPC entry points. See [Advanced Co
362
330
363
331
---
364
332
333
+
---
334
+
365
335
## Known limitations
366
336
367
337
-**Relative depth only** — the default monocular backend produces relative (inverse) depth, not metric depth. Point cloud distances are internally consistent but not calibrated to real-world scale without a known reference distance.
368
-
-**Ball-pivoting mesh quality** — the mesh reconstructor works best on dense, evenly sampled point clouds. Sparse or noisy clouds may produce gaps or missing faces.
369
-
-**Python 3.12 required for Open3D** — `return_depth_image`, `return_point_cloud`, and `return_mesh` require Open3D, which currently only supports Python 3.12 in this project.
338
+
-**Python 3.12 required for Open3D** — `return_depth_image` and `return_point_cloud` require Open3D, which currently only supports Python 3.12 in this project.
Copy file name to clipboardExpand all lines: docs/features/stereo_depth.md
+6-32Lines changed: 6 additions & 32 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -56,7 +56,6 @@ The S2M2 architecture comes in four size variants. The correct one is detected
56
56
|`model_backend`|`str`| No | vizion3D release checkpoint URL | S2M2 checkpoint. See [Model backends](#model-backends) above. |
57
57
|`return_depth_image`|`bool`| No |`False`| If `True`, the result includes a 16-bit grayscale Open3D Image of the depth map. |
58
58
|`return_point_cloud`|`bool`| No |`False`| If `True`, the result includes an Open3D PointCloud in metres. |
59
-
|`return_mesh`|`bool`| No |`False`| If `True`, the result includes an Open3D TriangleMesh reconstructed via ball-pivoting. |
60
59
|`advanced_config`|`StereoDepthAdvancedConfig`| No | 1280×720 @ 100 mm baseline defaults | Camera intrinsics and inference settings. See [Advanced config](#advanced-config) below. |
61
60
62
61
---
@@ -74,7 +73,6 @@ The S2M2 architecture comes in four size variants. The correct one is detected
74
73
|`backend_used`|`str`| Yes | Resolved local file path of the checkpoint used. |
75
74
|`depth_image`|`open3d.geometry.Image \| None`| When `return_depth_image=True`| 16-bit grayscale image, dtype `uint16`. The full 0–65535 range maps to `[min_depth, max_depth]` in metres. |
76
75
|`point_cloud`|`open3d.geometry.PointCloud \| None`| When `return_point_cloud=True`| Coloured 3D point cloud, coordinates in **metres**. |
77
-
|`mesh`|`open3d.geometry.TriangleMesh \| None`| When `return_mesh=True`| Surface mesh from ball-pivoting. Includes vertex colours. |
-**Rectified pairs required** — images must be stereo-rectified so corresponding points lie on the same horizontal scanline. Un-rectified pairs will produce incorrect results.
424
399
-**Metric scale depends on calibration** — an incorrect `baseline` or `focal_length` scales all depth values uniformly. Always use calibrated values for real applications.
425
-
-**Ball-pivoting mesh quality** — works best on dense, evenly sampled point clouds. Sparse or noisy clouds from occluded regions may produce gaps or missing faces.
426
-
-**Python 3.12 required for Open3D** — `return_depth_image`, `return_point_cloud`, and `return_mesh` require Open3D, which currently only supports Python 3.12 in this project.
400
+
-**Python 3.12 required for Open3D** — `return_depth_image` and `return_point_cloud` require Open3D, which currently only supports Python 3.12 in this project.
0 commit comments