Brevet FR2915342A1 — publié le 20081024

La présente invention concerne un procédé et un dispositif de codage vidéo. Elle s'applique, en particulier, à la compression d'un signal vidéo en vue de sa transmission ou de son stockage. L'invention est notamment liée au problème de correction des pertes dues à des erreurs de transmission vidéo sur un réseau. Le contexte de l'invention est plus facilement compréhensible à partir de la figure 1. Dans cette figure, une vidéo initiale 100 est compressée par un encodeur vidéo 101 pour être transmise sur un réseau 105. Cet encodeur vidéo 101 peut être un encodeur MPEG1, 2, 4, ou H264 (MPEG est l'acronyme de Moving Picture Experts Group pour groupe d'experts en images animées). Le flux de données binaires, ou train binaire (en anglais bitstream ), 102 obtenu est découpé en paquets 103 avant d'être provisoirement stocké dans une mémoire tampon, ou buffer , 104. Les paquets sont ensuite transportés via le réseau 105, ce réseau ne garantissant pas totalement la résistance aux erreurs. Certains paquets peuvent ainsi être perdus même si des mécanismes de protection des paquets sont mis en oeuvre au niveau du réseau 105. Ces mécanismes peuvent être, par exemple, des codes correcteurs d'erreurs intégrés aux paquets. Dans ce cas, si le taux de redondance de ces codes est trop faible par rapport aux pertes, des parties du train binaire sont irrécupérables. Après réception des paquets, mise en mémoire tampon 106 et reconstitution 107 du train binaire 108, celui-ci peut donc contenir des erreurs. Ces erreurs sont détectées et localisées au décodage 109 et un module de correction d'erreurs 110 ( error concealment en anglais) est chargé de les corriger. Le module de correction d'erreurs 110 peut être localisé dans le décodeur, avant le décodeur, ou même avant la reconstitution du train binaire. Dans le cas présent, le module de correction d'erreurs 110 est localisé au niveau du décodeur. Ce module de correction d'erreurs 110 utilise les informations non erronées (spatiales et/ou temporelles) disponibles au décodeur pour reconstruire les zones endommagées. Après correction, la vidéo reconstruite 111 est disponible pour être affichée ou stockée. La qualité de la vidéo reconstruite 111 dépend fortement des méthodes de reconstruction utilisées dans le module de correction d'erreurs 110. On note que le module de correction d'erreurs est souvent imparfait et ne corrige que partiellement la zone de la vidéo perdue. II s'agit en effet de méthodes d'interpolation spatiale et/ou temporelle. On note aussi que le train binaire est composé de deux types d'images : des images dites INTRA qui sont encodées de façon indépendante des autres images et des images dites INTER qui sont, en simplifiant, composées d'un champ de vecteurs permettant la prédiction de cette image en fonction de l'image précédemment encodée/décodée et d'une erreur de prédiction décrivant la différence entre l'image prédite et l'image réelle. Etant donné la dépendance temporelle entre deux images INTER, une erreur de reconstruction sur une zone localisée dans une image peut se répercuter sur les images successives qui dépendent de la première. Une façon connue d'arrêter la propagation d'erreur est d'insérer régulièrement des blocs INTRA dans une image encodée. Ces blocs INTRA sont codés indépendamment de l'image précédente. De ce fait, ils peuvent stopper la propagation d'une erreur de transmission mal corrigée par l'algorithme de correction d'erreurs 110. Cependant, le codage de ces blocs INTRA est moins efficace et leur nombre doit être limité pour éviter d'avoir à transmettre des images de taille trop importante. De la même façon, certaines zones de l'image peuvent être mieux protégées en utilisant d'autres modes de protection, par exemple codes correcteurs ou retransmission. Cependant, ces modes de protection demandent un débit de transmission plus élevé. On connaît, du document EP 1583369, une méthode de rafraîchissement INTRA dont la décision dépend d'une mesure effectuée sur les vecteurs de mouvement des blocs voisins autour de la zone perdue. Cette méthode suppose que l'algorithme de correction d'erreur soit basé sur l'estimation des vecteurs de mouvement de la zone perdue en fonction des vecteurs de mouvement au voisinage de cette zone. La correction d'erreur sera d'autant moins efficace que la corrélation entre les vecteurs adjacents est faible. En considérant cette hypothèse, le rafraîchissement INTRA est privilégié pour les blocs dont la corrélation entre les vecteurs de mouvement au voisinage est faible. Cette méthode présente de nombreux inconvénients. Cette méthode impose la détection de zone sensible en fonction du type de correction d'erreurs effectué au décodage (dans ce brevet, on présuppose que la technique de correction d'erreur utilise les vecteurs de mouvement voisins de la zone perdue). En plus, cette méthode provoque la détection de zones dite de recouvrement , c'est-à-dire de zones dans lesquelles un élément d'arrière-plan est progressivement masqué par un élément d'avant-plan, zones qui n'ont que très peu d'impact visuel en cas de perte. Détecter ces zones dans le cadre d'une protection accrue se révèle donc faiblement efficace. La présente invention vise à remédier à ces inconvénients. A cet effet, la présente invention vise, selon un premier aspect, un procédé de codage vidéo, caractérisé en ce qu'il comporte : - une étape de détermination d'un vecteur de mouvement pour une pluralité de blocs d'une image à partir d'une image de référence, - une étape de sélection d'au moins un bloc, dit premier , de ladite pluralité de blocs, en fonction : - du vecteur de mouvement associé audit premier bloc, dit premier vecteur et - d'une caractéristique relative au bloc, dit deuxième , de la même image auquel mène ledit premier vecteur de mouvement, à partir du premier bloc, - une étape de codage d'au moins un bloc non sélectionné avec un premier mode de codage et - une étape de codage d'au moins un premier bloc sélectionné avec un deuxième mode de codage différent du premier mode de codage. On observe qu'une zone de l'image peut être constituée d'un bloc ou d'un ensemble de blocs, par exemple sous la forme d'une tranche (en anglais slice ) mise en oeuvre au cours de la formation de paquets. Grâce à ces dispositions, des blocs pour lesquels une erreur de transmission aurait plus de répercussion sur la qualité de l'image obtenue après décodage peuvent être codés différemment des autres blocs. Par ailleurs, contrairement à l'état de l'art, le procédé objet de la présente invention permet de ne pas détecter les zones de recouvrement et les zones de mouvement homogène qui n'ont que peu d'impact visuel en cas de perte. Le procédé objet de la présente invention détecte donc mieux les blocs susceptibles d'avoir un fort impact visuel en cas de perte. L'invention permet ainsi de détecter les zones de l'image à coder où des dégradations importantes risquent de se produire en tenant compte des informations de mouvement disponibles à l'encodeur. Une fois détectées, ces zones peuvent être mieux protégées afin d'éviter une propagation de cette dégradation. Selon des caractéristiques particulières, la caractéristique relative au 15 deuxième bloc est un vecteur de mouvement, appelé deuxième , associé au deuxième bloc. Grâce à ces dispositions, pour déterminer les blocs présentant un risque de propagation d'erreur, on compare la valeur entre un vecteur d'un bloc prédit et le vecteur du bloc prédicteur de l'image en cours de traitement. On 20 note que, contrairement à l'état de l'art, les blocs considérés ne sont pas nécessairement adjacents. Selon des caractéristiques particulières, au cours de l'étape de sélection, on sélectionne le premier bloc si les premier et deuxième vecteurs diffèrent d'une distance supérieure à une valeur prédéterminée. 25 En effet, si la valeur de ces vecteurs de mouvement est différente, cela indique la présence d'une rupture de mouvement et le bloc risque alors d'être une source de propagation d'erreur. Selon des caractéristiques particulières, au cours de l'étape de sélection, on sélectionne un premier bloc si au moins une valeur absolue des 30 différences entre les composantes des premier et deuxième vecteurs est supérieure à ladite valeur prédéterminée. Grâce à ces dispositions, la détermination de la distance est particulièrement rapide. Selon des caractéristiques particulières, au cours de l'étape de sélection, on sélectionne un premier bloc en fonction d'un nombre, appelé état , fonction de l'état du bloc ayant, dans une image précédente, la position du deuxième bloc, et incrémenté en fonction du deuxième vecteur de mouvement. Grâce à ces dispositions, on réduit le risque de détections inutiles en attendant la confirmation, sur plusieurs images successives, de l'existence de ce risque. Selon des caractéristiques particulières, le deuxième vecteur bloc est déterminé comme étant le vecteur préalablement déterminé associé au bloc de l'image dont la surface commune avec le deuxième bloc est la plus importante. Ces dispositions résolvent le cas où le premier vecteur projette le premier bloc sur plusieurs blocs de l'image. Selon des caractéristiques particulières, la caractéristique relative au deuxième bloc est sa position et, au cours de l'étape de sélection, le premier bloc est sélectionné lorsque le deuxième bloc est, au moins partiellement, en dehors de l'image. On évite ainsi les propagations d'erreurs liées à des blocs extrapolés se trouvant en dehors de l'image. Selon des caractéristiques particulières, au cours de l'étape de sélection, on sélectionne un premier bloc en fonction d'un nombre, appelé état , fonction de l'état du bloc ayant, dans une image précédente, la position du premier bloc, et incrémenté en fonction du deuxième vecteur de mouvement. Grâce à ces dispositions, on réduit le risque de détections inutiles en attendant la confirmation, sur plusieurs images successives, de l'existence de ce risque. Selon des caractéristiques particulières, au cours de l'étape de codage de chaque bloc sélectionné, on encode chaque bloc sélectionné, d'une manière plus robuste aux erreurs de transmission que les blocs non sélectionnés. On note qu'un codage plus robuste peut consister en un codage INTRA, un ajout de codes de correction d'erreurs ou une transmission multiple du bloc codé. Selon des caractéristiques particulières, le deuxième mode de 5 codage est un mode de codage INTRA. Selon des caractéristiques particulières, au cours de l'étape de sélection on interdit la sélection de blocs adjacents. Selon des caractéristiques particulières, le deuxième mode de codage est un mode de codage INTER associé à un taux de codes correcteurs 10 d'erreur supérieur au taux mis en oeuvre dans le premier mode de codage. Selon des caractéristiques particulières, au cours de l'étape de sélection, on ne sélectionne qu'un nombre de blocs inférieur à une valeur limite prédéterminée, selon un critère fonction des premier et deuxième vecteurs. Ce mode de réalisation est particulièrement adapté au codage sans 15 notification de perte de paquets par le décodeur. Selon des caractéristiques particulières, au cours de l'étape de codage, on ne code un bloc sélectionné avec le deuxième mode de codage que si ledit bloc est signalé comme, au moins partiellement, perdu par un décodeur. Chacune de ces dispositions permet de réduire le nombre de blocs 20 codés avec le deuxième mode de codage, généralement plus coûteux, en termes de ressources ou de quantité d'information restant après codage. Selon un deuxième aspect, la présente invention vise un dispositif de codage vidéo, caractérisé en ce qu'il comporte : - un moyen de détermination d'un vecteur de mouvement pour une 25 pluralité de blocs d'une image à partir d'une image de référence, - un moyen de sélection d'au moins un bloc, dit premier , de ladite pluralité de blocs, en fonction : - du vecteur de mouvement associé audit premier bloc, dit premier vecteur et 30 -d'une caractéristique relative au bloc, dit deuxième , de la même image auquel mène ledit premier vecteur de mouvement, à partir du premier bloc et - un moyen de codage adapté à coder au moins un bloc non sélectionné avec un premier mode de codage et au moins un premier bloc sélectionné avec un deuxième mode de codage différent du premier mode de codage. Selon un troisième aspect, la présente invention vise un programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de codage tel que succinctement exposé ci-dessus. Selon un quatrième aspect, la présente invention vise un support d'informations lisibles par un ordinateur ou un microprocesseur, amovible ou non, conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre du procédé de codage tel que succinctement exposé ci-dessus. Les avantages, buts et caractéristiques de ce dispositif, de ce programme et de ce support d'information étant similaires à ceux du procédé de codage objet de la présente invention, tel que succinctement exposé ci-dessus, ils ne sont pas rappelés ici. D'autres avantages, buts et caractéristiques de la présente invention ressortiront de la description qui va suivre, faite, dans un but explicatif et nullement limitatif en regard des dessins annexés, dans lesquels : - la figure 1 représente, schématiquement un système de transmission vidéo sur réseau, -la figure 2 représente, schématiquement, un mode de réalisation particulier du dispositif objet de la présente invention, - les figures 3 à 5 représentent, sur une image schématisée, des blocs, des vecteurs de mouvement et des zones mises en oeuvre dans un mode de réalisation particulier du procédé objet de la présente invention, - la figure 6 représente, schématiquement, les conditions de sélection d'un bloc dans un mode de réalisation particulier du procédé objet de la présente invention, - la figure 7 représente, schématiquement, une image dans laquelle existe une source de risques d'erreurs mise en oeuvre dans un mode de réalisation du procédé objet de la présente invention, - la figure 8 représente, schématiquement, un mode de sélection de 5 zone particulier mis en oeuvre dans des variantes de réalisation du procédé objet de la présente invention, - la figure 9 représente, schématiquement, une évolution d'états de blocs mise en oeuvre dans des variantes de réalisation du procédé objet de la présente invention et 10 - la figure 10 représente, sous forme d'un logigramme, des étapes mises en oeuvre dans un mode de réalisation particulier du procédé objet de la présente invention. Dans toute la description, le terme de correction d'erreurs correspond à la technique connue sous le nom de error concealment visant 15 à restaurer un bloc d'image détérioré et non à l'utilisation de codes de correction d'erreurs intégrés dans un paquet de données transmises. Comme représenté à la figure 2, un dispositif mettant en oeuvre l'invention est par exemple un micro-ordinateur 210 connecté à différents périphériques, par exemple une caméra numérique 207 (ou un scanner, ou tout 20 moyen d'acquisition ou de stockage d'image) reliée à une carte graphique et fournissant des informations à traiter par la mise en oeuvre de la présente invention. Le dispositif 210 comporte une interface de communication 212 reliée à un réseau 213 apte à transmettre des données numériques à traiter ou 25 inversement à transmettre des données traitées par le dispositif. Le dispositif 210 comporte également un moyen de stockage 208 tel que par exemple un disque dur. Il comporte aussi un lecteur 209 de disque 205. Ce disque 205 peut être une disquette, un CD-ROM, ou un DVD-ROM, par exemple. Le disque 205 comme le disque 208 peut contenir des données traitées selon l'invention ainsi 30 que le ou les programmes mettant en oeuvre l'invention qui, une fois lu par le dispositif 210, sera stocké dans le disque dur 208. Selon une variante, le programme permettant au dispositif de mettre en oeuvre l'invention, pourra être 9 stocké en mémoire morte 202 (appelée ROM sur le dessin). En seconde variante, le programme pourra être reçu pour être stocké de façon identique à celle décrite précédemment par l'intermédiaire du réseau de communication 213. Ce même dispositif possède un écran 204 permettant de visualiser les données à traiter ou de servir d'interface avec l'utilisateur qui peut ainsi paramétrer certains modes de traitement, à l'aide du clavier 214 ou de tout autre moyen (souris par exemple). L'unité centrale 200 (appelée CPU sur le dessin) exécute les instructions relatives à la mise en oeuvre de l'invention, instructions stockées dans la mémoire morte 202 ou dans les autres éléments de stockage. Par exemple, l'unité centrale réalise les étapes illustrées en figure 10. Lors de la mise sous tension, les programmes de traitement stockés dans une mémoire non volatile, par exemple la ROM 202, sont transférés dans la mémoire vive RAM 203 qui contiendra alors le code exécutable de l'invention ainsi que des registres pour mémoriser les variables nécessaires à la mise en oeuvre de l'invention. De manière plus générale, un moyen de stockage d'information, lisible par un ordinateur ou par un microprocesseur, intégré ou non au dispositif, éventuellement amovible, mémorise un programme mettant en oeuvre le procédé de codage vidéo selon l'invention. Le bus de communication 201 permet la communication entre les différents éléments inclus dans le micro-ordinateur 210 ou reliés à lui. La représentation du bus 201 n'est pas limitative et notamment l'unité centrale 200 est susceptible de communiquer des instructions à tout élément du micro-ordinateur 210 directement ou par l'intermédiaire d'un autre élément du micro-ordinateur 210. La figure 3 illustre le phénomène de propagation des erreurs. Conformément à la présente invention, on cherche à détecter les zones les plus importantes de l'image en cas de perte, l'importance étant ici relative à un impact visuel en cas de perte et de correction approximative. Soit Pi(t) une zone perdue 300 sur une image t, t représentant le numéro incrémental de l'image codée. Un algorithme de correction d'erreurs permet de reconstruire cette zone. Nous supposons ici que l'image sur laquelle la perte est localisée est une image INTER. Le décodage d'une image INTER consiste à projeter la luminance de l'image précédemment reconstruite et à ajouter l'erreur de prédiction. Perdre la zone Pi(t) veut dire que les vecteurs de mouvement et l'erreur de prédiction ont été perdus. De ce fait, la correction d'erreurs peut vouloir dire reconstruire un ensemble de vecteurs de mouvement. C'est le cas dans notre exemple, la correction d'erreur étant basée sur l'interpolation des vecteurs de mouvement disponibles 304 et 305. Cependant, l'interpolation ne permet pas de reconstruire correctement le champ vectoriel 302 manquant dont les vecteurs de mouvement sont utilisés pour copier une partie de la luminance de l'image précédente sur la zone perdue. Par conséquent, une erreur de reconstruction Ei(t) 301 localisée sur la zone reconstruite de l'image t existe. Si des blocs Bi(t+1) 303 de l'image suivante sont prédits à partir de cette zone, l'erreur se propage sur ces blocs Bi(t+1). Cette propagation peut alors s'étendre sur une grande partie 306 de l'image à la n-ième image suivante. Comme exposé en regard de la figure 4, parmi les zones qui se propagent, certaines ont un impact visuel bien plus important en cas de perte. Si l'on segmente l'image t selon les vecteurs de mouvement, il pourrait exister différentes zones de mouvements homogènes. Prenons H1 400 et H2 402 deux zones homogènes en termes de mouvements, les vecteurs de mouvement appartenant à une zone homogène étant identiques. Soit F 401 la frontière entre ces deux zones. Si le bloc perdu et 'mal' corrigé 403 se trouve intégralement à l'intérieur d'une zone de mouvement homogène, H1 400 ou H2 402, l'erreur de reconstruction ne s'élargit pas, ou très peu, dans la zone de mouvement homogène H1 400 mais se déplace à la même vitesse que la zone jusqu'à pratiquement disparaître à l'instant t + n 404, lorsque ce bloc sort de l'image ou lors de l'utilisation d'un codage INTRA pour ce bloc. L'erreur de reconstruction n'a donc que peu d'impact visuel. Cependant, si la zone corrigée se trouve à la frontière F 401 entre les zones homogènes en termes de mouvements H1 400 et H2 402, l'erreur de reconstruction 405 se propage et risque de s'accroître au fil des images décodées 406. Ce phénomène s'explique par trois raisons: -l'algorithme de correction d'erreurs n'est pas efficace : les blocs se trouvant sur une frontière de mouvement, possèdent, de ce fait, deux zones de mouvements différents alors que l'algorithme de correction d'erreurs attribue un seul vecteur de mouvement à un bloc. La reconstruction est donc de mauvaise qualité au moins sur l'une des deux zones du bloc ; -l'erreur de reconstruction sur la zone frontière persiste : lors de l'encodage de la vidéo, l'algorithme de compression vidéo attribue un seul vecteur à un bloc même si deux mouvements différents existent. Au moins une partie du bloc de la frontière au temps (t+1) pointe donc sur le bloc de la frontière au temps t. De ce fait, si le bloc de la frontière est mal corrigé au temps t, l'erreur persiste au temps t+1 et - les blocs adjacents à la frontière pointent sur la frontière du fait du 15 mouvement. En résumé, nous avons une zone frontière en terme de mouvement avec : - les blocs (au temps t+n) situés sur la frontière de mouvement pointant sur eux-mêmes (au temps t+n-1) ; 20 - un algorithme de correction d'erreurs peu efficace sur la frontière et - des blocs adjacents (au temps t+n) qui continue à pointer sur la frontière au temps (t+n-1). Ces conditions expliquent le phénomène de propagation comme illustré sur l'image t + n. 25 La figure 5 permet d'illustrer un autre exemple de propagation d'erreur sur plusieurs images due à une mauvaise correction sur l'image de référence. Un véhicule 506, en partie caché par un mur 511, se déplace de gauche à droite. Le train binaire 500 représente la vidéo compressée contenant des erreurs. Le décodeur 501 localise les parties de l'image manquantes et 30 décode le reste de l'image. L'image décodée Fi 502 contient des zones perdues 503. Dans cet exemple, un mouvement de translation uniforme 504 de gauche à droite caractérise le mouvement de l'objet véhicule . Comme le mur 511 12 est supposé fixe dans cet exemple, l'origine de ce mouvement translationnel se situe dans la zone où apparaissent les nouvelles textures du véhicule 506. Les zones manquantes sont donc corrigées par le module de correction d'erreur 505. La correction en 506 n'étant pas parfaite, il existe une erreur qui peut se propager aux images suivantes dépendant du flot optique courant, c'est-à-dire du champ de vecteurs. Le schéma 508 décrit la configuration du champ de vecteur propice à la création d'une source de propagation d'erreur. A un instant t, le champ de vecteurs peut se segmenter en deux zones : la zone fixe 509 dont les vecteurs de mouvement sont nuls, et la zone mobile 513, ici la partie visible du véhicule 506 dont les vecteurs de mouvement, issus de l'encodage vidéo, sont opposés à la direction de déplacement réel. A la frontière entre le véhicule 506 et le mur 511, certains blocs correspondant aux nouvelles textures dans la zone de découvrement du véhicule 506 sont prédits sur une partie du mur 511, par l'intermédiaire des vecteurs de mouvement issus de l'encodage vidéo 510. On rappelle qu'une zone de découvrement est une zone dans laquelle le mouvement relatif d'un élément d'avant-plan, ici le véhicule, et d'un élément d'arrière plan, ici le mur, provoque l'apparition de l'élément d'arrière plan. Le mur 511 étant fixe, les vecteurs de mouvement sont nuls pour les blocs qui le décrivent. Une erreur de reconstruction sur la zone véhicule 513 reste donc présente à chaque image jusqu'au prochain rafraîchissement INTRA. Par conséquent, comme cette zone de mouvement nul sert, au cours du temps, de référence à d'autres blocs, cette erreur se propage lors du décodage des images suivantes de la vidéo sous la forme d'une traînée en direction du déplacement du véhicule. Au travers des deux exemples décrits en figure 3, 4 et 5, deux phénomènes se retrouvent : une reconstruction imparfaite et - une rupture d'homogénéité de mouvement. Le même phénomène pourrait être observé pour des mouvements provenant des bords de l'image. Dans ce cas, il existe une frontière entre une zone fixe (l'extérieur de l'image) et une zone de mouvement (à l'intérieur de l'image). Les blocs à l'intérieur sont prédits sur les blocs extérieurs (zone de padding utilisée pour l'estimation de mouvement). De manière générale, les zones de l'image possédant les caractéristiques d'un champ de vecteurs aboutissant à la génération d'artéfacts sont, majoritairement, les zones de découvrement . Une zone de découvrement se situe généralement à la frontière entre deux zones de mouvement homogènes. A cet endroit, de nouvelles textures apparaissent à chaque image. Dans le mode de réalisation de la présente invention décrit en regard des figures, la détection des sources potentielles de génération d'artéfacts se base sur une analyse de vecteurs de mouvement de chaque bloc. Cette analyse consiste à comparer la valeur du vecteur mouvement du bloc courant avec celle du bloc pointé par le vecteur courant. Ces sources sont détectées lors de l'encodage de la vidéo, ce qui permet de limiter un éventuel impact visuel en cas de perte (par exemple en mettant certains de ces blocs détectés en mode INTRA) ou de mieux protéger ces zones, comme exposé en regard des figures 6 à 10. La figure 6 décrit les principales étapes de détection de sources pour lesquelles une erreur de transmission conduirait à de larges artefacts visuels, malgré l'utilisation d'une correction d'erreurs. Dans la suite de la description, on les appelle sources de propagation d'erreur . Cette détection des sources de propagation d'erreur se fait lors de l'encodage vidéo, correspondant au bloc 101 en figure 1, en utilisant les vecteurs de mouvement calculés par l'encodeur vidéo. En figure 6, sont représentés cinq blocs d'une même image issue d'un encodage vidéo. Le bloc Bi 601 représente le bloc sur lequel se focalise la description. A ce bloc 601 est associé un vecteur de mouvement 602 issu de l'encodage vidéo. Ce vecteur pointe vers une zone de l'image précédente. Lors du processus d'encodage vidéo, c'est cette zone qui sert de prédiction temporelle. La détection des sources de propagation d'erreur se fait en deux étapes principales : - une étape de sélection des blocs dont le vecteur mouvement estimé est non nul et - une étape de comparaison de la valeur du vecteur pointé avec le vecteur associé à chaque bloc dont le vecteur mouvement estimé est non nul. On note que le vecteur pointé est le vecteur associé au bloc pointé par le premier vecteur. Contrairement à un schéma de décodage traditionnel, le premier vecteur pointe vers un bloc de la même image. Ainsi, la valeur non nulle du vecteur mouvement associé au bloc courant est la première condition nécessaire pour la détection. En effet, si un bloc possède un vecteur associé nul, cela signifie qu'il n'est prédit à partir d'aucun bloc voisin. Par conséquent, il ne sera responsable d'aucune propagation d'erreur. On considère que le bloc Bi 601 possède un vecteur mouvement estimé non nul, noté 602 sur la figure. L'étape de comparaison consiste àdétecter une rupture de mouvement au niveau du champ de vecteurs obtenu à l'encodage de l'image courante. Pour chaque bloc sélectionné, dont le bloc Bi 601, un vecteur mouvement est associé. Bien que ce vecteur soit censé pointer vers l'image précédente afin de prédire le bloc, on considère ici que ce vecteur pointe dans l'image courante. On utilise donc le bloc Bi 601 pour pointer vers une zone 608 de l'image courante. On considère que cette zone 608 possède aussi un vecteur mouvement. Si la valeur de ce vecteur mouvement est différente de celle du bloc Bi 601, cela indique la présence d'une rupture de mouvement. Le bloc Bi 601 risque alors d'être une source de propagation d'erreur. Pour la comparaison effectuée, on considère qu'un vecteur VI est différent d'un vecteur V2 si une distance, au sens mathématique du terme, entre les deux extrémités des vecteurs est supérieure à une valeur prédéterminée. Dans un mode de réalisation, la distance considérée est la valeur maximale des valeurs absolues des différences entre les composantes en X et en Y, soit, respectivement, (abs(V1 x-V2x) ou abs(V1 y-V2y)). Cette valeur absolue est ainsi comparée à une valeur limite, ou seuil, prédéterminée S dont la détermination est présentée plus loin. Le vecteur mouvement associé à la zone 608 est déterminé, dans le mode de réalisation préféré du procédé objet de la présente invention, de la manière suivante, qui constitue une variante de mise en oeuvre. La plupart du temps, cette zone 608 recouvre quatre blocs B00, B01, B10 et B11. Le vecteur de celui de ces blocs dont la surface commune avec la zone 603 est la plus importante est choisi. Dans notre exemple, parmi les surfaces communes A0, Al, A2 et A3 nous avons Al > A0 > A3 > A2. C'est donc le bloc B01, associé au vecteur de mouvement 609, qui est pointé par le vecteur associé au bloc Bi 601. La comparaison de vecteurs est donc effectuée entre le vecteur 609 associé au bloc choisi B01 et le vecteur 602 associé à Bi. Dans d'autres variantes, on effectue un calcul d'un vecteur de mouvement associé à la zone 608 par la somme des coordonnées des vecteurs associés aux blocs recouverts pondérée par les aires respectives normalisées, comme exposé plus loin. On note aussi que lorsqu'une partie du bloc 608 se situe en dehors de l'image, alors le bloc 601 est automatiquement sélectionné comme bloc source d'erreur. L'algorithme en deux étapes précédemment décrit permet de détecter les blocs les plus importants. A l'étape de comparaison, deux perfectionnements peuvent être apportés, pour réduire le nombre de fausses détections . On note qu'une fausse détection est un bloc dont l'erreur de transmission entraine un artéfact visuel plus faible qu'une vraie détection. Le premier perfectionnement concerne une intégration de l'état de chaque bloc sur une suite d'images. A cet effet, on définit un état Et pour chaque bloc pour une image à l'instant t. Lorsque le bloc à été détecté comme source de propagation d'erreur probable, l'état Et est incrémenté de la valeur 1, Sinon, l'état Et vaut O. Par conséquent, cet état Et représente, pour un bloc donné, le nombre d'images successives pour lesquelles le bloc à été détecté comme source probable de propagation. Une intégration des états de chaque bloc couplé à un processus de seuillage, c'est-à-dire de comparaison à une valeur seuil, permet d'éliminer les fausses détections . Un bloc est sélectionné si l'état du bloc dépasse un certain seuil N. En effet, si l'on suppose la continuité de mouvement entre deux images, on peut considérer que la configuration du champ de vecteurs de la zone de propagation (c'est-àdire aux frontières entre deux zones homogènes) est constante d'une image à l'autre. Le deuxième perfectionnement, plus efficace mais demandant des temps de calcul légèrement supérieurs, concerne le suivi des états pour des sources de propagation mobiles. Il est exposé en regard des figures 7 à 9. Dans l'exemple de la figure 5, le véhicule en mouvement se découvre derrière un mur fixe. Les deux zones homogènes sont le mur 511 (qui est fixe), et le véhicule 506 (en mouvement). Certains blocs du véhicule 506 sont prédits à partir d'une partie du mur. La source de propagation d'erreur se situe donc sur cette partie du mur, et reste fixe durant la totalité de la séquence. Si nous considérons une autre configuration telle que le véhicule 706 est placé devant le mur 711, comme en figure 7, la zone de découvrement 700 se situe à l'arrière du véhicule et fait apparaître de nouvelles textures du mur à chaque image. Dans cette configuration, la zone située sur la frontière entre le mur et le véhicule se déplace avec le véhicule. Si cette zone est mal reconstruite en une zone 701, elle se déplace à chaque image avec le véhicule et laisse une traînée d'artéfacts du coté opposé à la direction de déplacement. Dans cet exemple, la source de propagation est mobile car elle se déplace avec le véhicule. Il est donc utile d'établir un suivi de l'état des blocs détectés comme source de propagation. Pour pouvoir détecter une source de propagation mobile, on établit un suivi temporel des états de chaque bloc en fonction du champ de vecteurs. La figure 8 décrit les étapes de mise à jour des états des blocs à l'instant t+1 en fonction des états à l'instant t, c'est-à-dire d'une image à la suivante. On rappelle que, lors de l'étape de comparaison, le bloc pointé par le vecteur 802 associé au bloc Bi 801 est le bloc BOl 803 car Al est la surface maximum de recouvrement 804. Si le bloc BOl 803 à été détecté une fois comme source probable de propagation à l'instant t, sont état Et vaut 1 (noté Et(B01) = 1 ). A l'instant t+1, l'état à l'instant t du bloc pointé BOl est propagé au bloc Bi 801 ( Et+1(Bi ) = Et(B01) ). Ensuite, si le bloc Bi est détecté comme source de propagation, l'état du bloc Bi 801 est incrémenté ( Et+1(Bi ) = Et+1(Bi ) + 1 ). 17 A l'instant t+1, l'état de Bi 801 vaut donc 2 ( Et+1(Bi) = 2 ). Si le bloc Bi n'est pas détecté comme source de propagation, son état est remis à zéro. Ce processus permet le suivi temporel des états de chaque bloc. Comme pour le premier perfectionnement exposé ci-dessus, on ne sélectionne que les blocs pour lesquels l'état Et est égal ou supérieur à une valeur prédéterminée N. On note que, dans des variantes, on met en oeuvre une combinaison des deux perfectionnements détaillés ci-dessus. Par exemple, à chaque itération, l'état issu de la méthode objet du premier perfectionnement est ajouté à l'état issu de la méthode objet du deuxième perfectionnement pour former la valeur de l'état à laquelle s'applique une incrémentation si le bloc est une source de propagation d'erreur. Ceci permet de limiter le risque de ne pas sélectionner une zone de découvrement. La figure 9 montre un exemple d'évolution de la carte des états des blocs due au déplacement d'une zone de propagation 904 sur quatre images. Cette zone se situe à la frontière entre une zone homogène 900 de vecteur de mouvement global fort 901 et une zone homogène 903 de vecteur de mouvement global faible 902. Les états sont incrémentés après propagation selon le processus de suivi des états décrit précédemment. Un bloc est considéré comme source potentielle d'erreur lorsque la valeur de son état dépasse un seuil N. Il est alors codé en mode INTRA afin d'éliminer d'éventuels artefacts. II a été déterminé expérimentalement qu'une valeur de N valant 5 permet de limiter le nombre de fausse alarme. On note, en regard de la description des figures 6 et 8, que l'état associé à chaque bloc prend une valeur entière. Cependant, on peut aussi travailler avec des valeurs réelles lors du suivi de l'état des blocs. Par exemple, sur la figure 8, l'état du bloc Bi est incrémenté d'une unité. Cependant, on peut aussi incrémenter la valeur de Et en prenant en compte les surfaces A0, Al, A2 et A3 (comme sur la figure 6). Dans ce cas, la propagation de l'état initial se fait en prenant en compte l'état initial des blocs B00, B01, B10 et 611 pondéré en fonction des surfaces A0, Al, A2 et A3. La propagation de l'état initial se fait par la mise en oeuvre de la formule suivante : Er+1(Bi)= AA o Et(Booi)+ AA E,(Bo~,)+ AA z Er(Biot)+ A Et(B,,,) formule dans laquelle A; représente la surface du bloc i et A représente la surface d'un bloc (surface du bloc 601 par exemple). Une fois cet état initial propagé, l'état courant est calculé, comme décrit en regard de la figure 6. La figure 10 détaille des étapes de mise en oeuvre d'un mode de réalisation particulier du procédé objet de la présente invention. Après lecture de l'image i, au cours d'une étape 1000, l'estimation de mouvement est réalisée par l'encodeur au cours d'une étape 1001. Cette estimation permet d'extraire un champ de vecteurs échantillonné en blocs, c'est-à-dire que chaque bloc est associé à un vecteur. Ensuite, on parcourt chaque bloc au cours d'une boucle commençant par l'étape 1002 et finissant au cours d'une étape 1011. Si, au cours d'une étape 1005, on détermine que le vecteur de mouvement, que l'on appelle MV du bloc courant 'BC' est nul, le compteur d'état du bloc est remis à zéro au cours d'une étape 1004. Sinon, la valeur du vecteur pointé, notée MVp est récupérée, au cours d'une étape 1013. On rappelle que la définition du vecteur pointé est donnée en regard de la figure 6. Dans un mode de mise en oeuvre préféré de l'invention, comme expliqué à la figure 6, le vecteur pointé est récupéré à partir de l'image en cours de traitement. Au cours d'étapes 1006 à 1009, on détermine si le bloc courant, aussi appelé par la suite premier bloc , doit être sélectionné, en fonction : - du vecteur de mouvement associé au bloc, dit premier vecteur et - d'une caractéristique relative au bloc, dit deuxième , de la même image auquel mène ledit premier vecteur de mouvement, à partir du premier bloc. Au cours de l'étape 1006, on détermine si les vecteurs de mouvement des premier et deuxième blocs sont, entre eux, à une distance supérieure à une distance prédéterminée et/ou si le deuxième bloc est, au moins partiellement, en dehors de l'image. Ainsi, le premier vecteur, associé au bloc courant MV, est comparé au deuxième vecteur, le vecteur pointé MVp. Soit S le seuil de différence. Comme décrit précédemment, on détermine la distance entre les vecteurs comme la différence entre les vecteurs sur les composantes en x et en y des vecteurs MV et MVp par la formule max (abs(MVx-MVpx), abs(MVy-MVpy)). Si cette valeur est strictement supérieure à une valeur limite S, par exemple S = 2 pixels, on considère que les deux vecteurs sont différents. Lorsque la différence entre les vecteurs est inférieure au seuil S, le bloc est à l'intérieur d'une zone homogène en termes de mouvement et n'est pas être considéré comme source de propagation. Les blocs situés sur les bords de l'image sont traités de manière particulière. En effet, lorsque la zone pointée associée au bloc courant, c'est-à-dire l'image du bloc courant par la translation dont le vecteur est le vecteur de mouvement du bloc courant, se trouve, au moins partiellement, à l'extérieur de l'image, le test de différence entre vecteur associé et vecteur du bloc pointé ainsi que le suivi d'état mettant en oeuvre des deuxièmes blocs devenant, pour l'itération suivante, des premiers blocs, ne peuvent être appliqués. Dans ce cas, le fait que la zone pointée se trouve, au moins partiellement, à l'extérieur de l'image est une condition suffisante pour définir ce premier bloc comme source probable de propagation. En variante, c'est le fait que la zone pointée se trouve, majoritairement en dehors de l'image, en termes de surface similairement à ce qui est exposé en regard de la figure 6, qui sert de critère de sélection du bloc courant. On rappelle ici que dans des codeurs de type MPEG, chaque image est augmentée sur ses bords par une zone externe, remplie, par exemple, de pixels de valeur constante prédéterminée. Néanmoins, d'autres méthodes de remplissage de la zone de bords peuvent être appliquées. On considère, par hypothèse, que tout bloc extrapolé appartenant à la zone de bord extérieure à l'image a un vecteur de mouvement associé nul. Dans chaque cas où le bloc n'est pas considéré comme source probable de propagation, le compteur d'état du bloc 'BC' est remis à zéro, au cours de l'étape 1004. Sinon, le processus de suivi d'état décrit précédemment est réalisé au cours d'une étape 1007 et le compteur d'état est incrémenté au cours d'une étape 1008. Si la valeur du compteur est supérieure à la valeur limite N, ce que l'on détermine au cours d'une étape 1009, le bloc est considéré comme source de propagation ou bloc très important , au cours d'une étape 1010. Sinon, on passe au bloc suivant au cours d'une étape 1011, s'il en reste. Lorsque le dernier bloc de l'image a été traité, on effectue le codage de l'image, au cours d'une étape 1012, en codant au moins un bloc non sélectionné avec un premier mode de codage et en codant au moins un bloc sélectionné avec un deuxième mode de codage différent du premier mode de codage, comme exposé ci-dessus. Préférentiellement, au cours de l'étape 1012 de codage de chaque bloc sélectionné, on encode chaque bloc sélectionné, d'une manière plus robuste aux erreurs de transmission que les blocs non sélectionnés. Selon les modes de réalisation, le deuxième mode de codage est un mode de codage INTRA ou un mode de codage INTER associé à un taux de codes correcteurs d'erreur supérieur au taux mis en oeuvre dans le premier mode de codage. A la suite de l'étape de codage 1012, le processus s'arrête au cours d'une étape 1013, jusqu'à ce que l'image suivante soit prête à être traitée en mettant en oeuvre, de nouveau, les étapes illustrées en figure 10. En variante, au cours de l'étape 1010, on interdit la sélection de blocs adjacents en ce qui concerne le codage en mode INTRA. Ainsi, seulement un sous ensemble des blocs adjacents susceptibles d'être sélectionnés est codé en mode INTRA. Par exemple, ce sous ensemble peut correspondre à la sélection, en quinconce, d'un bloc sur deux, comme sur un damier. Dans d'autres variantes, pour limiter le nombre de blocs codés en mode INTRA, on effectue un tirage aléatoire de blocs de ce sous-ensemble, par exemple pour sélectionner un bloc sur deux qui est, ensuite, codé en mode INTRA. En effet, coder tous les blocs d'une même zone en INTRA sur plusieurs images peut diminuer fortement les méthodes de correction d'erreurs basées sur l'utilisation des vecteurs de mouvement. On observe que les blocs éliminés par l'interdiction de sélectionner des blocs adjacents peuvent, selon les variantes, être codés avec un taux de redondance supérieur à celui mis en oeuvre pour les blocs qui n'avaient pas été initialement sélectionnés ou être considérés comme des blocs n'ayant pas été initialement sélectionnés. L'algorithme de détection des sources de propagation d'erreur décrit dans les figures précédentes permet de détecter des zones susceptibles de générer des artéfacts en cas de perte et de mauvaise reconstruction de cette zone. Couplé à une méthode de résilience d'erreur tel que le rafraîchissement INTRA ou l'augmentation de la protection contre les erreurs sur les paquets concernés, il permet réduire ou stopper l'étendue de la propagation. Deux applications sont proposées ci-dessous : Dans la première application, on effectue un codage sans notification de perte de paquets. Au codage 101 (figure 1), la détection de source est appliquée pour toutes les images. Lorsqu'une zone potentielle de propagation d'erreur est détectée, les n blocs de cette zone sont marqués. Si l'on suppose que le nombre limite de blocs codés en INTRA vaut M (M ne peut être trop grand pour des raisons d'efficacité de compression), les blocs détectés comme sources sont d'abord codés en INTRA. Ensuite les M-n modes INTRA restant sont distribués de manière aléatoire sur les autres blocs. Si le nombre de blocs sources est supérieur au nombre M, les blocs possédant la différence de vecteur la plus importante (voir étape 1006) sont prioritairement codés en INTRA. Dans cette première application, on évite que des zones entières d'une même image soient complètement couvertes de blocs INTRA. A cet effet, on applique, par exemple, un damier éliminant, en quinconce, un bloc sur deux qui aurait été sélectionné, ce qui permet de limiter le nombre de blocs codés en INTRA. En effet, il est important de ne pas utiliser que le mode INTRA car aucun vecteur de mouvement n'est transmis pour un bloc INTRA. En cas de perte de paquets, la correction des erreurs pourrait être moins efficace car peu de vecteurs de mouvement seraient disponibles pour le module de correction d'erreurs. Dans la deuxième application, on effectue un codage avec notification de perte de paquets. Au codage, la détection de source de fortes erreurs est appliquée pour toutes les images. Lorsqu'une zone est détectée, le rafraîchissement INTRA est appliqué sur cette zone seulement si des pertes de paquets associés sont signalées au codeur et si le nombre M de blocs pouvant être codés en mode INTRA le permet. Dans ce cas, au cours de l'étape de codage 1012, on ne code un bloc sélectionné avec le deuxième mode de codage que si ledit bloc est signalé comme, au moins partiellement, perdu par un décodeur. Cette application permet de réduire le nombre de blocs codés en INTRA en cas de valeur de M très limitée. Comme précédemment, on veillera cependant à ne pas couvrir tous les blocs en mode INTRA. REVENDICATIONS 1 - Procédé de codage vidéo, caractérisé en ce qu'il comporte : - une étape (1001) de détermination d'un vecteur de mouvement (301, 302, 304, 305, 602, 609) pour une pluralité de blocs (601, 801) d'une image à partir d'une image de référence, - une étape (1006 à 1010) de sélection d'au moins un bloc, dit premier , de ladite pluralité de blocs, en fonction : - du vecteur de mouvement associé audit premier bloc, dit premier vecteur et - d'une caractéristique relative au bloc, dit deuxième , de la même image auquel mène ledit premier vecteur de mouvement, à partir du premier bloc, - une étape (1012) de codage d'au moins un bloc non sélectionné 15 avec un premier mode de codage et - une étape (1012) de codage d'au moins un premier bloc sélectionné avec un deuxième mode de codage différent du premier mode de codage. 2 û Procédé selon la revendication 1, caractérisé en ce que la caractéristique 20 relative au deuxième bloc est un vecteur de mouvement, appelé deuxième , associé au deuxième bloc. 3 û Procédé selon la revendication 2, dans lequel, au cours de l'étape (1006 à 1010) de sélection, on sélectionne le premier bloc si les premier et deuxième vecteurs diffèrent d'une distance supérieure à une valeur prédéterminée. 25 4 û Procédé selon la revendication 3, dans lequel, au cours de l'étape (1006 à 1010) de sélection, on sélectionne un premier bloc si au moins une valeur absolue des différences entre les composantes des premier et deuxième vecteurs est supérieure à ladite valeur prédéterminée. 5 û Procédé selon l'une quelconque des revendications 2 à 4, caractérisé en ce 30 que, au cours de l'étape (1006 à 1010) de sélection, on sélectionne un premier bloc en fonction d'un nombre, appelé état , fonction de l'état du bloc ayant,dans une image précédente, la position du deuxième bloc, et incrémenté en fonction du deuxième vecteur de mouvement. 6 ù Procédé selon l'une quelconque des revendications 2 à 5, dans lequel le deuxième vecteur bloc est déterminé comme étant le vecteur préalablement déterminé associé au bloc de l'image dont la surface commune avec le deuxième bloc est la plus importante. 7 ù Procédé selon la revendication 1, dans lequel la caractéristique relative au deuxième bloc est sa position et, au cours de l'étape (1006 à 1010) de sélection, le premier bloc est sélectionné lorsque le deuxième bloc est, au moins partiellement, en dehors de l'image. 8 ù Procédé selon l'une quelconque des revendications 1 à 7, caractérisé en ce que, au cours de l'étape (1006 à 1010) de sélection, on sélectionne un premier bloc en fonction d'un nombre, appelé état , fonction de l'état du bloc ayant, dans une image précédente, la position du premier bloc, et incrémenté en fonction du deuxième vecteur de mouvement. 9 ù Procédé selon l'une quelconque des revendications 1 à 8, caractérisé en ce que, au cours de l'étape (1012) de codage de chaque bloc sélectionné, on encode chaque bloc sélectionné, d'une manière plus robuste aux erreurs de transmission que les blocs non sélectionnés. 10 ù Procédé selon l'une quelconque des revendications 1 à 9, caractérisé en ce que le deuxième mode de codage est un mode de codage INTRA. 11 ù Procédé selon la revendication 10, caractérisé en ce que, au cours de l'étape (1006 à 1010) de sélection on interdit la sélection de blocs adjacents. 12 ù Procédé selon l'une quelconque des revendications 1 à 9, caractérisé en ce que le deuxième mode de codage est un mode de codage INTER associé à un taux de codes correcteurs d'erreur supérieur au taux mis en oeuvre dans le premier mode de codage. 13 ù Procédé selon l'une quelconque des revendications 1 à 12, dans lequel, au cours de l'étape (1006 à 1010) de sélection, on ne sélectionne qu'un nombre de blocs inférieur à une valeur limite prédéterminée, selon un critère fonction des premier et deuxième vecteurs.14 û Procédé selon l'une quelconque des revendications 1 à 13, dans lequel, au cours de l'étape (1012) de codage, on ne code un bloc sélectionné avec le deuxième mode de codage que si ledit bloc est signalé comme, au moins partiellement, perdu par un décodeur. 15 - Dispositif (210) de codage vidéo, caractérisé en ce qu'il comporte : - un moyen (200, 202, 203) de détermination d'un vecteur de mouvement (301, 302, 304, 305, 602, 609) pour une pluralité de blocs (601, 801) d'une image à partir d'une image de référence, - un moyen (200, 202, 203) de sélection d'au moins un bloc, dit premier , de ladite pluralité de blocs, en fonction : - du vecteur de mouvement associé audit premier bloc, dit premier vecteur et - d'une caractéristique relative au bloc, dit deuxième , de la même image auquel mène ledit premier vecteur de mouvement, à partir du premier bloc et - un moyen de codage (200, 202, 203) adapté à coder au moins un bloc non sélectionné avec un premier mode de codage et au moins un premier bloc sélectionné avec un deuxième mode de codage différent du premier mode de codage. 16 - Programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de codage selon l'une quelconque des revendications 1 à 14. 17 - Support (205, 208) d'informations lisibles par un ordinateur ou un microprocesseur, amovible ou non, conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre du procédé de codage selon l'une quelconque des revendications 1 à 14.