next up previous print clean
Next: REFERENCES Up: The helical coordinate Previous: WILSON'S SPECTRAL FACTORIZATION

HELIX LOW-CUT FILTER

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.

 
helocut90
helocut90
Figure 8
Topography, helical derivative, slope south.


view burn build edit restore

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 $\omega^2/(\omega^2 + \epsilon^2)$.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 $-\nabla^2$.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 $-\nabla^2/(\nabla^2 + \epsilon^2)$,I found it more desireable to fix $\epsilon$ 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.


next up previous print clean
Next: REFERENCES Up: The helical coordinate Previous: WILSON'S SPECTRAL FACTORIZATION
Stanford Exploration Project
2/27/1998