public class DifferenceFilter
extends java.lang.Object
Sequential application of the backward-difference filter and its transpose yields an approximation to a negative centered 2nd-difference filter: y[i] = -x[i-1]+2*x[i]-x[i+1].
Extensions to 2-D and 3-D backward-difference filters are defined as in Claerbout, J., 1998, Multidimensional recursive filters via a helix: Geophysics, v. 63, n. 5, p. 1532-1541.
These extensions were obtained here by factoring the negative centered 2-D and 3-D 2nd-difference filters, respectively, using the Wilson-Burg algorithm, as in Fomel, S., Sava, P., Rickett, J., and Claerbout, J., 2003, The Wilson-Burg method of spectral factorization with application to helical filtering: Geophysical Prospecting, v. 51, p. 409-420.
For all dimensions, these approximations yield less than one percent error in the negative centered 2nd-difference filter, relative to the exact central filter coefficient. For example, the error for a 2-D filter is less than 0.04 = 0.01*4, where 4 is the central coefficient in the exact negative 2nd-difference filter.
Constructor and Description |
---|
DifferenceFilter() |
Modifier and Type | Method and Description |
---|---|
void |
apply(float[][][] x,
float[][][] y)
Applies this difference filter.
|
void |
apply(float[][] x,
float[][] y)
Applies this difference filter.
|
void |
apply(float[] x,
float[] y)
Applies this difference filter.
|
void |
applyInverse(float[][][] x,
float[][][] y)
Applies the inverse of this filter.
|
void |
applyInverse(float[][] x,
float[][] y)
Applies the inverse of this filter.
|
void |
applyInverse(float[] x,
float[] y)
Applies the inverse of this filter.
|
void |
applyInverseTranspose(float[][][] x,
float[][][] y)
Applies the inverse transpose of this filter.
|
void |
applyInverseTranspose(float[][] x,
float[][] y)
Applies the inverse transpose of this filter.
|
void |
applyInverseTranspose(float[] x,
float[] y)
Applies the inverse transpose of this filter.
|
void |
applyTranspose(float[][][] x,
float[][][] y)
Applies the transpose of this filter.
|
void |
applyTranspose(float[][] x,
float[][] y)
Applies the transpose of this filter.
|
void |
applyTranspose(float[] x,
float[] y)
Applies the transpose of this filter.
|
public void apply(float[] x, float[] y)
x
- the filter input.y
- the filter output.public void apply(float[][] x, float[][] y)
x
- the filter input.y
- the filter output.public void apply(float[][][] x, float[][][] y)
x
- the filter input.y
- the filter output.public void applyTranspose(float[] x, float[] y)
x
- the filter input.y
- the filter output.public void applyTranspose(float[][] x, float[][] y)
x
- the filter input.y
- the filter output.public void applyTranspose(float[][][] x, float[][][] y)
x
- the filter input.y
- the filter output.public void applyInverse(float[] x, float[] y)
x
- the filter input.y
- the filter output.public void applyInverse(float[][] x, float[][] y)
x
- the filter input.y
- the filter output.public void applyInverse(float[][][] x, float[][][] y)
x
- the filter input.y
- the filter output.public void applyInverseTranspose(float[] x, float[] y)
x
- the filter input.y
- the filter output.public void applyInverseTranspose(float[][] x, float[][] y)
x
- the filter input.y
- the filter output.public void applyInverseTranspose(float[][][] x, float[][][] y)
x
- the filter input.y
- the filter output.