NAME
fkkstrip - spatial filtering and edge detection of
timeslice data
SYNOPSIS
fkkstrip [ -Nntap ] [ -Ootap ] [ -Fftap ] [ -rsnrst ] [
-renred ] [ -sfrst ] [ -efred ] [ -llength ] [ -iintercept ]
[ -ftaperxt ] [ -xtaperxt ] [ -ytaperyt ] [ -xpadxp ] [
-ypadyp ] [ -pass ] [ -dup ] [ -AM ] [ -oaiopa ] [ -H ] [
-ohioph ] [ -pchp ] [ -E ] [ -EG ] [ -sigsigma ] [ -EV ] [
-EH ] [ -EDR ] [ -EDL ] [ -V ] [ -? or -h ]
DESCRIPTION
fkkstrip in general smoothing mode computes a two dimen-
sional convolution on a record by record basis between input
data and (1) a bessel Jo filter constructed according to
user input parameters, or (2) an average-median filter, or
(3) one of several mean (arithmetic, geometric, harmonic)
filters. The routine was written to be used with post-stack
3D data but is effective with pre-stack data as well. Such
image processing of seismic data and can be extremely useful
for removal of noise and multiples. Events that dip steeply
in time often appears as high frequency noise on timeslice
data and may be removed using a filter that rejects data in
high Kx,Ky ranges. Alternatively, removal of flat events
may be accomplished through convolution with a filter that
rejects data very close to and including Kx = Ky = 0.
fkkstrip in edge detection mode computes (1) one of several
3x3 differential (Laplacian) filters to enhance edges
according to various criteria. Edge detection filters are
taken from "Two Dimensional Signal and Image Processing" by
J.S. Lim, Prentice Hall, 1990, pp 481-486, or (2) a
Gaussian-Laplace filter which is somewhat like a band lim-
ited differential filter. The overall appearance of the out-
put of these filters is similar to that of the coherency
codes although since these operations are done independently
on each time slice the temporal resolutuon will be much
higher.
fkkstrip gets both its data and its parameters from command
line arguments. These arguments specify the input, output,
filter output, pass record start and end, filter record
start and end, filter length and intercept, spatial pad and
taper, and verbose printout, if desired.
Note: there must be at least as many traces per record as
there are filter points on one side of the operator -l. In
addition, the number of points on one side of the operator
must be odd. If not, the program will make it so.
Command line arguments
-N ntap
Enter the input data set name or file immediately after
typing -N. If piping in this command line entry will
be omitted. The 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).
-F ftap
Enter the filter output data set name or file immedi-
ately after typing -F. If not used no output of the
filter will be made. The dataset created will have -l
trace of -l samples each. Where -l is the length
of one side of the filter used. This filter may be
viewed using xsd or xmplot and is best displayed
using color.
-rs nrst
Enter the first record number to pass to the process.
Record numbers below this value will not be processed.
Default value is the first record.
-re nred
Enter the last record number to pass to the process.
Record numbers above this value will not be processed.
Default value is last record.
-s start
Enter the first record number to filter. Records
between this value and -rs will be passed unfiltered.
This entry should then be greater than -rs and less
than -re. Default is the first record.
-e end
Enter the last record number to filter. Records between
this value and -re will be passed unfiltered. This
entry should then be greater than -rs and less than
-re. Default is the last record.
-l length
Enter number of points in one side of 2D filter. [must
be odd]. Default length is 21.
-i intercept
Enter filter intercept. Default is 0.05.
-ftaper ftaper
Enter percent of filter length over which to to use
apply cosine taper. Default is 50 percent.
-xpad xpad
Enter number of samples to pad on either side of input
record in x direction [left/right]. Default is 10.
-ypad ypad
Enter number of samples to pad on either side of input
record in y direction [top/bottom]. Default is 10.
-xtaper xtaper
Enter number of samples to taper on either side of
input record in x direction [left/right]. Default is
10.
-ytaper ytaper
Enter number of samples to taper on either side of
input record in y direction [top/bottom]. Default is
10.
-pass
Enter the command line argument '-pass' to output the
result of the convolution [filter * data]. Default is
to output the difference of the result of the convolu-
tion and the input data [data - filter * data]. For the
edge detector modes the -pass seems to include a little
more of the overall structural shape as well as enhanc-
ing the edges. Without -pass only the edges will show
up.
-dup Enter the command line argument '-dup' to fill the pad
zone with the fringe of samples from the edges of each
input record. This is necesary if one is smoothing (
-pass mode ) entities like velocity or Q to avoid edge
effects from the convolution of the smoothing operator.
-AM Enter the command line argument '-AM' to apply an
average-median filter of length given above. For each
position on the input record an lxl matrix is formed
from the samples. Eight partial averages are taken
along the horizontal, vertical, and two diagonals. In
each direction (say horizontal) averages are taken
separately for the left and right sides of the data
matrix (center point skipped). The output of the filter
is the median of the outputs from all eight averages
along with the center value. This is less smooth that
doing just the full median. Including -pass gives out-
put that has the highest wavenumbers trimmed.
-oa iopa
Enter the average-median operation code: 1 = average-
median (vertical, horizontal, & diagonals), 2 =
average-median (vertical & horizontal), 3= median of
average medians. Default = 1
-H Enter the command line argument '-H' to build one of 4
possible mean filters of length given above. Note: all
of these filters take much longer to run than any of
the other options.
-oh ioph
Enter the mean operation code: 1 = arithmetic, 2 =
geometric, 3 = contra-harmonic, 4 = harmonic. Default =
1
-p chp
For the contra-harmonic choice above, enter the
exponent. Default = 2.monic. Default = 1
-E Enter the command line argument '-E' to apply pre-built
general differential edge detector. It is always advis-
able to apply a second 3-point fkkstrip in -pass mode
to trim the very highest wavenumbers or to otherwise
limit the highest wavenumbers, e.g.
fftxy|polymute|fftxy.
-EG Enter the command line argument '-EG' to apply pre-
built Gaussian-Laplace edge detector of length given
above. This acts essentially like a band limited dif-
ferential filter.
-sig sigma
For the Gaussian-Laplace choice, enter the gaussian
standard deviation. Default = 4.
-EV Enter the command line argument '-EV' to apply pre-
built vertical differential edge detector. This should
enhance vertical changes but in practice it is offten
difficult to see differences between these more spe-
cialized edge detectors. They do all seem to give
higher apparent spatial resolution than the general
detector. It is always advisable to apply a second 3-
point fkkstrip in -pass mode to trim the very highest
wavenumbers or to otherwise limit the highest
wavenumbers, e.g. fftxy|polymute|fftxy.
-EH Enter the command line argument '-EH' to apply pre-
built horizontal differential edge detector. This
should enhance horizontal changes but in practice it is
offten difficult to see differences between these more
specialized edge detectors. They do all seem to give
higher apparent spatial resolution than the general
detector. It is always advisable to apply a second 3-
point fkkstrip in -pass mode to trim the very highest
wavenumbers or to otherwise limit the highest
wavenumbers, e.g. fftxy|polymute|fftxy.
-EDR Enter the command line argument '-EDR' to apply pre-
built right diagonal differential edge detector. This
should enhance right diagonal changes but in practice
it is offten difficult to see differences between these
more specialized edge detectors. They do all seem to
give higher apparent spatial resolution than the gen-
eral detector. It is always advisable to apply a second
3-point fkkstrip in -pass mode to trim the very highest
wavenumbers or to otherwise limit the highest
wavenumbers, e.g. fftxy|polymute|fftxy.
-EDL Enter the command line argument '-EDL' to apply pre-
built left diagonal differential edge detector. This
should enhance left diagonal changes but in practice it
is offten difficult to see differences between these
more specialized edge detectors. They do all seem to
give higher apparent spatial resolution than the gen-
eral detector. It is always advisable to apply a second
3-point fkkstrip in -pass mode to trim the very highest
wavenumbers or to otherwise limit the highest
wavenumbers, e.g. fftxy|polymute|fftxy.
-V Enter the command line argument '-V' to get additional
printout.
-? or -h
Enter the command line argument '-?' or -h to get
online help. The program terminates after the help
screen is printed.
DISCUSSION
The field of image processing of seismic data is a blending
of two disciplines that have been around for many years,
namely signal processing and image processing. We, as geo-
physicists are intimately familiar with the former and usu-
ally quite ignorant of the latter. The Electrical Engineer-
ing and Computer Science people on the other hand have been
using 2D techniques in image processing for many years.
There is a wealth of liturature on topics such as image
smoothing, image coding, image spectral balancing, image
edge detection, image enhancement etc. that have direct
application to processing of time slice data. This routine
is the first I know of that makes possible several of the
aforementioned processes.
Image Smoothing
Is simply Kx,Ky filtering [high cut usually] and may be
accomplished using this routine with a filter length set to
a very small number [ 3 is as small as the routine will
allow ]. This combined with your choice of intercept will
build a filter that when convolved with your time slice does
a slight amount of areal smoothing which translates to the
removal of energy at high Kx,Ky values. [To monitor the
result in Kx,Ky use program fftxy.] The effect on the LI or
DI slice of this filter is quite astounding. A large per-
centage of any steeply dipping [Remember this is 3D, so even
flat events on some data projections are affected.] energy
is removed from the data. This has obvious impact in the
area of source generated noise or noise from secondary
sources or point defractors throughout the survey.
To construct a low cut [Kx,Ky close to 0,0] use a large
filter length combined with a very small intercept value
[i.e. 0.005] which will result in very low frequency events
only being passed.
2D Implimentation
The utility of the filter in the full 3D world is obvious.
It can however also be employed in the 2D pre-stack arena.
One could apply moveout using a velocity field appropriate
to correct multiple events [i.e. water velocity], apply
scaling and a mute for good measure then sort to common mid
point. Now perform a record to record shift [recshift] to
remove any structural component associated with the mutliple
generator, time slice the data and process with a filter to
eradicate flat events. Back out the structural correction,
sort back to common mid point and voila multiples are gone.
This approach has certain advantages over conventional
demultiple routines in that whole families of velocities may
be filtered without the usual level of artifacts.
If you can think of things you would like to do in the image
processing field and need a routine to do them give us a
call at USP Central and we will be only too willing to
oblidge you.
Sample Flow A
Here is an example of the command line entries for applica-
tion of the filter to a 3D post-stack dataset of 158 LIs,
174 DIs and 750 samples per trace:
ttds3d -Ninput -NDtxy -ODxyt -M16 -Ttmp1 |
fkkstrip -l3 -i0.005 |
ttds3d -NDxyt -ODtxy -M16 -Ttmp2 |
hdrswap -N2input |
clean -Ooutput -Z
The ttds3d steps are set up for the suns (16mb memory) and
the intermediate files tmp1 and tmp2 will be created in the
current working directory. It is necessary to do the hdrswap
at the end to recover the indexing of your input dataset.
Sample Flow B
Here is an example of the command line entries for applica-
tion of the general edge detection filter to a 3D post-stack
dataset:
ttds3d -Ninput -NDtxy -ODxyt -M16 -Ttmp1 |
fkkstrip -E |
fkkstrip -l3 -pass |
ttds3d -NDxyt -ODtxy -M16 -Ttmp2 |
hdrswap -N2input |
clean -Ooutput -Z
Here we have followed the edge detector with a 3-point
smoothing filter to trim off the highest wavenumbers. This
step could have been replaced with a fftxy|polymute|fftxy -R
for greater control. The edge detection step has no "-pass"
since this seems to give a little more structure to the out-
put.
Have fun.
See Also
fftxy polymute fkrad fkshape dafd2d,
BUGS
unknown
AUTHOR
Paul G. A. Garossino, May/93,
[APR:3932:zpgg07@trc.amoco.com], edge detection mods by Paul
Gutowski, Oct/95 [pgutowski@amoco.com
COPYRIGHT
copyright 2001, Amoco Production Company
All Rights Reserved
an affiliate of BP America Inc.
Man(1) output converted with
man2html