alex@bilver.uucp (Alex Matulich) (02/09/91)
I am doing a project that involves "sharpening up" a two-dimensional radar
scan of an object. This, of course, requires a convolution.
I know that this is normally done for visual images by operating a 3x3
kernel over each pixel in the image, such as
-1 0 -1
0 5 0
-1 0 -1
however, my response function is more than 3 pixels wide. (In fact, it is
a _different size_ in the x and y dimensions because the waveguide used to
scan the object is rectangular and has different beamwidths in each
direction).
I don't have the faintest idea how to make an arbitrary-sized sharpening
kernel, and furthermore I am unclear on how to re-scale things after
I'm done. I'm more comfortable with FFT's, anyway, and I can precisely
define my response function too.
You will recall that the deconvolution of a function f with a response
function g is
F(f decon g) = F(f) / F(g)
where F() is the Fourier transform. See the problem? You have to DIVIDE
by the Fourier transform of g. In all my experiments, for any response
function I try, F(g) is zero somewhere (or near zero) which completely
messes up the result.
As a simple experiment I tried convolving some arbitrary 1-D signal with
a response function and then deconvolving it to see if I got back what I
started with. The convolution always works perfectly. The deconvolution
is junk.
TELL ME! HOW IS THIS DONE, REALLY? What can I do to make it work?
Thanks in advance -- email replies and I'll summarize.
--
_ |__ Alex Matulich (alex@bilver.UUCP)
/(+__> Unicorn Research Corp, 4621 N Landmark Dr, Orlando, FL 32817
//| \ UUCP: ...uunet!tarpit!bilver!alex
///__) bitnet: IN%"bilver!alex@uunet.uu.net"cosgrok@jacobs.CS.ORST.EDU (Kevin Cosgrove) (02/14/91)
In article <1991Feb9.034956.7993@bilver.uucp> alex@bilver.uucp (Alex Matulich) writes: [stuff deleted] >You will recall that the deconvolution of a function f with a response >function g is > >F(f decon g) = F(f) / F(g) > >where F() is the Fourier transform. See the problem? You have to DIVIDE >by the Fourier transform of g. In all my experiments, for any response >function I try, F(g) is zero somewhere (or near zero) which completely >messes up the result. Don't get too frustrated. We don't want to see you end up in a hospital or anything -- geese that's it! Could l'Hopital's rule help evaluate the function when the denominator goes to zero? If that doesn't work, you might try _Discrete-Time_Signal_Processing by Oppenheim and Schafer via Prentice-Hall Pub. as a reference. Chapter 12 covers deconvolution directly in the time domain, which could even be faster while inducing less noise -- but I'm not sure since I won't get to that chapter 'til next term. __ -- Kevin Cosgrove <cosgrok@jacobs.cs.orst.edu>
cjwein@watcgl.waterloo.edu (Chris J. Wein) (02/15/91)
In article <1991Feb14.042835.5631@lynx.CS.ORST.EDU> cosgrok@jacobs.CS.ORST.EDU (Kevin Cosgrove) writes: >In article <1991Feb9.034956.7993@bilver.uucp> alex@bilver.uucp (Alex Matulich) writes: >[stuff deleted] >>You will recall that the deconvolution of a function f with a response >>function g is >> >>F(f decon g) = F(f) / F(g) >> >>where F() is the Fourier transform. See the problem? You have to DIVIDE >>by the Fourier transform of g. In all my experiments, for any response >>function I try, F(g) is zero somewhere (or near zero) which completely >>messes up the result. > >Don't get too frustrated. We don't want to see you end up in a hospital >or anything -- geese that's it! Could l'Hopital's rule help evaluate >the function when the denominator goes to zero? > L'Hopital's Rule only works when both the numerator and the denominator become zero. The best example is finding the value of (sin x)/x at x=0. A singularity is a singularity and using l'Hopital's rule doesn't make it go away magically. -- ============================================================================== Chris Wein | cjwein@watcgl.waterloo.edu Computer Graphics Lab, CS Dept. | cjwein@watcgl.uwaterloo.ca University of Waterloo | (519) 888-4548