Upload
johnny-goreham
View
224
Download
2
Tags:
Embed Size (px)
Citation preview
Rank Ordered Mean Noise Blankeror
Sliding Median Noise Blanker
(or how NB2 works!)
Phil Harman VK6APH
The Problem
Conventional (Analogue) Solutions
Noise Clipper Noise Blanker
A DSP Solution
An image processing technique
An image processing technique
Original Image Image + Impulse noise
Median Filtering
Median Filtered Image Image + Impulse noise
How Median Filtering works
7 17 18
15 200 9
12 11 14
How Median Filtering works
• Record the values nearby7, 9, 11, 12, 14, 15, 17, 18, 200
• Sort (Rank) the values 7, 9, 11, 12, 14, 15, 17, 18, 200
• The median is the middle of a distribution: half the scores are above the median and half below*.
7, 9, 11, 12, 14, 15, 17, 18, 200• The median is much less sensitive to extreme values and
makes it a better measure than the mean for highly skewed distributions e.g. the mean is 34
* For an even number of values use the average of centre values
Median Filtering Example
Median Filtering Example
Median Noise Blanker
0
20
40
60
80
100
120
140
160
Sample
Val
ue
Value
Value 0 17 34 50 64 150 87 94 98 100
1 2 3 4 5 6 7 8 9 10
Median Filtering Example
Median Noise Blanker
0
20
40
60
80
100
120
140
160
Sample
Val
ue Value
MNB
Value 0 17 34 50 64 150 87 94 98 100
MNB 0 17 34 50 64 76 87 94 98 100
1 2 3 4 5 6 7 8 9 10
Median Filtering Example - recap
• Look for samples that are outside the norm• Sort (Rank) the samples either side in Order• Calculate the median value • Replace the suspect sample with the median• Slide along to the next suspect sample and repeat• Issues:
– Processor intensive– Distortion if applied too aggressively– Only effective on impulse noise– Simpler technique gives equally good results.
Median Filtering Example
• Q. How do we detect suspect samples?
• A. Keep an average of all samples and look for samples that are greater than the average by some amount
e.g. average = 0.999last_sample + 0.001current_sample
• Code:
If sample > (threshold x average)
apply median filter
Pseudo Code
for i < buffer_size
mag = mag(signal,i)
“median” = 0.75median + 0.25(signal,i)
average = 0.999average + 0.001mag
if mag > (threshold x average)
(signal,i) = median
next i
SDR1000 Code
voidSDROMnoiseblanker(NB nb) { int i; for (i = 0; i < CXBsize(nb->sigbuf); i++) { REAL cmag = Cmag(CXBdata(nb->sigbuf, i)); nb->average_sig = Cadd(Cscl(nb->average_sig, 0.75),
Cscl(CXBdata(nb->sigbuf, i), 0.25)); nb->average_mag = 0.999 * (nb->average_mag) + 0.001 * cmag; if (cmag > (nb->threshold * nb->average_mag)) CXBdata(nb->sigbuf, i) = nb->average_sig; }}
Future Techniques
• Noise “Subtraction” (N4HY)– Detect the pulse– Determine what the receiver has done to it– Create a model of the pulse – Subtract the model from the signal– Completely linear process– If you get it wrong it will add a noise pulse!
Questions?
Rank Order Mean (ROM) Noise Banker
Sliding ROM Noise Blanker
Median Impulse Reduction