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