When an image is spoiled by excessive low frequencies, we can cut them out by taking a gradient. Figure 8 compares the topography around Stanford University with its helical derivative and with its southward derivative. Although the helical derivative is also taken in the southward direction, the two derivative images are very different. The helical derivative appears more appropriate for looking at drainage patterns and the ordinary derivative for mountain slopes.
![]() |
The Poisson equation solver by means of the helix derivative
is a convenient isotropic smoothing filter.
However, this smoothing operation has no adjustable coefficient
to choose the cut-off frequency.
A slightly more complicated form allows us to
build a filter with a spatial high cut or low cut
that has an adjustable cut off frequency.
Recall the factorization
() that we did of the
low-cut filter in one dimension
.With this idea,
we can use the helix to build a two-dimensional lowcut filter.
module helocut {
use lapfac2
use helicon
use polydiv
real, dimension (:), pointer, private :: aa, bb
integer, dimension (:), pointer, private :: lag
real, dimension (n1*n2), allocatable :: tt
#% _init( eps, na, n1, n2)
real eps
integer na, n1, n2
allocate( aa (na), bb (na), lag (na))
call lapfac( 0.0, n1, aa, lag)
call lapfac( eps, n1, bb, lag)
call helicon_init( aa, lag)
call polydiv_init( bb, lag)
write (0,*) "aa", aa
write (0,*) "bb", bb
#% _lop (pp, qq)
integer stat1, stat2
if( adj) {
stat2 = polydiv_lop( adj, .false., tt, qq)
stat1 = helicon_lop( adj, .true., pp, tt)
}
else {
stat1 = helicon_lop( adj, .false., pp, tt)
stat2 = polydiv_lop( adj, .true., tt, qq)
}
#% _close
deallocate( aa, bb, lag)
}
After some experimentation with this filter,
I learned that I already had a powerful adjustable
parameter in the number of coefficients
that are used from the spectral factorization of .I learned that taking not enough lags in the filter
caused it not to drop to zero at zero frequency.
A simple test of whether it drops to zero at zero frequency
is to add all the coefficients
in the definition 11
and see how close they come to zero.
Doing this for the 8 coefficients given,
I find the sum is .18 compared to the lead coefficient 1.79,
so it seems the ``zero'' at zero frequency actually only drops 90%
of the way to zero.
Although I coded a filter response to be the factorization of
,I found it more desireable to fix
at a large value
(thus effectively neglecting the denominator)
and make adjustments in the depth of the hole at zero frequency
by adjusting the number of filter coefficients
in the representation of the helix derivative.
In preparing Figure 8 I found it most agreeable
to use 16 filter coefficients.