We present a Python code that implements a novel threshold-free polarization strategy for removing random noise from 3C linearly polarized seismic data. The code, which we refer to as polarization denoising through windowing (poldw), uses closed-form formulas along sliding windows that span the data to determine the optimal rotation angles that allow the transfer of most of the signal energy to a given component. The denoised 3C data are obtained after canceling out the other two components, which are assumed to contain predominantly noise, and then rotating back. The method is simple and efficient because it only requires setting the sliding window length. Synthetic and microseismic field data examples show the method’s effectiveness, which significantly improves the signal-to-noise ratio without the need for threshold-based polarization filters. Therefore, these filters can be pipelined in the rotation-based strategy for additional noise removal if necessary. When the data set contains nonlinearly polarized data or significant nonrandom noise, the method is likely to fail. For robustness against non-Gaussian noise and outliers, poldw allows for the use of alternative norms similar to the [Formula: see text]- or [Formula: see text]-norms instead of the energy. In addition to the code, we provide a Jupyter notebook to illustrate the method step by step and reproduce the results of the field data example.
Read full abstract