EP0316402A1 - A fast median filter - Google Patents

A fast median filter

Info

Publication number
EP0316402A1
EP0316402A1 EP88904785A EP88904785A EP0316402A1 EP 0316402 A1 EP0316402 A1 EP 0316402A1 EP 88904785 A EP88904785 A EP 88904785A EP 88904785 A EP88904785 A EP 88904785A EP 0316402 A1 EP0316402 A1 EP 0316402A1
Authority
EP
European Patent Office
Prior art keywords
array
data point
pointer
median
recited
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP88904785A
Other languages
German (de)
French (fr)
Other versions
EP0316402A4 (en
Inventor
J. Howard Glover
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sundstrand Data Control Inc
Original Assignee
Sundstrand Data Control Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sundstrand Data Control Inc filed Critical Sundstrand Data Control Inc
Publication of EP0316402A1 publication Critical patent/EP0316402A1/en
Publication of EP0316402A4 publication Critical patent/EP0316402A4/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/0248Filters characterised by a particular frequency response or filtering method
    • H03H17/0261Non linear filters
    • H03H17/0263Rank order filters

Definitions

  • This invention relates generally to a filter for filtering high frequency noise from a signal, such as, a radio altimeter signal and, more particularly, to a fast median filter for filtering high frequency noise from a signal while preserving sharp edges in the signal by sorting a finite set of data points of the signal to determine the median of the set of data points without shifting or moving the data points in memory.
  • Radio altimeters are instruments that provide an indication of the distance of an aircraft above the terrain. These devices measure the time it takes for a radio signal at about 4300 mHz to travel from the aircraft to and from the terrain being overflown. If the terrain was a perfectly flat horizontal plane, mirror-like reflection of the radio signal would result. In this situation, the distance of the aircraft above the terrain could be measured exactly. However, the terrain is not perfectly flat, which results in scattering of the radio signal, consequently causing high frequency noise components in the radio altitude signal.
  • analog and digital to provide a suitable filter for filtering high frequency noise from a radio altimeter signal.
  • An example of an analog filter is disclosed in U.S. Patent No.
  • a radio altitude rate signal and a barometric altitude rate signal are applied to a complementary filter, comprised of a high pass filter and a low pass filter.
  • the radio altitude rate signal is applied to the low pass filter for removing high frequency noise components, while the barometric altitude rate signal is applied to the high pass filter.
  • the outputs of the filters are combined to provide a composite signal.
  • the complementary filter disclosed in Astengo, overcomes earlier encountered problems which attempted to remove high frequency noise components from radio altitude or radio altitude rate signals with analog filters. In those systems, low pass filters alone were used with sufficiently high time constants to remove high frequency noise. However, such filters provided an unsuitable response time to actual changes in the radio altitude. Although this problem is overcome in Astengo through the use of composite signal, such a system, among other things, also requires the use of a barometric altitude rate signal.
  • Mean filters are linear filters which provide the linear average of a signal applied to its input. While mean filters may be suitable in some applications, they provide unsatisfactory results for signals which have sharp edges. A radio altimeter will generate a signal with a sharp edge when the aircraft is flying over a steep cliff, ravine or the like. In such a situation, a mean filter will smooth out the signal edges as well as the. noise. Consequently, mean filters provide unsatisfactory results when used with signals having sharp edges.
  • Median filters are non-linear filters, which determine the median signal value for a finite neigh- borhood around each data point. For example, for the following sequential data points: 22, 16, 19, 18, 17; the median is 18, while the linear mean is 18.4. The mean is obtained by adding all the data points and dividing the resulting sum by the total number of data points.
  • Median filters are well adapted to filtering impulsive and high frequency noise from signals, while preserving sharp signal edges.
  • Median filters generally operate on a running array of, for example, 5 data points at a time. At each sample time, the group of 5 data points is sorted and the median determined.
  • Some conventional median filters sometimes call “bubblers", determine the median of an array by comparing each data point in succession with the data point immediately next to it and shifting the data point depending on the result of the comparison.
  • Such conventional median filters involve a substantial amount of manipulation of the data in memory. Specifically, a substantial number of memory access and move operations are required. Consequently, such operations result in a substantial amount of processing time and therefore are not suitable for filtering data at high input rates, such as the data from a radio altimeter.
  • SUMMARY OF THE INVENTION It is thus an object of the present invention to overcome the problems of conventional filters for filtering signals at high input data rates, such as radio altitude signals.
  • the present invention relates to a median filter for filtering high frequency noise from a signal with a relatively high input data rate, such as, a radio altitude signal.
  • the median filter operates on an array of a fixed number of data points.
  • a pointer is used to keep track of the oldest data point in the array.
  • Each time the median is determined a new data point is applied to the array and written over the oldest data point.
  • the median is determined each time the array is updated with a new data point.
  • the pointer is incremented each time the array is updated to keep track of the oldest data point in the array. When the pointer is pointing to the last data point in the array, the pointer is reset to point at the first data point in the array.
  • Each data pQint in the array is compared with each of the other data points in the array.
  • An index is incremented or decremented as a result of the comparison.
  • the index attains a value of zero, the median is located and the process is terminated. In cases of repeat data values in the array, the index may not go to zero. In this case, the minimum value of the index will correspond to the median.
  • the median filter according to the present invention requires neither shifting of data points when a new sample is introduced nor sorting of the array to find the median. The advantage of eliminating these steps is that the data is not required to be moved in memory. As such, the processing time is significantly reduced, thus allowing the filter to process data at a relatively high input rate, such as, radio altimeter signal data, in real time.
  • FIG. 1 is a plot of an input signal comprising a sine wave with high frequency noise components and the corresponding output signal from a filter in accordance with the present invention superimposed on the plot;
  • FIG. 2 is a plot of an input signal comprising a square wave with high frequency components and the corresponding output signal from a filter in accordance with the present invention superimposed on the plot;
  • FIG. 3 is a block diagram of a system utilizing the median filter in accordance with the present invention
  • FIG. 4 is a flow chart illustrating an important aspect of the present invention regarding manipulation of the input data
  • FIG. 5 illustrates six arrays showing how the pointer is incremented as new data points in the array are updated with new data points
  • FIG. 6 is a flow chart of the median filter in accordance with the present invention.
  • median filter in accordance with the present invention will hereinafter be described in detail as a filter for suppressing high frequency noise in a radio altitude signal while preserving sharp signal edges, it is to be understood that the principles of the invention are not limited to such use. The principles of the invention are equally applicable to be used with any input signal wherein it is required to filter out high frequency noise while preserving signal edges.
  • a typical input signal for example, from a radio altimeter, is illustrated and identified by the reference numeral 10.
  • the input signal 10 comprises a sine wave, which may result when an aircraft is flying over undulating terrain.
  • the high frequency noise is represented by the small spikes appearing all along the curve.
  • the spikes are due, in part, to ground scattering of the radio signal due to the fact that the terrain is not perfectly flat, which results in non-specular reflection of the radio waves back to the radar altimeter.
  • the signal identified by the reference numeral 12, superimposed on FIG. 1, represents the output signal from a median filter in accordance with the present invention, which receives an input signal similar to the input signal 10.
  • the spikes or high frequency noise components are fairly well smoothed out, thus improving the signal-to-noise ratio.
  • FIG. 2 represents another typical input signal comprising a square wave, for example, from a radio altimeter, and identified by the reference numeral 14. Similar to the signal 10 in FIG. 1, the square wave input signal also contains high frequency noise represented by the spikes along the curve 14.
  • the square wave signal is shown to illustrate an important aspect of the invention; namely, the ability of the median filter to preserve sharp signal edges.
  • An input signal, such as signal 14, may represent that an aircraft is flying over a ravine or a steep cliff.
  • Some conventional filters as described in an article entitled, "Generalized Median Filtering and Related Non-Linear Filtering Techniques", IEEE Transactions on Acoustics, Speech and Signal Processing, Lee and Kassom, Volume ASSP-33, No.
  • the signal identified by the numeral 16 represents the response of a median filter in accordance with the present invention when an input signal, such as, the signal 14 is applied to its input.
  • the high frequency noise is fairly well suppressed, thus improving the signal-to-noise ratio of the signal, while preserving the sharp signal edges.
  • FIG. 2 also illustrates another important aspect of the median filter in accordance with the present invention.
  • the horizontal portion of the sine wave 14 represents a monotonic data trend.
  • Monotonic trends are data sequences wherein data points within a finite neighborhood are repeated. Some digital filters are unable to preserve such monotonic trends.
  • the median filter of the present invention not only preserves sharp signal edges while suppressing high frequency noise, it also preserves monotonic trends.
  • FIG. 3 a representative system incorporating the median filter in accordance with the present invention is illustrated.
  • the median filter according to the present invention is described in conjunction with a signal from a radio altimeter, it will be understood by those of ordinary skill in the art that the principles of the invention are not so limited.
  • the output signal from a conventional radio altimeter is applied to an input device 20.
  • Typical output signals from the radio altimeter may be as illustrated in FIGS. 1 and 2 and identified by the reference numerals 10 and 14, respectively.
  • the input device 20 is not a part of the present invention. Any input device can be utilized that is adapted to sampling the input signal at a rate of approximately twice the frequency of the input signal.
  • the digitized radio altimeter signal is then applied to the median filter 22.
  • the basic principles of the median filter in accordance with the present invention can be implemented with various conventional microprocessors, minicomputers, and the like utilizing the algorithm illustrated in FIG. 4 and described in detail below.
  • the output signal from the median filter 22 is subsequently applied to a conventional output device 24, which may contain a digital-to-analog converter
  • DAC Any conventional DAC which is compatible with the data rate of the system is suitable.
  • the output signal of the DAC represents an analog equivalent of the response of the median filter 22, such as the output signals 12 and 14 in FIGS. 1 and 2, respectively.
  • These output signals may then be applied to various warning and control systems which require a radio altitude signal. Examples of systems requiring a radio altitude signal are contained in U.S. Patents Nos. 3,715,718, 3,925,751; 3,934,221; 3,936,796;
  • FIG. 4 a flow chart is provided which illustrates an important aspect of the invention regarding data handling.
  • the data is loaded into a running array having a fixed number of elements.
  • a five-element array is utilized.
  • the invention is not so limited. The principles of the invention are applicable to any array having an odd number of elements.
  • the initial step 26 of the median filter is to load a predetermined number of input data points into an array having an odd number of elements. As illustrated in FIG. 4, a five-element array is used; however, other arrays with an odd number of elements could also be used.
  • FIG. 5 illustrates the operation of the pointer 30.
  • An important aspect of the invention is that the pointer 30 always keeps track of the oldest data point in the array. After the data is loaded into the array, the pointer 30 in the step 28 is set to point to the oldest data point in the array. As shown in FIG.
  • the pointer is shown pointing to data point D 1 in the array 42, which is the oldest data point of the set of data points D 1 through D 5 , inclusive.
  • the five data points in the array are then input into the median filter in accordance with the present invention in step 32.
  • the median of the five data points is determined by the median filter in accordance with the present invention and discussed in detail below.
  • the array is updated in step 34 with a new data point, identified as D N1 in FIG. 5, and written over the oldest data point, which is data point D 1 .
  • the updated array 44 thus comprises data points D N1 and D2 through D5' as illustrated in FIG. 5.
  • the pointer 30 is incremented to point to the oldest data point in the array. Since the previous oldest data point D 1 has been replaced with a new data point D N1 , the pointer 30 is thus set to data point D 2 .
  • the process of updating the data points in the array and keeping track of the oldest data point is continued until the pointer reaches the last element of the array, such as shown in array 50.
  • the system checks in step 38 (FIG. 4) to determine if the pointer is set to the last position in the array.
  • the process continues as heretofore described. If the pointer 30 is set at the last position in the array, the pointer 30 is reset to point to the first element in the array in step 40.
  • the arrays 50 and 52 in FIG. 5 illustrate how the pointer is reset. After the pointer 30 is reset, the process continues until all of the data points in the array are replaced with new data points. The pointer is subsequently reset again.
  • the process is an endless process and will continue as long as new data points are applied to the median filter.
  • it is not necessary to access and move the data in memory, as in conventional systems. Instead, each new data point is written over the oldest data point in the array. By eliminating the data moves, a substantial amount of processing time is saved which allows the system to handle data at a relatively high rate, such as a radio altimeter signal data.
  • FIG. 6 represents a flow chart for implementing a fast median filter 32 in accordance with the present invention.
  • the median filter 32 is adapted to receive a predetermined number of data points at a time in an array and determine the median of the array. The data points are loaded into the array as discussed earlier.
  • two counters are initialized in step 54.
  • One counter, identified as CCOUNT is set to zero.
  • CCOUNT is set to zero.
  • the median is determined when the counter CCOUNT returns to zero.
  • the counter CCOUNT will not return to zero. This is generally true when monotonic data sequences are processed.
  • Monotonic data sequences are data sequences that contain repeated successive data points.
  • CCMIN is utilized to indicate the median for monotonic data sequences. As will be discussed below, in these cases, the element with the smallest count is determined to be the median.
  • the counter CCMIN is initialized in step 42 with a value of 4. This value was selected because of a five- element array being used as an example. If other array sizes are used, then the initial value of the counter CCMIN will have to be adjusted accordingly.
  • the filter continuously compares each data point in the array with each other data point to determine the median. For example, in the first cycle the first data point, D 1 , is compared individually with the data points D 2 , D 3 , D 4 and D 5 . Subsequently in the second cycle the second data point D 2 is compared with the data points D 1 ,
  • a variable Xtemp is set equal to the first data point in the array ain[i], in step 56.
  • step 66 the system proceeds to the step 66 so that the next sucessive data point in the array is compared with Xtemp in step 60. If the value of the data point ain[j] is greater than the value of Xtemp, the counter CCOUNT is incremented as indicated by step 62. If the value of the data point ain[j] is not greater than the value of Xtemp, the counter CCOUNT is decremented as indicated by step 64 , In the next step 66, ain[j] is incremented to the next successive data point in the array, ain[j+1]. Subsequently, in step 68, the system determines if Xtemp has been compared with all of the other data points in the array.
  • step 70 the system interrogates the counter CCOUNT to determine if it has a value of zero. If the counter CCOUNT is equal to zero at step 70, Xtemp will correspond to the median and further processing is terminated and the system advances to the end step 82. If the counter CCOUNT is not equal to zero, its contents are compared with the counter CCMIN in step 72.
  • Step 72 and several succeeding steps provide a mechanism for keeping track of the minimum value of the counter CCOUNT in case the median filter is processing data, such as a monotonic data sequence, in which case, the counter CCOUNT may not equal zero at step 70.
  • the value of the counter CCOUNT is compared with the value of counter CMIN. If the count of counter CCOUNT is less than the count of counter CCMIN, the counter CCMIN is set to the value of counter CCOUNT in step 74 and a variable Xt1 is set to Xtemp.
  • This step 74 keeps track of the minimum count of the counter CCMIN at the end of each cycle and the data point corresponding to the minimum value of the counter CCOUNT for situations where the median filter is processing monotonic data trends.
  • step 76 the data point corresponding to the minimum count of the counter CCOUNT will represent the median.
  • step 76 Xtemp is set to equal the next successive data point in the array.
  • step 78 the system determines if each data point in the array has been individually compared with all of the other data points in the array. If so, the processing is completed. If not, steps 56-78 are repeated.
  • step 80 the variable Xtemp is set to the value of the variable Xt1.
  • the variable Xt1 corresponds to the data point corresponding to the minimum count of the counter CCOUNT at the end of any cycle. Xt1 will thus correspond to the median in the last step 82. The process as described will continueas long as the array is updated with new data points.
  • a unique fast median filter which is capable of processing signals having a relatively high input data rate, such as radio altimeter signal.
  • the system can be implemented in any number of ways. For example, it may be implemented on a microprocessor and coded in machine or assembly language and/or in high level languages, such as, PASCAL, on machines having PASCAL compilers, without deviating from the principles of the invention.
  • PASCAL is particularly adapted to the system since it is designed to process sequential data.
  • five arbitrary data points were selected to demonstrate the function of the median filter in accordance with the present invention. For each cycle, the values of the counters have been determined manually to illustrate the function of the algorithm. As can be noted for the sequential data points 20, 16, 19, 18, 17, the median is determined after four cycles to be 18, which it is.
  • VAR i, j, ccount, ccmin INTEGER
  • xtemp, xt1 REAL

Abstract

Un filtre médian rapide (22) permet de filtrer le bruit haute fréquence à partir de signaux, tels que des signaux (10, 14) provenant d'un radio-altimètre. Le filtre (22) fournit de manière continue la valeur moyenne d'un nombre prédéterminé de points du signal, ces points étant reçus dans une zone, par comparaison (60) successive de chaque point de donnée dans la zone, les uns par rapport aux autres. Un compteur est soit incrémenté (62) soit décrémenté (64) en fonction du résultat de chaque comparaison. Si le compteur atteint une valeur prédéterminée à la fin de la séquence de comparaison, la valeur moyenne est déterminée. Un pointeur (30) suit le point de donnée le plus ancien dans la zone (42). Après détermination de la valeur moyenne, un nouveau point de donnée est reçu dans la zone et écrit sur le point de donnée le plus ancien (34). La valeur moyenne de la zone est déterminée à chaque fois que la zone est mise à jour avec un nouveau point de donnée (32). Lorsque le pointeur atteint la dernière position dans la zone, le pointeur est remis dans la première position et est incrémenté ultérieurement de la même manière (40).A fast median filter (22) filters high frequency noise from signals, such as signals (10, 14) from a radio altimeter. The filter (22) continuously supplies the average value of a predetermined number of points of the signal, these points being received in a zone, by comparison (60) successive of each data point in the zone, with respect to the other. A counter is either incremented (62) or decremented (64) according to the result of each comparison. If the counter reaches a predetermined value at the end of the comparison sequence, the average value is determined. A pointer (30) follows the oldest data point in the area (42). After determining the average value, a new data point is received in the area and written to the oldest data point (34). The average value of the area is determined each time the area is updated with a new data point (32). When the pointer reaches the last position in the area, the pointer is returned to the first position and is subsequently incremented in the same way (40).

Description

A FAST MEDIAN FILTER BACKGROUND OF THE INVENTION 1. Field of the Invent ion
This invention relates generally to a filter for filtering high frequency noise from a signal, such as, a radio altimeter signal and, more particularly, to a fast median filter for filtering high frequency noise from a signal while preserving sharp edges in the signal by sorting a finite set of data points of the signal to determine the median of the set of data points without shifting or moving the data points in memory.
2. Description of the Prior Art
Radio altimeters are instruments that provide an indication of the distance of an aircraft above the terrain. These devices measure the time it takes for a radio signal at about 4300 mHz to travel from the aircraft to and from the terrain being overflown. If the terrain was a perfectly flat horizontal plane, mirror-like reflection of the radio signal would result. In this situation, the distance of the aircraft above the terrain could be measured exactly. However, the terrain is not perfectly flat, which results in scattering of the radio signal, consequently causing high frequency noise components in the radio altitude signal. There have been various attempts in the art, both analog and digital, to provide a suitable filter for filtering high frequency noise from a radio altimeter signal. An example of an analog filter is disclosed in U.S. Patent No. 3,715,718 to Astengo, which is assigned to the same assignee as the assignee of the present invention. In Astengo, a radio altitude rate signal and a barometric altitude rate signal are applied to a complementary filter, comprised of a high pass filter and a low pass filter. The radio altitude rate signal is applied to the low pass filter for removing high frequency noise components, while the barometric altitude rate signal is applied to the high pass filter. The outputs of the filters are combined to provide a composite signal. The complementary filter, disclosed in Astengo, overcomes earlier encountered problems which attempted to remove high frequency noise components from radio altitude or radio altitude rate signals with analog filters. In those systems, low pass filters alone were used with sufficiently high time constants to remove high frequency noise. However, such filters provided an unsuitable response time to actual changes in the radio altitude. Although this problem is overcome in Astengo through the use of composite signal, such a system, among other things, also requires the use of a barometric altitude rate signal.
There are also various digital techniques for filtering noisy signals, such as, radio altitude or radio altitude rate signals, both linear and nonlinear. One technique is known as a mean filter. Mean filters are linear filters which provide the linear average of a signal applied to its input. While mean filters may be suitable in some applications, they provide unsatisfactory results for signals which have sharp edges. A radio altimeter will generate a signal with a sharp edge when the aircraft is flying over a steep cliff, ravine or the like. In such a situation, a mean filter will smooth out the signal edges as well as the. noise. Consequently, mean filters provide unsatisfactory results when used with signals having sharp edges.
Another type of filter used in such applications is a median filter. Such filters and related filters are generally described in an article entitled, "Generalized Median Filtering and Related Non-Linear Filtering Techniques", published in IEEE Translations on Acoustics, Speech and Signal Processing, Vol. ASSP- 33, No. 3, June 1985.
Median filters are non-linear filters, which determine the median signal value for a finite neigh- borhood around each data point. For example, for the following sequential data points: 22, 16, 19, 18, 17; the median is 18, while the linear mean is 18.4. The mean is obtained by adding all the data points and dividing the resulting sum by the total number of data points.
Median filters are well adapted to filtering impulsive and high frequency noise from signals, while preserving sharp signal edges. Median filters generally operate on a running array of, for example, 5 data points at a time. At each sample time, the group of 5 data points is sorted and the median determined. Some conventional median filters, sometimes call "bubblers", determine the median of an array by comparing each data point in succession with the data point immediately next to it and shifting the data point depending on the result of the comparison. Such conventional median filters involve a substantial amount of manipulation of the data in memory. Specifically, a substantial number of memory access and move operations are required. Consequently, such operations result in a substantial amount of processing time and therefore are not suitable for filtering data at high input rates, such as the data from a radio altimeter. SUMMARY OF THE INVENTION It is thus an object of the present invention to overcome the problems of conventional filters for filtering signals at high input data rates, such as radio altitude signals.
It is another object of the present invention to provide a filter which can reduce high frequency noise.
It is another object of the invention to provide a filter which can preserve sharp signal edges.
Briefly, the present invention relates to a median filter for filtering high frequency noise from a signal with a relatively high input data rate, such as, a radio altitude signal. The median filter operates on an array of a fixed number of data points. A pointer is used to keep track of the oldest data point in the array. Each time the median is determined a new data point is applied to the array and written over the oldest data point. The median is determined each time the array is updated with a new data point. The pointer is incremented each time the array is updated to keep track of the oldest data point in the array. When the pointer is pointing to the last data point in the array, the pointer is reset to point at the first data point in the array. Each data pQint in the array is compared with each of the other data points in the array. An index is incremented or decremented as a result of the comparison. When the index attains a value of zero, the median is located and the process is terminated. In cases of repeat data values in the array, the index may not go to zero. In this case, the minimum value of the index will correspond to the median. The median filter according to the present invention requires neither shifting of data points when a new sample is introduced nor sorting of the array to find the median. The advantage of eliminating these steps is that the data is not required to be moved in memory. As such, the processing time is significantly reduced, thus allowing the filter to process data at a relatively high input rate, such as, radio altimeter signal data, in real time.
BRIEF DESCRIPTION OF THE DRAWING The above and other objects and advantages of the present invention will become apparent from the following detailed description of the preferred embodiment of the present invention illustrated in the accompanying drawing, wherein:
FIG. 1 is a plot of an input signal comprising a sine wave with high frequency noise components and the corresponding output signal from a filter in accordance with the present invention superimposed on the plot;
FIG. 2 is a plot of an input signal comprising a square wave with high frequency components and the corresponding output signal from a filter in accordance with the present invention superimposed on the plot;
FIG. 3 is a block diagram of a system utilizing the median filter in accordance with the present invention; FIG. 4 is a flow chart illustrating an important aspect of the present invention regarding manipulation of the input data;
FIG. 5 illustrates six arrays showing how the pointer is incremented as new data points in the array are updated with new data points; and
FIG. 6 is a flow chart of the median filter in accordance with the present invention.
DETAILED DESCRIPTION OF THE INVENTION
While the median filter in accordance with the present invention will hereinafter be described in detail as a filter for suppressing high frequency noise in a radio altitude signal while preserving sharp signal edges, it is to be understood that the principles of the invention are not limited to such use. The principles of the invention are equally applicable to be used with any input signal wherein it is required to filter out high frequency noise while preserving signal edges.
Referring to the drawing and in particular FIG. 1, a typical input signal, for example, from a radio altimeter, is illustrated and identified by the reference numeral 10. The input signal 10 comprises a sine wave, which may result when an aircraft is flying over undulating terrain. The high frequency noise is represented by the small spikes appearing all along the curve. The spikes are due, in part, to ground scattering of the radio signal due to the fact that the terrain is not perfectly flat, which results in non-specular reflection of the radio waves back to the radar altimeter. The signal, identified by the reference numeral 12, superimposed on FIG. 1, represents the output signal from a median filter in accordance with the present invention, which receives an input signal similar to the input signal 10. As will be noted, the spikes or high frequency noise components are fairly well smoothed out, thus improving the signal-to-noise ratio.
FIG. 2 represents another typical input signal comprising a square wave, for example, from a radio altimeter, and identified by the reference numeral 14. Similar to the signal 10 in FIG. 1, the square wave input signal also contains high frequency noise represented by the spikes along the curve 14. The square wave signal is shown to illustrate an important aspect of the invention; namely, the ability of the median filter to preserve sharp signal edges. An input signal, such as signal 14, may represent that an aircraft is flying over a ravine or a steep cliff. Some conventional filters, as described in an article entitled, "Generalized Median Filtering and Related Non-Linear Filtering Techniques", IEEE Transactions on Acoustics, Speech and Signal Processing, Lee and Kassom, Volume ASSP-33, No. 3, June 1985, smooth out sharp edges, thereby distorting input signals with sharp edges. When a signal, such as, a square wave signal 14, is applied to a median filter in accordance with the present invention, the sharp edges are preserved. Referring back to FIG. 2, the signal identified by the numeral 16 represents the response of a median filter in accordance with the present invention when an input signal, such as, the signal 14 is applied to its input. As illustrated, the high frequency noise is fairly well suppressed, thus improving the signal-to-noise ratio of the signal, while preserving the sharp signal edges.
FIG. 2 also illustrates another important aspect of the median filter in accordance with the present invention. In particular, the horizontal portion of the sine wave 14, represents a monotonic data trend. Monotonic trends are data sequences wherein data points within a finite neighborhood are repeated. Some digital filters are unable to preserve such monotonic trends. The median filter of the present invention not only preserves sharp signal edges while suppressing high frequency noise, it also preserves monotonic trends.
Referring to FIG. 3, a representative system incorporating the median filter in accordance with the present invention is illustrated. As heretofore stated, although the median filter according to the present invention is described in conjunction with a signal from a radio altimeter, it will be understood by those of ordinary skill in the art that the principles of the invention are not so limited.
The output signal from a conventional radio altimeter is applied to an input device 20. Typical output signals from the radio altimeter may be as illustrated in FIGS. 1 and 2 and identified by the reference numerals 10 and 14, respectively. The input device 20 is not a part of the present invention. Any input device can be utilized that is adapted to sampling the input signal at a rate of approximately twice the frequency of the input signal. Also shown for convenience with the block, and identified by the reference numeral 20, is an analog-to-digital converter (ADC). Any conventional ADC is suitable that can handle the throughput or data rate of the input signal. The digitized radio altimeter signal is then applied to the median filter 22. The basic principles of the median filter in accordance with the present invention can be implemented with various conventional microprocessors, minicomputers, and the like utilizing the algorithm illustrated in FIG. 4 and described in detail below. The output signal from the median filter 22 is subsequently applied to a conventional output device 24, which may contain a digital-to-analog converter
(DAC). Any conventional DAC which is compatible with the data rate of the system is suitable. The output signal of the DAC represents an analog equivalent of the response of the median filter 22, such as the output signals 12 and 14 in FIGS. 1 and 2, respectively. These output signals may then be applied to various warning and control systems which require a radio altitude signal. Examples of systems requiring a radio altitude signal are contained in U.S. Patents Nos. 3,715,718, 3,925,751; 3,934,221; 3,936,796;
3,946,358; 3,947,808; 3,947,809; 3,947,810; 3,958,218; 3,988,713; 4,030,065? 4,060,793 and 4,215,334.
Referring to FIG. 4, a flow chart is provided which illustrates an important aspect of the invention regarding data handling. Generally, the data is loaded into a running array having a fixed number of elements. As illustrated in FIGS. 4, 5 and 6, and as hereinafter described, a five-element array is utilized. However, as will be appreciated by those of ordinary skill in the art, the invention is not so limited. The principles of the invention are applicable to any array having an odd number of elements.
The initial step 26 of the median filter is to load a predetermined number of input data points into an array having an odd number of elements. As illustrated in FIG. 4, a five-element array is used; however, other arrays with an odd number of elements could also be used. In order to provide a better understanding of this aspect of the invention, FIG. 5 is provided and will be referred to in connection with the description of the algorithm in FIG. 4. FIG. 5 illustrates the operation of the pointer 30. An important aspect of the invention is that the pointer 30 always keeps track of the oldest data point in the array. After the data is loaded into the array, the pointer 30 in the step 28 is set to point to the oldest data point in the array. As shown in FIG. 5, the pointer is shown pointing to data point D1 in the array 42, which is the oldest data point of the set of data points D1 through D5, inclusive. After the pointer 30 is set in step 28 to point to the oldest data point in the array, the five data points in the array are then input into the median filter in accordance with the present invention in step 32. In this step 32, the median of the five data points is determined by the median filter in accordance with the present invention and discussed in detail below. After the median of the array is determined, the array is updated in step 34 with a new data point, identified as DN1 in FIG. 5, and written over the oldest data point, which is data point D1. After the step 34 is executed, the updated array 44 thus comprises data points DN1 and D2 through D5' as illustrated in FIG. 5. In the next step 36, the pointer 30 is incremented to point to the oldest data point in the array. Since the previous oldest data point D1 has been replaced with a new data point DN1, the pointer 30 is thus set to data point D2. The process of updating the data points in the array and keeping track of the oldest data point is continued until the pointer reaches the last element of the array, such as shown in array 50. Each time the pointer is incremented, the system checks in step 38 (FIG. 4) to determine if the pointer is set to the last position in the array. If the pointer 30 is not set at the last position in the array, the process continues as heretofore described. If the pointer 30 is set at the last position in the array, the pointer 30 is reset to point to the first element in the array in step 40. The arrays 50 and 52 in FIG. 5 illustrate how the pointer is reset. After the pointer 30 is reset, the process continues until all of the data points in the array are replaced with new data points. The pointer is subsequently reset again. The process is an endless process and will continue as long as new data points are applied to the median filter. By utilizing the heretofore described process for data handling, it is not necessary to access and move the data in memory, as in conventional systems. Instead, each new data point is written over the oldest data point in the array. By eliminating the data moves, a substantial amount of processing time is saved which allows the system to handle data at a relatively high rate, such as a radio altimeter signal data.
FIG. 6 represents a flow chart for implementing a fast median filter 32 in accordance with the present invention. The median filter 32 is adapted to receive a predetermined number of data points at a time in an array and determine the median of the array. The data points are loaded into the array as discussed earlier. Once the data is input into the median filter 32, two counters are initialized in step 54. One counter, identified as CCOUNT, is set to zero. As the data points in the array are manipulated, the median is determined when the counter CCOUNT returns to zero. However, as a result of certain input data sequences, the counter CCOUNT will not return to zero. This is generally true when monotonic data sequences are processed. Monotonic data sequences are data sequences that contain repeated successive data points. Another counter, CCMIN is utilized to indicate the median for monotonic data sequences. As will be discussed below, in these cases, the element with the smallest count is determined to be the median. The counter CCMIN is initialized in step 42 with a value of 4. This value was selected because of a five- element array being used as an example. If other array sizes are used, then the initial value of the counter CCMIN will have to be adjusted accordingly. After the counters are initialized, the filter continuously compares each data point in the array with each other data point to determine the median. For example, in the first cycle the first data point, D1, is compared individually with the data points D2, D3, D4 and D5. Subsequently in the second cycle the second data point D2 is compared with the data points D1,
D3, D4 and D5. This process continues until the last data point in the array D5 has been compared with data points D1, D2, D3 and D4. At the end of each cycle, the value of the counter CCOUNT is examined. If the value of the counter CCOUNT returns to zero at the end of any loop, then the median is determined.
More specifically, after the counters CCOUNT and CCMIN are initialized, a variable Xtemp is set equal to the first data point in the array ain[i], in step 56. The notation ain[i] and ain[j] is used to represent a particular data point in the array and identifies the position of the data point in the array. For example, referring to array 42 in FIG. 5, ain[1] = D1; ain[2] = D2 and so on. To save processing time, the system prevents a data point from being compared with itself in step 58. Thus, a data point will not be compared with itself, e.g., when i = j. In such a case, the system proceeds to the step 66 so that the next sucessive data point in the array is compared with Xtemp in step 60. If the value of the data point ain[j] is greater than the value of Xtemp, the counter CCOUNT is incremented as indicated by step 62. If the value of the data point ain[j] is not greater than the value of Xtemp, the counter CCOUNT is decremented as indicated by step 64 , In the next step 66, ain[j] is incremented to the next successive data point in the array, ain[j+1]. Subsequently, in step 68, the system determines if Xtemp has been compared with all of the other data points in the array. If not, the system continues comparing Xtemp with the other data points in the array until Xtemp has been compared with all of the other data points in the array. Meanwhile, the counter CCOUNT is incremented . or decremented depending on the results of each comparison. If Xtemp has been compared with all of the other data points in the array, a cycle is completed and the system proceeds to the step 70. In this step 70, the system interrogates the counter CCOUNT to determine if it has a value of zero. If the counter CCOUNT is equal to zero at step 70, Xtemp will correspond to the median and further processing is terminated and the system advances to the end step 82. If the counter CCOUNT is not equal to zero, its contents are compared with the counter CCMIN in step 72. Step 72 and several succeeding steps provide a mechanism for keeping track of the minimum value of the counter CCOUNT in case the median filter is processing data, such as a monotonic data sequence, in which case, the counter CCOUNT may not equal zero at step 70. Speci fically, the value of the counter CCOUNT is compared with the value of counter CMIN. If the count of counter CCOUNT is less than the count of counter CCMIN, the counter CCMIN is set to the value of counter CCOUNT in step 74 and a variable Xt1 is set to Xtemp. This step 74 keeps track of the minimum count of the counter CCMIN at the end of each cycle and the data point corresponding to the minimum value of the counter CCOUNT for situations where the median filter is processing monotonic data trends. In such a case, the data point corresponding to the minimum count of the counter CCOUNT will represent the median. Subsequently, in step 76, Xtemp is set to equal the next successive data point in the array. In the step 78, the system determines if each data point in the array has been individually compared with all of the other data points in the array. If so, the processing is completed. If not, steps 56-78 are repeated. In step 80, the variable Xtemp is set to the value of the variable Xt1. The variable Xt1 corresponds to the data point corresponding to the minimum count of the counter CCOUNT at the end of any cycle. Xt1 will thus correspond to the median in the last step 82. The process as described will continueas long as the array is updated with new data points.
Thus, it should be apparent that a unique fast median filter has been described which is capable of processing signals having a relatively high input data rate, such as radio altimeter signal. The system can be implemented in any number of ways. For example, it may be implemented on a microprocessor and coded in machine or assembly language and/or in high level languages, such as, PASCAL, on machines having PASCAL compilers, without deviating from the principles of the invention. PASCAL is particularly adapted to the system since it is designed to process sequential data. In Appendix 2, five arbitrary data points were selected to demonstrate the function of the median filter in accordance with the present invention. For each cycle, the values of the counters have been determined manually to illustrate the function of the algorithm. As can be noted for the sequential data points 20, 16, 19, 18, 17, the median is determined after four cycles to be 18, which it is.
Obviously, many modifications and variations of the present invention are possible in light of the above teachings. Thus, it is to be understood that, within the scope of the appended claims, the invention may be practiced otherwise than as specifically described above. What is claimed and desired to be secured by Letters Patent of the United States is:
APPENDIX 1
MEDIAN FILTER ALGORITHM
LABEL 100, 200;
VAR i, j, ccount, ccmin : INTEGER; xtemp, xt1 : REAL;
BEGIN
FOR := 1 to 5 DO
BEGIN xtemp ;= ain[i] ; ccount := O; (Initialize ccount and ccmin) ccmin := 4; FOR j := 1 to 5 DO BEGIN
IF j = i THEN GOTO 100; (Don't compare element with itself.) IF ain[j] xtemp THEN ccount := ccount + 1 ELSE ccount := ccount - 1; 100: END;
IF ccount = 0 THEN GOTO 200; (Median is located - jump out of loop.)
IF ccount ccmin THEN (Else, keep track of smallest ccount.)
BEGIN ccmin := ccount; xt1 := xtemp;
END;
END; xtemp : = xt1; (Exit loop to here if ccount 0. Take xtl, which is value of element of ain which has smallest corresponding value of ccount.)
200: (jump to here is ccount = 0, - xtemp is median.) median := xtemp;
END.
INPUT DATA MANIPULATION (Main program: Read input data into arin, call filter and plot results.) BEGIN
RESET (medfiltin); REWRITE (medfilout); (Read input data:0 i := 1; WHILE NOT EOF (medfiltin) DO
BEGIN
READLN (medfiltin, time[i], arin[i, 1], arin
[i, 2]);
END nin := i - 1;
(Load 5-array, and call median filter. Note that elements of the array are not shifted to accommodate new data point: an index (iplace) which identifies the 'oldest' element in the array is updated, and allows the new data point to replace the oldest.) FOR krun : = 1 TO 2 DO BEGIN FOR i : = 1 TO 5 DO movar[i] := arin [i]; (initial five points.) iplace : = 1; (Initial value of iplace.) (Now filter each of the elements of arin in turn:) FOR ipoint := 6 TO nin DO BEGIN medfind (movar, median); filtout [ipoint, krun] := median; (put value in plot array.) movar [iplace] := arin [ipoint, krun); (Replace 'oldest' point with new input.) iplace := iplace + 1; IF iplace 5 THEN iplace := 1; END; END.
APPENDIX 2
O PERATION OF MEDIAN FILTER
Select data poiiits 20 16 19 18 17 i = 1 i = 2
Xtemp = 20 Xtemp = 16
CCOUNT = 0 CCOUNT = 0
CCMIN = 4 CCMIN = 4
J=1: * J=1: AIN[20] 16? Yes CCOUNT = 1
J=2: AIN[163 20? NO. J=2: * CCOUNT = -1
J+3: AIN[19] 20? No. J=3: AIN[19] 16? Yes
CCOUNT = 2 CCOUNT = 2
J=4: AIN[18] 20? NO. J=4: AIN[183 16? Yes
CCOUNT = 3 CCOUNT = 3
J=5: AIN[17] 20? NO. J=5: AIN[17] 16? Yes.
CCOUNT = _4 CCOUNT = 4 i = 3 i = 4
Xterap = 19 Xtemp = 18
CCOUNT = 0 CCOUNT = 0
CCMIN = 4 CCMIN = 4
J=1: AIN[20] 19? Yes J=1: AIN[20] 18? Yes
CCOUNT = 1 CCOUNT = 1
J=2: AINT16] 19? No. J=2 : AIN[16] 18? No.
CCOUNT = 0 CCOUNT = 0
J+3: * J=3: AIN[19] 18? Yes CCOUNT = 1
J=4: AIN[18] 19? No. J=4: * CCOUNT = _1
J=5: AIN[17] 19? No. J=5: AIN[17] 18? No
CCOUNT = _2 CCOUNT = 0
* Number is not compared with itself. **Median is located, exit loop

Claims

1. A fast median filter for determining the median of a predetermined number of sequential data points comprising: input means for receiving sequential data points in an array having a predetermined number of locations; means for receiving said predetermined number of data points in said array and determining the median point; and update means for updating said array by replacing said sequential data points with new data points.
2. A fast median filter as recited in claim
1 wherein said input means includes tracking means for continuously tracking the oldest data point in said array.
3. A fast median filter as recited in claim
2 wherein said update means includes means for replacing the oldest data point in said array with a new data point.
4. A fast median filter as recited in claim 2 wherein said tracking means includes pointer means which continuously points to the oldest data point in said array.
5. A fast median filter as recited in claim 2 wherein said tracking means includes a pointer and means for incrementing said pointer when a new data point is placed into said array.
6. A fast median filter as recited in claim 5 further including determining means for determining whether the pointer is pointing to the data point in the last position in the array.
7. A fast median filter as recited in claim 6 further including reset means for resetting said pointer upon entry of the next new data point into the array when the pointer is pointing to the last position in the array.
8. A fast median filter as recited in claim 1 wherein said input means comprises: an array having a predetermined number of elements for receiving a corresponding number of sequential data points; and a pointer means for keeping track of the position of the oldest data point in the array.
9. A fast median filter as recited in claim 8 wherein said pointer means includes: a pointer which points to the position of the oldest data point of the array; means for incrementing said pointer when the array is updated with a new data point; determining means for determining when the pointer is pointing to the last element in the array; and reset means for resetting the pointer to point to the first position of the array upon entry of the next new data point into the array when the pointer is pointing to the last position in the array.
10. A fast median filter for determining the median of a predetermined number of sequential number of data points comprising: input means for receiving and updating sequential data points in an array having a predetermined number of positions; and median means for determining the median of the data points in said array by comparing each data point in said array with each other data point in said array until the median is determined.
11. A fast median filter means as recited in claim 10, wherein said median means comprises: counter means; comparison means for comparing in sequence each data point in said array with each other data point in the array; means for incrementing or decrementing said counter means as a result of each of said comparisons; and determining means for determining the median of a predetermined number of sequential data points as a predetermined value of the counter at a predetermined time in said sequence.
12. A fast median filter means as recited in claim 11 wherein said predetermined value is equal to zero.
13. A fast median filter means as recited in claim 11 wherein said predetermined value is the minimum value of the counter at the end of the sequence.
14. A method for determining the median of a sequence of numbers comprising the steps of:
(a) comparing each data point in said sequence with each other data point;
(b) incrementing or decrementing a counter as a result of said comparisons; and
(c) determining the median of said sequence when the counter reaches a predetermined value in said sequence.
15. A method as recited in claim 14 wherein said predetermined value is equal to zero.
16. A method as recited in claim 14 wherein said predetermined value is the minimum value of the counter at the end of the sequence.
17. A fast median filter for determining the median of a predetermined number of sequential data points comprising: an array means having a predetermined number of positions for receiving sequential data points; pointer means for keeping track of the oldest data in the array; update means for continuously substituting the oldest data point in the array with a new data point; counter means; comparison means for comparing in sequence each data point individually with each other data point in the array; means for incrementing or decrementing said counter means as a result of each of said comparisons; and determining means for determining the median of a predetermined number of said data points when the value of the counter reaches a predetermined value at a predetermined time in said sequence.
18. A fast median filter as recited in claim 17 wherein said predetermined value of said counter is zero.
19. A fast median filter as recited in claim 17 wherein said predetermined value is the minimum value of said counter at the end of the sequence.
20. A fast median filter as recited in claim 17 wherein said data points comprise radio altitude signals from a radio altimeter.
EP19880904785 1987-05-26 1988-04-18 A fast median filter. Withdrawn EP0316402A4 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US5387387A 1987-05-26 1987-05-26
US53873 1987-05-26

Publications (2)

Publication Number Publication Date
EP0316402A1 true EP0316402A1 (en) 1989-05-24
EP0316402A4 EP0316402A4 (en) 1989-09-19

Family

ID=21987130

Family Applications (1)

Application Number Title Priority Date Filing Date
EP19880904785 Withdrawn EP0316402A4 (en) 1987-05-26 1988-04-18 A fast median filter.

Country Status (3)

Country Link
EP (1) EP0316402A4 (en)
JP (1) JPH01503341A (en)
WO (1) WO1988009537A1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3909644A1 (en) * 1989-03-23 1990-09-27 Vdo Schindling METHOD AND DEVICE FOR MEASURING A VEHICLE'S OWN SPEED ACCORDING TO THE DOPPLER RADAR PRINCIPLE
CA2278908A1 (en) * 1998-09-03 2000-03-03 Lucent Technologies, Inc. Digital glitch filter
DE50308888D1 (en) * 2002-06-18 2008-02-07 Adc Automotive Dist Control METHOD OF IMPROVING STACKS IN SYSTEMS FOR OBJECT DETECTION
US20120256778A1 (en) * 2003-07-02 2012-10-11 M/A Com, Inc. Short-range vehicular radar system
CN109186508B (en) * 2018-09-19 2020-08-18 晓智未来(成都)科技有限公司 Median filtering method for thickness measurement

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4334223A (en) * 1980-06-18 1982-06-08 Sperry Corporation Median detector
US4513440A (en) * 1982-06-29 1985-04-23 Harris Corporation Hardware median filter

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
No further relevant documents have been disclosed. *
See also references of WO8809537A1 *

Also Published As

Publication number Publication date
WO1988009537A1 (en) 1988-12-01
JPH01503341A (en) 1989-11-09
EP0316402A4 (en) 1989-09-19

Similar Documents

Publication Publication Date Title
US5144568A (en) Fast median filter
US4513440A (en) Hardware median filter
US6044434A (en) Circular buffer for processing audio samples
Reed et al. Fourier analysis and signal processing by use of the Mobius inversion formula
US4417102A (en) Noise and bit rate reduction arrangements
US5477465A (en) Multi-frequency receiver with arbitrary center frequencies
KR100302156B1 (en) Decimation filter
US7152081B2 (en) Methods for efficient filtering of data
EP0316402A1 (en) A fast median filter
Ko et al. An adaptive IIR structure for the separation, enhancement, and tracking of multiple sinusoids
Zhang et al. Nonlinear adaptive noise suppression based on wavelet transform
US5377131A (en) Digital amplitude estimator
US6332136B1 (en) Fuzzy filtering method and associated fuzzy filter
White A simple FFT butterfly arithmetic unit
Staiger Quadtrees and the Hausdorff dimension of pictures
Tymchenko et al. Methods of Converting Weight Sequences in Digital Subtraction Filtration
Rau et al. Efficient approximation of Gaussian filters
Alparone et al. A coarse-to-fine algorithm for fast median filtering of image data with a huge number of levels
EP0121992A2 (en) Optimal covariance filtering
Fay Confidence bounds for signal-to-noise ratios from magnitude-squared coherence estimates
JPH0262124A (en) A/d converter
Rothacker et al. Spectrum enhancement using linear programming
Lucke et al. Filtering interpolators for frame differencing signal processors
Swingler Comments on" Maximum entropy spectral estimation using the analytical signal"
Crochiere et al. On the efficient design of bandpass digial filter structures

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 19890201

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): DE FR GB NL

A4 Supplementary search report drawn up and despatched

Effective date: 19890919

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN WITHDRAWN

18W Application withdrawn

Withdrawal date: 19910411

R18W Application withdrawn (corrected)

Effective date: 19910411