DE69629099T2 - Schnelles und leistungsfähiges median suchverfahren - Google Patents

Schnelles und leistungsfähiges median suchverfahren Download PDF

Info

Publication number
DE69629099T2
DE69629099T2 DE69629099T DE69629099T DE69629099T2 DE 69629099 T2 DE69629099 T2 DE 69629099T2 DE 69629099 T DE69629099 T DE 69629099T DE 69629099 T DE69629099 T DE 69629099T DE 69629099 T2 DE69629099 T2 DE 69629099T2
Authority
DE
Germany
Prior art keywords
data sample
size
median
list
current
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.)
Expired - Lifetime
Application number
DE69629099T
Other languages
English (en)
Other versions
DE69629099D1 (de
Inventor
E. Lawrence CONNELL
W. Steven BERGSTEDT
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.)
Motorola Solutions Inc
Original Assignee
Motorola 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 Motorola Inc filed Critical Motorola Inc
Application granted granted Critical
Publication of DE69629099D1 publication Critical patent/DE69629099D1/de
Publication of DE69629099T2 publication Critical patent/DE69629099T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2218/00Aspects of pattern recognition specially adapted for signal processing
    • G06F2218/02Preprocessing
    • G06F2218/04Denoising

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Biology (AREA)
  • Nonlinear Science (AREA)
  • Computer Hardware Design (AREA)
  • Analogue/Digital Conversion (AREA)

Description

  • Gebiet der Erfindung
  • Diese Erfindung bezieht sich allgemein auf das Gebiet von Filtern und ist nützlich im Bereich des digitalen Filterns von Signalen.
  • Hintergrund der Erfindung
  • Gegenwärtige Signalverarbeitungssysteme verwenden zur Verbesserung der Signaltreue oft Filter, um unerwünschte Informationen aus Signalen zu entfernen. In digitalen Signalverarbeitungsschemata ist es oft wünschenswert, zur Verarbeitung der Signale einen Medianfilter anzuwenden. Medianfilter sind nichtlineare Filter, die zur Erzielung dramatischer Ergebnisse bei diversen subtraktiven Syntheseanwendungen benutzt werden, wie etwa bei Video-, Sprach-, allgemeinen Akustik-, Radar- und anderen Signalverarbeitungsanwendungen.
  • Insbesondere kann ein Medianfilter eingesetzt werden, um das Signal/Rausch-Verhältnis bei Anwendungen zur Überwachung und Steuerung der internen Leistung von Verbrennungsmotoren signifikant zu verbessern. Eine derartige Anwendung ist die Bestimmung von Fehlzündungen. Bei dieser Anwendung wird die Verbrennungsleistung eines Motors überwacht, indem beispielsweise die Beschleunigung der Kurbelwelle des Motors mittels eines Beschleunigungsmessers beobachtet wird. In einer Idealsituation, wenn in einem unter Beobachtung stehenden Zylinder des Motors eine Fehlzündung auftritt (das dem Zylinder zugeführte Luft-Brennstoff-Gemisch verbrennt nicht vollständig), tendiert die Kurbelwelle des Motors zu einer Verlangsamung anstatt zu beschleunigen, wie erwartet. Wird diese Verlangsamung von einem Fehlzündungs-Erkennungssystem beobachtet, kann eine Fehlzündung angezeigt werden.
  • Bei einer typischen Anwendung gibt es jedoch viele Rauschquellen, die den Beobachtungsprozess kontaminieren. Zum einen kann, da der Motor mechanisch mit einer Kraftübertragung gekoppelt ist, die ihrerseits mit einer Antriebswelle und einer Räderanordnung gekoppelt ist, wenn das von dem Motor angetriebene Fahrzeug fährt, eine Bodenwelle in der Straßenoberfläche eine verzögernde Störung der Räderanordnung verursachen. Über den oben beschriebenen Koppelmechanismus kann die Störung zur Kurbelwelle des Motors rückgekoppelt werden – und somit zu dem Beschleunigungsmesser. Irgendeine Art der Verbesserung der Signaltreue ist notwendig, um diese Rauschquelle zu eliminieren, und eine fälschliche Fehlzündungsanzeige zu verhindern. Da diese Rauschquelle ein Signal verursacht, das bei einer charakteristisch sehr niedrigen Frequenz erzeugt wird, könnte der Signalverarbeitungsmechanismus einen traditionellen, digitalen Hochpassfilter verwenden, um diese Störung auszufiltern. Praktisch würde dies einen digitalen Filter sehr hoher Ordnung erfordern, da das aufgrund des Fehlzündungsverhaltens von dem Beschleunigungsmesser erzeugte Signalspektrum demjenigen Signalspektrum, das sich auf das, von der Straßenoberfläche induzierte Signal be- zieht, eng benachbart ist.
  • Ein Medianfilter passt gut in diesen Typ von Anwendungen, um von der Straßenoberfläche induzierte Signale aus dem Spektrum zu entfernen, welches von dem Beschleunigungsmesser in Bezug auf die Fehlzündung erzeugt wird. Der Medianfilter erzielt mit einer Struktur relativ niedriger Ordnung ein ähnliches Ergebnis wie ein digitaler Hochpassfilter sehr hoher Ordnung.
  • Medianfilter für digitale oder gesampelte Daten arbeiten mit einer Datensampleliste fester Länge. Der Medianfilter bestimmt, welches in der Liste fester Länge vorhandene Sample einen arithmetischen Medianwert in der Liste repräsentiert. Manche Medianfilter nach dem Stand der Technik verwenden ein speicherintensives Schema zur Bestimmung des Medianwertes in der Liste von Datensamples. Beispielsweise wird eine Liste, sobald sie mit Daten gefüllt ist, in eine arithmetisch geordnete Liste sortiert, und das in der Mitte der Liste positionierte Datensample wird zum Medianergebnis. Durch Subtraktion des Medianergebnisses von dem zeitlich geordneten Datensample, das in der Mitte der zeitlich geordneten Liste positioniert ist, kann ein mediangefiltertes Datensample erzeugt werden. Dies kann anhand eines Beispiels klarer dargestellt werden. Tabelle 1
    zeitlich geordnete Datensamples nach Größe geordnete Datensamples
    135 130
    130 131
    137 135
    138 137
    131 138
    140 140
    143 143
    148 143
    143 148
  • In der obigen Tabelle 1 repräsentiert, die linke Spalte eine Liste von zeitlich geordneten Datensamples. Mit anderen Worten heißt das, das Datensample in der obersten Reihe "135" ist das jüngste Datensample, und das Datensample in der untersten Reihe "143", ist das älteste Datensample. Diese Samples repräsentieren die Beschleunigung einer Kurbelwelle eines Motors, die von einem Beschleunigungsmesser abgeleitet wurde. Die rechte Spalte repräsentiert eine Liste von nach Größe geordneten Datensamples. Diese Samples sind gemäß Schemata nach dem Stand der Technik geordnet, um den Medianwert aufzufinden. Da die Länge der Liste (oder Ordnung des Filters) ungerade ist, enthält die Zentralposition der nach Größe geordneten Liste das Median-Datensample – hier "138". Der mediangefilterte Wert kann somit abgeleitet werden als 131–138 oder –7. Obwohl dieser allgemeine Ansatz funktioniert, weist er verschiedene Probleme auf. Zum einen erfordert er zumindest genug Speicher um zusätzlich zu der zeitlich geordneten Liste von Datensamples, die nach Größe geordnete Liste von Datensamples zu speichern. Für die Reduzierung zur Anwendung auf einem integrierten Schaltkreis ist dies wegen des großen Bereiches an Siliziumfläche, der notwendig ist, um die zusätzlichen Speichererfordernisse zu erfüllen, besonders problematisch. Dieses Schema erfordert es auch, jedes Datensample auf der Liste zu sortieren, bevor das Median-Datensample zuverlässig aufgefunden werden kann und ist daher zeitintensiv und erfordert eine komplizierte Steuerschaltung.
  • Für eine Liste, die N Datensamples umfasst, werden, um eine Sortierung durchzuführen, typischerweise N2/2 Speicherzugriffsoperationen durchgeführt. Diese Speicherzugriffsoperationen erfordern einen wesentlichen Teil der Ausführungszeit: Frühere Versuche zur Reduzierung der Anzahl von Speicherzugriffen oder der Ausführungszeit erfolgten unglücklicherweise auf Kosten einer Hardwarekomplexität, die exponentiell mit N wächst.
  • Die US-A-4 928 258 offenbart einen rekursiven Medianfilter für digitale Bilddaten. Die US-A-4 928 258 beschreibt eine Auswahlvorrichtung mit 3 Eingaben, 5 Eingaben und 7 Eingaben. Die Auswahlvorrichtung ist keine zirkulare Liste. Die Eingaben in die verschiedenen Auswahlvorrichtungen in der US-A-4 928 258 beziehen keine Auswahl ein, die sich auf ein ausgehendes Datensample bezieht, das getrennt und verschieden ist von einem aktuellen Median-Datensample. Die US-A-4 928 258 diskutiert nicht die Eingabe der letzten Median-Pixeldaten, sondern dieses wird nur in Verbindung mit mehreren eingehenden Pixeldateneingaben eingegeben. Die in US-A-4 928 258 offenbarte Struktur führt eine Selektion durch, die auf mehreren eingehenden Pixeldaten sowie den vorangehenden Median-Pixeldaten beruht. Die Struktur aktualisiert nicht das aktuelle Median-Datensample zu einem neuen Median-Datensample, abhängig lediglich von den Größen des eingehenden Datensamples, des aktuellen Median-Datensamples und des ausgehenden Datensamples.
  • Die EP-A-O 257 843 offenbart 3 Rückkopplungs-Schieberegister, die alle gleichzeitig ein eingehendes Datensample empfangen. Die EP-A-O 257 843 offenbart weiter die Eingabe eines eingehenden Datensamples in verschiedene logische Positionen (Zellen/Stufen) jedes Schieberegisters. Die Ausgaben der 3 Schieberegister werden kombiniert, um ein "Median-Datensample" zu liefern. Die EP-A-O 257 843 zeigt eine Zusammenstellung von 3 Schieberegistern mit 3 ausgehenden Datensamples (die rechteste Zellposition jedes der 3 Schieberegister), die verbunden werden, um ein Median-Datensample zu erzeugen. Es wird nicht offenbart, eine zirkulare Liste von N Datensamples oder eine zirkulare Liste bereitzustellen; die N Datensamples enthält.
  • Die EP-A-O 257 843 zeigt weiter einen Mechanismus, der ein zuletzt geladenes Eingangs-Datensample durch ein neues Eingangs-Datensample ersetzt. Die EP-A-O 257 843 offenbart keine zirkulare Liste, die ein Eingangs-Datensample enthält, das ein Ausgangsdatensample ersetzt.
  • Die EP-A 0 257 843 offenbart weiter nicht die Aktualisierung des Median-Datensamples in Abhängigkeit lediglich von den Größen des Eingangs-Datensamples, des aktuellen Datensamples und des Ausgangs-Datensamples.
  • Die US-A-5 144 568 offenbart einen Komparator, der einen gespeicherten Datenpunkt mit allen anderen gespeicherten Datenpunkten vergleicht. Jeder Datenpunkt in dem Array wird mit jedem anderen Datenpunkt im Array verglichen.
  • Die US-A-S 144 568 offenbart nicht, ein aktuelles Median-Datensample mit einem neuen Median-Datensample zu aktualisieren in Abhängigkeit lediglich von den Größen des Eingangs-Datensamples, des aktuellen Median-Datensamples und des Ausgangs-Datensamples.
  • Was benötigt wird, sind ein Verfahren und ein Filter zur verbesserten Mediansuche mit limitierten Iterationen, so dass sie effektiv auf einem integrierten Schaltkreis hergestellt oder als Verfahren effizient ausgeführt werden können.
  • Die vorliegende Erfindung stellt ein iterationseffizientes Verfahren zur Medianbestimmung gem. Anspruch 1 zur Verfügung.
  • Kurze Beschreibung der Zeichnungen
  • . 1 ist ein Blockdiagramm gemäß einem bevorzugten Ausführungsbeispiel der Erfindung;
  • 2 ist ein vereinfachtes Flussdiagramm, das das bevorzugte Verfahren illustriert;
  • 3 illustriert Details des in 2 eingeführten Schritts 205 in tabellarischem Format;
  • 4A, 4B, und 4C sind Flussdiagramme, die weitere Details der bevorzugten, in 2 eingeführten Verfahrensschritte zeigen; und
  • 5 ist ein Flussdiagramm, das gem. einem anderen Ausführungsbeispiel eine Ausführungsform mit 2N-fachem Speicherzugriff darstellt.
  • Beschreibung einer bevorzugten Ausführungsform
  • Ein zeiteffizientes Verfahren und ein Filter zur Mediansuche durchsuchen eine sich dynamisch verändernde, zeitlich geordnete Liste von Datensamples nach einem Datensample, das den arithmetischen Median der Liste repräsentiert. Ein nächster Median wird von einem von verschiedenen Aus- führungsbeispielen bestimmt.
  • Ein wesentlicher Gesichtspunkt des beschriebenen An-satzes ist, dass ein eingehendes Datensample veranlasst, dass das aktuelle Median-Datensample entweder dasselbe bleibt oder eine Größe eines arithmetisch nächstliegenden (numerisch benachbarten) Datensamples entweder ansteigender oder abfallender Größe annimmt. Ob das nächste Median-Datensample in seiner Größe ansteigt oder abfällt, hängt von den anderen Datensamples in der Liste ab. Unter dieser Annahme gibt es mehrere verschiedene Ausführungsformen, die zu einer wesentlichen Reduzierung von Speicherzugriffen führen, die. zum Auffinden eines Medianwertes verwendet werden. Wie im Kapitel "Hintergrund der Erfindung" erwähnt, erfordern Systeme nach dem Stand der Technik N2/2 Speicherzugriffe, um einen Medianwert in einem-Satz oder einer Liste von Werten zu ermitteln, wobei N der Rang oder die Menge von Einträgen in der Liste ist. Die Anzahl von Speicherzugriffsoperationen wird in vielen Systemen sehr bedeutend, da der Rang des Filters, N, ziemlich groß sein kann – was Schemata nach dem Stand der Technik, die N2/2 Speicherzugriffe verwenden, um einen Median zu ermitteln, höchst ineffizient macht. Die bevorzugten Ausführungsbeispiele sollen nach einer Einführung von 1 beschrieben wer den, die zur Illustration des Verfahrens und des Filters ein System zur Detektion von Motorfehlzündungen verwendet. Man beachte, dass, wie im Kapitel "Hintergrund der Erfindung" erwähnt, die Mediansuchtechniken und Medianfilter auch bei anderen Anwendungen gewinnbringend eingesetzt werden können, wie etwa im Bereich Video, Sprache, allgemeine Akustik und Radar. Die hier beschriebenen Verbesserungen können bei diesen und anderen Anwendungen genutzt werden.
  • 1 ist ein Systemdiagramm, das einen Gesamtansatz zur Anwendung eines Medianfilters in einem Fehlzündungs-Erkennungssystem illustriert. Eine Kurbelwelle eines Motors treibt ein Codierungsrad 101 an, das Markierungen aufweist, die radial daran verteilt sind. Ein Geschwindigkeitsmesser 103 erfasst die Rotation des Codierungsrades 101 und gibt ein Signal 105 aus, das eine Beschleunigung des Codierungsrades 101 anzeigt. Dieses Signal 105 wird in ein Signalverarbeitungssystem 107 eingekoppelt. Dieses Signalverarbeitungssystem 107 digitalisiert das Signal 105 und liefert eine diskrete, zeitlich gesampelte Repräsentation des Beschleunigungsverhaltens des Codierungsrades 101. Diese diskreten Zeitdatensamples werden an eine Speichervorrichtung 109 geliefert, die vorzugsweise als eine Liste in Form einer zirkularen Warteschlange der Länge N aufgebaut ist. Wenn das Codierungsrad 101 rotiert, wird jeder neue Datensampleeintrag in der Speichervorrichtung 109 gespeichert, indem der älteste Datensampleeintrag überschrieben wird. Zum Beispiel zeigt in 1 das Bezugszeichen 111 dasjüngste Datensample, das den Wert 135 hat, und ein ältestes Datensample 113, das den Wert 143 hat. Sobald ein nächstes Datensample erhältlich wird – hier mit einem wert von 98 und dem Bezugszeichen 121 – wird das älteste Datensample 113 überschrieben und durch das jüngste Datensample (98) ersetzt. Ein Sortiermechanismus 117 mit einer sehr viel höheren Rate als der, mit welcher sich die Datensamples ändern, wird verwendet, um in der als zirkulare Warteschlange 109 repräsentierten Liste das Median-Datensample aufzufinden. Dieser kontinuierlich sortierte Medianwert 119 – hier das Datensample mit dem Wert 138 – wird dann verwendet, um ein mediangefiltertes Datensample zu erzeugen. Diese Filterung erfolgt durch Subtraktion des kontinuierlich sortierten Medianwertes 119 von einem zeitlich zentrierten Datensample aus der Warteschlange. Das Ergebnis wird einer Fehlzündungs-Erkennungsvorrichtung 115 präsentiert, die dieses kontinuierlich gefilterte Median-Datensample verwendet, um. das Fehlzündungsverhalten des Motors zu bestimmen. Vorzugsweise umfasst die Fehlzündungs-Erkennungsvorrichtung 115 eine Vergleichsschaltung, um eine Fehlzündungsanzeige zu liefern, wenn das mediangefilterte Datensample der Datensamples in der Warteschlange eine Fehlzündungsschwelle überschreitet. Die Fehlzündungsschwelle ist vorzugsweise programmierbar und in der Fehlzündungs-Erkennungsvorrichtung 115 gespeichert.
  • Nachdem nun das Blockdiagramm des Systems beschrieben ist, sollen Details des verbesserten Verfahrens und Filters beschrieben werden.
  • Bei einer Ausführungsform, welche die Anzahl von Speicherzugriffen, die zur, Ermittlung eines Medianwertes erforderlich sind, von N2/2 auf 2 N reduziert, wird der nächste Median aufgefunden, indem für jedes neu eingehende Datensample bestimmt wird, ob das nächste Datensample dasselbe bleibt wie das aktuelle Median-Datensample oder ob seine Größe in die desjenigen Datensamples geändert wird, das nu merisch nächstbenachbart ist, entweder in der Größe ansteigend oder abfallend. Dieses Verfahren basiert auf der Tat- sache, dass bei jedem neu eingehenden Datensample der nächste Median nur eine von 3 Möglichkeiten hat: Er bleibt der gleiche wie der aktuelle median, er erhöht seine Größe auf den nächstgrößeren Datensamplewert relativ zu der Größe des aktuellen Medians oder er verringert seine Größe auf den nächstkleineren Datensamplewert relativ zu der Größe des aktuellen Medians.
  • Zunächst wird mit dem aktuellen median ein Test durchgeführt, um zu bestimmen, ob er der nächste median werden wird. Der Test besteht darin, dass ein erster Durchlauf durch die Liste durchgeführt wird und der aktuelle Median mit allen Samples in der Liste verglichen wird. Bei diesem Ansatz wird die Liste 109 ein erstes Mal durchlaufen, wobei ein Zählerwert der Menge von Datensamples mit einer Größe aufgenommen wird, die numerisch kleiner wird als das aktuelle Median-Datensample. Gleichzeitig überwacht ein weiterer Zähler die Menge von Datensamples mit einer Größe, die numerisch kleiner oder gleich dem aktuellen Median-Datensample ist. Gleichzeitig wird ein Datensample mit einer Größe aufgefunden, die relativ zu der Größe des aktuellen Datensamples numerisch nächstbenachbart und größer ist. Am Ende dieser ersten Iteration oder dieses Durchlaufs durch die N Elemente in der Liste werden die Zähler überprüft um festzustellen, ob das Median-Datensample für die (neue) Liste dieselbe Größe haben wird, wie das aktuelle Median-Datensample oder ob sie sich ändern wird. Ist die Anzahl der Datensamples aus der Liste mit einer Größe kleiner als das aktuelle Median-Datensample kleiner oder gleich (N-1)/2 und ist die Anzahl von Datensamples aus der Liste mit einer Größe kleiner oder gleich dem aktuellen Datensample größer als (N-1)/2, wird der nächste Median gleich dem aktuellen Median sein.
  • Muss die Größe des aktuellen Median-Datensamples aufgrund des vorangegangenen Schrittes verändert werden, wird die Liste ein zweites Mal durchlaufen und die Menge von Datensamples mit einer Größe, die numerisch kleiner ist als das im vorangegangenen Schritt identifizierte Datensample (dasjenige, das numerisch nächstbenachbart und größer ist) wird gezählt. Gleichzeitig überwacht ein weiterer Zähler die Menge von Datensamples mit einer Größe, die numerisch kleiner oder gleich dem im vorangegangen Schritt identifizieren Datensample (dasjenige, das numerisch nächstbenachbart und größer ist) ist. Gleichzeitig wird ein Datensample aufgefunden mit einer Größe, die numerisch nächstbenachbart und kleiner ist als die Größe des aktuellen Median-Datensamples. Am Ende dieses zweiten Durchlaufs durch die Liste werden die Zähler überprüft, um zu bestimmen, ob das Median-Datensample für die Liste gleich dem nächstgrößeren Datensamples ist. Ist die Anzahl von Datensamples aus der Liste mit einer Größe kleiner als das nächstgrößere Datensample kleiner oder gleich (N-1)/2 und ist die Anzahl von Datensamples aus der Liste mit einer Größe kleiner oder gleich dem nächstgrößeren Datensample größer als (N-1)/2, wird der nächste Median gleich dem Datensample mit der nächstgrößeren Größe relativ zu dem aktuellen Median sein.
  • Ist das Median-Datensample für die Liste nicht gleich dem nächstgrößeren Datensample, wird es als nächstes auf das nächstkleinere Datensample gesetzt. Dieser Ansatz ist sowohl einfach als auch effizient. In einer apparativen Ausführungsform ist er auch siliziumeffizient.
  • Bei einer Ausführungsform, welche die Anzahl von Speicherzugriffs-Operationen zur Ermittlung eines Medianwertes von N2/2 auf N reduziert, wird der nächste Median aufgefunden, indem ein eingehendes Datensample und ein ausgehendes Datensample gegen ein aktuelles Median-Datensample getestet werden, um schnell die Anzahl bestehender Möglichkeiten für den nächsten Median von 3 auf 2 zu reduzieren. Durch Einschließen der ausgehenden Datensamples in diese Auswertung kann das Verfahren mit 2N Speicherzugriffen reduziert werden auf N Speicherzugriffe. Der nächste Schritt besteht darin, die Liste zu durchsuchen und ein Datensample zu identifizieren, das eine Größe hat, die derjenigen des aktuellen Median-Datensamples nächstbenachbart und größer ist, falls das Median-Datensample für die Liste, wie vorangehend bestimmt, anwachsen soll, und ein Datensample zu identifizieren, das eine Größe hat, die derjenigen des aktuellen Median-Datensamples nächstbenachbart und kleiner als diese ist, falls das Median-Datensample für die Liste, wie zuvor bestimmt, kleiner werden soll, und ein nächstbenachbartes Datensample zu bestimmen, falls sich das Median-Datensample für die Liste ändern soll. Gleichzeitig mit dem Durchlauf durch die Liste wird getestet, ob sich das Median-Datensample ändert, indem bestimmt wird, ob eine Anzahl von Datensamples aus der zirkularen Liste mit einer Größe, die kleiner als der aktuelle Median ist, größer ist als (N-1)/2 oder ob die Anzahl von Datensamples aus der zirkularen Liste mit einer Größe, die kleiner oder gleich dem aktuellen Median-Datensample ist, kleiner oder gleich (N-1)/2 ist. Ist eine dieser beiden Bedingungen erfüllt, wird die Größe des aktuellen Median-Datensamples auf das zuvor aufgefundene nächstbenachbarte Datensample geändert.
  • Ein genaueres Verständnis der erfinderischen Aspekte der oben eingeführten Struktur wird erhältlich durch Einführung und detaillierte Beschreibung der verbleibenden Figuren.
  • 2 ist ein vereinfachtes Flussdiagramm, das das bevorzugte Verfahren illustriert. Die Routine 200 ist vor- zugsweise eingebettet in einen Motorola-(RTM) MC68HC332-Mikrokontroller, der zu dem in 1 eingeführten Signalverarbeitungssystem 107 gehört. Alternativ können die Verfahrensschritte in einer Hardwarevorrichtung implementiert sein, die leicht in einen integrierten Schaltkreis zur Signalverarbeitung integriert werden kann.
  • 2 stellt eine Ausführungsform dar, die das Verfahren mit N Speicherzugriffen illustriert. Zunächst wird ein Test ausgeführt, bei dem ein eingehendes Datensample und ein ausgehendes Datensample mit dem aktuellen Median verglichen werden (der in vorangehenden Iterationen des Verfahrensschrittes aufgefunden wurde), um zu bestimmen, ob oder ob nicht der nächste Median anwachsen oder abfallen oder dieselbe Größe behalten sollte, wie der aktuelle Median. In 1 hat das eingehende Sample eine Größe von 98 und ist mit dem Bezugszeichen 121 dargestellt. Das ausgehende (oder zeitlich gesehen das älteste) Datensample hat eine Größe von 143 und ist mit, dem Bezugszeichen 113 dargestellt; und der aktuelle Median hat eine Größe von 138 und ist mit dem Bezugszeichen 119 dargestellt.
  • Man beachte, dass es eine Routine 200 gibt, die kontinuierlich läuft und abhängig von der kontinuierlichen Datenaufnahme bei einer Baten- oder aufnahmegesteuerten Rate eine zeitlich geordnete Liste von Datensamples bereit stellt. Die Routine 202 zur Bestimmung des Medianes beginnt beim Startschritt 201.
  • Im Schritt 201 werden die Liste von Datensamples und der aktuelle Median zu einem Zustand oder. zu Zuständen initialisiert, in denen der aktuelle Median dem Zustand der in der Liste gespeicherten Datensamples entspricht. Dies wird gemacht, um einen bekannten aktuellen Median zu erzeugen, auf welchem die nachfolgenden Schritte basieren.
  • In einem nächsten Schritt 203 überprüft die Routine 202, ob oder ob nicht ein neu eingehendes Datensample erhältlich ist. Ist kein neu eingehendes Datensample erhältlich, wiederholt sich Schritt 203 bis ein neu eingehendes Datensample erhältlich ist.
  • In Schritt 205 bestimmt die Routine 202 dann, ob eine Größe eines Median-Datensamples für die Liste erhöht werden, gleich bleiben oder sich verringern sollte, indem die Größen sowohl des eingehenden Datensamples, als auch des ausgehenden Datensamples mit der Größe des aktuellen Median-Datensamples verglichen werden. Unter Bezugnahme auf 3 illustriert ein Diagramm 300 alle neun in Betracht kommenden Zustände und die drei möglichen Resultate.
  • 3 illustriert in tabellarischer Form Details des in 2 eingeführten Schrittes 205. Das Diagramm 300 hat zwei Eingangsvariablen, nämlich das ausgehende Datensample 301 und das eingehende Datensample 303, und einen Ausgangs-Suchbereich 305, der in Abhängigkeit von der Kombination der Eingangsbedingungen bestimmt wird. Beispielsweise wird bei einem Vergleich des eingehenden Datensamples und des ausgehenden Datensamples mit dem aktuellen Median-Datensample ein Ergebnis "keine Änderung erforderlich" realisiert, wenn sowohl die Größe des eingehenden Datensam ples, als auch die Größe des ausgehenden Datensamples größer sind als die Größe des aktuellen Median-Datensamples. Dies bedeutet, dass der nächste Median (für die Liste einschließlich des eingehenden Datensamples und ohne das ausgehende Datensample) dieselbe Größe haben wird wie das aktuelle Median-Datensample. Alle mit dem Bezugszeichen 307 versehene Eingangsbedingungen resultieren in einer Schlussfolgerung für den Suchbereich, die mit dem Bezugszeichen 313 versehen ist.
  • In einem anderen, unter dem Bezugszeichen 309 illustrierten Fall, in dem entweder die Größen des ausgehenden Datensamples und des eingehenden Datensamples entsprechend größer als und kleiner als oder gleich groß wie und kleiner als die Größe des aktuellen Median-Datensamples sind, wird der Suchbereich auf eine Schlussfolgerung begrenzt, dass die Größe des nächsten Median-Datensamples entweder gleich der Größe des aktuellen Median-Datensamples ist oder gleich der Größe eines Datensamples mit einer Größe, welche der Größe des aktuellen Median-Datensamples nächstbenachbart und kleiner als diese ist, wie dies unter dem Bezugszeichen 315 dargestellt ist.
  • In einem weiteren, unter dem Bezugszeichen 311 illustrierten Fall, in dem entweder die Größen des ausgehenden Datensamples und des eingehenden Datensamples entsprechend kleiner als oder größer als oder gleich wie oder größer als die Größe des aktuellen Medians sind, wird der Suchbereich auf eine Schlussfolgerung beschränkt, dass die Größe des nächsten Median-Datensamples entweder gleich der Größe des aktuellen Median-Datensamples ist oder gleich der Größe eines Datensamples mit einer Größe, welche der Größe des aktuellen Median-Datensamples nächstbenachbart und größer als diese ist, wie dies unter dem Bezugszeichen 317 dargestellt ist. Man beachte, dass hier kein konklusiver Test durchgeführt wird, ob oder ob nicht der Suchbereich auf "keine Änderung erforderlich" beschränkt werden kann.
  • Wir kehren zurück zu 2. In Schritt 205 bestimmt die Routine 202 im Wesentlichen, ob die Größe des Median-Datensamples für die Liste anwachsen oder dieselbe bleiben sollte, wie das aktuelle Median-Datensample oder ob sie sich verringern oder dieselbe bleiben sollte wie das aktuelle Median-Datensample, indem die Größen sowohl des eingehenden als auch des ausgehenden Datensamples mit der Größe des aktuellen Median-Datensamples verglichen werden. Das Ergebnis dieses Tests ist es, eine Vorzeichenanzeige zu liefern, oder, was äquivalent ist, den Suchbereich für den nächsten Median von drei auf nicht mehr als zwei Möglichkeiten zu reduzieren.
  • In Schritt 207 identifiziert die Routine 202 als nächstes ein Datensample mit einer Größe, die dem aktuellen Median-Datensample nächstbenachbart und größer als dieses ist, falls das Median-Datensample für die Liste, wie im Schritt 205 bestimmt, ansteigen sollte und identifiziert ein Datensample mit einer Größe, die dem aktuellen Median-Datensample nächstbenachbart und kleiner als dieses ist, falls das Median-Datensample für die Liste, wie in Schritt 205 bestimmt, abfallen sollte, und liefert ein nächstbenachbartes Datensample in Abhängigkeit davon, welche der vorgenannten Bedingungen zutrifft.
  • In Schritt 209 wird dann die Größe des aktuellen Datensamples in die Größe des nächstbenachbarten Datensamples verändert, falls die Anzahl von Datensamples aus der Liste mit einer Größe kleiner als das aktuelle Datensample größer ist als (N-1)/2 oder die Anzahl von Datensamples für die Liste mit einer Größe kleiner oder gleich dem aktuellen Datensample kleiner oder gleich (N-1)/2 ist. Anderenfalls ist das Median-Datensample für die Liste dem aktuellen Median-Datensample numerisch äquivalent und es wird keine Änderung durchgeführt.
  • Als nächstes wird in 4 eine detailliertere Erläuterung angegeben wie das Suchverfahren dieser Ausführungsform durchgeführt werden kann.
  • Die Bestimmung, ob oder ob nicht das aktuelle Median-Datensample verändert werden soll, kann auch mit anderen äquivalenten Ansätzen hergeleitet werden, ohne sich von dem Kern des beschriebenen, Ansatzes zu entfernen. Beispielsweise kann in Schritt 209 das für die Änderung des aktuellen Median-Datensamples erforderliche Kriterium wie folgt modifiziert werden: Die Größe des aktuellen Median-Datensamples wird auf die Größe des nächstbenachbarten Datensamples verändert, wenn die Anzahl von Datensamples aus der Liste mit einer Größe größer als das aktuelle Median-Datensample größer ist als (N-1)/2 oder die Anzahl von Datensamples aus der Liste mit einer Größe größer oder gleich dem aktuellen Median-Datensample kleiner oder gleich (N-1)/2 ist.
  • 4 ist in drei separate Diagramme aufgeteilt, nämlich 4A, 4B und 4C, die eine Routine 400 darstellen. In einem Ausführungsbeispiel des Verfahrens ist die Routine 400 vorzugsweise in dem in 1 eingeführten Sortiermechanismus 117 eingebettet in einen Motorola-MC68HC332-Mikrocontroller. Alternativ können die Verfahrensschritte in einer Hardwarevorrichtung implementiert sein. Die Routine 400 beginnt beim Startschritt 401. Im Wesentlichen implementiert das mit 4A gekennzeichnete Flussdiagramm den Verfahrensschritt 205 von 2 in größerem Detail.
  • In einem nächsten Schritt 403 werden die Variablen der Routine wie folgt initialisiert: LTC-Zähler (less than count: "kleiner als"-Zähler-) wird auf Null gesetzt. Ein LTEC-Zähler (less than or equal count: "kleiner als oder gleich"-Zähler) wird auf Null gesetzt. Ein CM-Register (current median: aktueller Median) wird auf Null gesetzt. Alle Datenregister in der zirkularen Warteschlange oder Liste werden auf Null gesetzt. Es ist wichtig zu beachten, dass die Größe des CM-Registers arithmetisch gleich dem aktuellen Medianwert der Datensamples der Liste sein muss. Ist dies nicht der Fall, wird der Filter nicht konvergieren. Daher werden die voreingestellten Werte der Datenregister und des CM-Registers, die dieses Kriterium erfüllen, funktionieren. In einer nächsten Reihe von Schritten wird, um einen Durchlauf durch die Liste zu eliminieren, ein reduzierter Suchbereich für den Median für eine neue Liste wie folgt bestimmt.
  • Im Schritt 405 wird ein Test durchgeführt, um nachzusehen, ob eine Größe des ausgehenden Datensamples größer oder gleich einer Größe des aktuellen Median-Datensamples ist. Ist dies der Fall, wird in Schritt 407 eine OGECM-Flag (outgoing greater than or equal to current median: Ausgang größer oder gleich aktuellem Median) gesetzt. Ein gesetzter Status der OGECM-Flag zeigt an, dass die Größe des ausgehenden Datensamples größer oder gleich der Größe des aktuellen Median-Datensamples ist. Ist die Größe des ausgehenden Datensamples kleiner als die Größe des aktuellen Datensamples, wird Schritt 409 ausgeführt. Nachdem Schritt 407 abgeschlossen ist, wird als nächstes Schritt 409 ausgeführt.
  • In Schritt 409 wird ein Test durchgeführt, um zu bestimmen, ob oder ob nicht die Größe des ausgehenden Datensamples kleiner oder gleich der Größe des aktuellen Median-Datensamples ist. Ist dies der Fall, wird Schritt 411 ausgeführt.
  • In Schritt 411 wird eine OLECM-Flag (outgoing less than or equal to current median: Ausgang kleiner oder gleich aktuellem Median) gesetzt. Ein gesetzter Zustand der OLECM-Flag zeigt an, dass die Größe des ausgehenden Datensamples kleiner oder gleich der Größe des aktuellen Median-Datensamples ist. Nachdem Schritt 411 ausgeführt ist oder falls die Größe des ausgehenden Datensamples größer war als die Größe des aktuellen Median-Datensamples, wird 413 ausgeführt.
  • In Schritt 413 holt die Routine 400 das eingehende Datensample und setzt es in die Position des ältesten Datensamples in der zirkularen Liste.
  • Als nächstes wird in Schritt 415 ein Test durchgeführt, um nachzusehen, ob oder ob nicht die Größe des eingehenden Datensamples größer ist als die Größe des aktuellen Median-Datensamples. Ist die Größe des eingehenden Datensamples größer als die Größe des aktuellen Median-Datensamples, wird Schritt 417 ausgeführt.
  • In Schritt 417 wird eine IGCM-Flag (incoming greater than current median: Eingang größer als aktueller Median) gesetzt. Ein gesetzter Status der IGCM-Flag zeigt an, dass die Größe des eingehenden Datensamples größer ist als die Größe des aktuellen Medians. Nach Schritt 417 oder auch in Schritt 415, falls die Größe des eingehenden Datensamples kleiner. oder gleich der Größe des aktuellen Median-Datensamples ist, wird Schritt 419 ausgeführt.
  • In Schritt 419 wird ein Test durchgeführt, um nachzusehen, ob oder ob nicht die Größe des eingehenden Datensamples kleiner ist als die Größe des aktuellen Median-Datensamples. Ist dies der Fall, wird Schritt 421 ausgeführt.
  • In Schritt 421 wird eine ILCM-Flag (incoming less than current median: Eingang kleiner als aktueller Median) gesetzt. Ein gesetzter Status der ILCM-Flag zeigt an, dass die Größe des eingehenden Datensamples kleiner ist als die Größe des aktuellen Datensamples.
  • Nach Schritt 421 oder auch, falls die Größe des eingehenden Datensamples größer oder gleich der Größe des aktuellen Median-Datensamples, wie in Schritt 419 bestimmt war, ist Schritt 423 ausführbar und eine Nachbarschaftsvariable wird gleich der Größe des eingehenden Datensample s, gesetzt. Die Nachbarschaftsvariable kann optional in einem Register gespeichert werden.
  • Als nächstes verbindet der mit "A" bezeichnete Verbindungspunkt 425 mit dem in 4B mit "A" bezeichneten Verbindungspunkt 425.
  • Das mit 4B bezeichnete Flussdiagramm implementiert im Wesentlichen den Verfahrensschritt 207 von 2 in größerem Detail.
  • In Schritt 427 testet die Routine 400, ob oder ob nicht die Größe des betrachteten Datensamples kleiner ist als. die Größe des aktuellen Median-Datensamples. Ist dies der Fall wird Schritt 429 ausgeführt. In Schritt 429 wird ein LTC-Zähler (less than counter) erhöht. Der LTC-Zähler überwacht, wie viele der getesteten Datensamples eine Größe haben, die kleiner ist als die Größe des aktuellen Median-Datensamples. Nach Vollendung von Schritt 429 oder in Schritt 427, falls bestimmt worden war, dass die Größe des betrachteten Datensamples nicht kleiner war als die Größe des aktuellen Median-Datensamples, wird Schritt 431 ausgeführt.
  • In Schritt 431 prüft die Routine 400, ob oder ob nicht die Größe des betrachteten Datensamples kleiner oder gleich der Größe des aktuellen Median-Datensamples ist. Ist dies der Fall, wird Schritt 433 ausgeführt.
  • In Schritt 433 wird ein LTEC-Zähler erhöht. Der LTEC-Zähler überwacht, wie viele der getesteten Datensamples eine Größe haben, die kleiner oder gleich der Größe des aktuellen Median-Datensamples ist. Bei Vollendung von Schritt 433 oder falls die Größe des betrachteten Datensamples nicht kleiner oder gleich der Größe des aktuellen Median-Datensamples ist, wird Schritt 435 durchgeführt.
  • In Schritt 435 überprüft die Routine 400, ob sowohl die OLECM-Flag als auch die IGCM-Flag gesetzt sind. Ist dies der Fall, wird Schritt 437 ausgeführt.
  • In Schritt 437 überprüft die Routine dann, ob oder ob nicht die Größe des betrachteten Datensamples größer als die Größe des aktuellen Median-Datensamples und kleiner als die Nachbarschaftsvariable ist. Wird in Schritt 437 bestimmt, dass die Größe des betrachteten Datensamples nicht größer als die Größe des aktuellen Median-Datensamples und/oder nicht kleiner als die Nachbarschaftsvariable ist, springt die Routine zu Schritt 446. In Schritt 446 überprüft ein Indexpointer für die Liste, ob alle Datensamples der Liste ausgewertet wurden. Wurden alle Datensamples der Liste ausgewertet, fährt die Routine fort zu dem mit "B" bezeichneten Verbindungspunkt 450. Wurden noch nicht alle Datensamples der Liste ausgewertet, führt die Routine als nächstes Schritt 448 aus, der den Listenindex-Pointer erhöht, um auf das nächste zu testende Datensample der Liste zu zeigen und kehrt zurück zu Schritt 427. Bestimmt Schritt 437, dass die Größe des betrachteten Datensamples größer als die Größe des aktuellen Median-Datensamples und kleiner als die Nachbarschaftsvariable ist, wird Schritt 439 ausgeführt.
  • In Schritt 439 wird die Nachbarschaftsvariable gesetzt, um den Wert des betrachteten Datensamples anzunehmen. Nach Ausführung von Schritt 439 wird Schritt 446, wie oben beschrieben, ausgeführt.
  • Wurden in Schritt 435 die OLECM- und IGECM-Flags nicht gesetzt, wird Schritt 441 ausgeführt.
  • In Schritt 441 bestimmt die Routine, ob oder ob nicht sowohl die OGECM- als auch die ILCM-Flag gesetzt wurde. Wurden sowohl die OGCM- als auch die ILCM-Flag gesetzt, wird Schritt 443 ausgeführt.
  • In Schritt 443 bestimmt die Routine, ob oder ob nicht die Größe des betrachteten Datensamples kleiner als die Größe des aktuellen Median-Datensamples und größer als die Nachbarschaftsvariable ist. Ist dies der Fall, wird Schritt 439, wie oben beschrieben, ausgeführt. Ist die Größe des betrachteten Datensamples nicht kleiner als die Größe des aktuellen Median-Datensamples und/oder nicht größer als die Nachbarschaftsvariable; führt die Routine Schritt 446 wie oben beschrieben aus.
  • Wir kehren zurück zu Schritt 441. Sind die OGECM- und die ILCM-Flag nicht beide gesetzt, wird Schritt 445 ausgeführt .
  • In Schritt 445 wird die Nachbarschaftsvariable mit dem aktuellen Median-Datensample gleichgesetzt. Dann wird Schritt 446 wie oben beschrieben ausgeführt. Verbindungspunkt B 450 von 4B wird mit Verbindungspunkt B 450 von 4C verbunden.
  • Im nächsten Schritt 447 wird ein Test durchgeführt, um nachzusehen, ob die Größe des LTC-Zählers einen Wert kleiner oder gleich (N-1)/2 hat und die Größe des LTEC-Zählers einen wert größer (N-1)/2 hat. Ist dies nicht der Fall, wird Schritt 449 ausgeführt.
  • In Schritt 449 wird der aktuelle Median gleich der Nachbarschaftsvariablen gesetzt. Wird der Test in Schritt 447 bestanden, oder nach Ausführung von Schritt 449, wird Schritt 451 ausgeführt.
  • In Schritt 451 werden sowohl der LTC-Zähler als aus der LTEC-Zähler auf Null reinitialisiert. Dann gibt Verbindungspunkt C 453 von 4C die Ausführung der Routine zurück an Verbindungspunkt C 453 von 4A. Die Routine pausiert dann bis ein nächstes eingehendes Datensample erhältlich ist.
  • Als nächstes wird 5 beschrieben, welche die Verfahrensschritte des 2N-Ausführungsbeispiels repräsentiert. Eine Routine 500 beginnt beim Startschritt 501. Als nächstes werden in Schritt 503 die N Datensamples der Liste ein erstes Mal durchlaufen; während ein erster Zählwert der Menge der Datensamples mit einer Größe kleiner einer Größe des aktuellen Median-Datensamples festgehalten wird. Gleichzeitig wird ein zweiter Zählwert einer Menge von Datensamples mit einer Größe kleiner oder gleich einer Größe des aktuellen Median-Datensamples festgehalten. Auch wird ein Datensample mit einer Größe, welche der Größe des aktu ellen Median-Datensamples numerisch nächstbenachbart und größer als diese ist, aufgefunden.
  • In Schritt 505 wird als nächstes in Abhängigkeit von dem ersten und dem zweiten Zählwert bestimmt, ob oder ob nicht ein Median-Datensample für die Liste eine Größe hat, die von der Größe des aktuellen Median-Datensample verschieden ist.
  • Insbesondere ist, falls der Wert des ersten Zählwertes kleiner oder gleich (N-1)/2 ist und der Wert des zweiten Zählwertes größer als (N-1)/2 ist, das Median-Datensample gleich dem aktuellen Median-Datensample.
  • Wurde in Schritt 505 bestimmt, dass das Median-Datensample nicht gleich dem aktuellen Median-Datensample ist, wird in Schritt 507 die Liste ein zweites Mal durchlaufen und ein dritter Zählwert einer Menge von Datensamples mit einer Größe kleiner als eine Größe des Datensamples mit einer Größe, welche der Größe des aktuellen Median-Datensamples numerisch nächstbenachbart und größer als diese ist, wird festgehalten. Gleichzeitig wird ein vierter Zählwert einer Menge von Datensamples mit einer Größe klei- ner oder gleich der Größe des Datensamples mit einer Größe, welche der Größe des aktuellen Median-Datensamples numerisch nächstbenachbart und größer als diese ist, festgehalten. Auch wird ein Datensample aufgefunden mit einer Größe, welche der Größe des aktuellen Median-Datensamples numerisch nächstbenachbart und kleiner als diese ist.
  • In Schritt 509 wird in Abhängigkeit des dritten und des vierten Zählwertes eine Bestimmung durchgeführt, ob oder ob nicht das Median-Datensample für die Liste gleich dem Datensample mit einer Größte ist, welche der Größe des aktuellen Median-Datensamples numerisch nächstbenachbart und größer als diese ist. Insbesondere ist, falls der wert des dritten Zählwertes kleiner oder gleich ist als (N-1)/2 und der wert des vierten Zählwertes größer ist als (N-1)/2, das Median-Datensample gleich dem Datensample mit einer Größe, welche der Größe des aktuellen Medians numerisch nächstbenachbart und größer als dieser ist. Ist das Median-Datensamples für die Liste nicht gleich dem nächstgrößeren Datensample wird es auf das nächstkleinere Datensample gesetzt. Die Routine 500 wird in Schritt 511 beendet.
  • Für Systeme, die mit dem möglichen Auftreten eines zufälligen Fehlers im Speicher und seiner Auswirkungen auf das Suchverfahren konfrontiert sind, kann eine Fehlerkorrektur mit einem zusätzlichen Durchlauf durch die Liste implementiert werden. Bei diesem zusätzlichen Durchlauf kann das endgültige Medianresultat direkt getestet werden und, falls ein Fehler entdeckt wird und der abgeleitete Median definitiv als nicht mit dem aktuellen Median übereinstimmend festgestellt wird, kann der Speicher für die Liste und den aktuellen Median reinitialisiert werden.
  • Um irgendeine der oben beschriebenen, bevorzugten Verfahren zu implementieren, ist es ein leichtes, die Verfahrensoperationen in eine digitale Logikschaltung zu konvertieren und dabei dieselben strukturellen Beziehungen zwischen den Elementen aufrechtzuerhalten.
  • Zusammenfassend würde ein Verfahren und ein Filter zur verbesserten Mediansuche beschrieben, mit beschränktem Speicherzugriff, so dass sie effektiv in einem integrierten Schaltkreis hergestellt oder als Verfahren effizient ausgeführt werden können. Bei einem Ausführungsbeispiel werden zwei Durchgänge durch die Liste von N Samples durchgeführt. Bei einem anderen Ausführungsbeispiel wird an dem eingehen den und dem ausgehenden Datensample ein Vortest im Vergleich zu einem aktuellen Median-Datensample durchgeführt, um einen Durchgang durch die Liste zu eliminieren.

Claims (5)

  1. Verfahren zur iterationseffizienten Medianbestimmung, umfassend die Schritte: Bereitstellung einer zirkularen Liste (109) von N Datensamples, umfassend ein eingehendes Datensample (121, 303), ein aktuelles Mediandatensample (119) und ein ausgehendes Datensample (113, 301); Bestimmen (205), ob eine Größe eines Mediandatensamples für die Liste (109) ansteigen oder dieselbe bleiben soll, wie das aktuelle Mediandatensamples (119), und Bestimmen (205), ob das Mediandatensample für die Liste (109) abnehmen oder dasselbe bleiben soll, wie das aktuelle Datensample (119), durch Vergleichen der Größen sowohl des eingehenden Datensamples (121, 303) als auch des ausgehenden Datensamples (113, 301) mit einer Größe des aktuellen Mediandatensamples (119), und Bereitstellen einer. davon abhängigen Vorzeichenanzeige; Durchsuchen der zirkularen Liste (109) und Identifizieren (207) eines Datensamples der N Datensamples mit einer Größe, welche dem aktuellen Mediandatensample (119) nächst benachbart und größer als dieses ist, falls das Mediandatensample für die Liste (109), wie durch die Vorzeichenanzeige bestimmt (205), ansteigen sollte, und Identifi zieren (207) eines Datensamples mit einer Größe, welche dem aktuellen Mediandatensample (119) nächst benachbart und kleiner als dieses ist, falls das Mediandatensample für die Liste (109), wie durch die Vorzeichenanzeige bestimmt (205), abnehmen sollte, und, in Abhängigkeit hiervon, Bereitstellen (207) eines nächst benachbarten Datensamples; und Ändern (209) einer Größe des aktuellen Mediandatensamples (119) in das in dem Schritt des Suchens identifizierte, nächst benachbarte Datensample, falls eine Anzahl von Datensamples aus der zirkularen Liste (109) mit einer Größe kleiner als das aktuelle Datensample (119) größer ist als (N-1)/2 oder falls eine Anzahl von Datensamples aus der zirkularen Liste (109) mit einer Größe kleiner oder gleich dem aktuellen Mediandatensample (119) kleiner oder gleich ist als (N-1)/2.
  2. Verfahren nach Anspruch 1, weiter umfassend den Schritt: Initialisieren (403) der zirkularen Liste (109) in einen vorbestimmten Zustand und Initialisieren (403) des aktuellen Mediandatensamples (119) in eine Größe, die einem Median der initialisierten zirkularen Liste (109) entspricht.
  3. Verfahren nach Anspruch 1, weiter umfassend den Schritt: Ersetzen (413) des ausgehenden Datensamples (113, 301) auf der zirkularen Liste (109) durch das eingehende Datensample (121, 303) vor Ausführung des Bestimmungsschrittes.
  4. Verfahren nach Anspruch 1, wobei das ausgehende Datensample (113, 301) zu einer Zeit vor der Bereitstellung des eingehenden Datensamples (121, 303) bereitgestellt wird.
  5. Verfahren nach Anspruch 1, weiter umfassend den Schritt: Subtrahieren (117) einer Größe des aktuellen Mediandatensamples (119) von einer Größe eines Datensamples, welches eine zeitzentrierte Position in der zirkularen Liste (109) einnimmt, und, in Abhängigkeit hiervon, Bereitstellen eines gefilterten Mediandatensamples.
DE69629099T 1995-08-07 1996-05-21 Schnelles und leistungsfähiges median suchverfahren Expired - Lifetime DE69629099T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US511667 1995-08-07
US08/511,667 US6018750A (en) 1995-08-07 1995-08-07 Fast and efficient median search method and filter
PCT/US1996/007414 WO1997006483A1 (en) 1995-08-07 1996-05-21 A fast and efficient median search method and filter

Publications (2)

Publication Number Publication Date
DE69629099D1 DE69629099D1 (de) 2003-08-21
DE69629099T2 true DE69629099T2 (de) 2004-02-19

Family

ID=24035911

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69629099T Expired - Lifetime DE69629099T2 (de) 1995-08-07 1996-05-21 Schnelles und leistungsfähiges median suchverfahren

Country Status (4)

Country Link
US (1) US6018750A (de)
EP (1) EP0784816B1 (de)
DE (1) DE69629099T2 (de)
WO (1) WO1997006483A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115727A (en) * 1997-10-31 2000-09-05 Motorola, Inc. Time-weighted trimmed-mean filtering apparatus and method
US6199084B1 (en) * 1998-09-09 2001-03-06 Hitachi America, Ltd. Methods and apparatus for implementing weighted median filters
US7152081B2 (en) * 2001-08-07 2006-12-19 Ohoneywell International Inc. Methods for efficient filtering of data
US7003535B1 (en) * 2002-07-12 2006-02-21 Lockheed Martin Corporation Median determination apparatus and method
JP2004164565A (ja) * 2002-09-26 2004-06-10 Yokogawa Electric Corp 数値検索装置および数値検索方法
US6847882B2 (en) * 2003-05-15 2005-01-25 Visteon Global Technologies, Inc. Misfire detection system and method of median filtering
US8190650B2 (en) * 2006-05-02 2012-05-29 Microsoft Corporation Efficiently filtering using a web site
US8171069B2 (en) * 2008-04-10 2012-05-01 International Business Machines Corporation Streaming digital data filter
US8051120B2 (en) * 2008-04-10 2011-11-01 International Business Machines Corporation Circuit and design structure for a streaming digital data filter
CN104394411B (zh) * 2014-11-28 2018-01-26 上海集成电路研发中心有限公司 中值滤波装置及方法
CN108549060B (zh) * 2018-04-17 2020-10-13 北京环境特性研究所 一种目标关联方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2194364B (en) * 1986-08-20 1990-06-06 Gec Avionics A median filter
US5144568A (en) * 1987-05-26 1992-09-01 Sundstrand Corporation Fast median filter
US4928258A (en) * 1989-05-08 1990-05-22 The United States Of America As Represented By The Secretary Of The Air Force Recursive median filtering
EP0453582B1 (de) * 1990-03-23 1995-01-11 Deutsche ITT Industries GmbH Medianfilter
US5708595A (en) * 1995-03-03 1998-01-13 Motorola Inc. Efficient median filter and method therefor

Also Published As

Publication number Publication date
EP0784816A1 (de) 1997-07-23
WO1997006483A1 (en) 1997-02-20
US6018750A (en) 2000-01-25
EP0784816B1 (de) 2003-07-16
EP0784816A4 (de) 1999-11-24
DE69629099D1 (de) 2003-08-21

Similar Documents

Publication Publication Date Title
DE2934971C2 (de) Nach dem Fließbandprinzip arbeitender Zentralprozessor
EP0296588B1 (de) Verfahren und Schaltungsanordnung zum automatischen Wiedererkennen von Signalfolgen
DE69629099T2 (de) Schnelles und leistungsfähiges median suchverfahren
DE102005033256B4 (de) Vorrichtung und Verfahren zum Erzeugen eines Spektrogramm-Maskentriggers sowie Spektrogramm-Maske
EP0261273B1 (de) Verfahren zum Betreiben einer Maschine zum Entspannen von Werkstücken durch Vibration
DE69934956T2 (de) Logarithmus- / Antilogarithmusrechner
DE3007762A1 (de) Signalverarbeitungseinrichtung
EP1587244A1 (de) Verfahren zur Konfiguration einer Filtervorrichtung für einen in Frames organisierten Datenstrom, und Protokolltester
DE102004024415B4 (de) Fehlzündungserkennungssystem für eine Brennkraftmaschine
DE19653425C2 (de) Digitaloszilloskop mit einer Schwenk- und einer Zoomfunktion, die aus durch einen Triggerversatz indexierten, zeitlich gestempelten Datensätzen erzeugt werden
EP1296516A2 (de) Vorrichtung und Verfahren zur Teilbandzerlegung von Bildsignalen
DE2634426A1 (de) Bandkompressionseinrichtung
DE3538735C2 (de)
AT404417B (de) Digitalsignal-filtereinrichtung
EP0685706A1 (de) Verfahren zur Echtzeitermittlung des Offsetanteils eines Messsignales
EP1141935B1 (de) Anzeigevorrichtung und verfahren zur anzeige
DE3435539A1 (de) Impulszaehleinrichtung
DE3880554T2 (de) Datenerfassungsschaltung.
DE3035757C2 (de)
DE19951188B4 (de) Verfahren und Einrichtung zur Aufzeichnung von Impulssignalen
DE3606976C2 (de)
DE69818986T2 (de) Zeitgewichtiges kompensiertes medianfiltergerät und verfahren
EP1186175B1 (de) Verfahren und vorrichtung zur komprimierung und dekomprimierung von daten
WO2008049497A1 (de) Verfahren und vorrichtung zur inkrementierung von in speicherzellen eines speichers gespeicherten zählerständen
DE3243444A1 (de) Rekursives verfahren zur kennzeichnung von isotropen zonen in einem videobild sowie bewegungsdetektor und rauschdetektor fuer bildsequenzen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition