![]() |
![]() |
![]() |
![]() | Lloyd and Viterbi for QC and auto-picking | ![]() |
![]() |
Dynamic programming, and specifically the Viterbi algorithm,
offers a way to solve certain classes
of non-linear problems.
It is useful for problems that can be thought
of as making one decision after another.
To understand how it works, it is easiest
to start with our final decision.
Our goal is to maximize our `score' of
a series of decision
.
Each decision has several potential
outcomes (
).
Our final score is going to be
based on some score we have calculated
for all of our possible options (called `states') at
,
and the best score we can get from moving
from all of the possible states at
to
all possible states at
.
We can write the score as
In this most general form, the algorithm
is quite expensive.
The cost on the order of . For a large
number of states the problem quickly becomes
impractical.
The easiest way to reduce
the cost is to limit the number of states that
we must search when moving from one decision to
another.
For the interactive picking problem we are looking
for the best path through a series of points in 2-D. In this example
I am requiring that the solution is single
valued along one axis (e.g. only one velocity at each time sample). I
am looking for the best path between my first and last
picks along the single value axis. I form an initial path
by linear interpolation between the selected points. I am
then going to limit my search space so it is no more than
points away from the linear path (limit
the possible states of
). Figure 1
demonstrates this concept. The left panel shows a semblance
scan along with three selected points. The right panel shows
the semblance extracted along the path represented by
the three points.
![]() |
---|
path
Figure 1. The left panel shows a semblance gather overlain by three picks. The right panel is the result of linearly interpolating between the picks and extracting semblance along the resulting line. [ER] |
![]() ![]() |
In term of equation (1) we have decisions (the
number of time samples between the first selected point and
the last selected point) with
states (
in size where
d is the search distance from the initial linear path.) Generally
takes the form
To further create
a smooth path I only
search in the range . Finally to force the user selected
points to be honored I modify
in a manner similar to Harlan (2001).
I add large values to
which has
the effect of forcing the solution through these points.
Figure 2a shows the generated score matrix from the data shown in
Figure 1b overlain by the traced back path through these points.
The path is calculated by finding the maximum in the first row and
then searching for the maximum within some range in the next row,
proceeding to the bottom of the score matrix.
Figure 2b shows
the path on the original data
![]() |
---|
semb
Figure 2. The left panel (A) shows the score matrix calculated using equation 1 overlain by the maximum tracked path. The right panel, B, shows the path overlain on the original semblance display. [ER] |
![]() ![]() |
Reflectors can also be auto-picked by this method. In the case of picking
reflectors, becomes the correlation of the data along with an initial
linear path. Figure 3 demonstrates the concept. The left panel
of Figure 3
show the data with a set of four points selected. The right panel of
Figure 3 shows
the path
picked by the algorithm.
![]() |
---|
refs
Figure 3. The left panel shows the original with four seed points selected. The right panel shows the result of using the Viterbi algorithm to pick the reflector. [NR] |
![]() ![]() |
![]() |
![]() |
![]() |
![]() | Lloyd and Viterbi for QC and auto-picking | ![]() |
![]() |