Brevet FR2978275A1 — publié le 20130125

PROCEDE DE TRAITEMENT D'IMAGE Domaine technique de l'invention L'invention est relative au traitement d'image en vue d'améliorer sa perception visuelle. Elle concerne plus particulièrement les traitements d'image réalisés au sein de systèmes embarqués, comme les appareils photo numériques, où l'on cherche une faible complexité de traitement et une basse consommation. État de la technique Parmi les traitements les plus courants pour améliorer la perception visuelle d'une image, on peut citer la réduction de bruit, l'amélioration de la netteté et l'amélioration de l'équilibre des luminosités et des contrastes. La qualité et l'utilité de chacun de ces traitements dépend des propriétés de l'image au voisinage de chaque pixel traité. On souhaite ainsi différencier des zones de l'image afin de choisir le traitement le plus adapté à chaque zone. La figure 1 illustre une image comprenant deux types de zones qu'il est souhaitable de traiter de manières différentes : une zone à-plat 10, tel que le ciel, et une zone texturée 12, tel qu'un feuillage. Dans une zone à-plat, on privilégie la réduction de bruit, tandis que dans une zone texturée, on privilégie la netteté, la luminosité et les contrastes. On peut également utiliser des techniques de réduction de bruit adaptées aux zones texturées, comme celle décrite dans la demande de brevet US 2009141978. Les traitements d'image courants, du moins les plus simples qu'on préférera utiliser dans des systèmes embarqués, sont basés sur une fenêtre de référence, couramment dénommée « kernel », définie autour de chaque pixel à traiter La figure 2 représente une telle fenêtre. C'est un carré de 5x5 pixels de l'image, au centre duquel se trouve le pixel à traiter. Cette taille de fenêtre est courante - elle offre 25 un bon compromis de complexité. La figure 3 représente un flot de traitement d'une fenêtre de référence 14, permettant un traitement différencié en fonction de la nature de la zone dans laquelle se trouve le pixel en cours de traitement. En 16, on calcule à partir de la fenêtre un critère représentatif de l'appartenance du pixel à une zone à-plat (10 à la figure 1). Si le critère n'est pas 30 satisfait, le pixel est considéré comme appartenant à une zone texturée (12), et la fenêtre 14 subit en 18 un traitement adapté aux zones texturées. Si le critère est satisfait, la fenêtre subit en 20 un traitement adapté aux zones à-plat. Le traitement 18 ou 20 produit un pixel unique Pxo' t, remplaçant le pixel en cours dans la nouvelle image. Un exemple de critère de sélection peut être le suivant. Comme cela est représenté à la figure 2, on calcule pour chaque pixel i de la fenêtre de référence la différence d; entre ce pixel et le pixel central, qui est le pixel à traiter. Dans le cas d'une fenêtre 5x5, on obtient 24 différences di à d24, la différence, nulle, pour le pixel central n'étant pas comptabilisée. Les différences sont calculées en termes de luminance. On considère alors que le pixel à traiter appartient à une zone à-plat si le nombre de différences inférieures à un seuil de luminance est proche du nombre de pixels de la 10 fenêtre (par exemple au moins égal à 22 dans le cas d'une fenêtre 5x5). Il s'avère que de tels algorithmes classent mal certains pixels. Par exemple, si les pixels de la fenêtre sont tous semblables sauf le pixel central, toutes les différences ont une valeur élevée, de sorte que le critère ci-dessus classe le pixel comme n'appartenant pas à une zone à-plat, alors qu'il s'agit manifestement d'un pixel erroné dans une zone à-plat. 15 Le pixel est donc classé comme appartenant à une zone texturée. La zone texturée subit ensuite des traitements comme l'amélioration de la netteté, qui auront pour conséquence d'amplifier la singularité du pixel mal classé, le rendant encore plus visible. Des algorithmes plus complexes permettraient d'identifier cet exemple particulier pour apporter une correction. Rappelons néanmoins que, dans le cadre des systèmes 20 embarqués, on souhaite limiter la complexité des algorithmes. En outre, on ne mentionne ci-dessus qu'un cas singulier frappant ; il existe des cas plus subtils où les pixels sont mal classés et occasionnent également des artéfacts visuels désagréables. La figure 4 représente schématiquement un exemple plus détaillé d'un flot de traitement 18 des pixels classés comme appartenant à une zone texturée. Une mémoire RAM sert 25 d'espace de travail temporaire et stocke des parties d'image en cours de traitement. Une mémoire non-volatile NVM stocke les images originales et reçoit les images après traitement. Un premier traitement NR consiste, par exemple, en une réduction de bruit adaptative optimisée pour les zones texturées, telle que décrite dans la demande de brevet US 30 2009141978. Ce traitement travaille sur des fenêtres de référence 14 lues dans l'image originale, par exemple des fenêtres de 5x5 pixels contenant le pixel à traiter en leur centre. Les pixels à traiter ont été identifiés par l'étape de décision 16 à la figure 3. Le traitement calcule un pixel unique à partir de la fenêtre, lequel pixel est stocké dans la mémoire RAM. L'étape suivante SHARP est, par exemple, une augmentation de la netteté. Ce traitement travaille également sur une fenêtre de référence, 14.2, qui peut être de taille différente de la fenêtre 14. La fenêtre 14.2 est lue dans la mémoire RAM lorsque le traitement NR a produit les pixels la constituant. Le traitement SHARP calcule un pixel unique à partir de la fenêtre 14.2, lequel pixel est écrit dans la mémoire RAM. L'étape suivante USM est, par exemple, une augmentation de l'acutance qui est caractérisée par une augmentation du contraste local ainsi qu'une accentuation des transitions entre deux couleurs adjacentes. Cette technique est couramment désignée par l'acronyme USM (du terme anglais « UnSharp Mask »). Comme les traitements précédents, le traitement USM travaille sur une fenêtre de référence 14.3, lue dans la mémoire RAM lorsque le traitement précédent aura produit tous les pixels de cette fenêtre. Le traitement USM produit à partir de la fenêtre 14.3 un pixel unique constitutif de l'image traitée finale, qui est écrit par exemple dans la mémoire non volatile NVM. On s'aperçoit que chaque traitement a besoin de travailler sur des pixels constitutifs d'une image intermédiaire produite par le traitement précédent. Avec trois traitements, on a besoin de deux images intermédiaires, dont les zones nécessaires sont stockées dans la mémoire RAM. Cette mémoire RAM est généralement une mémoire à accès rapide pour ne pas ralentir les traitements ; il n'est généralement pas envisageable de stocker les images intermédiaires dans la mémoire non-volatile NVM, car de telles mémoires sont à accès trop lent. Résumé de l'invention On souhaite disposer d'un procédé de traitement différencié par zones qui ne produise 25 pas d'artefacts visibles tout en étant de faible complexité. On tend à satisfaire ce besoin en prévoyant un procédé d'amélioration de la perception d'une image comprenant les étapes consistant à opérer une séparation principale des pixels de l'image en deux catégories, l'une correspondant à des pixels d'une zone à-plat, et l'autre correspondant à des pixels d'une zone texturée ; et à traiter les pixels de 30 chaque catégorie selon un procédé optimisé en fonction du type de zone. Avant l'étape de séparation principale, on opère une séparation préliminaire des pixels en une catégorie de pixels normaux orientés vers l'étape de séparation principale, et une catégorie de pixels singuliers, le critère de sélection des pixels singuliers étant adapté à identifier des pixels qui seraient incorrectement identifiés comme des pixels d'une zone texturée. Les pixels singuliers sont alors traités selon un procédé adapté à leur nature. Selon un mode de mise en oeuvre, la séparation préliminaire comprend les étapes consistant à obtenir une fenêtre de référence autour du pixel en cours d'analyse ; à calculer la différence entre chaque pixel de la fenêtre de référence et le pixel en cours ; et à identifier le pixel en cours comme un pixel singulier si l'une quelconque des conditions suivantes est vérifiée : - le nombre de différences non nulles de signe positif est proche du nombre de pixels de la fenêtre ; - le nombre de différences non nulles de signe négatif est proche du nombre de pixels de la fenêtre ; - le nombre de différences non nulles de signe positif est proche du nombre de différences non nulles de signe négatif ; et - la dynamique en luminance de la fenêtre de référence est inférieure à un seuil. Selon un mode de mise en oeuvre, le traitement de chaque pixel singulier comprend les étapes consistant à calculer quatre sommes de différences, une première égale à la somme des différences correspondant aux pixels nord et sud de la fenêtre de référence, une deuxième égale à la somme des différences correspondant aux pixels est et ouest, une troisième égale à la somme des différences correspondant aux pixels nord-ouest et sud-est, et la quatrième égale à la somme des différences correspondant aux pixels nord-est et sud-ouest ; à trouver la somme minimale ; et à calculer le pixel courant comme moyenne de pixels situés sur l'axe des pixels correspondant à la somme minimale. On souhaite par ailleurs diminuer les ressources mémoire nécessaires lorsqu'une image d'origine, ou une zone de celle-ci, subit une série de traitements indépendants, chacun produisant un pixel calculé à partir d'une fenêtre de référence respective. Pour cela, les fenêtres de référence comprennent toutes des pixels de l'image d'origine. Selon un mode de mise en oeuvre, les traitements sont effectués en parallèle et un pixel résultant est produit comme une combinaison des pixels respectifs produits par les traitements. Selon un mode de mise en oeuvre, le procédé comprend l'étape consistant à remplacer un pixel clé de la fenêtre de référence servant à un traitement courant par le pixel produit par le traitement précédent. Selon un mode de mise en oeuvre, les traitements sont opérés sur une zone d'image 5 texturée et comprennent une réduction de bruit adaptative, une augmentation de netteté, et une amélioration de l'acutance utilisant les masques flous. Description sommaire des dessins Des modes de réalisation seront exposés dans la description suivante, faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : 10 - la figure 1, précédemment décrite, représente une image comportant deux zones que l'on souhaite soumettre à des traitements distincts ; - la figure 2, précédemment décrite, représente une fenêtre de référence utilisée par un critère d'identification de type de zone ; - la figure 3, précédemment décrite, représente un exemple de flot de traitement 15 différencié de deux zones d'une image ; - la figure 4, précédemment décrite, représente un flot de traitement classique d'une zone texturée d'une image ; - la figure 5 représente un flot de traitement d'une image basé sur une pré-identification de pixels singuliers qui subiront un traitement spécifique ; 20 - la figure 6 représente une utilisation d'une fenêtre de référence pour le traitement des pixels singuliers ; - la figure 7A représente un mode de réalisation de flot de traitement d'une zone texturée, optimisé pour limiter les ressources mémoire ; et - la figure 7B représente un deuxième mode de réalisation de flot de traitement 25 optimisé. Description d'un mode de réalisation préféré de l'invention La figure 5 représente schématiquement un flot de traitement différencié de zones d'une image, dans lequel on effectue une présélection de pixels singuliers qui sont extraits du flot principal pour subir un traitement spécifique. On vise à extraire du flot principal les pixels susceptibles d'être classés par erreur dans une catégorie tendant à produire des artefacts visuels, notamment la catégorie correspondant à une zone texturée. Une erreur de classification inverse, c'est-à-dire classer un pixel comme appartenant à une zone à-plat alors qu'il appartient à une zone texturée, n'a pas de conséquences visuelles notables, et on ne cherche pas ici à identifier de tels pixels. En pratique, on sépare ainsi les pixels de l'image en trois catégories distinctes, chacune soumise à un traitement adapté. Le flot principal correspond, par exemple, à celui de la figure 3. Ainsi, en 16 on décide 10 de la catégorie du pixel selon un critère classique, simple, et, en fonction du résultat, on le dirige vers un traitement adapté aux textures, en 18, ou aux à-plats, en 20. Une étape de décision ou présélection 50 est prévue en amont de l'étape 16. Les fenêtres de référence 14 de l'image originale y sont confrontées à un critère de singularité. Si le pixel est classé comme singulier, il est extrait du flot normal et dirigé 15 vers un traitement adapté en 52. Le traitement 52, comme les traitements 18 et 20, produit un pixel unique Pxout calculé à partir de la fenêtre de référence. Bien entendu, si le pixel n'est pas classé comme singulier, il est dirigé vers le flot normal, passant par la séparation en 16. De façon générale, le critère de singularité est élaboré pour détecter les pixels qui 20 seraient mal classés à l'étape 16, notamment les pixels appartenant à un à-plat qui seraient classés comme appartenant à une texture. Un exemple de critère de singularité, qui a l'avantage d'être simple, est le suivant. Comme pour le critère de séparation à-plat/texture décrit en relation avec la figure 2, on calcule pour chaque pixel i de la fenêtre de référence la différence d; entre le pixel i et le 25 pixel central. Ces différences serviront ensuite à l'étape 16, le cas échéant. Un pixel est alors considéré comme singulier si l'une quelconque des conditions suivantes est satisfaite : 1. le nombre de différences non nulles de signe positif est proche du nombre de pixels de la fenêtre ; 30 2. le nombre de différences non nulles de signe négatif est proche du nombre de pixels de la fenêtre ; 3. le nombre de différences non nulles de signe positif est proche du nombre de différences non nulles de signe négatif ; et 4. la dynamique en luminance de la fenêtre de référence est de faible amplitude. Par «proche » on entend un écart de quelques unités entre les nombres, en fonction de la taille de la fenêtre. Pour une fenêtre de 5x5, on peut considérer que les nombres sont proches si l'écart est inférieur ou égal à 2, c'est-à-dire de l'ordre de 10 % du nombre de pixels de la fenêtre. L'écart choisi dans chaque condition pourra être optimisé par essais successifs ou par des analyses statistiques. La quatrième composante peut être traduite par dmax - dm;,, En procédant ainsi, on n'a besoin de stocker que la fenêtre de référence 14 dans une mémoire rapide, cette fenêtre étant réutilisée par chaque algorithme de la chaîne de traitement. La taille de la fenêtre de référence peut dépendre de l'algorithme utilisé. Quelle que soit 5 sa taille, ses pixels sont tous pris dans l'image d'origine, ce qui simplifie la gestion de fenêtres de tailles différentes. Le temps de traitement est par ailleurs notablement accéléré, puisqu'un algorithme dans la chaîne n'a plus besoin d'attendre que l'algorithme précédent produise tous les pixels de sa fenêtre de référence. Cette fenêtre de référence est prête dès que son pixel clé est 10 produit par l'algorithme précédent. Bien entendu, les algorithmes à partir du deuxième de la chaîne n'opèrent pas sur les mêmes pixels que dans le flot classique de la figure 4. On s'attend donc à une image résultante différente. Il s'avère que l'image résultante, même si elle est en effet différente dans certains cas, offre une perception visuelle satisfaisante sinon meilleure. 15 La figure 7B représente schématiquement un deuxième mode de réalisation de flot de traitement permettant de réduire la taille de la mémoire volatile. Par rapport à la figure 7A, au lieu d'inclure le pixel sortant d'un algorithme au centre de la fenêtre de référence pour l'algorithme suivant, chaque algorithme est utilisé en parallèle sur une fenêtre intégralement formée de pixels de l'image d'origine, y compris le pixel clé. Les pixels 20 produits indépendamment par les algorithmes sont combinés par un processus ou circuit WAVG pour produire le pixel sortant Pxo' t. Cette combinaison peut être une somme pondérée. Dans le cadre d'un traitement usuel comprenant une réduction de bruit (NR), une augmentation de la netteté (SHARP), et une amélioration de l'acutance (USM), on utilise à titre d'exemple des valeurs respectives de 1, 1/32 et 1/64 pour les coefficients 25 de pondération. Le résultat final est différent de celui produit par les flots des figures 4 et 7A, mais la perception visuelle de l'image est également satisfaisante. REVENDICATIONS1. Procédé d'amélioration de la perception d'une image, consistant à faire subir à une image d'origine une série de traitements indépendants, chacun produisant un pixel calculé à partir d'une fenêtre de référence respective (14, 14.2'), caractérisé en ce que les fenêtres de référence (14, 14.2') comprennent toutes des pixels de l'image d'origine. 2. Procédé selon la revendication 1, dans lequel les traitements sont effectués en parallèle et un pixel résultant (Pxo' t) est produit comme une combinaison des pixels respectifs produits par les traitements. 3. Procédé selon la revendication 1, comprenant l'étape consistant à remplacer un pixel clé de la fenêtre de référence servant à un traitement courant par le pixel produit par le traitement précédent. 4. Procédé selon la revendication 2 ou 3, dans lequel les traitements sont opérés sur une zone d'image texturée (12) et comprennent une réduction de bruit adaptative (NR), une augmentation de netteté (SHARP), et une amélioration de l' acutance utilisant les masques flous (USM). 5. Procédé d'amélioration de la perception d'une image, comprenant les étapes suivantes : - opérer une séparation préliminaire (50) des pixels de l'image en une catégorie de pixels normaux, et une catégorie de pixels singuliers, le critère de sélection des pixels singuliers étant adapté à identifier des pixels qui seraient incorrectement identifiés comme des pixels d'une zone texturée ; - opérer une séparation (16) des pixels normaux en deux catégories, l'une correspondant à des pixels d'une zone à-plat (10), et l'autre correspondant à des pixels d'une zone texturée (12) ; et - traiter les pixels de la zone texturée selon la revendication 4. 6. Procédé selon la revendication 5, dans lequel la séparation préliminaire comprend les étapes suivantes : - obtenir une fenêtre de référence (14) autour du pixel en cours d'analyse ; 10 - calculer la différence (d) entre chaque pixel de la fenêtre de référence et le pixel en cours ; - identifier le pixel en cours comme un pixel singulier si l'une quelconque des conditions suivantes est vérifiée : - le nombre de différences non nulles de signe positif est proche du nombre de pixels de la fenêtre ; le nombre de différences non nulles de signe négatif est proche du nombre de pixels de la fenêtre ; le nombre de différences non nulles de signe positif est proche du nombre de différences non nulles de signe négatif ; et la dynamique en luminance de la fenêtre de référence est inférieure à un seuil. 7. Procédé selon la revendication 6, dans lequel le traitement de chaque pixel singulier comprend les étapes suivantes : - calculer quatre sommes de différences, une première égale à la somme des différences correspondant aux pixels nord et sud de la fenêtre de référence, une deuxième égale à la somme des différences correspondant aux pixels est et ouest, une troisième égale à la somme des différences correspondant aux pixels nord-ouest et sud-est, et la quatrième égale à la somme des différences correspondant aux pixels nord-est et sud-ouest ; - trouver la somme minimale ; et - calculer le pixel courant comme moyenne de pixels situés sur l'axe des pixels correspondant à la somme minimale.