-
Notifications
You must be signed in to change notification settings - Fork 0
Set Classification
The Set Classification module in DSEpy partitions the 3D point cloud into individual Discontinuity Sets (DS) based on the angular proximity between each point's surface normal vector ni and the mean normal vectors of the identified principal poles (p1, p2, ..., pK).
For every point i in the point cloud with unit normal vector ni = (Nx, Ny, Nz), DSEpy evaluates the acute 3D angle θi,k ∈ [0°, 90°] against each principal set pole pk (k = 1, 2, ..., K):
Where:
- ni · pk represents the dot product between the point normal vector ni and the k-th set mean pole vector pk.
- Absolute value |·| accounts for normal vector orientation invariance in planar geometry.
A point i is assigned to the principal pole set k* that minimizes the angular distance, provided the minimum angle does not exceed the user-defined maximum angular tolerance threshold (θthreshold):
- Assigned Point (k ∈ {1, 2, ..., K}): The point belongs to Discontinuity Set Jk.
-
Unclassified Point (k = 0): If θi,k > θthreshold for all principal poles, the point exceeds the maximum allowable orientation dispersion. It is flagged as unclassified background noise and assigned the scalar value
0.
DSEpy attaches the classification results directly to the active point cloud in CloudCompare (CC) as a new integer Scalar Field (SF) named DS_family (or Discontinuity_Set):
This integration allows real-time visual assessment of family boundaries both in stereographic space and on the 3D outcrop surface.
Classification is executed within the 2. DS classification tab.
*DSEpy Stage 2 Interface: Set classification parameters and point cloud family distribution summary.*
-
Set Angular Threshold (θthreshold):
- Adjust the maximum allowed angle (θthreshold, typically between 15° and 30°).
- A smaller angle produces tighter, highly specific set clusters but leaves more points as unclassified (
0). A larger angle includes more points but risks assigning noisy or transitional surfaces.
-
Execute Classification:
- Click Classify Point Cloud. DSEpy computes the angular distances for all points and transfers the resulting scalar field directly to CloudCompare.
-
Inspect Set Distribution Summary:
- Review the classification summary table in DSEpy showing the percentage and total count of points assigned to each discontinuity set (J1, J2, ..., JK) as well as unclassified points (
0).
- Review the classification summary table in DSEpy showing the percentage and total count of points assigned to each discontinuity set (J1, J2, ..., JK) as well as unclassified points (
In addition to 3D cloud rendering, DSEpy provides a dedicated Poles by Family stereogram plot. This visual diagnostic tool renders all point cloud poles color-coded according to their assigned discontinuity set family:
*Stereogram plot showing point cloud poles color-coded by assigned discontinuity family (J1, J2, J3) with unclassified points in grey and mean principal poles marked in yellow.*
- Cluster Dispersion Verification: Allows immediate evaluation of orientation spread for each joint set (e.g., J1 in blue, J2 in orange, J3 in green).
- Unclassified Point Inspection: Unclassified points (k* = 0, grey points) are clearly visible outside the set boundaries or scattered randomly across the grid.
- Overlapping Boundary Identification: Helps detect if the angular threshold (θthreshold) is too large, causing adjacent joint family clusters to touch or overlap.
- Principal Pole Alignment: Mean principal poles are highlighted as yellow labelled markers (J1, J2, J3) at the centroid of each assigned cluster.
Switch to CloudCompare's 3D window and select the active scalar field DS_family to verify family assignments directly on the rock mass geometry.
*3D Point Cloud in CloudCompare color-coded by the newly generated Discontinuity Set scalar field.*
Unclassified points (value 0) represent non-systematic jointing, blast damage, or curved rock surfaces. To isolate classified joint families for downstream analysis or visual presentation:
- In CloudCompare, select the active point cloud in the DBTree.
- Go to Edit
$\rightarrow$ Scalar Fields$\rightarrow$ Filter by Value. - Set parameter ranges:
-
Min:
1(excludes unclassified points with value0). - Max: Set to the highest family index (K).
-
Min:
- Click OK. CloudCompare creates a new child point cloud containing only classified discontinuity sets.
Filtering unclassified points (value 0) in CloudCompare using the Filter by Value tool.
If visual inspection in the Poles by Family stereonet or CloudCompare reveals misassigned joint planes or poorly defined set boundaries:
- Return to DSEpy: Adjust the angular threshold (θthreshold) or switch back to tab 1. Principal poles to refine, add, or delete principal pole orientations.
- Re-run Classification: Click Classify Point Cloud again.
- Automatic Overwriting: DSEpy automatically updates and overwrites the scalar field on the active CloudCompare point cloud without requiring manual deletion of previous results.
| Parameter | Recommended Value | Description |
|---|---|---|
| Angular Threshold (θthreshold) |
15.0° – 30.0°
|
Maximum angular tolerance between a point normal vector ni and the mean set pole vector pk. |
| Scalar Field Name | DS_family |
Name assigned to the newly created scalar field attached to the CloudCompare point cloud entity. |
| Poles Visualisation | Poles by Family |
Stereogram rendering mode where individual poles are color-coded according to assigned discontinuity set ID (J1 ... JK). |
| Color Ramp | Banded / Custom |
Discrete color scheme used to visually differentiate joint sets J1 ... JK. |
- Learn about spatial cluster segmentation and 3D facet extraction in Clustering-&-Facets.
- Return to principal pole extraction in Stereonet-&-Poles.