Forums

Improving SNR or a better Goertzel?

Started by Unknown February 25, 2007
Hello All,

I'll apologize in advance for the poor (none)  DSP knowledge and my
abuse of terminology and theory....

Over a year ago I started on an acoustic sensor project and received
some fantastic help from the regulars here. I've run into some
problems and was hoping for some suggestions.

Background: Detect and classifiy aircraft (piston/prop) from their
acoustic signatures with a PIC processor (not DSPic.... don't have a
compiler yet....) I achieved really good success rates using the
Goertzel algorithm to look for the presence of known frequencies in
the sample. It works well because the unique frequencies stand out so
well. Also, there is little or no background noise when the aircraft
are present.

Now I'm trying to detect and classify rotor-wing aircraft. I'm running
into problems because the SNR isn't as good. The exhaust noise and tip-
path noise is getting lost in the general 'helicopter self-
destruction' noise.

Is there any way to solve this problem?

Interesting freqs: 50-300hz
Sample rate: 1588hz
Number of samples: 512 optimum (1024 max, but really slows things
down)

Thanks,

John

On Feb 25, 9:49 am, jecottrel...@gmail.com wrote:
> Hello All, > > I'll apologize in advance for the poor (none) DSP knowledge and my > abuse of terminology and theory.... > > Over a year ago I started on an acoustic sensor project and received > some fantastic help from the regulars here. I've run into some > problems and was hoping for some suggestions. > > Background: Detect and classifiy aircraft (piston/prop) from their > acoustic signatures with a PIC processor (not DSPic.... don't have a > compiler yet....) I achieved really good success rates using the > Goertzel algorithm to look for the presence of known frequencies in > the sample. It works well because the unique frequencies stand out so > well. Also, there is little or no background noise when the aircraft > are present. > > Now I'm trying to detect and classify rotor-wing aircraft. I'm running > into problems because the SNR isn't as good. The exhaust noise and tip- > path noise is getting lost in the general 'helicopter self- > destruction' noise. > > Is there any way to solve this problem? > > Interesting freqs: 50-300hz > Sample rate: 1588hz > Number of samples: 512 optimum (1024 max, but really slows things > down) > > Thanks, > > John
Hello John, While I don't know much about the acoustic spectra of aircraft, I see a potentially big problem. How strong is your anti aliasing filter? The turbine seems like it will produce significant energy above 794 Hz (half of your sampling rate), and if your AA filter doesn't get rid of this, the aliased noise will obscure your frequencies of interest. Clay
Clay,

Good point. I had forgotten about that issue. There is a 800hz low
pass filter in hardware on the board. So, hopefully that should cover
that?

Also, I'm only concerned about a few piston helicopters right now.
Luckily, they have some good engine exhaust noise to go along with
rotor/tail rotor noise.

Thanks,

John


jecottrell65@gmail.com wrote:


> ... There is a 800hz low pass filter in hardware on the board. ...
How good? Do you have specs? Jerry -- Engineering is the art of making what you want from things you can get. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Jerry,

It's a 3 pole Butterworth. I can change components to reduce the cut-
off frequency, if that would help.

John

John wrote:
...
> Now I'm trying to detect and classify rotor-wing aircraft. I'm running > into problems because the SNR isn't as good. The exhaust noise and tip- > path noise is getting lost in the general 'helicopter self- > destruction' noise. > > Is there any way to solve this problem? > > Interesting freqs: 50-300hz > Sample rate: 1588hz > Number of samples: 512 optimum (1024 max, but really slows things > down)
So you have a vector of 512 samples (may extend up to 1024 if necessary), and you can assume that the vector is taken from a signal that contains a periodic component plus lots of additive noise. Now what is it exactly that you are looking for in the vector: the period of the signal, or the harmonic content (ie. ratio of overtone amplitudes)? Or something else? Or is this a classification problem, ie. the recording is always from some number of known aircrafts, and you just have to determine which one? If so, what classificiation algorithm are you using? Do you want help in the classification algorithm or just some tips on denoising? Are you the guy that tried to recognize cars from their engine noise (about a year ago)? Regards, Andor
Andor,

> So you have a vector of 512 samples (may extend up to 1024 if > necessary), and you can assume that the vector is taken from a signal > that contains a periodic component plus lots of additive noise.
I'm not sure what you are asking here. If you dumb it down for me I might be able to provide a better answer. The 512 (or 1024) samples are used to find the presence of frequencies that stand out above the noise.
> Now what is it exactly that you are looking for in the vector: the > period of the signal, or the harmonic content (ie. ratio of overtone > amplitudes)? Or something else?
I look for the harmonic content.
> Or is this a classification problem, ie. the recording is always from > some number of known aircrafts, and you just have to determine which > one? If so, what classificiation algorithm are you using? Do you want > help in the classification algorithm or just some tips on denoising?
Classification seems to work fairly well in a previous system. However, the transition to rotorcraft classification is being complicated by the significant frequencies being lost in the noise. This is further complicated by the limited capability of the hardware... which eliminates more advanced DSP. I think I can get things working if I can just get rid of some of the noise and get the good freqs to stand out more.
> Are you the guy that tried to recognize cars from their engine noise > (about a year ago)?
No, just interested in aircraft. Thanks, John
On 25 Feb., 23:27, jecottrel...@gmail.com wrote:
> Andor, > > > So you have a vector of 512 samples (may extend up to 1024 if > > necessary), and you can assume that the vector is taken from a signal > > that contains a periodic component plus lots of additive noise. > > I'm not sure what you are asking here. If you dumb it down for me I > might be able to provide a better answer. The 512 (or 1024) samples > are used to find the presence of frequencies that stand out above the > noise.
I was just recapulating the points necessary to ask further questions.
> > > Now what is it exactly that you are looking for in the vector: the > > period of the signal, or the harmonic content (ie. ratio of overtone > > amplitudes)? Or something else? > > I look for the harmonic content.
Using Goertzel would imply that you know the relevant frequencies (as opposed to a full blown DFT) in advance. How do you decide which frequenies to tune in?
> > > Or is this a classification problem, ie. the recording is always from > > some number of known aircrafts, and you just have to determine which > > one? If so, what classificiation algorithm are you using? Do you want > > help in the classification algorithm or just some tips on denoising? > > Classification seems to work fairly well in a previous system. > However, the transition to rotorcraft classification is being > complicated by the significant frequencies being lost in the noise. > This is further complicated by the limited capability of the > hardware... which eliminates more advanced DSP. I think I can get > things working if I can just get rid of some of the noise and get the > good freqs to stand out more.
You might want look at the adaptive line enhancer (ALE LMS - Fred has drawn a picture of this here: http://groups.google.com/group/comp.dsp/msg/681b868d4ddbc78c). This approach has several advantages: - Compared to Goertzel, you don't need to decide on the frequencies in advance. - If the noise is Gaussian (it probably isn't) and the signal is strictly periodic (that might be), the ALE gives you an optimal SNR improvement. - If the rate of the engine changes during the recording (unlikely to happen in the 512 samples = 0.32 seconds), the ALE adapts to it. - You can use it as a pre-processing stage for your classifier that works in high SNR environments. Rule of thumb for noisy signals: the more samples, the more accurate your measurement. 512 might not be enough in low SNR.
> > > Are you the guy that tried to recognize cars from their engine noise > > (about a year ago)? > > No, just interested in aircraft.
Ah well.
> > Thanks,
FWIW, Andor
jecottrell65@gmail.com wrote:
> Jerry, > > It's a 3 pole Butterworth. I can change components to reduce the cut- > off frequency, if that would help.
How many dB down is it at 800 Hz? at 900 Hz? Can you retune it to get a sharper cutoff by going Chebychev? Jerry -- Engineering is the art of making what you want from things you can get. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
jecottrell65@gmail.com wrote:

> Clay, > > Good point. I had forgotten about that issue. There is a 800hz low > pass filter in hardware on the board. So, hopefully that should cover > that? > > Also, I'm only concerned about a few piston helicopters right now. > Luckily, they have some good engine exhaust noise to go along with > rotor/tail rotor noise. >
If your Nyquist rate is less than 800Hz, an 800Hz filter isn't going to help you, unless you do additional filtering in software. http://www.wescottdesign.com/articles/Sampling/sampling.html -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Posting from Google? See http://cfaj.freeshell.org/google/ "Applied Control Theory for Embedded Systems" came out in April. See details at http://www.wescottdesign.com/actfes/actfes.html