# Mask Noisify Add random noise to a binary mask by flipping pixels near boundaries. Equivalent to Gwyddion's mask_noisify.c. ## Inputs | Name | Type | Required | Description | |------|------|----------|-------------| | mask | IMAGE | Yes | Binary mask to perturb | | field | DATA_FIELD | No | Optional field for preview background display | ## Outputs | Name | Type | Description | |------|------|-------------| | mask | IMAGE | Noisified binary mask | ## Controls | Name | Type | Default | Description | |------|------|---------|-------------| | density | FLOAT | 0.1 | Fraction of candidate pixels to flip (0.0--1.0) | | direction | dropdown | both | Which pixels to perturb: add (grow mask), remove (shrink mask), or both | | boundaries_only | BOOLEAN | True | Only modify pixels adjacent to a mask boundary | | seed | INT | 42 | Random seed for reproducible results (0--999999) | ## Notes - Boundary detection uses four-neighbour comparison (up, down, left, right) via np.roll. A pixel is a boundary pixel if it differs from at least one of its four neighbours. - Direction modes control which candidates are eligible: "add" selects only unmasked boundary pixels, "remove" selects only masked boundary pixels, and "both" selects all boundary pixels. - Setting boundaries_only to False allows any pixel in the mask to be a candidate, not just those at edges. - The seed parameter ensures deterministic output for a given input, which is useful for repeatable experiments.