180 likes | 307 Views
Rank Ordered Mean Noise Blanker or Sliding Median Noise Blanker. (or how NB2 works!) Phil Harman VK6APH. The Problem. Conventiona l (Analogue) Solutions. Noise Blanker. Noise Clipper. A DSP Solution. An image processing technique. An image processing technique. Original Image.
E N D
Rank Ordered Mean Noise BlankerorSliding Median Noise Blanker (or how NB2 works!) Phil Harman VK6APH
Conventional (Analogue) Solutions Noise Blanker Noise Clipper
An image processing technique Original Image Image + Impulse noise
Median Filtering Image + Impulse noise Median Filtered Image
How Median Filtering works • Record the values nearby 7, 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 - 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 void SDROMnoiseblanker(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