(19)
(11) EP 0 273 802 A2

(12) DEMANDE DE BREVET EUROPEEN

(43) Date de publication:
06.07.1988  Bulletin  1988/27

(21) Numéro de dépôt: 87402710.5

(22) Date de dépôt:  01.12.1987
(51) Int. Cl.4G06F 7/22
(84) Etats contractants désignés:
DE FR GB IT NL

(30) Priorité: 02.12.1986 FR 8616804

(71) Demandeur: SGS-THOMSON MICROELECTRONICS S.A.
F-75016 Paris (FR)

(72) Inventeurs:
  • Artieri, Alain
    F-75008 Paris (FR)
  • Bergher, Laurent
    F-75008 Paris (FR)
  • Quetier, Eric
    F-75008 Paris (FR)

(74) Mandataire: de Beaumont, Michel 
1bis, rue Champollion
38000 Grenoble
38000 Grenoble (FR)


(56) Documents cités: : 
   
       


    (54) Filtre numérique de rang K, et procédé de filtrage correspondant


    (57) L'invention concerne un circuit de filtrage numérique, pour déterminer quelle est la valeur à la kième position d'une suite ordonnée, croissante ou décroissante, de n valeurs numériques binaires reçues dans le désordre par le filtre.
    Selon l'invention on déterine s'il y a k ou plus de k bits de poids fort à zéro dans les n bits de poids fort des n valeurs à traiter, et on en déduit une modification éventuelle des autres bits; puis, on recommence la même détermination sur les bits de rang immédiatement inférieur en prenant en compte les bits tels qui'ils ont ou non été modifiés' on refait une modification en fonction du résultat de la noivelle détermination; et ainsi de suite jusqu'au rang le plus faible. La valeur cherchée est donnée sous forme binaire par les signaux représentant les résultats de ces tests successifs.
    Ce filtre est particulièrement adapté à un filtrage en temps réel de signaux d'image de télévision.




    Description


    [0001] La présente invention concerne le filtrage numérique, c'est à dire le filtrage de signaux électriques arrivant en principe sous forme binaire, sans conversion de ces signaux en signaux analogiques.

    [0002] Les filtres numériques sont utilisés par exemple pour le traitement de la parole ou le traitement des images.

    [0003] Diverses fonctions de filtrage sont couramment utilisées dans ces applications, et notamment des fonctions de lissage consistant à remplacer une valeur numérique déterminée par une fonction des valeurs numériques les plus voisines (dans le temps ou dans l'espace) de cette valeur.

    [0004] Dans l'example du filtrage de signaux numériques représentant les points d'une image (luminance, ou chrominance ou tout autre paramètre relatif à chaque point), on peut par exemple utiliser comme fonction de lissage le remplacement d'une valeur représentant un point d'image par la valeur moyenne des 9 ou 25 ou 49 points d'image d'un bloc matriciel de points centré autour de ce point.

    [0005] Ce type de filtrage élimine les points aberrants dus au bruit, mais il dégrade les contours de l'image.

    [0006] Le filtrage dit "médian" est un autre type de filtrage destiné à éliminer des points aberrants et qui a l'avantage de moins dégrader les contours.

    [0007] Le filtrage médian consiste à prendre l'ensemble des valeurs d'une fenêtre de n points (n impair), à les trier en ordre croissant ou décroissant, et à remplacer le point central de la fenêtre par la valeur médiane de la suite ordonnée. On rappelle que la valeur médiane est celle qui est au milieu de la suite, c'est à dire qu'il y a autant de points au dessous que de points au dessus de cette valeur.

    [0008] Plus généralement, le filtrage de rang k consiste à remplacer le point central de cette fenêtre par la kième valeur de la suite ordonnée. Le filtrage de rang k inclus le filtrage médian, avec k = (n+1)/2, ainsi que le filtrage de minimum (k = 1), et le filtrage de maximum (k = n), mais bien entendu k peut être quelconque.

    [0009] La présente invention s'intéresse généralement aux filtres de rang k.

    [0010] La difficulté est de faire un filtrage en temps réel à une cadence élevée.

    [0011] Pour le traitement d'images de télévision, les points peuvent arriver à la cadence d'un point toutes les 70 nanosecondes. Il y a 512x512 points par image.

    [0012] Il faut que le filtre puisse fournir des points corrigés à la même cadence.

    [0013] On a envisagé, comme on le fait souvent pour le filtrage numérique, que le filtrage soit fait par un logiciel de traitement spécialisé. Un ordinateur, ou plus simplement un microprocesseur spécialisé, serait piloté par un logiciel de traitement numérique exécutant un algorithme de filtrage de rang k; il recevrait les valeurs successives des points d'image et restituerait en temps réel des valeurs corrigées.

    [0014] Mais l'algorithme consiste à faire d'abord un tri pour ordonner une suite de n valeurs et les mettre en ordre croissant ou décroissant. Il est classique d'envisager qu'un tri de n éléments nécessite nlogn opérations. Pour le traitement d'images, n est au minimum égal à 9, et de préférence égal à 25 ou 49. Il est très difficile d'exécuter en 74 nanosecondes le nombre d'opérations qui est nécessaire pour faire ce tri.

    [0015] On a donc aussi proposé de réaliser directement par des circuits électroniques intégrés la fonction de tri, afin qu'elle soit beaucoup plus rapide que le travail exécuté instruction par instruction par un processeur. Mais les circuits qui en résultent sont très encombrants, la surface de circuit utilisée croissant comme le carré du nombre n de valeurs à trier.

    [0016] Enfin, pour résoudre ces difficultés, on a aussi proposé de remplacer le filtrage sur un bloc bidimensionnel de n=mxm points par un filtrage sur chaque ligne de m points suivi d'un filtrage sur les n résultats obtenus: c'est un pseudo-filtrage de rang k. Par exemple, au lieu de déterminer la valeur médiane d'une fenêtre de 9 points, on détermine trois valeurs médianes sur trois points chacune et on prend la médiane des valeurs médianes. Statistiquement, on s'aperçoit que le résultat est proche de la véritable médiane, mais ce n'est par toujours suffisant, et ce n'est pas applicable plus généralement au filtrage de rang k.

    [0017] Ceci montre bien les difficultés qu'on a rencontré jusqu'à maintenant pour faire du filtrage numérique de rang k en temps réel.

    [0018] La présente invention propose un procédé de filtrage original et un circuit correspondant, qui permettent de résoudre le problème du filtrage en temps réel d'une manière particulièrement intéressante.

    [0019] Le procédé selon l'invention consiste à:
    - recevoir et stocker n valeurs numériques sur lesquelles on désire effectuer un filtrage de rang k, les valeurs numériques étant reçues sous forme de signaux logiques binaires,
    - examiner l'ensemble de bits de rang le plus élevé des n valeurs, tester si le nombre de bits à "zéro" est ou n'est pas supérieur ou égal à k, et fournir un signal de test ayant un premier état dans l'affirmative et un deuxième état dans la négative,
    - établir, à partir de chaque bit des valeurs numériques et du signal de test, un bit modifié selon le principe suivant:

    a) pour le premier état du signal de test, on donne la valeur logique "un" à tous les bits de rang moins élevé de toutes les valeurs numériques ayant un bit "un" comme bit de rang le plus élevé, et on conserve les bits des autres valeurs

    (b) pour le deuxième état du signal de test, on donne la valeur logique "zéro" à tous les bits de rang moins élevé de toutes les valeurs numériques ayant un bit "zéro" comme bit de rang le plus élevé, et on conserve les bits des autres valeurs.

    - recommencer l'examen, le test, et l'établissement de bits modifiés, en prenant comme rang le plus élevé le rang immédiatement inférieur, et en prenant comme bits à tester les bits modifiés ayant ce rang immédiatement inférieur, et ainsi de suite jusqu'au rang le moins élevé;
    - transmettre à titre de signal de sortie du filtre les signaux logiques de test.

    [0020] On peut envisager une réalisation de filtre mettant en oeuvre ce procédé soit au moyen d'un circuit de logique séquentielle, soit au moyen de circuits de logique combinatoire. Un microprocesseur convenablement programmé pour effectuer les tests et les modifications de bit successives peut très bien être utilisé pour réaliser ce filtre sous forme de circuit de logique séquentielle.

    [0021] Pour réaliser le filtre sous forme d'un circuit de logique combinatoire, qui aura l'avantage d'être particulièrement rapide, on peut prévoir:
    - un registre pour recevoir et stocker les n valeurs numériques de p bits chacune,
    - pour chaque rang binaire j des valeurs numériques, j croissant de 1 à p pour les rangs de poids successifs décroissants, on prévoit un circuit logique pour étabilir un bit modifié di,j à partir du bit bi,j de rang j de chaque valeur numérique en fonction de signaux de test, la valeur du bit di,j étant soit 0, soit 1, soit bi,j
    - pour chaque rang binaire j des valeurs numériques, on prévoit un circuit respectif d'élaboration de signaux de test destinés au circuit d'établissement de bits modifiés de l'étage suivant de rang j+1, ce circuit comprenant
    un premier circuit recevant les bits modifiés di,j et fournissant un signal de sortie ayant un premier di,j égaux à 0 est ou n'est pas supérieur ou égal à k,
    et un deuxième circuit recevant ce signal de sortie, les signaux de test appliqués au circuit d'établissement de bits modifiés, ainsi que les bits di,j du rang binaire j, ce deuxième circuit fournissant les signaux de test correspondant au rang j+1,
    les signaux de sortie des premiers circuits constituant les sorties du filtre de rang k.

    [0022] Un des aspects très importants de l'invention est ce traitement rang binaire par rang binaire des différentes valeurs numériques; au lieu de trier les valeurs numériques pour les ranger dans un ordre croissant ou décroissant afin de déterminer ensuite quelle est la kième position de la suite ordonnée, on regarde le nombre de bits de rang le plus élevé égaux à zéro; selon le résultant (supérieur ou égal à k ou au contraire intérieur à k), on effectue une modification des bits de rang moins élevé; puis on examine les bits de rang immédiatement inférieur (en prenant en compte les bits modifiés et non les bits d'origine), on refait un test et une modification des bits de rang inférieur, et ainsi de suite..

    [0023] On expliquera en détail comment ce principe permet de déterminer effectivement quel est la kième position de la suite ordonnée.

    [0024] D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit et qui est faite en référence aux dessins annexés dans lesquels:

    - la figure 1 représente un schéma bloc du mode de réalisation préféré du filtre numérique selon l'invention;

    - la figure 2 représente un détail de réalisation d'une cellule de modification de bit du schéma de la figure 1;

    - la figure 3 représente un détail de réalisation d'une cellule du circuit d'élaboration des signaux de test destinés à définir les modifications de bit;

    - la figure 4 représente un exemple de réalisation du circuit permettant de comparer à un nombre k le nombre de bits égaux à zéro dans une suite de bits.



    [0025] Avant de décrire en détail le circuit de la figure 1 qui constitue le mode de réalisation de celle des valeurs numériques qui est à la kième position dans la suite ordonnée de n valeurs numériques. C'est en effet ce procédé qui est à la base de l'invention et qu'il faut comprendre pour comprendre le schéma de la figure 1.

    [0026] On va partir d'un exemple concret d'une suite de valeurs binaires.

    [0027] Les valeurs binaires sont au nombre de n; dans l'exemple, n=9.

    [0028] Les valeurs sont codées sur p bits; dans l'exemple, p=4.

    [0029] Les poids binaires sont décroissants de gauche à droite et si on désigné par j le rang binaire d'un bit quelconque, on précise que j varie de 1 à p en allant du poids le plus élevé vers le poids le plus faible: j croît avec les poids décroissants.

    [0030] La suite de valeurs numériques choisies à titre d'illustration est donnée ci-dessous, avec les valeurs décimales inscrites entre parenthèses en regard de chaque valeur binaire. On a donné à chaque valeur un nom: A1 à A9, les noms se succédant par exemple en correspondance avec l'ordre quelconque dans lequel les valeurs se sont présentées à l'entrée du filtre, ou encore en correspondance avec les adresses d'un registre dans lequel sont rangées ces valeurs.



    [0031] Si on range ces valeurs sous forme d'une suite ordonnée croissante, on obtient l'ordre suivant:



    [0032] Pour simplifier la description, on recherchera la valeur médiane de cette suite, mais le raisonnement serait le même pour déterminer la valeur qui est à une position k quelconque de cette suite.

    [0033] On voit que la valeur médiane (c'est à dire la cinquième position puisqu'il y a 9 valeurs) est égale à 4, c'est à dire 0100 en binaire. Le procédé qui va être décrit doit donc aboutir à cette valeur 0100.

    [0034] On examine les bits de la colonne de gauche du tableau 1, c'est-à-dire les bits de poids le plus élevé; on détermine s'il y en a k ou plus de k à 0; ici k=5 et la réponse est affirmative.

    [0035] On en tire deux conséquences:

    a) le bit de poids le plus élevé de la valeur cherchée (ici la valeur médiane) sera 0.

    b) les valeurs numériques dont le bit de poids le plus élevé est 1 sont nécessairement supérieures ou égales à la valeur médiane et on peut, sans changer la valeur médiane, remplacer ces valeurs par toute valeur supérieure ou égale à la valeur médiane.



    [0036] On choisit de remplacer ces valeurs par la valeur 0111 qui est nécessairement supérieure ou égale à la valeur médiane (dont on sait qu'elle commence par 0).

    [0037] Autrement dit, dans les valeurs ayant un bit de poids fort égal à 1, on remplace ce bit par 0 et les bits de poids inférieur par des 1. Ici, cela ne concerne que la valeur A2. Il en résulte le tableau modifié suivant.

    Tableau 2



    [0038] A1      0001
    A2      0111
    A3      0010
    A4      0111
    A5      0011
    A6      0110
    A7      0100
    A8      0101
    A9      0100

    [0039] La colonne de gauche ne comporte plus que des zéros; elle est devenue inutile pour la détermination de la valeur médiane; on la supprime et on considère le rang immédiatement inférieur comme rang le plus élevé pour recommencer un test identique au précédent.

    [0040] Il est bien entendu que si le test avait donné un autre résultat (moins de k bits égaux à 0), on aurait effectué un autre traitement. C'est cet autre traitement que l'on va voir ci-dessous à propos du test de la colonne de bits suivante.

    [0041] Le test de la deuxième colonne (rang j=2) du tableau 2 montre qu'il y a moins de k bits à 0 (k=5).

    [0042] On en tire les deux conséquences suivantes:

    a) le bit de rang j=2 de la valeur cherchée (médiane) est 1.

    b) les valeurs du tableau 2 t le bit de rang 2 est 0 sont nécessairement inférieures à la valeur médiane; elles peuvent donc, sans que cela change la valeur médiane, être remplacées par la valeur 0100; en effet, cette valeur est nécessairement inférieure ou égale à la valeur médiane car la valeur médiane a comme deux premiers bits 01.



    [0043] Plus généralement, si le bit de rang 2 est 0, on le remplace par 1 et on remplace tous les bits de rang supérieur à 2 par des zéros. Ici, cela concerne les valeurs A1, A3, A5.

    [0044] Il en résulte le tableau suivant de valeurs modifiées:

    Tableau 3



    [0045] A1      0100
    A2      0111
    A3      0100
    A4      0111
    A5      0100
    A6      0110
    A7      0100
    A8      0101
    A9      0100

    [0046] Les bits de rang 1 étant tous identiques ainsi que les bits de rang 2, on peut les ignorer dans la poursuite de la recherche de la valeur médiane.

    [0047] Le même test que précédemment est maintenant effectué sur les bits de la troisième colonne et les mêmes conséquences en sont tirées. Il en résulte d'une part le fait que le troisième bit de la valeur cherchée est ici un 0, et d'autre part un tableau 4 dans lequel les valeurs dont le troisième bit est un 1 ont été remplacées par la valeur 0101 certainement supérieure ou égale à la valeur médiane cherchée.

    Tableau 4



    [0048] A1      0100
    A2      0101
    A3      0100
    A4      0101
    A5      0100
    A6      0101
    A7      0100
    A8      0101
    A9      0100

    [0049] Finalement les trois premiers bits du tableau de valeurs modifiées étant tous identiques, il ne reste plus qu'à tester le nombre de bits à 0 dans la dernière colonne. Si ce nombre est supérieur ou égal à k, le dernier bit de la valeur cherchée sera 0. C'est bien le cas ici, et on vérifie donc que les quatre bits de la valeur cherchée sont 0100 comme on l'avait prévu au départ.

    [0050] Ce procédé est extrêmement simple à mettre en oeuvre à l'aide d'un circuit spécialisé ou d'un circuit nonspécialisé commandé par des instructions (microprocesseur); la séquence des opérations de test et de modification de bits est décrite ci-dessus avec suffisament de détails pour qu'il n'y ait pas de difficultés particulières.

    [0051] On va cependant décrire une réalisation avec un circuit de logique combinatoire qui a l'avantage d'être plus rapide.

    [0052] Le schéma est représenté à la figure 1.

    [0053] Pour stocker les n valeurs numériques dont on veut déterminer la médiane (ou la kième position), on prévoit un registre de n mots de p bits; il est désigné par REG sur la figure 1. Les valeurs ont été introduites par exemple séquentiellement dans ce registre, mais elles doivent pouvoir en sortir toutes en parallèle. C'est pourquoi l'entrée du registre, qui peut être aussi l'entrée du filtre, est un bus E de p conducteurs, mais la sortie du registre est consituée par p bus de n conducteurs chacun.

    [0054] Sur la figure 1, on a considéré que p=4 pour simplifier, et on a donc représenté quatre bus B1, B2, B3, B4 de n bits chacun. Chaque bus correspond à une poids binaire respectif j (j=1 à j=p dnas l'ordre des poids décroissants) de chiffres binaires des n valeurs.

    [0055] On peut appeler bi,j le bit de poids j de la iième valeur. Ce bit est transmis par le bus Bj.

    [0056] Le circuit de détermination de la kième valeur est un réseau de p groupes de circuits que l'on va détailler ci-après. Il y a un groupe respectif de circuits pour chaque pois binaire des valeurs à traiter.

    [0057] Chaque groups comprend trois blocs ayant des fonctions distinctes les uns des autres.

    [0058] Le premier bloc, désigné par CAj pour le poids binaire j (Ca1, CA2, CA3, CA4 sur la figure 1), est constitué par n cellules élémentaires; chaque cellule reçoit un bit bi,j, un premier signal de test Si,j et un deuxième signal de test Ri,j. Elle élabore un bit modifié di,j ayant pour valeur 1 si Si,j=1, ou 0 si Ri,j=1 ou bi,j dans les autres cas.

    [0059] Le bloc CAj reçoit trois bus d'entrée Bj, Sj, Rj, de n conducteurs chacun, et possède comme sortie un bus Dj de n conducteurs également.

    [0060] Le deuxième bloc, désigné par OMj pour le rang binaire j, reçoit le bus Dj, et il fournit sur sa sortie un signal logique mj (1 bit) indiquant s'il y a ou non k ou plus de k bits à 0 sur le bus Dj

    [0061] Le troisième bloc, désigné par CBj sur la figure, est constitué par n cellules élémentaires; chaque cellule reçoit le bit di,j de rang j, le premier signal de test Si,j, le second signal de test Ri,j et enfin la sortie mj du bloc OMj, et elle élabore un premier signal de test Si,j+1 et un second signal de test Ri,j+1 pour les blocs du rang binaire suivant j+1.

    [0062] Le bloc CBj reçoit donc le bus Dj, le bus Sj, le bus Rj, et le signal mj, et sa sortie constituée par les bus Sj+1 et Rj+1.

    [0063] Le circuit fonctionne donc par élaboration successive des signaux de test correspondant aux poids binaires successifs décroissants. Pour que le fonctionnement soit parfaitement déterminé, on doit imposer les valeurs initiales des signaux de test pour le poids le plus élevé. Ces valeurs sont:
    Si,1 = Ri,1 = 0

    [0064] La relation logique par laquelle on établit Si,j+1 et Ti,j+1 à partir de Si,j et Ri,j est la suivante. L'astérisque * désigne le complément logique d'une valeur binaire:
    Si,j+1 = Si,j + mj*.di,j
    Ri,j+1 = Ri,j + mj.d*i,j

    [0065] Les sorties du circuit de filtrage sont les sorties des blocs OMj: la sortie du bloc OMj représente le chiffre binaire de rang j de la valeur médiane ou de la valeur à la kième position de la suite de n valeurs.

    [0066] Ces sorties sont regroupées en un bus M de p bits qui fournit la valeur cherchée à la sortie du filtre.

    [0067] Les schémas des figures 2 et 3 représentent respectivement un exemple de réalisation d'une cellule CAi,j d'un bloc CAj, et une cellule CBi,j d'un bloc CBj. On notera que pour des raisons de simplification de dessin, on préfère que les cellules reçoivent le complément logique du signal Ri,j et du signal mj, et de même on préfère qu'elles établissent un signal représentant le complément de Ri,j+1. Par ailleurs, la cellule CAi,j établit un bit di,j et son complément d*i,j, le bloc OMj utilisant de préférence ces deux signaux compémentaires comme on va maintenant le voir.

    [0068] La figure 4 représente une possiblité de réalisation du bloc OMj.

    [0069] Le bloc comprend deux ensembles de transistors.

    [0070] Le preimer ensemble comprend n transistors Ti,j en parallèle (pour le bloc OMj). Ces transistors sont alimentés en courant à travers une résistance Rj ou un transistor à caractéristique résistive, et leurs grilles sont commandées individuellement par les sorties d'un registre RK qui définit le nombre k de la manière suivante: le registre possède n sorties dont k sont à l'état logique 1 et n-k à l'état 0. Le registre est programmable si on le désire.

    [0071] Le deuxième ensemble comprend n transistors Qi,j en parallèle. Ces transistors sont alimentés en courant à travers une résistance R'j et leurs grilles sont commandées individuellement par les bits modifiés di,j issus du circuit CAj.

    [0072] Le point de jonction entre la résistance Rj et les drains des transistors Ti,j est relié à une première entrée d'un amplificateur différentiel AD. Le point de jonction entre la résistance R'j et les drains des transistors Qi,j est relié à l'autre entrée de cet amplificateur.

    [0073] La sortie de cet amplificateur fournit le signal mj ou son complément selon les polarités choisies pour les entrées de l'amplificateur

    [0074] Dans le cas d'un filtre médian ou k=(n+1)/2, on n'a pas spécialement besoin du registre RK car les grilles des transistors Ti,j peuvent recevoir tout simplement les compléments d*i,j des signaux di,j.

    [0075] Ce circuit de la figure 4 repose sur la possibilité de réaliser sur un circuit intégré 2n transistors ayant des caractéristiques identiques notamment en ce qui concerne leur résistance interne dans l'état passant. En effet, l'amplificateur AD va basculer dans un sens ou dans l'autre selon les potentiels présents à ses entrées; si les transistors sont identiques, le basculement sera directement le résultat de la comparaison entre les nombres de transistors rendus conducteurs dans les deux ensembles, c'est-à-dire de la comparaison entre le nombre de bits di,j à 0 et le nombre k programmé dans le registre.

    [0076] On pourrait envisager que le registre RK fournisse le nombre k sous forme binaire pondérée, mais alors il faut prévoir aussi que les transistors Ti,j aient des dimensions relatives pondérées de la même manière et surtout que leurs résistances internes soient pondérées de la même manière.


    Revendications

    1. Procédé de filtrage numérique pour déterminer quelle est la valeur à la kième position d'une suite ordonnée, croissante ou décroissante, de n valeurs numériques appliquées à l'entrée d'un filtre sous forme de signaux logiques binaires, caractérisé en ce qu'il consiste à:
    - recevoir et stocker les n valeurs numériques,
    - examiner l'ensemble des bits de rang le plus élevé des n valeurs, tester si le nombre de bits à "zéro" est ou n'est pas supérieur ou égal à k, et fournir un signal de test ayant un premier état dans l'affirmative et un deuxième état dans la négative,
    - établir, à partir de chaque bit des valeurs numériques et du signal de test, un bit modifié selon le principe suivant:
    a) pour le premier état du signal de test, on donne la valeur logique "un" à tous les bits de rang moins élevé de toutes les valeurs numériques ayant un bit "un" comme bit de rang le plus élevé, et on conserve les bits des autres valeurs
    b) pour le deuxième état du signal de test, on donne la valeur logique "zéro" à tous les bits de rang moins élevé de toutes les valeurs numériques ayant un bit "zéro" comme bit de rang le plus élevé, et on conserve les bits des autres valeurs
    - recommencer l'examen, le test, et l'établissement de bits modifiés, en prenant comme rang le plus élevé le rang immédiatement inférieur, et en prenant comme bits à tester les bits modifiés ayant ce rang immédiatement inférieur, et ainsi de suite jusqu'au rang le moins élevé'
    - transmettre à titre de signal de sortie du filtre les signaux logiques de test.
     
    2. Filtre numérique de rang k pour déterminer quelle est la valeur à la kième position d'une suite ordonnée, croissante ou décroissante, de n valeurs numériques appliquées à l'entrée du filtre sous forme de signaux logiques binaires de p bits chacune, caractérisé en ce qu'il comporte:
    - un registre (REG) pour recevoir et stocker les n valeurs numériques de p bits,
    - pour chaque rang binaire j des valeurs numériques, j croissant de 1 à p pour les rangs de poids successifs décroissants, un circuit logique (CAj) pour établir un bit modifié di,j à partir du bit bi,j de rang j de chaque valeur numérique en fonction de signaux de test, la valeur du bit di,j étant soit 0, soit 1, soit bi,j
    - pour chaque rang binaire j dest valeurs numériques, un circuit respectif d'élaboration des signaux de test destinés au circuit d'établissement de bits modifiés de l'étage suivant de rang j+1, ce circuit comprenant;
    un premier circuit (OMj) recevant les bits modifés di,j et fournissant un signal de sorti (mj) ayant un premier état ou un deuxième état selon que le nombre de bits modifiès di,j égaux à 0 est ou n'est pas supérieur ou ègal à k,
    et un deuxième circuit (CBj) recevant ce signal de sortie (mj), les signaux de test appliqués au circuit d'établissement de bits modifiés, et les bits di,j du rang binaire j des valeurs numériques, ce deuxième circuit fournissant les signaux de test correspondant au rang j+1,
    les signaux de sortie (mj) des premiers circuits constituant les sorties du filtre de rang k.
     
    3. Filtre numérique selon la revendication 2, caractérisé en ce que les signaux de test sont au nombre de deux, Si,j et Ri,j pour chaque rang j et pour chaque valeur numérique i, ces signaux étant définis par la fonction récurrents suivante:
    Si,j+1 = Si,j + mj*.di,j
    Ri,j+1 = Ri,j + mj.d*i,j
    avec
    Si,1 = Ri,1 = 0
    l'astérisque * désignant le complément logique d'une valeur binaire.
     
    4. Filtre selon l'une des revendications 2 et 3, caractérisé en ce que le premier circuit (OMj) comprend un premier ensemble de n transistors (Ti,j) en parallèle, alimentés en courant à travers une résistance (Rj), leurs grilles étant commandées par un registre (RK) ayant n sorties dont k sont à l'état logique 1 et n-k à l'état logique 0, et un deuxième ensemble de transistors (Qi,j) en paralléle, alimentées en courant à travers une résistance Rʹj et ayant leurs grilles commandées individuellement par les bits modifiés di,j issus du circuit d'établissement de bits modifiées de rang j, le premier circuit comprenant encore un amplificateur différentiel dont une entrée est reliée aux drains des transistors du premier ensemble et une autre entrée est reliée aux drains des transistors du deuxième ensemble.
     
    5. Filtre médian selon l'une des revendications 2 et 3, caractérisé en ce que le premier circuit (OMj) comprend un premier ensemble de n transistors (Ti,j) en paralléle, alimentés en courant à travers une résistance (Rj), leurs grilles étant commandées individuellement par les compléments d*i,j des bits modifiés di,j issus du circuit d'établissment de bits modifiés de rang j, et un deuxième ensemble de transistors (Qi,j) en parallèle, alimentés en courant à travers une résistance Rʹj et ayant leurs grilles commandées individuellement par les bits modifiés di,j, le premier circuit comprenant encore un amplificateur différentiel dont une entrée est reliée aux drains des transistors du premier ensemble et une autre entrée est reliée aux drains des transistors du deuxième ensemble.
     




    Dessins