# Pixel Classification Classify pixels into discrete classes based on height, slope, and/or curvature using threshold or clustering methods. Equivalent to Gwyddion's classify.c module. ## Inputs | Name | Type | Required | Description | |------|------|----------|-------------| | field | DATA_FIELD | Yes | Input surface | ## Outputs | Name | Type | Description | |------|------|-------------| | classified | DATA_FIELD | Integer class labels (0 to n_classes-1) | | mask | IMAGE | Binary mask of the first class (class 0) | ## Controls | Name | Type | Default | Description | |------|------|---------|-------------| | n_classes | INT | 3 | Number of output classes (2–10) | | feature | dropdown | height | Feature used for classification: height, slope, curvature, height_slope, or all | | method | dropdown | otsu | Thresholding method: otsu, equal_range, or quantile | ## Notes - **Feature types**: "height" uses raw data values; "slope" uses gradient magnitude (via `np.gradient`); "curvature" uses the Laplacian (sum of second derivatives). "height_slope" and "all" stack multiple features. - **Threshold methods** (single-feature only): - *otsu*: Multi-Otsu thresholding that finds thresholds minimising intra-class variance. - *equal_range*: Divides the feature value range into equal-width intervals. - *quantile*: Divides by quantiles so each class contains roughly the same number of pixels. - **Multi-feature modes** ("height_slope", "all") ignore the method setting and use k-means clustering instead. Each feature is normalised to [0, 1] before clustering. - The mask output contains class 0 only — use the classified field for access to all class labels.