Brevet FR2607641A1 — publié le 19880603

FILTRE NUMERIQUE DE RANG K ET PROCEDE DE FILTRAGE CORRESPONDANT 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. Les filtres numériques sont utilisés par exemple pour le traitement de la parole ou le traitement des images. 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. Dans l'exemple 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. Ce type de filtrage élimine les points aberrants dus au bruit, mais il dégrade les contours de l'image. 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. 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 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. 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. La présente invention s'intéresse généralement aux filtres de rang k. La difficulté est de faire un filtrage en temps réel à une cadence élevée. 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. Il faut que le filtre puisse fournir des points corrigés à la même cadence. 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. 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. 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. 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 pas toujours suffisant, et ce n'est pas applicable plus généralement au filtrage de rang k. 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. 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. 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 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. 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. 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 établir un bit modifié dij à partir du bit bi, jde rang j de chaque valeur numérique en fonction de signaux de test, la valeur du bit dij étant soit O, soit 1, soit bij - 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 dl et fournissant un signal de sortie ayant un premier état ou un deuxième état selon que le nombre de bits modifiés d ij é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 dij 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. 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 klème position de la suite ordonnée, on regarde le nombre de bits de rang le plus élevé égaux à zéro; selon le résultat (supérieur ou égal à k ou au contraire infé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... On expliquera en détail comment ce principe permet de déterminer effectivement quel est la k1ème position de la suite ordonnée. 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 i 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. Avant de décrire en détail le circuit de la figure 1 qui constitue le mode de réalisation préféré de l'invention, on va expliquer le procédé de sélection de celle des valeurs numériques lm 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. On va partir d'un exemple concret d'une suite de valeurs binaires. Les valeurs binaires sont au nombre de n; dans l'exemple, n=9. Les valeurs sont codées sur p bits; dans l'exemple, p=4. Les poids binaires sont décroissants de gauche à droite et si on désigne 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 croit avec les poids décroissants. 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. Tableau 1 A1 0001 (1) A2 1000 (8) A3 0010 (2) A4 0111 (7) A5 0011 (3) A6 0110 (6) A7 0100 (4) A8 0101 (5) A9 0100 (4) Si on range ces valeurs sous forme d'une suite ordonnée croissante, on obtient l'ordre suivant: A1, A3, AS, A7, A9, A8, A6, A4, A2 1 2 3 4 4 5 6 7 8 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. 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 en binaire. Le procédé qui va être décrit doit donc aboutir à cette valeur 0100. 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. 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. 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). 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 A1 0001 A2 0111 A3 0010 A4 0111 A5 0011 AG 0110 A7 0100 A8 0101 A9 0100 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. 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. 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). 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 dont le bit de rang 2 est 0 sont nécessairement inférieures A 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. 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. Iei, cela concerne les valeurs A1, A3, A5. Il en résulte le tableau suivant de valeurs modifiées: Tableau 3 A1 0100 A2 0111 A3 0100 A4 0111 A5 0100 A6 0110 A7 0100 A8 0101 A9 0100 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. 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 A1 0100 A2 0101 A3 0100 A4 0101 A5 0100 A6 0101 A7 0100 A8 0101 A9 0100 Finalement les trois premiers bits du tableau de valeurs modifiées étant tous identiques, il ne reste plus qu'à tester le nombre de bits à O 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. Ce procédé est extrêmement simple à mettre en oeuvre à l'aide d'un circuit spécialisé ou d'un circuit non spé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 suffisamment de détails pour qu'il n'y ait pas de difficultés particulières. On va cependant décrire une réalisation avec un circuit de logique combinatoire qui a l'avantage d'être plus rapide. Le schéma est représenté à la figure 1. 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 &607641 conducteurs, mais la sortie du registre est constituée par p bus de n conducteurs chacun. 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 à un poids binaire respectif j (j=l à j=p dans l'ordre des poids décroissants) des chiffres binaires des n valeurs. On peut appeler bj le bit de poids j de la lime valeur. Ce bit est transmis par le bus BJ. 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 poids binaire des valeurs à traiter. Chaque groupe comprend trois blocs ayant des fonctions distinctes les uns des autres. 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 b,, un premier signal de test S,i et un deuxième signal de test Rij. Elle élabore un bit modifié dli ayant pour valeur 1 si S j=1, ou O si Ri, =1, ou b, j dans les autres cas. Le bloc CAj reçoit trois bus d'entrée Bj, SJ, Ri, de n conducteurs chacun, et possède comme sortie un bus Dj de n conducteurs également. 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 mi (1 bit) indiquant s'il y a ou non k ou plus de k bits à 0 sur le bus Dj. Le troisième bloc, désigné par CBj sur la figure, est constitué par n cellules élémentaires; chaque cellule reçoit le bit dli de rang j, le premier signal de test Sij, le second signal de test R1i jJ et enfin la sortie mj du bloc OMJ, et elle élabore un premier signal de test Si,+1 et un second signal de test Ri,+1 pour les blocs du rang binaire suivant j+1. Le bloc CBJ reçoit donc le bus Dj, le bus Sj, le bus RJ, et le signal mi, et sa sortie est constituée par les bus Sj+l et Rj+1. 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 La relation logique par laquelle on établit Si,j+1 et Ri,j+1 à partir de Si, et Ri, jest la suivante. L'astérisque * désigne le complément logique d'une valeur binaire: Si,+1 = Sij + mj*.dij R ij+l Ri, + mj.d*,j 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. Ces sorties sont regroupées en un bus M de p bits qui fournit la valeur cherchée à la sortie du filtre. Les schémas des figures 2 et 3 représentent respectivement un exemple de réalisation d'une cellule CAij d'un bloc CAJ, et une cellule CB 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, et du signal mi, et de même on préfère qu'elles établissent un signal représentant le complément de Rij+1 Par ailleurs, la cellule CAij établit un bit di, et son complément d*i, J le bloc OMJ utilisant de préférence ces deux signaux complémentaires comme on va maintenant le voir. La figure 4 représente une possibilité de réalisation du bloc OMJ. Le bloc comprend deux ensembles de transistors. Le premier ensemble comprend n transistors Til 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 O. Le registre est programmable si on le désire. Le deuxième ensemble comprend n transistors QJ 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 dl, issus du circuit CAJ. Le point de jonction entre la résistance Rj et. les drains des transistors Tij 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. 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. 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, peuvent recevoir tout simplement les compléments d*, des signaux di 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 d, à 0 et le nombre k programmé dans le registre. 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, 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 0 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 2 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 A la klème position d'une suite ordonnée, croissante ou décroissante, de n valeurs numériques appliquées A 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 A p pour les rangs de poids successifs décroissants, un circuit logique (CAJ) pour établir un bit modifié d 1, A partir du bit bi j de rang j de chaque valeur numérique en fonction de signaux de test, la valeur du bit d,j étant soit O, soit 1, soit bi. - pour chaque rang binaire j des 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 modifiés dl j et fournissant un signal de sortie (mj) ayant un premier état ou un deuxième état selon que le nombre de bits modifiés di,égaux A 0 est ou n'est pas supérieur ou égal A 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!3 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 (m1) 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, S1 et Rij pour chaque rang j et pour chaque valeur numérique i, ces signaux étant définis par la fonction récurrente suivante: S,j+1 = Si j + mj*.dij Rij+1 = Ri,3* m.d*lj 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 (OMIJ) comprend un premier ensemble de n transistors (Ti,) 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 à lt'état logique 1 et n-k à l'état logique 0, 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 d, issus du circuit d'établissement de bits modifiés 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 (OM]) comprend un premier ensemble de n transistors (Ti,) en parallèle, alimentés en courant à travers une résistance (RI), leurs grilles étant commandées individuellement par les compléments d*ij des bits modifiés d issus du circuit d'établissement de bits modifiés de rang J, et un deuxième ensemble de transistors (Q i,) en parallèle, alimentés en courant A travers une résistance R'j et ayant leurs grilles commandées individuellement par les bits modifiés dô, 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.