FR 2930360 A1 20091023 FR 0802206 A 20080421 INRIA94.FRD Dispositif de traitement d'images amélioré L'invention concerne un dispositif de traitement d'images pour améliorer une image, par exemple une image acquise avec un dispositif d'imagerie. De nos jours, une opération d'imagerie comporte classiquement une étape d'acquisition de données d'images, et une étape d'affichage de l'image acquise. En fonction de la méthode d'imagerie choisie (par exemple ultrason, IRM, rayons X 10 etc.) et du type de matériel employé pour l'acquisition de l'image, l'image acquise présente une qualité plus ou moins propre à une exploitation au moyen d'un affichage. Dans le cas particulier de l'imagerie par ultrasons, une composante de bruits particulièrement gênante est le bruit appelé � chatoiement � (� speckle � en anglais). Ce 15 type de bruit est particulièrement gênant. En effet, il est extrêmement difficile à réduire, est de nature difficilement modélisable, et requiert des moyens conséquents de calcul pour obtenir des résultats satisfaisants. Tous ces problèmes rendent difficile une opération de débruitage permettant un 20 affichage en temps réel. Des solutions de débruitage ont été développées, mais leurs performances sont insuffisantes. 25 L'invention vient à améliorer la situation. À cet effet, l'invention propose un dispositif de traitement d'image, comprenant : * une mémoire pour recevoir des données d'image comprenant chacune un 30 identifiant de point et au moins une donnée d'intensité associée, * une unité de réduction, capable de sélectionner des points de travail (Vi) autour d'un point donné sur la base d'une règle de réduction, 15 * une unité de sélection de voisinage, capable de sélectionner un voisinage (Ni) d'un point donné sur la base d'une règle de voisinage, * une unité de pondération, capable de calculer une valeur de pondération 5 entre deux voisinages, sur la base de distances entre les données d'intensité dans ces voisinages, et * un pilote, agencé pour appeler l'unité de réduction avec des points à pondérer, et pour chaque point à pondérer, agencé pour : - appeler l'unité de sélection, d'une part avec le point à pondérer pour définir un premier voisinage, et d'autre part avec les points de travail associés pour définir une pluralité de deuxièmes voisinages, 15 - appeler répétitivement l'unité de pondération avec le premier voisinage et un voisinage parmi la pluralité de deuxièmes voisinages, pour obtenir à chaque fois une valeur de pondération de deuxième voisinage, - multiplier chaque valeur de pondération de deuxième voisinage par la 20 donnée d'intensité du point de travail associé, pour définir à chaque fois une donnée d'intensité pondérée de point de travail, et - définir une donnée d'intensité pondérée du point à pondérer en additionnant chacune des données d'intensité pondérée de point de travail. L'unité de pondération est agencée pour calculer la distance entre des premier et deuxième voisinages à partir de la somme des carrés de la différence entre les données d'intensité respectives de ces voisinages, chaque carré étant modulé par une quantité inversement proportionnelle aux données d'intensité dans le deuxième voisinage. Un tel dispositif est avantageux car il permet de réaliser un débruitage extrêmement efficace, tout en présentant des coûts de calcul raisonnables. 10 25 30 D'autres caractéristiques et avantages de l'invention apparaîtront mieux à la lecture de la description qui suit, tirée d'exemples donnés à titre illustratif et non limitatif, tirés des dessins sur lesquels : - la figure 1 représente une vue schématique d'un dispositif selon l'invention ; - la figure 2 est un diagramme représentant les étapes principales d'un traitement d'images selon l'invention ; - la figure 3 représente un premier mode de réalisation en exemple d'une étape de la figure 2 ; - le figures 4 à 7 représentent des mises en oeuvre particulières d'opération de la figure 3; - la figure 8 décrit un mode de réalisation en variante de la figure 3 ; et - les figures 9 à 11 représentent des mises en oeuvre particulières d'opérations de la figure 8. Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. Ils pourront donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. 25 La présente description est de nature à faire intervenir des éléments suscepi:ibles de protection par le droit d'auteur et/ou le copyright. Le titulaire des droits n'a pas d'objection à la reproduction à l'identique par quiconque du présent document de brevet ou de sa description, telle qu'elle apparaît dans les dossiers officiels. Pour le reste, il réserve intégralement ses droits. 30 En outre, la description détaillée est augmentée de l'annexe A, qui donne la formulation de certaines formules mathématiques mises en oeuvre dans le cadre de l'invention. Cette Annexe est mise à part dans un but de clarification, et pour faciliter les renvois Elle est 20 partie intégrante de la description, et pourra donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. La figure 1 représente une vue schématique d'un dispositif de traitement d'images selon 5 l'invention en interaction avec un dispositif d'imageries. Un dispositif d'imagerie 2 comporte un capteur 4 et une unité d'affichage 6. Après acquisition d'une image par le capteur 4, des données d'image brute 8 sont 10 transmises au dispositif de traitement d'image 10. Le dispositif de traitement d'image 10 traite les données d'image brute 8 et renvoie des données d'image améliorée ou déb:ruitée 12 pour affichage par l'unité d'affichage 6. Le dispositif 10 comporte un pilote 100 qui commande une mémoire 110, une unité de 15 réduction 120, une unité de sélection 130 et une unité de pondération 140 pour transformer les données d'image brute 8 en données d'image améliorée 12. D'une manière générale, les données d'image brute 8 et les données d'image améliorée 12 peuvent être considérées comme un ensemble de n-uplets comportant pour chaque 20 point de l'image : * des coordonnées du point concerné dans l'image, et * des données d'intensité qui sont associées à ce point. L'invention trouve son application dans des images à deux dimensions, à trois dimensions ou plus. Par conséquent, les coordonnées de point d'image peuvent être représentées par un n-30 uplet où n est la dimension de l'espace considéré (c'est-à-dire 2 pour une image plane, 3 pour une image en 3 dimensions, etc.). En ce qui concerne les données d"intensité des points, l'invention concerne tous les types d'affichages, que ce soit en couleur ou en dégradés de gris. 25 Par conséquent, les données d'intensité peuvent être représentées par un nombre désignant une valeur de dégradé dans le cas d'une image en dégradés de grisä ou être un n-uplet, par exemple un triplé de valeurs RGB dans le cas d'une imagerie en couleur. En outre, bien que le dispositif 10 ait été représenté sur la figure 1 comme extérieur au dispositif d'imagerie 2, il doit être compris que le dispositif 10 peut être indifféremment intégré à l'intérieur du dispositif d'imagerie 2 ou à l'extérieur de celui-ci. 10 Le rôle et les fonctions de l'unité de réduction 120, de l'unité de sélection 130, et de l'unité de pondération 140 apparaîtront mieux à la lecture de ce qui suit. La figure 2 représente un diagramme de haut niveau du traitement des données d'image brute 8 par le dispositif de traitement d'image 10. Les données d'image brute 8 sont d'abord reçues dans une opération 200 et stockées dans la mémoire 110. Ensuite, dans une opération 210, des paramètres de traitement sont entrés. Ces 20 paramètres et leur influence sur le traitement d'image apparaîtront mieux à la lecture de la suite de la description. On notera que l'opération 210 est optionnelle, et qu'il est par exemple possible de fixer les paramètres de traitement préalablement à toute acquisition d'image. Ensuite, une boucle est lancée dans laquelle les points des données d'image reçues en 200 sont traités successivement dans une opération 220 pour débruiter l'image et produire les données d'image améliorée 12. 30 Une opération 230 assure le passage à un point suivant dans les données d'image brute 8, ou génère l'envoi des données d'image améliorée 12 dans une opération 240 lorsque tous les points des données d'image reçues ont été traités. La figure 3 représente un premier mode de réalisation de l'opération 220. 15 25 Cette opération part, en 300, d'un point d'image courant à traiter Pond_Pix. Ici, le terme Pond_Pix fait référence à la notion de pixel. Cela est du au fait que, dans l'exemple décrit, l'image traitée est bidimensionnelle. Pour des images de dimensions supérieures, par exemples tridimensionnelles, on parlerait de Pond_Pix pour faire référence à un voxel. Le résultat de l'opération 200 sera un point d'image dans les données d'image améliorée 12 qui a d'une part les coordonnées du point Pond _Pix, et d'autre part des 10 données d'intensité débruitées. Dans une opération 310, le pilote 100 appelle l'unité de réduction 120 pour sélectionner des points de travail autour du point Pond_Pix. 15 Ensuite, dans une opération 320, le pilote 100 appelle l'unité de sélection de voisinage 130 pour définir un voisinage de points autour du point Pond_Pix parmi les points de travail sélectionnés dans l'opération 310. Ensuite, une boucle de pondération est lancée dans laquelle les points de travail 20 sélectionnés dans l'opération 310 sont successivement utilisés en tant que points de travail courants Wk_Pix pour établir des valeurs de pondération de l'intensité du point Pond_Pix. Ici, le point Pond_Pix le point qui est pondéré dans la boucle principale (opérations 220 25 et 230), et on qualifie le point Wk_Pix de point de travail car c"est lui qui varie dans la boucle secondaire (opérations 330 à 350). Cette boucle commence en 330 avec l'appel de l'unité de sélection de voisinage 130, par le pilote 100, pour sélectionner un voisinage de points autour du point de travail 30 courant Wk_Pix. Dans une opération 340, une fonction Pond( ) est exécutée pour déterminer une valeur de pondération entre le voisinage du point Pond_Pix et le voisinage du point de travail Wk Pix. Le résultat de cette pondération est stocké dans un tableau w_Int[] en correspondance d'un identifiant du point de travail Wk_Pix. Enfin, dans une opération 350, un test vérifie si l'ensemlble des points de travail sélectionnés dans l'opération 310 ont été balayés. Si c'est le cas, l'opération 220 se prolonge par le calcul d'une intensité pondérée pour le point Pond_Pix en 360, sur la base du tableau w_Int[] et des intensités des points 10 Wlc Pix. Ensuite, l'opération 30 se termine en 370 et les données d'image améliorée 12 sont envoyées au dispositif d'imagerie 2 pour affichage par l'unité d'affichage 6. 15 Dans le cas contraire, la boucle de pondération est réitérée avec un nouveau point de travail Wk_Pix en 330. La fonction Pond() est basée sur une pondération de type � Non-Local Means �, adaptée à un modèle de bruit de chatoiement empirique proposé dans � An adaptive weighted 20 median filter for speckle suppression in medical ultrasound image �, IEEE T. Circ. Syst., 36 :129-135, 1989 par Loupas et al. D'une manière générale, la pondération du type � Non-Local Means � est basée sur l'hypothèse que deux pixels (ou voxels) similaires ont des voisinages similaires, 25 quelque soit la distance � physique � qui les sépare au sein de l'image. Comme le montre la formule (10) de l'annexe A cette pondération est définie par la somme des produits d'intensités u(xj) par des coefficients de pondération w(x,, xi). 30 Les coefficients de pondération sont calculés sur la base des différences quadratiques des intensités des points considérés, comme représenté avec la formule (11) de l'annexe A. Une fois tous les points considérés, la valeur pondérée est définie Le problème de ce type de pondération est qu'il n'est pas adapté pour prendre en compte le bruit du type chatoiement. La Demanderesse a observé qu'une formulation Bayesienne de la pondération � Non-Local Means � appliquée au modèle de bruit de chatoiement mentionné plus haut peut être exprimée en utilisant la formule de l'équation (20) de l'annexe A. Ensuite, la Demanderesse a utilisé un modèle de bruit représenté par la formule (21) de 10 l'annexe A, et a démontré que ce modèle peut être combiné avec la formule (20) pour établir la formule de pondération (30). Dans le cas décrit ici, on utilise y = 0,5. Dans la formule (30), les coefficients de pondération sont calculés sur la base des différences quadratiques des intensités des points considérés modulées par l'intensité 15 de chaque point de pondération, comme représenté dans la formule (31) de l'annexe A. Il ressort de la comparaison de la formule (10) et la formule (30) que, contrairement à toute attente, elles sont extrêmement similaires, en ce sens que l'on peut passer de l'une à l'autre en remplaçant la formule (11) par la formule (31), et inversement. Ce résultat est extrêmement surprenant lorsque l'on tient compte des différences entre ces méthodes. Par ailleurs, la formule (30), tout en donnant des résultats nettement supérieurs à la formule (10), conserve un coût de calcul tolérable pour des applications en temps réel. La figure 4 représente une mise en oeuvre en exemple de l'opération 310. Cette opération part en 3100 d'un point courant Pond_Pix caractérisé comme on l'a vu précédemment par ses coordonnées et par l'intensité qui lui est associée. En 3110, l'unité de réduction 120 définit l'ensemble des points de travail qui vont être considérés dans la boucle de pondération de l'opération 310, au moyen d'une règle de sélection. 20 25 30 Dans l'exemple ici décrit, cette règle de sélection définit un carré de longueur 2M+1 centré sur le point Pond_Pix. Le nombre M est un des paramètres de l'opération 210. Ce paramètre influe sur les performances de débruitage car il définit la fenêtre de travail qui va servir de base à la pondération du point Pond_Pix. Ainsi, plus M est grand, et plus le coût de calcul est important, comme un grand nombre de points est pris en compte pour le débruitage, et meilleure est la qualité de ce dernier. Les travaux de la Demanderesse ont établi qu'il n'est pas utile de prendre un nombre M 10 trop élevé, du fait de la nature du bruit de chatoiement et des gains limités au-delà d'une certaine valeur. Dans les expériences réalisées, M=8 est une valeur qui a fourni des résultats favorables. Les expériences de la Demanderesse ont montré qu'un fonctionnement optimum est 15 obtenu avec un facteur M compris entre 4 et 12. Dans d'autres modes de réalisation, la sélection peut être réalisée de manière différente, par exemple en sélectionnant des points des données d'image brute contenus dans un cercle de rayon choisi autour du point Pond_Pix au lieu d'un carré, ou en déterminant 20 un rectangle. Dans une application avec des images tridimensionnelles, les carrés deviennent des cubes, et les cercles des sphères. En outre, cette sélection peut comprendre en variante une pré-pondération des valeurs des intensités des points sélectionnés. Ensuite, dans une opération 3120, le premier point de travail Wk_Pix (0) est défini et l'opération 310 se termine en 3130. La figure 5 représente une mise en oeuvre en exemple de l'opération 120. L'opération 320 part en 3200 du point courant Pond_Pix, qui est toujours caractérisé par ses coordonnées et son intensité. 25 30 En 3210, l'unité de sélection 130 opère en définissant un voisinage autour (lu point Pond_Pix, sur la base d'une règle de voisinage. Dans l'exemple ici décrit, cette règle de voisinage définit un carré de longueur 2a+1 centré sur le point Pond_Pix. Le nombre a est un autre des paramètres de l'opération 210. Ce paramètre influe également sur les performances de débruitage car il définit le nombre de points qui vont servir de base à la pondération locale de l'intensité du point Pond Pix. Ainsi, plus le nombre a est grand, et plus le coût de calcul est important, comme un grand nombre de points est pris en compte pour la pondération. Les travaux de la Demanderesse ont établi qu'il n'est pas utile de prendre un nombre a trop élevé, car cela revient à appliquer sensiblement le même coefficient de pondération 15 à tous les points de la fenêtre de travail. Dans les expériences réalisées, d=5 est une valeur qui a fourni des résultats favorables. Les expériences de la Demanderesse ont démontré qu'un fonctionnement optimum est obtenu avec un facteur d compris entre 1 et 15. Ces expériences ont également montré 20 que la valeur optimale du facteur d dépend de la résolution de l'image traitée. Dans d'autres modes de réalisation, la sélection peut être réalisée de manière différente, par exemple en sélectionnant des points de la fenêtre de travail contenus dans un cercle de rayon choisi autour du point Pond_Pix au lieu d'un carré, ou en déterminant un 25 rectangle. Ensuite, l'opération 320 se termine en 3220. La figure 6 est une mise en oeuvre particulière de l'opération 330. Cette mise en oeuvre est similaire à la mise en oeuvre de la figure 5 à cela près qu'elle part en 3300 d'un point de travail courant Wk_Pix parmi les points de la fenêtre de travail, et qu'elle définit un voisinage de ce point en 3310 sur la base des coordonnées du point Wk_Pix, avant de se terminer en 3320. 30 Dans l'exemple décrit ici, les opérations 320 et 330 sont réalisées de manière identique, c'est-à-dire que seul le point servant de base à la sélection du voisinage diffère. Il serait néanmoins possible de réaliser les opérations 320 et 330 de manière distincte, en conservant une correspondance entre les voisinages issus de ces opérations. La figure 7 représente une mise en oeuvre en exemple de l'opération 360. L'opération 360 part en 3600 du tableau de pondération w Int[] qui a été établi lors de 10 la boucle de pondération des opérations 330 à 350 de la figure 3. Dans une opération 3610, l'unité de pondération 140 calcule un facteur de normalisation Zi qui correspond à la somme des pondération du tableau w Int[]. Le facteur de normalisation Zi sert à assurer que la somme des w Int[k] est égale à 1. Ensuite, l'intensité pondérée NL(Pond Pix) du point courant Pond_Pix est définie comme la somme des intensités de chacun des points de travail Wk_Pix pondérées par la valeur de pondération w Int[Wk_Pix] de chaque point de travail Wk Pix, normalisé par le facteur Zi. Cela est réalisé dans une boucle dans laquelle un compteur k incrémenté en 3620 permet de parcourir le tableau w Int []. À la k-ième itération de cette boucle, la valeur de l'intensité du point courant Pond_Pix 25 est augmentée en 3630 d'une quantité correspondant au produit de : * la valeur de pondération w Int[k] du k-ième point de travail Wk Pix * par la valeur de l'intensité J[k] du k-ième point de travail Wk_Pix, et 30 * normalisée par le facteur Zi. Une condition d'arrêt en 3140 définit la fin du tableau w Int[], ce après quoi l'opération 360 se termine en 3650. 15 20 Une fois le tableau w Int[] entièrement parcouru, la valeur NL(Pond Pix) contient la valeur d'intensité qui est associée au point Pond_Pix dans les données d'image améliorée 12. Comme mentionné plus haut, les données d'image améliorée 12 sont transmises au dispositif d'imagerie 2 lorsque l'ensemble des points Pond_Pix des données d'image brute 8 ont été traités. La figure 8 représente une variante de l'opération de la figure 2. Cette variante a pour but d'améliorer la rapidité des calculs. Dans cette variante, l'image associée aux données d'image brute 8 est découpée en blocs d'intersection non vide entre eux, notés par la suite Blk[Pond_Pix[i]]. Les blocs sont obtenus en sélectionnant un sous-ensemble de points des données 15 d'image brute 8 espacés entre eux d'une distance n choisie. Ces points forment l'équivalent des points Pond_Pix de la figure 2. Les points ainsi sélectionnés peuvent être notés Pond Pix[i], où i est l'indice d'un point Pond_Pix parmi tous les points sélectionnés. 20 Cette notation est utilisée car, dans cette variante, la boucle principale (opérations 820 et 830) ne produit pas des données directement exploitables, contrairement à la variante de la figure 2, et il est nécessaire pour comprendre ce mode de réalisation de distinguer les points de pondération Pond_Pix entre eux. 25 Ensuite, chaque bloc Blk[Pond_Pix[i]] est défini en sélectionnant des points des données d'image brute 8 dans un carré de côté a entourant un point Pond Pix[i], avec 2a,>=n pour assurer l'intersection des blocs Blk[Pond_Pix[i]]. Le facteur n influe sur le temps de calcul en ce que plus n est élevé, et plus le temps de calcul est réduit, mais plus le débruitage est dégradé. 30 Le traitement par bloc part du principe que des points d'un même bloc peuvent être pondérés par la même valeur.10 L'intersection des blocs entre eux fait que certains points appartiennent à plusieurs blocs, ce qui permet d'obtenir une pondération de qualité comme cela apparaîtra plus bas.. Ce mode de réalisation diffère de celui de la figure 2 par la réalisation d'opérations 820 et 830 distinctes des opérations 220 et 230. Ainsi, l'opération 820 est modifiée pour faire une pondération par blocs, qui sera décrite avec la figure 9. L'opération 830 est modifiée pour sélectionner non plus le prochain point des données d'image brute 8 comme l'opération 230, mais pour sélectionner comme prochain point de pondération le centre du bloc Blk[Pond_Pix[i]] suivant. 15 Ce mode de réalisation comporte également une opération supplémentaire 850 après la boucle de pondération des opérations 820 et 830, et avant l'envoi en 840 des données d'image améliorée 12. L'opération 850 permet de tenir compte du fait que certains des points des données 20 d'image brute 8 sont présents dans plusieurs blocs Blk[Pond_Pix[i]]. La figure 9 représente une mise en oeuvre en exemple de l'opération 820 de la figure 8. Les opérations 900, 910, 950 et 970 sont similaires aux opérations 300, 310, 350 et 370 25 de la figure 3. Cette mise en oeuvre diffère de l'opération de la figure 3 par les opérations suivantes : * l'opération 920, détaillée avec la figure 10, diffère de l'opération 320 en ce 30 que le voisinage du point Pond Pix est remplacé par le bloc Blk[Pond Pix[i]], * l'opération 930, détaillée avec la figure 11, diffère de l'opération 330 en ce que le voisinage du point de travail Wk Pix est remplacé par le bloc Blk[Wk Pix],10 * l'opération 940, diffère de l'opération 340 en ce que la pondération est établie sur la base des blocs des opérations 920 et 930, et * l'opération 960, détaillée avec la figure 12, diffère de l'opération 360 en ce 5 que la valeur d'intensité est établie sur la base des pondérations de l'opération 940. La figure 10 représente un exemple de mise en oeuvre de l'opération 920. L'opération 920 part en 9200 du point Pond Pix. Dans une opération 9210, le bloc 10 Blk:[Pond_Pix[i]] est défini parmi les points sélectionnés dans l'opération 910. L'opération 9210 peut présenter les mêmes variantes de réalisations que celles mentionnées pour l'opération 3210, en remplaçant le nombre d par le nombre a, à ceci près qu'il faut maintenir la condition 2a.>=n. 15 Ensuite, l'opération 920 se termine en 9230. La figure 11 représente un exemple de mise en oeuvre de l'opération 930. 20 Les mêmes commentaires que ceux de l'opération 330 s'applique à l'opération 930, sauf qu'ici, l'opération de référence est l'opération 920 et non l'opération 320. Celte opération part ainsi en 9300 d'un point de travail courant Wk Pix, définit. un bloc correspondant Blk[Wk_Pix] en 9310 et se termine en 9320. Comme on l'a mentionné plus haut, sur la base du bloc Blk[Pond_Pix[i]] et des blocs Blk[Wk Pix], un tableau w Int_Blk[Pond Pix[i]] est calculé en 940, qui contient toutes les valeurs de pondération pour les points de travail sélectionnés dans l'opération 910. 30 La figure 12 représente un exemple de mise en oeuvre de l'opération 960. Cette opération est très similaire à l'opération 360 décrite avec la figure 7, et elle diffère de celle-ci principalement en ce que les opérations qui la compose sont adaptées à un traitement par blocs. 25 Ainsi, les opérations 9600, 9610, 9620, 9640 et 9650 sont similaires aux opérations 3600, 3610, 3620, 9640 et 3650 de la figure 7, à cela près qu'elles concernent le tableau w Int_Blk[] au lieu du tableau w Int[]. L'opération 3630 est modifiée pour tenir compte de la différence entre le traitement par bloc. Cette opération est ainsi remplacée par une boucle comprenant les opérations 9625, 9630, 9632 et 9635. En résultat, le tableau d'intensités pondérées NL_Blk est ici à deux dimensions, c'est-à-dire qu'il a : * un indice i qui indique quel point de pondération Pond Pix[i] a servi à la pondération, * un deuxieme indice j qui indique l'indice de chaque point de travail Wk Pix 15 dans la fenêtre de travail définie à l'opération 910, et * la valeur stockée au croisement des indices i et j correspond à la valeur pondérée de l'intensité du j-ième point du bloc Blk[Pond_Pix[i]]. 20 Concrètement, la boucle comprenant les opérations 9625, 9630, 9632 et 9635 opère de manière similaire à l'opération 3630, sauf qu'elle doit établir une valeur d'intensité pondérée pour tous les points du bloc Blk[Pond_Pix[i]]. Pour cela, pour un point de travail d'indice j, elle applique le même coefficient de 25 pondération w Int Blk[Pond_Pix[i][j] à chaque point du bloc Wk_Pix correspondant. Ainsi, le k-ième point du bloc Blk[Pond_Pix[i]] reçoit pour chaque indice j une quantité correspondant au produit de : 30 * la valeur de pondération w Int_Blk[Pond_Pix[i][jI associée au j-ième point de travail Wk Pix, * par la valeur de l'intensité J[j][k] du k-ième point du bloc Blk[Wk Pix] associé au j-ième point de travail, et 10 * normalisée par le facteur Zi. Ainsi, lorsque les points de l'image ont été pondérés par 1,e traitement par blocs, le 5 double indice permet de garder la trace de toutes les pondérations pour un point donné de l'image contenu dans plusieurs blocs distincts. Ainsi, un exemple de réalisation de l'opération 850 de la figure 8 peut partir du tableau NL_Blk à deux dimensions, et définir un nouveau tableau A qui stocke : * d'une part un indice global qui désigne la position, d'un point des données d' image brute 8, * d'autre part un n-uplet qui contient chacune des intensités pondérées du 15 point d'indice i: dans le tableau NL_Blk à deux dimensions. Ainsi, plutôt que de retourner l'une des valeurs d'intensité pondérée dans les données d'image améliorée 12, l'opération 850 peut retourner la moyenne des intensités pondérées associée à chaque indice i dans le tableau A. Cela permet d'améliorer de réduire le temps de calcul. Les formules 40 à 43 de l'Annexe A récapitulent les calculs effectués dans le cadre de la variante de la figure 8. Une autre manière d'accélérer encore les calculs serait de ne calculer les coefficients de pondération que lorsqu'ils sont éloignés de 1 et de 0 respectivement. Cela peut être réalisé en modifiant les fonctions Pond() et Pond BlkO pour établir, en fonction d'un coefficient � : * si Moyenne(I(xk), xk dans Blk[Pond Pix[i]j) / Moyenne (I(xj), xj dans Blk[Wk_Pix]) est compris dans [1/1.t ; �], alors calcul normal ; * sinon, coefficient de pondération = 0 pour Blk[Wk_Pix]. 16 10 20 25 30 Encore une autre manière serait de sélectionner les points comme suit : * si IMoyenne(I(xk), xk dans Blk[Pond_Pix[i]]) / Moyenne (I(xj), xj dans 5 Blk[Wk Pix])I * sinon, coefficient de pondération = 0 pour Blk[Wk_Pix]. D'autres exemples d'optimisation apparaîtront à l'homme du métier. 10 Dans ce qui précède, les sélections de points en voisinages et/ou en blocs peuvent être réalisées en réunissant ces éléments dans des "vecteurs". Cela permet de se rapprocher conceptuellement de la formulation mathématique présentée dans les formules de l'Annexe A. Cela n'est cependant pas nécessaire. De nombreuses manières pourront être utilisées pour mettre en oeuvre ces vecteurs, et il serait également possible d'utiliser des matrices. Tout ce qui précède a été décrit d'une manière générale, sans tenir compte des 20 conditions aux limites, c'est-à-dire par exemple la sélection de points au bord d'une image ou d'une fenêtre. Pour tenir compte de cela, il apparaîtra plusieurs solutions qui peuvent se compléter ou être interchangées le cas échant : * définir les points de départ et de fin des boucles de sorte que des points hors de l'image / de la fenêtre de travail ne soient pas hors-limite ; * définir l'intensité de points hors-limite comme égale à zéro ; * dans le cas particulier de points hors-fenêtre de travail mais à 1'interieur de l'image, prendre en compte ces points comme s'ils faisaient partie de la fenêtre de travail. 15 25 30 Par ailleurs, la description qui précède a été réalisée en utilisant un facteur y égal à 0,5 dans la modélisation du bruit. Dans certaines variantes, le facteur y peut avoir une valeur différente, ce qui modifie la formule (31) de l'Annexe A comme présenté avec la formule (50), dans laquelle y vaut 1. En outre, la formule (31) pourrait également être adaptée pour être rendue symétrique, par exemple selon la formule (51). La description qui précède a pour but de décrire un mode de réalisation particulier de l'invention. Elle ne saurait être considérée comme limitant ou décrivant celle-ci de manière limitative, et couvre notamment l'ensemble des combinaisons entre elles des caractéristiques des variantes décrites. L'invention couvre également, en tant que produits, les éléments logiciels décrits, mis à disposition sous tout "medium" (support) lisible par ordinateur. L'expression "medium lisible par ordinateur" comprend les supports de stockage de données, magnétiques, optiques et/ou électroniques, aussi bien qu'un support ou véhicule de transmission, comme un signal analogique ou numérique. L'invention concerne notamment un dispositif dans lequel l'unité de pondération est en outre agencée pour associer les valeurs associées à un voisinage Ni dans un vecteur u(Ni), et en ce qu'elle est en outre agencée pour définir la distance entre un premier et un deuxième vecteurs à partir d'une somme de quotients dans lesquels : le numérateur dépend du carré de la différence entre des valeurs tirées de colonnes respectives desdits premier et deuxième vecteurs, et le dénominateur dépend d'une quantité inversement proportionnelle à une 25 valeur associée à la colonne du deuxième vecteur. ANNEXE A NL(u) (xi) = Exj{v . w(xi, xi) u(xi) (10) Il u(Nj)-u(N j )M2 2 w(xi, Xi) _ Z e _ h2 1 Ex •EVx. u(Xj)Xp(u(Xj)I u(xi)) C)(xi) = 1 1 (20) NL u Exjevxi p(u(xi )I u(xj)) u (x) = v(x) + v(x)i(x) (21) 2 dp(u(Ni)-u(N j )) 1 w(xi, xj) = zi e h2 2 p_P (u(P)(xi)_u(P)(xj))2 dP(uCNi) ù uCNj )) _ ~p=1 -12v (31) u(P)(xj) où : 15 * vxl est la fenêtre des points de travail servant à la pondération de l'intensité u(xi) d'un point xi, * w(xi, xi ) est la fonction de pondération entre des points xi et x;, * Ni est un voisinage de points entourant le point xi de taille P, et u(Ni) le vecteur comprenant les intensités u(xi) des points du voisinage Ni, 20 * vO est la valeur théorique débruitée de l'intensité u() mesurée, no une fonction de bruit, et y un facteur de modélisation, et * h est un facteur de filtrage qui régit l'intensité du filtrage. 10 (30) 15 ANNEXE A (suite) NL(u) (Bi) = EBjEVxi w(Bi, Bi) u(Bj) (40) NL(u)(Bi) nx jEVxi u(B j) xp (u(Bi) l u(Bj)) EB jEVxi P(u(Bi) lu(B j)) dp(u(Bi)-u(B j )) w (Bi, Bj) e h2 Zi 2 p_P (u(P)(Bi)ù~u(P)(Bj))2 dP(u(Bi) ùuCBj )) ù - Ep=1 u(P)(Bj) J (43) 2 (u(P)(Bt)-u(p) Bj))2 d~(u(Bi) -uCBj )) - - Ep=1 (P) (50) u (B1) d B(u(Bi) ù u(B; ))2 p_P (u(P)(Bi)_,u(P)(Bj))2 = Ep=1 - (51) (u(P)(Bi)+u(P)(B j�2y 2 11 où B; est un bloc de points de taille P, dont le centre est le point xi, et avec u(13i) le vecteur comprenant les intensités u(xi) des points du bloc Bi. (41) 2 (42) Revendications1. Dispositif de traitement d'image, comprenant : * une mémoire (110) pour recevoir des données d'image (8) comprenant chacune un identifiant de point (x, y) et au moins une donnée d' intensité associée (I), * une unité de réduction (120), capable de sélectionner des points de travail (Pond Cld) autour d'un point donné (Pond_Pix) sur la base d'une règle de réduction, * une unité de sélection (130) de voisinage, capable de sélectionner un voisinage (Pond_Vol) d'un point donné (Pond_Pix) sur la base d'une règle de voisinage, * une unité de pondération (140), capable de calculer une valeur de pondération (w Int[k]) entre deux voisinages (Pond Vol, Ngb_Vol), sur la base de distances entre les données d'intensité dans ces voisinages, et * un pilote (100), agencé pour appeler l'unité de réduction (120) avec des points à pondérer, et pour chaque point à pondérer, agencé pour : - appeler l'unité de sélection (130), d'une part avec te point à pondérer pour définir un premier voisinage (Pond_Vol), et d'autre part avec les points de travail (Wk_Pix) associés pour définir une pluralité de deuxièmes voisinages (Ngb_Vol), - appeler répétitivement l'unité de pondération (140) avec le premier voisinage (Pond_Vol) et un voisinage (Ngb_Vol) parmi la pluralité de deuxièmes voisinages, pour obtenir à chaque fois une valeur de pondération (w_Int[k]) de deuxième voisinage, multiplier chaque valeur de pondération (w Int[k]) de deuxième voisinage par la donnée d'intensité (J[k]) du point de travail associé, pour définir à chaque fois une donnée d'intensité pondérée de point de travail, et - définir une donnée d'intensité pondérée du point à pondérer (NL(Pond_Pix)) en additionnant chacune des données d'intensité pondérée de point de travail, caractérisé en ce que l'unité de pondération (140) est agencée pour calculer la distance entre des premier et deuxième voisinages à partir d'une sommation où chaque carré de la différence entre les données d'intensité respectives de ces voisinages est modulé par une quantité inversement proportionnelle aux données d'intensité dans le deuxième voisinage. 2. Dispositif selon la revendication 1, caractérisé en ce que l'unité de pondération est en outre agencée pour associer les valeurs associées à un voisinage Ni dans un vecteur u(Ni), et en ce qu'elle est en outre agencée pour définir la distance entre un premier et un deuxième vecteurs à partir d'une somme de quotients dans lesquels : le numérateur dépend du carré de la différence entre des valeurs tirées de colonnes respectives desdits premier et deuxième vecteurs, et - le dénominateur dépend d'une quantité inversement proportionnelle à une valeur associée à la colonne du deuxième vecteur. 3. Dispositif selon la revendication 2, caractérisé en ce que la distance élevée au carré d(u(Ni) - u(Nj))2 entre deux vecteurs u(Ni) et u(Nj) est calculée à partir de la relation : Lep=P (u(P)(Nl)_u(P)(Ni))2 p=1 u(P)(N1•)2Y J où P le nombre de colonnes du vecteur u(N), u(p)(N) est la colonne d'indice p du vecteur u(N), et où y est un coefficient non-nul. 4. Dispositif selon l'une des revendications précédentes, caractérisé en ce que le pilote (100) appelle des points à pondérer (Pond_Pix[i]) selon une règle de sélection. 5. Dispositif selon la revendication 4, caractérisé en ce que le pilote est agencé pour calculer une valeur d'intensité pondérée (NL_Blk[i][j]) pour chaque point dans un premier voisinage (Blk[Pond_Pix[i]]) associé à un point à pondérer sélectionné (Pond Pix[i]), sur la base des valeurs de pondération (w Int Blk[Pond_Pix[i]]) associées au point à pondérer (Pond_Pix[i]). 6. Dispositif selon la revendication 5, caractérisé en ce que le pilote est agencé pour définir la valeur d'intensité pondérée d'un point appartenant à plusieurs premiers voisinages distincts comme la moyenne des valeurs d'intensité pondérée associées à ce point dans chacun de ces premiers voisinages. dp(u(Ni) ù u(Nj ))2 =