Blame

282d05 Matt Hughes 2026-10-11 19:23:05
1
## Fringe Removal
2
3
Depth cameras produce 'flying pixels' along the edges of subjects, where depth readings blend the foreground with the background behind it. The Fringe Removal operator cleans up these fringes. It renders the cloud from a virtual camera, detects edges in the resulting image, and drops the points that lie along them.
4
5
Two edge detectors are available. Occluding edges are found from depth discontinuities using PCL's organized edge detection, and Canny edges are found from the colour image using OpenCV. The combined mask is smoothed before being applied to the cloud.
6
*[PCL]: Point Cloud Library
7
8
### Operator Properties
9
- **Camera**: the virtual viewpoint the cloud is rendered from for edge detection. This should roughly match the physical camera.
10
- **Depth Threshold**: the depth jump required to mark an occluding edge.
11
- **Max Search Neighbors**: how far the edge detector searches for a valid neighbouring depth.
12
- **Canny Low / Canny High**: hysteresis thresholds for colour edge detection.
13
- **Remove Occluding Fringe**: drop points along occluding edges, eroded outward by **Occluding Erosion**.
14
- **Remove Canny Fringe**: drop points near colour edges, within **Canny Proximity** and eroded by **Canny Erosion**.
15
- **Morph Close Radius**, **Blur Radius**, **Blur Threshold**: smooth the drop mask to fill gaps and soften its outline.
16
- **Removal Depth Range**: when above zero, only points within this depth of the nearest point behind a masked pixel are removed, so subjects further back are kept. At zero, every point behind a masked pixel is removed.
17
- **Backend**: run the operator on the CPU or with CUDA.
18
19
---
20
21
::: buttonlink
22
[View operator source](https://github.com/matth-av/pointcaster/blob/qt/src/plugins/operators/fringe_removal/fringe_removal_operator.cc)
23
:::