Fractures from photographs
Mapping traces by hand is accurate and slow. VRGS can also detect them in a photograph and project the result onto the model, which turns an afternoon's digitising into a few minutes of detection plus a clean-up pass.
This page is the route through that pipeline and the decisions in it. Every parameter is documented in the AI Fracture Mapping guide.
What you need
A calibrated photograph — an SfM image with a recovered camera, or a photo registered to the model. The projection step ray-casts each trace vertex through the camera onto the model, so an uncalibrated snapshot cannot be used.
Open it in the Photograph view. Most of the commands below are on the photo's right-click menu; the tuning sliders are in the Polyline Settings property pane.
The pipeline
Photograph ──► detector ──► probability map ──► 2D traces ──► 3D traces ──► orientations
Only the first step differs between the three detectors. Once a probability map exists, everything downstream is identical.
1. Detect
| Detector | Reach for it when |
|---|---|
| Fracture AI | The default. A bundled U-Net (ResNet-34) trained on fracture imagery. Fastest to a usable result, and the right first try on almost any outcrop photo. |
| Ant Colony Optimisation (ACO) | Fractures are discontinuous, low-contrast, or lost in texture — ACO's swarm follows continuity where a per-pixel classifier gives up. See the ACO guide. |
| Phase Congruence | A classical, illumination- and contrast-invariant detector. Useful on strongly shadowed faces, and when you want a result that does not depend on what the network was trained on. |
Fracture AI is the Fracture button on the image-tools ribbon. It produces a per-pixel probability map, shown as a colour overlay, with the detection threshold set to 0.5.
That threshold is the first thing to tune, and you can see its effect live in the colour-map properties pane:
- Lower (0.3–0.45) catches faint or thin fractures, at the cost of speckle.
- Higher (0.55–0.7) keeps only confident detections — cleaner, but faint traces break into fragments.
2. Extract 2D traces
Right-click → Extract Fracture Lines (2D). The probability map is binarized, skeletonised to a one-pixel centre-line, traced as a graph, joined end-to-end and simplified. The result is an editable orange preview on the image.
Nothing has touched the 3D model yet. This is deliberate — extraction is instant and projection is slow, so you are meant to iterate here.
Two problems dominate, and they pull in opposite directions:
| Symptom | Fix |
|---|---|
| One fracture came out as five fragments | Raise Join max gap; loosen Join max orientation to 30–35°. Keep hysteresis on and lower its band to ~50%. |
| Two separate fractures got bridged into one | Lower Join max gap; tighten orientation and kink. |
Joining is non-destructive: change a slider, run Join Fracture Segments again, and it recomputes from the original fragments. Settle the join settings before doing any manual editing, because re-joining discards manual edits.
3. Review before you project
This is the step people skip, and it is the one that decides whether the study is any good. The detector will have found things that are not fractures — bedding, vegetation edges, shadow lines, the join between two photos.
- Segment Rose Diagram (right-click → Show Segment Rose Diagram) shows a length-weighted rose of trace directions. Drag a wedge to keep only traces in one direction band; the length histogram below it drags to drop traces shorter than a minimum. Both filters carry through to the 3D projection.
- The 2D line-edit tools on the image-tools ribbon do the rest: erase a line, join two, split one, move or insert a vertex.
Dragging a wedge is a quick way to isolate one set for projection. It is not where you decide what the sets are — this rose is measured in image space on one photograph, so it carries that photo's viewing geometry with it. Set identification belongs on the stereonet, after projection, in real 3D orientations.
4. Map to 3D
Right-click → Map Fracture Lines to 3D, with a choice of output:
- (Polylines) — 3D trace polylines on the model, in a group named
ACO_<photo>. Choose this if you want traces for intensity mapping, or want to edit them in 3D before deriving orientations. - (Orientations) — the same reprojection, but each trace becomes a single virtual orientation measurement, ready to feed straight into fracture sets and the DFN.
Traces whose vertices mostly miss the model geometry are dropped. This is the slow step — one ray-cast per vertex — so raising the Simplification value speeds it up materially.
The thing to understand about the orientations you get
Every point of a trace lies on the fracture plane, so fitting a plane through the reprojected 3D trace recovers the true fracture orientation — but only where the outcrop has relief along that trace. The relief makes the trace bend out of a straight line, and that is what pins the plane down.
On a flat face the trace is a straight line, which cannot define a unique plane. VRGS falls back to an apparent dip that assumes the fracture is locally perpendicular to the outcrop.
VRGS tells you which you got. Each virtual orientation carries a quality
score (0–1), is coloured red (low) → green (high), and has the score
appended to its label as q=…. The summary reports how many were true versus
apparent.
A wall of red measurements off a flat quarry face is not a fracture population — it is one apparent dip repeated. Either capture the same fractures on a second, non-coplanar face, or weed the low-quality measurements out before fitting set statistics. A Fisher K computed over apparent dips is a confident number about nothing.
Deriving orientations from traces you already have
If you mapped traces by hand, or projected them as polylines, you can derive orientations from them at any point: select the trace group and the outcrop mesh in the tree, then Estimate Orientations from Selected Traces.
The same plane-fit and the same quality scoring apply, and near-straight traces are rejected outright rather than given a misleading orientation. The results land in a group named "Virtual orientations from <mesh>".
See also
- AI Fracture Mapping — every setting, tuning recipes, and the Phase Congruence reference.
- Ant Colony Optimisation — the ACO detector in full.
- Structure from Motion — building the calibrated photographs in the first place.