Skip to content

ps: persistent scatterers identification

moraine.api.ps (source). Every name is also moraine.<name> (import moraine as mr).

amp_disp

amp_disp(rslc: ndarray) -> ndarray

calculation the amplitude dispersion index from SLC stack.

Parameters:

Name Type Description Default
rslc ndarray

rslc stack, 3D numpy array or cupy array

required

Returns:

Type Description
ndarray

dispersion index, 2D numpy array or cupy array

Examples

Run when this manual is built; the output follows each snippet.

import numpy as np
import moraine as mr

rng = np.random.default_rng(0)
nimages = 20
# a stable scatterer (constant amplitude, small noise) next to noisy pixels
stable = 5 + 0.2 * rng.standard_normal((3, 3, nimages))
noisy = np.abs(rng.standard_normal((3, 3, nimages))) + 0.1
amp = np.concatenate([stable, noisy], axis=1)
rslc = (amp * np.exp(1j * rng.uniform(-np.pi, np.pi, amp.shape))).astype(np.complex64)   # (nlines, width, nimages)

adi = mr.amp_disp(rslc)                       # amplitude dispersion index (std / mean over time), (nlines, width)
print(adi.shape, adi.dtype)
print('stable pixels', adi[:, :3].mean().round(3), ' noisy pixels', adi[:, 3:].mean().round(3))
(3, 6) float32
stable pixels 0.037  noisy pixels 0.692

PS candidates are the pixels with a low index, e.g. adi < 0.4 (pc-logic-ras in the pipelines).