Brevet FR2848768A1 — publié le 20040618

- 1 PROCEDE DE FILTRAGE DES ARTEFACTS CAUSES PAR DES ERREURS DE BITS DANS UN FLUX VIDEO CODE A BASE DE BLOC. La présente invention concerne un procédé de détection de blocs erronés dans un flux vidéo codé à base de bloc. Elle s'applique notamment, mais non exclusivement, à la transmission d'images vidéo par un réseau de téléphonie mobile, les images vidéo étant codées 10 conformément aux normes MPEG-1, -2 ou -4, ou encore les normes H.261, H.263, H.263+ et H.263++. A l'heure actuelle, la visioconférence par réseau de téléphonie mobile se développe et de nombreux travaux visent à améliorer la qualité de service et à 15 atteindre une qualité de service suffisante en ce qui concerne les flux audio et vidéo. Or, dans un réseau filaire orienté paquet, tel que le réseau Internet, les seuls types d'erreurs susceptibles d'apparaître dans un flux vidéo résultent de pertes 20 de paquets dues par exemple à une congestion momentanée du réseau. Les mécanismes de détection et de correction utilisés dans les normes vidéo actuelles sont donc conçus pour traiter des pertes de paquets en reconstruisant les trames vidéo à partir des paquets de données codées. Dans tous les cas, les données utilisées pour reconstruire les trames sont exemptes d'erreurs. 25 Dans un réseau de téléphonie mobile, les interférences sur les canaux physiques de transmission peuvent en outre générer des erreurs de bits dans les flux de communication. Dans un réseau mobile en mode paquet, des paquets peuvent donc contenir des bits erronés. Il s'avère que le taux d'erreurs dans un flux 30 transmis par un réseau mobile peut être important, si bien qu'il n'est pas possible de rejeter tous les paquets contenant des erreurs. Il en résulte que le décodeur vidéo qui reçoit les paquets du flux vidéo peut recevoir non seulement des paquets corrects au bit près, ou ne pas recevoir un ou plusieurs paquets, mais également des paquets erronés dont la syntaxe n'est pas conforme à la 35 syntaxe de codage. Pour reconstituer le flux vidéo, il apparaît donc nécessaire de prévoir non seulement des mécanismes de correction de pertes de paquets, mais également - 2 des mécanismes de correction d'erreurs de bits, comme par exemple la partition des données ou l'utilisation de techniques de RVLC (Reverse Variable Code Length). Par ailleurs, une erreur de bit dans un flux vidéo binaire peut provoquer une erreur de conformité syntaxique plusieurs bits plus loin dans le flux, ou apparaître transparente du point de vue de la syntaxe de codage, tout en affectant profondément la signification du flux codé. Dans ce cas, le décodeur va utiliser des données erronées pour le décodage et la reconstruction de 10 l'image, sans pouvoir le détecter, ce qui génère des artefacts dans les images affichées. Dans le cas de codecs basés sur un codage par bloc, tels que MPEG-4, H.261 et H.263, les artefacts les plus gênants résultent de blocs erronés, comme les blocs de couleur homogène et différente de leur voisinage, ou encore les blocs ayant 15 la forme de damiers. Il est donc nécessaire de prévoir en outre des mécanismes d'analyse des images reconstruites afin de repérer et d'éliminer les artefacts causés par ces erreurs transparentes. Or les terminaux mobiles présentent en général des capacités de traitement limitées qui sont insuffisantes pour effectuer à la fois le décodage du flux vidéo, la correction d'erreurs dues à des paquets manquants, la correction d'erreurs de bits engendrant des erreurs de syntaxe détectées par le décodeur vidéo, et la 25 détection et la correction des erreurs transparentes engendrant des artefacts. En outre, dans les applications de visioconférence, ces traitements doivent être effectués en temps réel. La présente invention a pour but de supprimer ces inconvénients. Cet objectif 30 est atteint par la prévision d'un procédé de filtrage d'artefacts apparaissant dans des images transmises sous la forme d'un flux vidéo codé à base de blocs, comprenant une étape préalable de décodage et de reconstruction d'images à partir du flux vidéo, chaque image reconstruite étant constituée de blocs de pixels juxtaposés. Selon l'invention, ce procédé comprend en outre des étapes consistant à analyser chaque bloc d'au moins une partie d'au moins certaines images reconstruites, pour détecter des blocs erronés, et à corriger les blocs erronés, - 3 l'étape d'analyse de chaque bloc consistant à comparer les pixels du bloc situés le long d'au moins une partie des bords de ce dernier à des pixels adjacents appartenant à des blocs voisins. De préférence, l'analyse des blocs d'images est appliquée uniquement aux blocs appartenant à une zone centrale des images. Egalement de préférence, l'analyse des blocs de l'image est effectuée périodiquement avec une période plus longue que celle des images dans le flux 10 vidéo. Avantageusement, l'analyse des blocs de l'image est déclenchée uniquement à la suite de détection d'erreurs dans le flux vidéo lors du décodage de celui-ci. Selon une particularité de l'invention, l'analyse de chaque bloc de l'image est effectuée uniquement sur les données de chrominance de chaque pixel de bloc à analyser. Selon une autre particularité de l'invention, l'analyse de chaque bloc de l'image 20 est effectuée uniquement sur les pixels du bloc situés le long des bords horizontaux ou verticaux du bloc. De préférence, l'analyse de chaque pixel de bord d'un bloc est effectuée à l'aide d'une matrice de convolution dont la somme des coefficients est nulle. 25 Selon une autre particularité de l'invention, l'étape de correction des blocs erronés consiste à remplacer chaque bloc erroné par un bloc correspondant dans une image précédemment traitée. Alternativement, l'étape de correction des blocs erronés consiste à reconstituer chaque bloc erroné par des calculs d'interpolation avec des blocs voisins détectés non erronés. Avantageusement, les images décodées ont préalablement subi un traitement de 35 codage conforme à une norme appartenant à l'ensemble comprenant MPEG-1, 2, -4, H.261, H.263, H.263+ et H.263++. Selon une autre particularité de l'invention, ce procédé est conçu pour être - 4 appliqué à la réception d'images dans un terminal mobile. Un mode de réalisation préféré de l'invention sera décrit ci-après, à titre d'exemple non limitatif, avec référence aux dessins annexés dans lesquels: La figure 1 représente schématiquement un système de réception de flux vidéo codés, incluant un dispositif mettant en òuvre le 10 procédé de filtrage selon l'invention; La figure 2 illustre sous la forme d'un organigramme les différentes étapes du procédé selon l'invention; La figure 3 représente la décomposition en pixels et en blocs d'une portion d'une image codée par un codage à base de bloc. Le système de réception représenté sur la figure 1 comprend un récepteur 1 relié à une antenne de réception 2. Lorsque le récepteur reçoit des paquets de données, il les oriente vers un décodeur 3 auquel il est connecté. Si les données décodées sont des données de pixels d'images, ces données sont inscrites dans une mémoire de trame 4 pour être affichées sur un afficheur 5. 20 Selon l'invention, ce système de réception comprend en outre un dispositif de détection 6 d'erreurs, conçu pour analyser les pixels d'image stockés dans la mémoire de trame 4 en vue de détecter des blocs erronés. Lorsque le dispositif de détection d'erreur détecte un bloc erroné, il déclenche un dispositif de 25 correction 7 d'erreur pour reconstruire les pixels du bloc erroné. A cet effet, le dispositif de correction 7 dispose d'un accès en lecture et en écriture à la mémoire de trame 4. Conformément au procédé illustré par la figure 2, les signaux reçus par le 30 récepteur 1 sont décodés par le décodeur à l'étape il afin d'obtenir un flux binaire contenant les données de chaque image. A l'étape suivante 12, l'image est reconstruite par le décodeur 3 dans la mémoire de trame 4 à partir des données d'image décodées. Selon l'invention, un indicateur de filtrage est testé à l'étape suivante 13, pour -5 déterminer si l'on doit activer une détection de blocs erronés dans l'image reconstruite. Si le filtrage n'est pas activé, l'image suivante est décodée par le décodeur. Si le filtrage est activé, on analyse successivement chaque bloc de tout ou partie de l'image, à l'étape 14. Si le bloc est détecté erroné à l'étape 15, 5 on applique au bloc un traitement de correction à l'étape 16, de manière à corriger le bloc dans la mémoire de trame. Si le bloc analysé n'est pas le dernier bloc de l'image (étape 17), on analyse le bloc suivant (étape 14), et sinon on passe à l'image suivante (étape 11). Le test d'un indicateur de filtrage à l'étape 13 permet de ne pas effectuer de traitement de filtrage et de correction d'erreur à chaque image reçue, de manière à réduire la puissance de calcul nécessaire. Pour réduire davantage cette puissance de calcul, les traitements de filtrage et de correction d'erreur sont appliqués uniquement à une partie des blocs de l'image. Dans une application 15 de visioconférence, la partie qui est analysée par le procédé selon l'invention peut être limitée à la partie centrale (les blocs centraux) des images reçues. La figure 3 représente un bloc des images reçues comprenant 8 x 8 pixels, délimité par des frontières horizontales 21, 22 et verticales 23, 24. Le traitement d'analyse d'un bloc de l'image consiste par exemple à comparer les pixels 25 le long des bords 21 à 24 du bloc (pixels marqués par des pointillés), avec les pixels voisins 26 des blocs adjacents. Cette comparaison de blocs peut être effectuée en comparant chaque pixel 25 du bloc, situé le long d'un bord avec le pixel adjacent 26 appartenant au bloc adjacent, ce qui 25 représente 32 comparaisons. Pour réduire le temps de traitement, afin de respecter des contraintes temps réel, cette comparaison de bloc peut être effectuée uniquement sur les données de chrominance, et éventuellement uniquement avec les pixels situés le long des bords verticaux 23, 24, ou le long des bords horizontaux 21, 22 de chaque bloc (16 comparaisons). 30 Le traitement de filtrage peut également consister en un filtrage par matrice de convolution permettant de repérer de fortes discontinuités dans le domaine spatial de l'image. Si ces fortes discontinuités concident avec les frontières de blocs, la probabilité pour que le bloc soit erroné est très élevée. 35 Par exemple, dans le cas de la norme H.263 qui repose sur un codage par bloc utilisant la transformée en cosinus discrète, et dans le cas d'images de taille QCIF (176 x 144 pixels), on choisit d'effectuer une analyse par blocs de 16 x 16 -6 pixels afin de ne pas surcharger l'unité de traitement du terminal mobile. Chaque image comprend donc 99 blocs de 16 x 16 pixels. Bien entendu, cette analyse peut être effectuée sur des blocs plus petits, 8 x 8 pixels par exemple, et/ou être limitée aux données de chrominance. La matrice de convolution se présente sous la forme d'une matrice dont la somme de tous les coefficients est nulle. Elle est par exemple de taille 5 x 5, égale à: O 0 1 0 O 1 0 0 0 1 0 0 1 1 -8 1 1 O 0 1 0 0 O 0 1 0 0 L'analyse d'un bloc consiste donc à positionner le centre de la matrice de convolution sur chaque pixel (ij) de chaque frontière (verticale et horizontale) du bloc, ce qui revient à calculer pour chaque pixel (ij) à la frontière du bloc, et pour chacune des données de chrominance bleue et rouge, la valeur suivante: Q(ij) = P(i-2, j) + P(i-lj) - 8P(ij) + P(i+1,j) + P(i+2,j) + P(ij-2) + P(ij-1) + P(ij+1) + P(ij+2) (1) dans laquelle i et j représentent respectivement l'indice horizontal et l'indice vertical de position du pixel dans l'image, et P(ij) représente la valeur de la 25 chrominance du pixel (ij). On détermine ensuite la moyenne des valeurs Q(ij) calculées pour le bloc, puis on compare la moyenne obtenue à un seuil. Si la moyenne obtenue est supérieure à ce seuil, on considère que le bloc est erroné. 30 Bien entendu, pour réduire la durée du traitement, on peut utiliser une matrice de convolution de taille réduite, par exemple 3 x 3. Le traitement de correction peut consister à reprendre le bloc correspondant de 35 la dernière image reçue, ce qui implique de mémoriser deux images successives dans la mémoire de trame 4. Alternativement, le traitement de correction peut consister à reconstruire le bloc erroné par interpolation avec les blocs voisins détectés non erronés. - 7 Grâce à ces dispositions, le dispositif selon l'invention présente une complexité relativement limitée du fait que le filtrage (détection des erreurs) est effectué sur l'image reconstruite c'est-à-dire en aval de la chaîne de réception et du 5 décodage des données. Le dispositif selon l'invention peut donc être réalisé comme un bloc logiciel ou matériel supplémentaire et séparé de la chaîne de réception et de décodage. Par ailleurs, du fait que les traitements de filtrage et de correction sont effectués 10 directement sur l'image affichée, en dehors de la chaîne de réception et de décodage, ces traitements sont indépendants de la norme de codage employée, et sont donc compatibles avec une très grande majorité de normes de codage par blocs. Pour respecter des contraintes temps réel, les traitements de filtrage et de correction doivent pouvoir être effectués durant l'intervalle de temps entre deux réceptions d'images. Pour satisfaire cette condition, le traitement de filtrage est limité à une analyse de bloc aux frontières de chaque bloc de l'image, et peut être limité à une partie de l'image. Pour notamment ne pas utiliser toute la 20 puissance de calcul du terminal mobile ou réduire sa consommation électrique, le traitement de filtrage peut ne pas être effectué systématiquement sur toutes les images. La fréquence d'analyse des images peut en outre être adaptée à la qualité du signal reçu, par exemple, par le décodeur en fonction du taux d'erreurs de syntaxe rencontrées et/ou du nombre de paquets de données 25 manquants. - 8 REVENDICATIONS 1. Procédé de filtrage d'artefacts apparaissant dans des images transmises sous la forme d'un flux vidéo codé à base de blocs, comprenant une 5 étape préalable de décodage et de reconstruction d'images à partir du flux vidéo, chaque image reconstruite étant constituée de blocs de pixels juxtaposés, caractérisé en ce qu'il comprend en outre des étapes consistant à analyser chaque bloc d'au moins une partie d'au moins certaines images reconstruites, pour détecter des blocs erronés, et à corriger les blocs erronés, l'étape d'analyse 10 de chaque bloc consistant à comparer les pixels du bloc situés le long d'au moins une partie des bords de ce dernier à des pixels adjacents appartenant à des blocs voisins. 2. Procédé selon la revendication 1, caractérisé en ce que l'analyse des blocs d'images est appliquée uniquement aux blocs appartenant à une zone centrale des images. 3. Procédé selon la revendication i ou 2, caractérisé en ce que l'analyse des blocs de l'image est effectuée 20 périodiquement avec une période plus longue que celle des images dans le flux vidéo. 4. Procédé selon la revendication l ou 2, caractérisé en ce que l'analyse des blocs de l'image est déclenchée uniquement 25 à la suite de détection d'erreurs dans le flux vidéo lors du décodage de celui-ci. 5. Procédé selon l'une des revendications l à 4, caractérisé en ce que l'analyse de chaque bloc de l'image est effectuée uniquement sur les données de chrominance de chaque pixel de bloc à analyser. 30 6. Procédé selon l'une des revendications l à 5, caractérisé en ce que l'analyse de chaque bloc de l'image est effectuée uniquement sur les pixels du bloc situés le long des bords horizontaux ou verticaux du bloc. 7. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que l'analyse de chaque pixel de bord d'un bloc est effectuée à l'aide d'une matrice de convolution dont la somme des coefficients est nulle. -9 8. Procédé selon l'une des revendications 1 à 7, caractérisé en ce que l'étape de correction des blocs erronés consiste à remplacer chaque bloc erroné par un bloc correspondant dans une image précédemment traitée. 9. Procédé selon l'une des revendications 1 à 7, caractérisé en ce que l'étape de correction des blocs erronés consiste à reconstituer chaque bloc erroné par des calculs d'interpolation avec des blocs 10 voisins détectés non erronés. 10. Procédé selon l'une des revendications 1 à 9, caractérisé en ce que les images décodées ont préalablement subi un traitement de codage conforme à une norme appartenant à l'ensemble comprenant MPEG1 5 1, -2, -4, H.261, H.263, H.263+ et H.263++. 1 1. Procédé selon l'une des revendications 1 à 10, caractérisé en ce qu'il est conçu pour être appliqué à la réception d'images dans un terminal mobile.