NAME
qifl - do forward Q modeling or inverse Q filtering
SYNOPSIS
qifl [ -Nntap ] [ -Ootap ] [ -Dcardin ] [ -qtqtap ] [ -qq0 ]
[ -nullqnull ] [ -mdmode ] [ -ababsol ] [ -phphase ] [
-fcfcut ] [ -fpfpass ] [ -samp ] [ -scitype ] [ -smsmh ] [
-lwlw ] [ -rsnrst ] [ -renred ] [ -noscl ] [ -rec ] [ -R ] [
-V ] [ -? ]
DESCRIPTION
qifl computes and applies a continuously time varying filter
to remove (or model) the effects of anelastic attenuation
and dispersion (Q). The theory is described in two Stanford
Exploration Project reports by Dave Hale: An Inverse Q
Filter and Q-Adaptive Deconvolution, vols 26 and 30. There
is also an excellent description of the details in the SIS
bluebook.
qifl assumes a seismic trace of the form x(t) =
r(t)*w(t)*q(t), where r(t) is the earth response or reflec-
tion coefficients, w(t) is the time invariant wavelet, and
q(t) is a time varying function describing the absorption-
dispersion effects.
qifl accepts input functions in card file format
(1,...,9QTIM cards described below), in seismic trace format
(i.e. analogous to a velocity tape), or constant Q as input
on the command line. For the prestack case each Q function
will apply to an input gather. For the case of input seismic
format Q functions the Q traces must be in the same order on
disk (or in a pipe) as the input seismic gathers (stacked or
unstacked) and if you run short of Q-traces before the end
of the input data the last Q trace will be used for the
remainder of the run. Also for q traces if each Q trace is
shorter than the input seismic traces then the last Q sample
will be used to pad out the Q trace.
If the Q-trace input format is chosen the program checks to
see if the input Q traces are sampled the same as the input
data. If the Q-traces have a coarser sample interval they
are interpolated on the fly to the same sample interval as
the input data. This allows estimating Q (using program
qest) at a coarser sample interval, say 8ms instead of 4ms,
speeding up the estimation step. It is not critical to have
the Q estimated at every input sample.
In the case of post stack data you may flag the program to
assume each input data trace will be processed using each
successive Q trace. In the case of prestack data each input
record will be processed by each input Q trace.
Due to the realities of this type of numerical filtering it
is next to impossible to strictly control the output energy
of the filtered traces. This can result in variations in
the overall energy of the output traces resulting in a
striped appearance. The fix is to look at the energy of the
input trace and try to force the output trace to have the
same. The default is to use the ratios of the input and
output envelopes as a gain compensation function.
Regardless of the internal gain compensation one should
always follow qifl with a broad brush gain correction, e.g.
avgain with a long (2000ms) time window and a long (1/3 the
number of traces/rec) spatial window. This has no effect on
relative amplitudes but gets everything to the same back-
ground. I addition one should look at the output amplitude
spectra (ampspec | usp xgraph) for a sample record. If the
spectra after qifl are too skewed to the high frequencies
then consider running a rho filter, e.g. program dafd -R
-fl2 -fh100 -sf2 -ep-.5 ..., or program rhof.
The rho filter with a negative exponent will skew the spec-
tra back to be more balanced with more equal contributions
from both highs and lows. This rho filter process is
entirely AVO friendly since it does exactly the same thing
to every trace.
qest may be run on the seismic data to estimate the Q (you
will have to editt off the first trace of each record to get
the Q-traces.
qifl gets its parameters from command line arguments and its
Q-function from card images in a flat file. The cmommand
line arguments specify the input, output, the modes of
operation, the start and end processing limits, and verbose
printout, if desired.
Command line arguments
-N ntap
Enter the input data set name or file immediately after
typing -N unless the input is from a pipe in which case
the -N entry must be omitted. This input file should
include the complete path name if the file resides in a
different directory. Example -N/b/vsp/dummy tells the
program to look for file 'dummy' in directory '/b/vsp'.
-O otap
Enter the output data set name or file immediately
after typing -O. This output file is not required when
piping the output to another process. The output data
set also requires the full path name (see above).
-Q Enter the command line argument '-Q' to specify input Q
functions in seismic trace format. Otherwise input Q
functions will be either from card file or as a con-
stant on the command line.
-qt qtap
Enter the input data seismic format Q data set name or
file immediately after typing -qt. The Q traces must be
in the same order on disk (or in a pipe) as the input
seismic gathers (stacked or unstacked) and if you run
short of Q-traces before the end of the input data the
last Q trace will be used for the remainder of the run.
Also for q traces if each Q trace is shorter than the
input seismic traces then the last Q sample will be
used to pad out the Q trace. It is recommended that the
Q traces be smoothed (e.g. using vsm) before input to
qifl.
-D cardin
For non-seismic Q function input: enter the name of the
flat file containing the 1QTIM - 9QTIM card images of
the Q functions (in the manner of TDFN cards for velo-
city functions). These have the format:
nQTIM (cc 1-5)
TIME (ms) (cc 6-10, 16-20, ..., 77-70
Q (cc 11-15, 21-25, ..., 71-75), sequential rec # (cc
76-80)
Each function consists of a series of 1QTIM, 2QTIM,
..., 9QTIM cards with the last (or first if there is
only 1) being a 9QTIM. Up to 64 T-Q pairs can be used
for each function. The last 5 columns is the sequen-
tial record number for this function. Up to 70 func-
tions may be specified along a line with linear inter-
polation of the functions between record control points
(the same function will be applied to each record).
-null qnull
For mute zones where input Q values is zero replace
zero Qs with this value. Default = 500.
-q q0
For non-seismic Q function input: enter the optional
constant Q-value (Q-function inout file above is
ignored). This is useful in building constant Q panels.
Default = 0.0 (i.e. look for Q-function file).
-md mode
Enter the mode. Mode = 0: do inverse Q filtering; mode
= 1: do forward Q modeling. Default = 0
-ph phase
Enter the phase-type of the low-pass stabilizing
filter: 0 = zero phase, 1 = minimum phase. Default =
0. Inverse Q filtering is an inherently unstable pro-
cess since we are attempting to boost frequency content
with increasing time. To counter this instability a
low-pass filter must be applied.
-fc fcut
Enter the high end cutoff frequency of the low-pass
filter (Hz). Default is to try to find an average Q
and an average time and to calculate this value.
Depending on the type of Q-function you have this may
or may not work. In general the higher this value the
sooner (in time) the Q filter deteriorates for a given
Q.
-fp fpass
Enter the high end frequency at which the power spec-
trum gain becomes constant. If a value is entered for
this parameter, the -fc parameter is ignored and a
high-cut filter may be applied later to accomplish the
function of the -fc parameter. (Default = 0.)
-sc itype
Enter the type of output gain compensation: 0 =
envelope ratios, 1 = agc ratios. Inverse Q filtering
can subtely alter the overall energy of the output
traces due to noise in the data and small numerical
variations of the iqf filters. One way to fix this is
to look at the energy behavior of the input trace over
time and try to transfer this behavior to the output
trace. Two methods are used: (1) the default, is to
take the ratio of the envelopes of the input and output
and apply this to the output, (2) compute the ratios of
the agc curves and apply that.
-sm smh
Enter the order of the smoother to apply to the
evelopes prior to computing the output gain compensa-
tion. Default is no smoothing since tests have shown
it is genrally unhelpful.
-lw lw
If the agc ratio energy compensation method has been
chosen enter the length of the agc window. Default =
1000ms
-s amp
If the agc ratio energy compensation method has been
chosen enter the % of 2047 to scale samples. Default =
15%
-scl scl
Enter the scale factor to apply to the input Q traces
(only good for seismic trace format Q input). Default =
1.0
-ab absol
Enter the type of Q function: 0 = interpolate in time
between time-Q control points; 1 = do a running average
over time. Default = 0.
-rs nrst
Enter start sequential process record number. Sequen-
tial record numbers below this value will not be fil-
tered but will be passed. Default value is the first
record.
-re nred
Enter end sequential process record number. Sequential
record numbers above this value will not be filtered
but will be passed. Default value is last record.
-noscl
Enter the command line argument '-noscl' to turn off
restore scaling. The default is to restore the post
iqf trace scaling to whatever the input was. Either
the envelope trace (default) of both input and output
is computed and these are used to compute a scale fac-
tor for every sample or the ration of the input and
output agc curves is used. Without internal scaling
the output will have to be put through an externam
scaling process like avgain. Internal scaling will
almost always eliminate stripiness sometimes seen in
iqf outputs.
-rec Enter the command line argument '-rec' to read each
input gather (record) and apply one Q trace from the
-qt[] file. The default is to read and apply a Q trace
for each input trace.
-R Enter the command line argument '-R' to apply a restore
on-mute time out of header word VPick1. As the Q traces
are output the time to the first nonzero sample is
placed in the restore mute trace header word VPick1 for
subsequent optional application in the inverse Q filter
program qifl. This is because subsequent Q smoothing
could introduce funny Q values at this transition zone
(this could cause the inverse Q filting problems). This
disturbed zone will exist above the mute line so it can
be corrected by flagging qifl with a -R which will zero
out the Q traces down to the VPick1 time.
-V Enter the command line argument '-V' to get additional
printout.
-? Enter the command line argument '-?' to get online
help. The program terminates after the help screen is
printed.
EXAMPLE
First estimate the Q for the input data:
qest -Nidata -w00 -Oqdata
where we have used a sliding window of 300ms and with the
default fourier spectral method. We now take the Q traces
and do the Q compensation step:
First smooth the Q-traces
vsm -Nqdata -Oqdata_sm -dxv25 -dzv25 -rsm500
where the trace and sample step sizes have been chosen more
or less arbitrarily (and equal). The important ratio is the
step size to the radial smoothing distance since that deter-
mines the smoothing length is samples and traces.
Next apply the Q inverse filter
qifl -Nidata -qqdata_sm -Oodata -fc50 -Q -R
where we have used a cut off frequency of 50Hz, we assume a
Q-trace for each input data trace, and where we apply the
restore on-mute time qest stored in the Q-trace header word
VPick1.
BUGS
Watch out for filter instabilities. Run tests on a small
data subset.
AUTHOR
Original code by Richard Crider, ES&S; USP mods by Paul
Gutowski, APR
COPYRIGHT
copyright 2001, Amoco Production Company
All Rights Reserved
an affiliate of BP America Inc.
Man(1) output converted with
man2html