## 2 Materials and Methods
### SMD Algorithm
#### 2.2.1 Step 1  
To identify a point in matrix \(\mathbf{M}\) at which a displacement (or pressure) from a coherent wave is likely recorded, we start by applying a geometric mean filter to the data matrix \(\mathbf{M}\), to obtain the matrix \(\mathbf{E}\) (Equation (6)):  
\[E_{i,j}=|\prod_{q=-n_{E}}^{n_{E}}M_{(i+\delta_{ij}(q)),(j+q)}|^{\frac{1}{2q+1}}. \tag{6}\]  
For a position \((i,j)\), the parameter \(n_{E}\) indicates that \(n_{E}\) columns left of the position \((i,j)\) and \(n_{E}\) columns right of the position \((i,j)\) will be used when calculating \(E_{i,j}\). If a position \((i,j)\) is close to the first or the final column, fewer elements are used to calculate the geometric mean \(E_{i,j}\) as to avoid stepping outside the matrix boundaries. The row positions of elements used in the geometric mean are also constrained in order to always remain within the matrix boundaries. What makes this filter unique is the choice of elements which are used when calculating the geometric mean. From each of the \(2n_{E}\) surrounding columns, only one element is used in the geometric mean. The variable \(\delta\) in Equation (6) indicates which element is used in the geometric mean from each column. For example, when calculating the value of the the geometric mean in position \((i,j)\), from column \(j+q\) we take the element at row position \(i+\delta_{ij}(q)\) to be used in the geometric mean. The process for determining the said set of elements is described with Figure 6.  
Figure 5: A flowchart describing the SMD algorithm. Consider calculating the geometric mean in order to determine the value of \(E_{i,j}\). Before calculating the geometric mean, we must determine the set of elements used in the mean (determine the values of \(\delta_{i,j}\)). We start from the \(j^{th}\) column, from which we always use the element \(M_{i,j}\) (\(\delta_{i,j}(0)=0\)). Then, we proceed to find which elements to use from adjacent columns (Figure 6a). Assuming \(M_{i,j}\) is positive, for column \(j+1\), we pick the element between positions \((i-m,j+1)\) and \((i+m,j+1)\) which has the highest value. If the element \(M_{i,j}\) were negative, we would pick the lowest value. The parameter \(m\) represents the maximum dip of the wave rounded up to the nearest integer. The same process is used to determine which element to use from column \(j-1\). For any column \(j+n_{s}\) where \(1<n_{s}\leq n_{E}\), for the geometric mean, we pick the element between positions \((i_{s}-1,j+n_{s})\) and \((i_{s}+1,j+n_{s})\) with the highest value (Figure 6b,c). The row number \(i_{s}\) is determined by following a linear trend based on the row position \(i\) in column \(j\) and the picked row position \(i+\delta_{i,j}(n_{s}-1)\) in the column \(j+n_{s}-1\). The same process is used to determine which element to use from columns below \(j-1\). The geometric mean filter is designed to imitate the process humans use for recognizing coherent waves in the data. When differentiating signal from noise, the distribution of displacement (or pressure) along a long range of receivers plays an important role. A weak wave might have an amplitude that is even smaller than that of noise in few noisy areas. However, if the displacement (or pressure) from the wave is present in a long range of receivers, and its arrival time follows a hyperbolic trend, a data reviewer would certainly notice the wave. The goal of the geometric mean filter is to assign higher values to such a weak wave than to a noisy area with high amplitudes. By testing the geometric mean filter on a large number of examples, we found few cases in which the weak wave was not assigned higher values than some  
Figure 6: The process of determining the set of elements (\(\delta_{i,j}\)) for calculating the geometric mean at the position \((i,j)\). The curly braces indicate the set of elements from which the next element will be added to the geometric mean.