FR 2945698 A1 20101119 FR 0902406 A 20090518 La présente invention se rapporte à un procédé et à un dispositif de codage d'une séquence vidéo. Les types de codage concernés par l'invention sont les techniques de codage d'image prédictif par blocs fondées sur des calculs de similarité entre blocs. Plus particulièrement, la présente invention a trait à l'amélioration du codage du mouvement dans une telle séquence vidéo. Encore plus particulièrement, l'invention vise à optimiser le calcul des champs de vecteurs de mouvement de la séquence vidéo. Le calcul du champ de vecteurs de mouvement d'une séquence 10 vidéo est un problème complexe. Le codeur d'une séquence vidéo a notamment pour tâche de prédire un bloc de pixels de l'image courante à partir d'un bloc de pixels d'une image dite de référence. Pour ce faire, il peut associer au bloc à prédire dans l'image courante le bloc qui lui est le plus similaire dans l'image de référence. 15 La position relative des deux blocs définit le vecteur de mouvement du bloc à coder dans l'image courante. Ainsi, les vecteurs de mouvement caractérisent le mouvement d'un bloc de l'image courante par rapport à un bloc de l'image de référence. La différence, pixel à pixel, entre les deux blocs mis en 20 correspondance définit le résidu du bloc à coder. Dans le cas ci-dessus, les vecteurs de mouvement sont issus d'une métrique de similarité. Par construction, les vecteurs de mouvement permettent une compression optimale de la séquence vidéo. Cependant, le champ des 25 vecteurs de mouvement traduit d'une façon imparfaite le mouvement vrai observé, à savoir, résultant par exemple du mouvement de la caméra, du mouvement relatif d'objets filmés, etc. Cette imperfection est d'autant plus grande que les images à coder sont bruitées. En pratique, le champ de vecteurs de mouvement apparaît erratique 30 et incohérent par rapport aux mouvements de la caméra ou des objets filmés. En effet, la fonction principale du calcul des vecteurs de mouvement est de fournir des résidus qui soient les plus petits possibles pour une compression optimale, étant donné que c'est le seul critère retenu pour un codage optimal au sens de la compression des résidus. Dans une architecture client-serveur, lorsqu'un dispositif client reçoit une séquence vidéo en provenance d'un dispositif serveur, il reconstruit l'image en fonction du champ de vecteurs de mouvement et des résidus associés aux blocs. Si une perte d'un ensemble de blocs survient lors du transport de la séquence vidéo entre le serveur et le client, le décodeur peut procéder à des corrections d'erreurs, par exemple en appliquant une technique de masquage d'erreurs (en anglais "error concealmenr'), par exemple par remplissage des portions manquantes d'image (en anglais "image inpainting"). Ce remplissage se fait souvent par rapport à l'image de référence, en utilisant des méthodes dites temporelles. Ainsi, les champs de vecteurs de l'image courante et de l'image qui précède l'image courante sont utilisés pour interpoler ou extrapoler, au sens du mouvement, les pixels manquants. Si le champ de vecteurs de mouvement représente de façon fidèle le mouvement vrai de la scène, alors la qualité de la correction d'erreurs est en général satisfaisante. Inversement, si le champ de vecteurs de mouvement est erratique, la correction d'erreurs issue du même algorithme de remplissage est le plus souvent de moins bonne qualité. Autrement dit, un champ de vecteurs de mouvement optimal au sens du codage, c'est-à-dire au sens de la compression, a tendance à rendre les algorithmes de correction d'images moins performants. En revanche, un champ de vecteurs de mouvement cohérent, qui permet d'obtenir des performances satisfaisantes pour les algorithmes de correction d'images, ne permet pas d'atteindre des taux de compression efficaces. Un codeur dispose de plusieurs modes pour coder une image d'une séquence vidéo, appelée image courante. Une image de la séquence est découpée en blocs généralement carrés de pixels, appelés macroblocs (en anglais "macroblock'). Un macrobloc sera désigné dans toute la suite par le sigle MB. En mode "P" et "B", l'image courante est associée à un champ de vecteurs de mouvement. Un vecteur de mouvement traduit pour chaque MB de l'image courante une translation relative pointant sur un MB d'une image de référence. Le MB à coder est soustrait du MB pointé de l'image de référence. Cette soustraction définit le résidu. Le résidu est quasiment nul si le mouvement entre l'image de référence et l'image courante est nul ou correctement approché par une translation. Ce procédé, bien connu en soi, est appelé compensation de mouvement. Pour un MB de type P, le codeur code le vecteur de mouvement, le numéro de l'image de référence et le résidu transformé par la transformée en cosinus discrète (en anglais DCT, "Discrete Cosine Transform"). En pratique, un MB est généralement un carré de 16 pixels de côté, avec des possibilités de sous-blocs notamment pour les formats MPEG4 et H.264. L'image de référence est souvent l'image qui précède l'image courante. Certains formats vidéo tels que H.264 ou SVC permettent le libre choix d'une image de référence par rapport à un MB de l'image courante. Le codeur sélectionne la meilleure image de référence selon une stratégie propre. La compensation de mouvement permet d'obtenir une approximation de l'image courante à partir de la ou des image(s) de référence selon un champ de vecteurs traduisant la translation de chacun des MBs de l'image courante. Comme expliqué plus haut, le calcul des vecteurs de mouvement est complexe. Il représente en outre une part importante du temps du codage. De nombreuses méthodes de calcul des vecteurs de mouvement existent, que le codage soit effectué en temps réel ou en différé. Il s'agit de trouver, pour un MB de l'image courante, un MB de l'image de référence tel que le résidu soit minimum. Ainsi, le vecteur de mouvement optimal correspond à la translation entre les deux MBs produisant un résidu minimum. En d'autres termes, les deux MBs doivent être les plus similaires au sens d'une métrique de similarité. En pratique, la métrique de similarité utilisée est le plus souvent la somme des valeurs absolues des différences (en anglais SAD, "Sum of Absolute Difference") ou encore la moyenne des valeurs absolues des différences (en anglais MAD, "Mean Absolute Difference"). La MAD correspond à une SAD normalisée et présente les mêmes propriétés que la SAD. La SAD est nulle si les deux MBs sont identiques, très importante s'ils diffèrent énormément. La SAD est donc une métrique de similarité inverse. Afin d'accélérer le codage, les processeurs incluent désormais des instructions assembleur capables de calculer la SAD entre plusieurs pixels (typiquement 8 ou 16) en un temps minimum. Les instructions assembleur spécialisées permettent un codage en temps réel. Les plus courantes sont décrites par la norme "Streaming SIMD Instruction" (SSE), développée pour les unités de traitement (CPU) de la famille x86. La norme SSE s'est imposée aussi à d'autres familles de processeurs embarqués. Il est à noter que les vecteurs de mouvement peuvent être calculés avec une précision sub-pixel : la précision est de 1/2 pixel pour la norme MPEG4 - Part 2 et de 1/4 de pixel pour la norme H.264. Un vecteur de mouvement non entier correspond à un MB de référence interpolé d'une fraction de pixel, selon la norme utilisée, afin de rendre possibles les calculs de similarité avec le MB de l'image courante. L'intérêt de calculer les vecteurs de mouvement avec une précision sub-pixel est de diminuer l'amplitude des résidus. Cela optimise le codage au sens de la compression, avec un surcoût calculatoire pour les vecteurs de mouvement. L'article de H. B. YIN, X. Z. FANG, H. YANG, S. Y. YU et X. K. YANG intitulé "Motion vector smoothing for true motion estimation", publié dans Proceedings of ICASSP 2006, Il-241 - II-244, mai 2006, propose une méthode pour déduire du champ de vecteurs codés un champ de vecteurs de mouvement qui soit proche du mouvement vrai d'une séquence vidéo. Cette méthode antérieure n'est pas satisfaisante car, même si elle exploite les différentes valeurs de SAD calculées par le codeur, elle nécessite en outre de nombreux calculs supplémentaires et notamment des calculs de SAD supplémentaires. La présente invention a pour but de remédier aux inconvénients de l'art antérieur, en permettant de calculer un champ de vecteurs de mouvement qui soit à la fois suffisamment cohérent pour faciliter la correction d'erreurs dans des images côté client et suffisamment efficace en termes de compression du signal vidéo, tout en restant économe en temps de calcul. Dans ce but, la présente invention propose un procédé de codage 5 d'une séquence vidéo constituée d'une pluralité d'images comportant chacune au moins un bloc de pixels, ce procédé comportant : une étape de calcul de similarité, consistant à calculer la valeur de la similarité, au sens d'une métrique de similarité prédéterminée, entre un bloc de pixels à coder d'une image courante de la séquence et une pluralité de blocs de 10 pixels d'une image de référence de la séquence ; une étape de détermination de vecteurs de mouvement, consistant à déterminer au moins un vecteur de mouvement par bloc de la séquence à partir d'au moins une valeur de similarité obtenue lors de l'étape de calcul de similarité ; 15 le procédé étant remarquable en ce qu'il comporte en outre, pour au moins un bloc de pixels à coder : une étape de prédiction de vecteurs de mouvement, consistant à déterminer, pour le bloc de pixels à coder, une prédiction d'au moins un vecteur de mouvement à partir d'au moins un vecteur de mouvement voisin, au sens 20 d'un voisinage prédéterminé, le vecteur de mouvement voisin ayant été calculé lors de l'étape de détermination de vecteurs de mouvement ; une étape de détermination d'un vecteur de mouvement final, consistant à déterminer, pour le bloc de pixels à coder, un vecteur de mouvement final à partir de valeurs de similarité calculées pour le bloc de pixels 25 à coder lors de l'étape de calcul de similarité et à partir du vecteur de mouvement prédit lors de l'étape de prédiction ; et une étape de codage de pixels, consistant à coder le bloc de pixels à coder en utilisant le vecteur de mouvement final. Ainsi, l'invention permet d'optimiser le codage du champ de vecteurs 30 de mouvement. Elle permet de rendre le champ des vecteurs de mouvement plus homogène, ce qui a pour effet, non seulement de faciliter la correction d'erreurs du côté du client, mais également de permettre une compression vidéo performante. Autrement dit, l'invention permet de calculer un champ de vecteurs de mouvement pour la compression d'une image d'une séquence vidéo qui soit plus proche du mouvement vrai, tout en étant proche du champ de vecteurs de mouvement fournissant le meilleur taux de compression possible. II en résulte en particulier que les algorithmes de correction d'images de type temporel, lorsqu'ils sont appliqués sur des macroblocs perdus lors du transport de la vidéo, fournissent des corrections de meilleure qualité visuelle. En outre, l'invention offre une rapidité de calcul qui la rend particulièrement adaptée au codage en temps réel. Dans un mode particulier de réalisation, le vecteur de mouvement prédit lors de l'étape de prédiction est égal à la moyenne de quatre vecteurs de mouvement voisins du bloc de pixels à coder. Cela permet une prédiction rapide et robuste. Le voisinage peut par exemple être constitué des vecteurs de mouvement associés à des blocs de pixels distants de un, deux ou trois blocs de pixels du bloc de pixels à coder. Dans un mode particulier de réalisation, le procédé de codage 20 comporte en outre : une étape consistant à déterminer le bloc de pixels de l'image de référence pour lequel la valeur de la similarité par rapport au bloc à coder de l'image courante est un extremum ; et une étape de construction d'une carte de similarité, consistant à 25 construire une carte de similarité autour de l'extremum, à partir des valeurs de la similarité des blocs de l'image de référence proches, au sens d'un critère de proximité, du bloc pour lequel la valeur de la similarité est un extremum. La mesure de la similarité entre blocs permet de déterminer le mouvement de translation entre les blocs de l'image courante et de l'image de 30 référence. Elle constitue un moyen robuste pour trouver un vecteur de mouvement entre un bloc de l'image courante et une pluralité de blocs de l'image de référence. Dans un mode particulier de réalisation où un bloc est défini par ses coordonnées (x,y) et le bloc pour lequel la valeur de la similarité est un extremum a pour coordonnées (xs,ys), le critère de proximité mentionné plus haut consiste à sélectionner les blocs dont les coordonnées vérifient x û xs Dans un mode particulier de réalisation, le procédé comporte en outre une étape de modélisation, consistant à modéliser la carte de similarité, de façon à obtenir un modèle défini par un nombre prédéterminé de paramètres. La carte de similarité a une forme généralement complexe, ce qui la rend a priori difficile à modéliser. Cependant, les points de la carte de similarité proches de l'extremum se modélisent par une forme simple, telle qu'un paraboloïde. Le fait de ne sélectionner que les points proches de l'extremum de la carte de similarité permet donc de simplifier la modélisation de la carte de similarité. Dans un mode particulier de réalisation, l'étape de modélisation consiste à modéliser la carte de similarité sous la forme d'une surface. Une surface constitue en effet la modélisation la plus simple de la carte de similarité. Dans un mode particulier de réalisation, le modèle est une fonction 25 parabolique à deux dimensions. Comme expliqué ci-dessus, la surface de la carte de similarité autour de l'extremum est simple. Elle est en outre de forme concave. Une fonction parabolique à deux dimensions permet de modéliser de façon simple et satisfaisante la surface de la carte de similarité. 30 Dans un mode particulier de réalisation où un seul vecteur prédit est déterminé lors de l'étape de prédiction, le vecteur de mouvement final, lors de l'étape de détermination du vecteur de mouvement final, est pris égal au vecteur de mouvement prédit lors de l'étape de prédiction. Cela constitue une solution rapide, qui évite de calculer le vecteur de mouvement issu de l'extremum de la carte de similarité. Dans un autre mode particulier de réalisation où un seul vecteur prédit Vpred est déterminé lors de l'étape de prédiction, le vecteur de mouvement final déterminé lors de l'étape de détermination du vecteur de mouvement final est défini par Vopt = E Vn E + 1Vpred ou : Vmin est le vecteur de mouvement correspondant à l'extremum de la carte de similarité et E désigne le surcoût de codage du vecteur prédit Vpred, E étant S,~(Vpred) S (Vmin) défini par E = -1 ou par E = -1, où Sn, (Vmin) et Sn,(Vmin) Sn,(Vpred) (Vpred) sont les valeurs de similarité respectivement associées à Vmin et à Vpred. L'obtention de Vopt par pondération de Vmin et Vpred par les poids E et 1, respectivement, consiste en un calcul de barycentre, simple et rapide à effectuer. Dans une variante de réalisation où une pluralité de vecteurs prédits Vi sont déterminés lors de l'étape de prédiction, le vecteur de mouvement final déterminé lors de l'étape de détermination du vecteur de mouvement final est défini comme le barycentre des vecteurs de la pluralité de vecteurs prédits Vi pondérés respectivement par les poids 1/Ei, où Ei désigne le surcoût de codage du vecteur prédit Vi, Ei étant défini par Ei = -1 ou par Sn,(Vmin) Ei = xv -1, ou Sn, (Vmin) et Sn, (Vi) sont les valeurs de similarité Sn,(Vi) respectivement associées à Vmin et à Vi, Vmin désignant le vecteur de mouvement correspondant à l'extremum de la carte de similarité. S (V min) De même que le mode de réalisation précédent, cette variante offre l'avantage de consister en un calcul de barycentre, simple et rapide. Dans un mode particulier de réalisation, la métrique de similarité consiste à calculer la somme ou la moyenne des valeurs absolues des différences entre les valeurs des pixels d'un bloc de l'image de référence et les valeurs des pixels correspondants du bloc à coder de l'image courante. La somme ou la moyenne des valeurs absolues des différences est une quantité très rapide à calculer, notamment grâce aux processeurs incluant à cet effet des instructions machine dédiées. Dans le même but que celui indiqué plus haut, la présente invention propose également un dispositif de codage d'une séquence vidéo constituée d'une pluralité d'images comportant chacune au moins un bloc de pixels, ce dispositif comportant : un module de calcul de similarité, adapté à calculer la valeur de la similarité, au sens d'une métrique de similarité prédéterminée, entre un bloc de pixels à coder d'une image courante de la séquence et une pluralité de blocs de pixels d'une image de référence de la séquence ; un module de détermination de vecteurs de mouvement, adapté à déterminer au moins un vecteur de mouvement par bloc de la séquence à partir d'au moins une valeur de similarité fournie par le module de calcul de similarité ; le dispositif étant remarquable en ce qu'il comporte en outre : un module de prédiction de vecteurs de mouvement, adapté à déterminer, pour au moins un bloc de pixels à coder, une prédiction d'au moins un vecteur de mouvement à partir d'au moins un vecteur de mouvement voisin, au sens d'un voisinage prédéterminé, le vecteur de mouvement voisin ayant été calculé par le module de détermination de vecteurs de mouvement ; un module de détermination d'un vecteur de mouvement final, adapté à déterminer, pour le bloc de pixels à coder, un vecteur de mouvement final à partir de valeurs de similarité calculées pour le bloc de pixels à coder par le module de calcul de similarité et à partir du vecteur de mouvement prédit par le module de prédiction ; et un module de codage de pixels, adapté à coder le bloc de pixels à coder en utilisant le vecteur de mouvement final. Toujours dans le même but, la présente invention vise aussi un moyen de stockage d'informations lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, remarquable en ce qu'il est adapté à mettre en oeuvre chacune des étapes du procédé de codage succinctement décrit ci-dessus. Toujours dans le même but, la présente invention vise aussi un produit programme d'ordinateur pouvant être chargé dans un appareil programmable, remarquable en ce qu'il comporte des séquences d'instructions adaptées à mettre en oeuvre chacune des étapes du procédé de codage succinctement décrit ci-dessus, lorsque ce programme est chargé dans et exécuté par l'appareil programmable. Les caractéristiques particulières et les avantages du dispositif de codage, du moyen de stockage d'informations et du produit programme d'ordinateur étant similaires à ceux du procédé de codage, ils ne sont pas répétés ici. D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit de modes particuliers de réalisation, donnés à titre d'exemples non limitatifs. La description se réfère aux dessins qui l'accompagnent, dans lesquels : - la figure 1 est un organigramme illustrant les principales étapes d'un procédé de codage d'une séquence vidéo conforme à la présente invention, dans un mode particulier de réalisation ; - la figure 2 représente de façon schématique le calcul de l'estimation de mouvement d'un macrobloc à coder de l'image courante en fonction d'une image de référence ; - la figure 3 illustre un exemple particulier de carte de similarité calculée par un codeur d'images ; - la figure 4 illustre un exemple particulier de carte de similarité pour 9 pixels autour d'un extremum ; - les figures 5 et 6 illustrent un exemple particulier d'un modèle parabolique pour la carte de similarité ; et - la figure 7 représente de façon schématique un mode particulier de réalisation d'un appareil susceptible de mettre en oeuvre la présente invention. Conformément à la présente invention, afin de rendre le champ de vecteurs de mouvement d'une image codée en mode prédictif plus cohérent avec le mouvement vrai observé dans une scène d'une séquence vidéo comportant cette image, on cherche à calculer des vecteurs de mouvement qui soient corrélés le plus possible avec les vecteurs de mouvement voisins. On définit ici les vecteurs de mouvement voisins comme des vecteurs de mouvement associés à des MBs voisins couvrant une même portion d'image ayant un mouvement propre cohérent. On définit les MBs voisins d'un MB donné comme des MBs distants du MB donné d'un nombre prédéterminé de MBs : typiquement, les MBs voisins sont les MBs distants de 1, 2 ou 3 MBs du MB donné. Le fait de choisir un vecteur de mouvement éventuellement différent de celui offrant une compression optimale implique un surcoût de codage. En effet, comme expliqué en introduction, un vecteur qui est choisi pour être cohérent avec le mouvement vrai n'est généralement pas optimal au sens de la compression du signal vidéo. Conformément à l'invention, on décide d'estimer ce surcoût et de le tolérer dans une certaine mesure, l'objectif étant d'obtenir un champ de vecteurs de mouvement plus cohérent au sens du mouvement, tout en contrôlant l'impact qu'a le choix d'un tel vecteur de mouvement sur le coût de codage. On considère dans la description qui suit une vidéo codée par blocs au sens défini par le consortium Moving Picture Experts Group (MPEG), comme par exemple dans les normes MPEG4 - Part 2 et H.264, ces exemples étant fournis à titre non limitatif. Conformément à la présente invention, on choisit, pour au moins un bloc de pixels d'une image d'une séquence vidéo à coder, un vecteur de mouvement appelé vecteur de mouvement "final", considéré comme optimal au sens de la représentation du mouvement observé dans la scène vidéo comportant cette image, le choix de ce vecteur de mouvement final étant effectué à partir : - d'une part, d'un vecteur de mouvement prédit, le vecteur prédit 5 étant obtenu en utilisant par exemple des vecteurs de mouvement de blocs voisins ; et - d'autre part, d'une évaluation du surcoût de codage induit par ce vecteur prédit. Ce surcoût de codage est estimé à partir de calculs de similarité entre le bloc de pixels à coder de l'image courante et des blocs d'une image de 10 référence de l'image courante. Le vecteur prédit, particulièrement avantageux du point de vue de la représentation du mouvement dans la scène, peut être différent de celui qui offre une compression optimale. Lors de la recherche du meilleur vecteur de mouvement pour un MB 15 de l'image courante, le codeur teste différents MBs candidats de l'image de référence. Les candidats sont généralement inclus dans une zone de recherche délimitée. Pour chaque candidat, qui est associé à un vecteur de mouvement, une valeur de SAD est calculée. Chacune de ces valeurs définit un point d'une surface dite d'erreur de SAD (en anglais "SAD error shape") traduisant la valeur 20 de la SAD en fonction du vecteur de mouvement. Plus généralement, on parle de carte de similarité. La carte de similarité a une forme complexe. Le codeur cherche son minimum absolu. La recherche peut être exhaustive, c'est-à-dire que tous les points de cette fonction sont calculés, ou itérative, avec une recherche partielle 25 qui est indispensable pour un codage en temps réel. On peut appliquer une méthode de recherche multirésolution à trois étapes (en anglais "three-step search algorithm"), où la recherche se fait pour des translations divisibles par 8, puis autour du minimum trouvé, la recherche se poursuit pour des translations divisibles par 4, et ainsi de suite jusqu'à une résolution de 1, 1/2 ou 1/4 de pixel. 30 La forme locale de la carte de similarité ou "SAD error shape" autour du minimum détecté par le codeur donne une indication sur la nature des MBs. Par exemple, si les MBs comparés sont très texturés, alors la forme de la carte de similarité autour du minimum est très resserrée (les valeurs de la carte de similarité autour du minimum sont très supérieures à ce minimum) et à l'opposé, pour des MBs constitués de pixels quasiment constants, la forme de la carte de similarité autour du minimum est très évasée (les valeurs de la carte de similarité autour du minimum sont très légèrement supérieures à ce minimum). Conformément à la présente invention, on analyse la forme de la carte de similarité autour du minimum détecté par le codeur, afin d'estimer le coût de codage d'un vecteur de mouvement qui ne correspond pas au minimum de la carte de similarité. Pour un MB à coder, noté Mc, la carte de similarité autour du minimum est calculée puis modélisée par une surface paraboloïde. Les coordonnées du minimum de la surface paraboloïde correspondent à la valeur du meilleur vecteur de mouvement qui a le plus petit résidu possible. Parallèlement à ce calcul, un autre vecteur de mouvement est prédit, à partir des vecteurs de mouvement voisins du MB à coder qui ont déjà été calculés. En pratique, les vecteurs de mouvement sont souvent calculés dans un ordre lexicographique. Ainsi, pour un MB Mc à coder, on connaît déjà le vecteur de mouvement situé au-dessus et celui situé à gauche de Mc. La moyenne des vecteurs de mouvement voisins donne une prédiction du vecteur de mouvement de Mc. Cette prédiction est corrélée au mouvement vrai, car liée aux vecteurs de mouvement des MBs voisins. Le modèle paraboloïde de la carte de similarité de Mc permet d'estimer l'erreur locale, par exemple sous la forme de la somme des valeurs absolues des différences (SAD), pour le vecteur de mouvement prédit. Cette valeur est comparée à la valeur minimale de la SAD. Le vecteur de mouvement optimal associé à Mc est alors défini comme une pondération prenant en compte le vecteur de mouvement prédit et le meilleur vecteur de mouvement. Différentes pondérations sont possibles, comme décrit en détail plus loin. L'organigramme de la figure 1 illustre les principales étapes 12, 14, 16, 18 et 20 du procédé de codage conforme à la présente invention ainsi que l'étape 10 effectuée par le codeur. Ces étapes sont détaillées ci-après. L'étape 10 consiste en un calcul de similarité effectué par le codeur pour le calcul du vecteur de mouvement, comme suit. Cette étape est effectuée de façon classique dans un codeur vidéo. Pour un macrobloc Mc à coder de l'image courante Ic, le codeur teste différents macroblocs Mxy de l'image de référence Ir, afin de trouver le macrobloc Mxsys le plus similaire à Mc selon une métrique de similarité notée s. Le vecteur de mouvement Vxy = (x,y) correspond à la translation entre les coordonnées de Mc et Mxy. On rappelle que les MBs à coder sont alignés sur une grille selon la norme vidéo utilisée. En pratique, un MB est typiquement de la taille d'un carré de 16 pixels de côté et les MBs à coder sont alignés sur une grille de 16 pixels de côté. Certaines normes vidéo récentes permettent de coder des MBs en plusieurs sous-MBs de taille inférieure, comme par exemple 8x8, 4x4, 4x8, 8x4 pixels pour la norme H.264. Les macroblocs Mxy de l'image de référence Ir sont librement positionnés et sont de la même taille que le macrobloc à coder Mc. Le codeur recherche le macrobloc Mxy tel que la mesure de similarité Sxy = s(Mxy,Mc) entre Mxy et Mc soit minimale ou maximale par rapport à tous les Mxy candidats. L'estimateur s est dit direct ou inverse selon que l'auto-similarité s(Mc,Mc) est maximale ou nulle, respectivement. Par exemple, la SAD est un estimateur de similarité inverse, car SAD(Mc,Mc) = 0, tandis que l'intercorrélation est un estimateur direct. L'ensemble de recherche des Mxy est défini par le codeur. Une fenêtre de recherche est définie afin de préciser les coordonnées maximales et minimales des vecteurs de mouvement recherchés, par exemple (x,y) E R2 /xl Les coordonnées x et y peuvent être entières ou non, en fonction de la norme vidéo utilisée. Dans le cas MPEG4 - Part 2, les coordonnées sont multiples de 1/2, tandis que pour H.264, elles sont multiples de 1/4. Pour calculer les similarités avec des translations non entières, il convient tout d'abord de translater les pixels de l'image de référence Ir selon une interpolation précisée par la norme utilisée. Le codeur procède généralement par des recherches itératives en commençant par des coordonnées entières telles que (x,y) E N2, où N désigne l'ensemble des entiers naturels. Lorsque le macrobloc Mxeye de translation entière (xe,ye) le plus similaire à Mc est trouvé, le codeur recherche à une résolution sub-pixel le macrobloc Mxsys de translation non entière (xs,ys) le plus similaire à Mc. On observe généralement que xe û xsl Pour cela, on choisit un critère de proximité. Par exemple, on retient uniquement les valeurs Sxy telles que x û xs L'étape suivante 14 consiste à modéliser la carte de similarité. Le modèle Sn, est choisi afin de caractériser l'extremum de la carte de similarité au point (xs,ys). Il est calculé grâce aux différentes valeurs des mesures de similarité Sxy proches de l'extremum selon le critère de proximité. Ce modèle est choisi simple, comme par exemple une fonction de Gauss, ou encore une parabole. Ce type de modèle est particulièrement bien adapté à des signaux stationnaires et notamment à des signaux issus du calcul de similarité. Les paramètres du modèle sont par exemple calculés par la méthode des moindres carrés, ou bien par d'autres méthodes propres au modèle. En pratique, un modèle paraboloïde permet un calcul simple et efficace par la méthode des moindres carrés. Afin de déterminer les paramètres du modèle S,ry , il convient d'avoir un nombre minimum de mesures de la similarité Sxy. Par exemple, un modèle parabolique à deux dimensions est décrit par 6 paramètres. En conséquence, si ns est inférieur à 6, il convient de calculer d'autres valeurs de Sxy, non calculées par le codeur et proches du point d'extremum (xs,ys) selon le critère de proximité. Ces calculs supplémentaires sont rapides, car le codeur dispose d'un estimateur s efficace. Il est à noter que la plupart des codeurs fournissent typiquement ns = 10 valeurs pour les vecteurs de mouvement de coordonnées entières ; d'autres mesures sont effectuées à des résolutions sub-pixel. Aussi est-il fréquent que les valeurs de similarité pour les coordonnées entières (xe+i,ye+j) soient naturellement calculées par le codeur, le couple (i,j) définissant les 4 ou 8 voisins les plus proches de (xe,ye), comme illustré sur la figure 4. L'étape suivante 16 consiste à prédire un vecteur de mouvement en 30 fonction des vecteurs de mouvement voisins déjà calculés. Conformément à l'invention, on cherche à déterminer un champ de vecteurs de mouvement qui soit le plus proche possible du mouvement vrai de la séquence vidéo. Pour un MB donné, un vecteur de mouvement est prédit. Diverses méthodes peuvent être utilisées pour prédire un vecteur de mouvement qui soit cohérent par rapport au mouvement vrai de la scène filmée. L'une de ces méthodes est décrite ci-après à titre d'exemple nullement limitatif. Généralement, les MBs sont codés successivement. Lors du codage de Mc, les trois MBs du dessus et celui de gauche sont donc déjà connus. Le vecteur prédit, noté Vpred, est alors calculé à partir de ces quatre vecteurs de mouvement connus, notés Vi. Par exemple, on définit Vpred = (VI + V2 + V3 + V4)/4. Autrement dit, le vecteur prédit est égal à la moyenne des quatre vecteurs de mouvement voisins du MB à coder. Comme le montre la figure 1, l'étape 18 qui suit l'étape 16 de prédiction consiste à calculer le vecteur de mouvement optimal en fonction de la carte de similarité et du vecteur de mouvement prédit. Grâce au modèle S>, , il est possible d'estimer la similarité entre Mc et un MB de référence distant d'un quelconque vecteur de mouvement. Le meilleur vecteur de mouvement est celui qui permet d'obtenir le résidu le plus petit possible. Il correspond à l'extremum de la carte de similarité. Ce vecteur de mouvement, noté Vmin, est déduit par une analyse des paramètres du modèle qui permet un calcul absolu de la position de l'extremum. Connaissant les vecteurs Vmin et Vpred ainsi que les valeurs de similarité associées (Vmin) et S,,y (Vpred), on cherche à calculer un vecteur de mouvement optimal, noté Vopt, de similarité à' n, (Vopt), tel que Vopt soit le plus proche possible de (Vmin). De nombreux critères permettent de calculer Vopt. On retient le critère suivant, faisant intervenir la notion de surcoût de codage. Le surcoût de codage E du vecteur prédit Vpred est défini de la façon S (Vpred) suivante : E = -1 si l'estimateur de similarité est de type inverse (du S,y(Vmin) S (Vmin) type de la SAD), ou bien E xv -1 si l'estimateur de similarité est de S,, (Vpred) type direct (du type de la corrélation). Le surcoût de codage E est donc une valeur strictement positive, qui est presque nulle si les vecteurs Vmin et Vpred sont très similaires ou si la forme de S&, est très évasée dans au moins une direction. Le vecteur de mouvement optimal est défini de la façon suivante : Vopt = E Vmin+ Vpred E+1 Ainsi, Vopt est très similaire à Vpred si E n'est que légèrement supérieur à zéro et Vopt est très similaire à Vmin si E est très supérieur à zéro. Dans le cas où N vecteurs prédits Vi sont disponibles, on généralise aisément les équations ci-dessus, de sorte que Vopt est défini comme le barycentre des vecteurs Vi pondérés respectivement par les poids 1/Ei, où Ei est le surcoût de codage associé au vecteur prédit Vi, Ei étant défini par S (Vi) S (Vmin) Ei -1 ou par Ei = -1, où Sxy (Vmin) et Sxy (Vi) sont les S,((Vmin) S,((Vi) valeurs de similarité respectivement associées à Vmin et à Vi, Vmin désignant le vecteur de mouvement correspondant à l'extremum de la carte de similarité. Le vecteur de mouvement optimal ainsi calculé peut alors être utilisé pour la suite du codage du macrobloc à coder Mc, à l'étape 20 de codage, qui s'effectue conformément à la norme vidéo choisie. Lorsque tous les MBs de l'image courante ont été ainsi codés, il en résulte un champ de vecteurs de mouvement cohérent par rapport au mouvement vrai de la séquence vidéo. On décrit à présent plus en détail un exemple particulier de réalisation de l'étape 14 de modélisation de la carte de similarité. Afin de simplifier l'écriture des indices, on considère le changement de repère suivant : i = x - Xe et j = y - ye. Il s'agit d'une translation par le vecteur (xe,ye). La mesure de similarité Sxy devient donc Sij, l'extremum en coordonnées entières (xe,ye) devient (0,0) et l'extremum en coordonnées non entières (xs,ys) devient (is,js). Pour cet exemple particulier de réalisation, on définit les paramètres et conditions suivants : • L'estimateur de similarité utilisé par le codeur est la SAD (ou encore la MAD). • Le modèle S;j est une fonction parabolique à deux dimensions qui est décrite par 6 paramètres A, B, C, D, E, F, de la forme : = A.i2 + B.j2 + C.i.j + D.i + E.j + F (1) • On ne retient que les similarités Sij pour des valeurs entières de i et j. • La fenêtre de sélection contient les 9 valeurs Sij où i et j prennent indépendamment les valeurs (-1 ; 0 ; 1). Si le codeur ne fournit pas toutes ces valeurs, il convient de les calculer. La figure 4 illustre les 9 valeurs retenues autour de l'extremum de la SAD. Les 6 paramètres du modèle parabolique S décrit par l'équation (1) se calculent à l'aide des 9 valeurs Sij par la méthode classique des moindres carrés. La figure 5 illustre les 9 valeurs de SAD pour des MBs représentant des portions d'images de nature différente (allongées dans la zone 1, homogènes dans la zone 2, texturées dans la zone 3). Le modèle parabolique est en fait une surface paraboloïde elliptique, comme illustré sur la figure 6. Le plan P coupe la surface paraboloïde elliptique en une ellipse, qui est caractérisée par un demi-grand axe a, un demi-petit axe b et une orientation O. Les paramètres a, b et 0 de l'ellipse se déduisent du système d'équations suivant : 1 C = ùArc tan 2 `A ù B, = 1/(Acos0 + Bsin0 ù Ccos0sinO)2 =1/(A sine + BcosO + CcosOsinO)2 où A, B et C sont les paramètres du modèle parabolique S;j décrit par l'équation (1) ci-dessus. Le système d'équations (2) illustre les propriétés bien connues des paraboloïdes elliptiques. On observe que : • L'ellipse est orientée selon le contour principal des pixels du MB à coder Mc ; • L'ellipse est très petite (a et b petits) si le contenu de Mc est très texturé (beaucoup de hautes fréquences) ; • L'ellipse est très large (a et b grands) si le signal contenu dans Mc est très homogène (pas de hautes fréquences) ; • L'ellipse est très aplatie (a � b) si un contour contrasté apparaît sur Mc. On décrit à présent plus en détail un exemple particulier de réalisation de l'étape 16 d'obtention du vecteur prédit. Comme décrit plus haut, le vecteur prédit Vpred du macrobloc à coder Mc est obtenu à partir de ses voisins. Une amélioration consiste à obtenir le vecteur Vpred de la même façon que le codeur. En effet, les différents codeurs vidéo codent un vecteur de mouvement de façon différentielle par rapport à une prédiction normalisée fondée sur les vecteurs de mouvement voisins. Par exemple, dans la norme H.264, la prédiction normalisée consiste à sélectionner le vecteur médian parmi les vecteurs de mouvement des blocs voisins. Ainsi, si on note Vcod le vecteur prédit par le codeur pour le codage d'un MB, le vecteur de mouvement V d'un MB est codé V - Vcod. On en déduit que si un vecteur de mouvement V est égal à Vcod, alors V a le coût de codage le plus faible par rapport à tout autre vecteur de mouvement possible. (2) Si on choisit Vopt = Vpred = Vcod et que ce vecteur de mouvement présente un surcoût de codage qui peut être toléré, selon un seuil de tolérance défini par l'utilisateur, ce vecteur de mouvement offre à la fois l'avantage d'être cohérent par rapport à son entourage et l'avantage de fournir un résidu presque aussi faible que celui obtenu par l'extremum de la carte de similarité. Le surcoût de codage peut être estimé en fonction des valeurs de similarité calculées pour le bloc traité, selon les formules indiquées plus haut. La figure 7 montre un mode particulier de réalisation d'un dispositif de traitement d'information apte à fonctionner comme dispositif de codage d'une séquence vidéo conforme à la présente invention. Le dispositif illustré sur la figure 7 peut comporter tout ou partie des moyens de mise en oeuvre de chacune des étapes du procédé de codage décrit précédemment. Selon le mode de réalisation choisi, ce dispositif peut être par exemple un micro-ordinateur ou une station de travail 900 connecté à différents périphériques, par exemple, une caméra numérique 901 (ou un scanner, ou tout autre moyen d'acquisition ou de stockage d'images) reliée à une carte graphique (non représentée) et fournissant ainsi des informations à traiter selon l'invention. Le micro-ordinateur 900 comporte de préférence une interface de communication 902 reliée à un réseau 903 apte à transmettre des informations numériques. Le micro-ordinateur 900 comporte également un moyen de stockage permanent 904, tel qu'un disque dur, ainsi qu'un lecteur de moyens de stockage temporaire tel qu'un lecteur de disquettes 905 pour coopérer avec une disquette 906. La disquette 906 et le disque dur 904 peuvent contenir des données d'implantation logicielle de l'invention ainsi que le code du ou des programme(s) d'ordinateur dont l'exécution par le micro-ordinateur 900 met en oeuvre la présente invention, ce code étant par exemple mémorisé sur le disque dur 904 une fois qu'il a été lu par le micro-ordinateur 900. En variante, le ou les programme(s) permettant au dispositif 900 de mettre en oeuvre l'invention sont stockés dans une mémoire morte (par exemple du type ROM) 907. Selon une autre variante, ce ou ces programme(s) sont reçus 5 totalement ou partiellement à travers le réseau de communication 903 pour être stockés comme indiqué. Le micro-ordinateur 900 comprend également un écran 909 pour visualiser les informations à traiter et/ou servir d'interface avec l'utilisateur, afin que l'utilisateur puisse par exemple paramétrer certains modes de traitement à 10 l'aide du clavier 910 ou de tout autre moyen approprié de pointage et/ou de saisie tel qu'une souris, un crayon optique, etc. Une unité de calcul ou unité centrale de traitement (CPU) 911 exécute les instructions relatives à la mise en oeuvre de l'invention, ces instructions étant stockées dans la mémoire morte ROM 907 ou dans les autres 15 éléments de stockage décrits. En particulier, l'unité centrale de traitement 911 est adaptée à mettre en oeuvre l'algorithme illustré sur l'organigramme de la figure 1. Lors de la mise sous tension du dispositif 900, les programmes et méthodes de traitement stockés dans une des mémoires non volatiles, par 20 exemple la ROM 907, sont transférés dans une mémoire vive (par exemple du type RAM) 912, qui contient alors le code exécutable de l'invention ainsi que les variables nécessaires à la mise en oeuvre de l'invention. En variante, le procédé conforme à l'invention peut être stocké dans différents emplacements de stockage. De façon générale, un moyen de 25 stockage d'information lisible par un ordinateur ou par un microprocesseur, intégré ou non au dispositif, éventuellement amovible, peut mémoriser un ou plusieurs programme(s) dont l'exécution met en oeuvre chacune des étapes du procédé décrit précédemment. On peut faire évoluer le mode particulier de réalisation choisi pour 30 l'invention, par exemple en ajoutant des méthodes de traitement actualisées ou améliorées ; dans un tel cas, ces nouvelles méthodes peuvent être transmises au dispositif 900 par le réseau de communication 903, ou chargées dans le dispositif 900 par l'intermédiaire d'une ou de plusieurs disquettes 906. Bien entendu, les disquettes 906 peuvent être remplacées par tout support d'information jugé approprié (CD-ROM, carte mémoire, etc.). Un bus de communication 913 permet la communication entre les différents éléments du micro-ordinateur 900 et les éléments reliés à celui-ci. On notera que la représentation du bus 913 n'est pas limitative. En effet, l'unité centrale CPU 911 est, par exemple, susceptible de communiquer des instructions à tout élément du micro-ordinateur 900, directement ou par l'intermédiaire d'un autre élément du micro-ordinateur 900. REVENDICATIONS1. Procédé de codage d'une séquence vidéo constituée d'une pluralité d'images comportant chacune au moins un bloc de pixels, ledit 5 procédé comportant : une étape (10) de calcul de similarité, consistant à calculer la valeur de la similarité, au sens d'une métrique de similarité prédéterminée, entre un bloc de pixels à coder (Mc) d'une image courante (Ic) de ladite séquence et une pluralité de blocs de pixels d'une image de référence (Ir) de ladite séquence ; 10 une étape de détermination de vecteurs de mouvement, consistant à déterminer au moins un vecteur de mouvement par bloc de ladite séquence à partir d'au moins une valeur de similarité obtenue lors de ladite étape (10) de calcul de similarité ; ledit procédé étant caractérisé en ce qu'il comporte en outre, pour au moins un 15 bloc de pixels à coder (Mc) : une étape (16) de prédiction de vecteurs de mouvement, consistant à déterminer, pour le bloc de pixels à coder (Mc), une prédiction d'au moins un vecteur de mouvement (Vpred ; Vi) à partir d'au moins un vecteur de mouvement voisin, au sens d'un voisinage prédéterminé, ledit vecteur de 20 mouvement voisin ayant été calculé lors de ladite étape de détermination de vecteurs de mouvement ; une étape (18) de détermination d'un vecteur de mouvement final (Vopt), consistant à déterminer, pour le bloc de pixels à coder (Mc), un vecteur de mouvement final à partir de valeurs de similarité calculées pour le bloc de 25 pixels à coder (Mc) lors de ladite étape (10) de calcul de similarité et à partir dudit vecteur de mouvement (Vpred ; Vi) prédit lors de ladite étape (16) de prédiction ; et une étape (20) de codage de pixels, consistant à coder le bloc de pixels à coder (Mc) en utilisant ledit vecteur de mouvement final (Vopt). 30 2. Procédé selon la revendication 1, caractérisé en ce que le vecteur de mouvement (Vpred ; Vi) prédit lors de ladite étape (16) de prédiction est égal à la moyenne de quatre vecteurs de mouvement voisins du bloc de pixels à coder (Mc). 3. Procédé selon la revendication 1 ou 2, caractérisé en ce qu'il comporte en outre : une étape consistant à déterminer le bloc de pixels de l'image de référence (Ir) pour lequel la valeur de la similarité par rapport au bloc à coder (Mc) de l'image courante (Ic) est un extremum ; et une étape (12) de construction d'une carte de similarité, consistant à construire une carte de similarité autour dudit extremum, à partir des valeurs de la similarité des blocs de l'image de référence (Ir) proches, au sens d'un critère de proximité, du bloc pour lequel la valeur de la similarité est un extremum. 4. Procédé selon la revendication 3, dans lequel un bloc est défini par ses coordonnées (x,y) et le bloc pour lequel la valeur de la similarité est un extremum a pour coordonnées (xs,ys), caractérisé en ce que le critère de proximité consiste à sélectionner les blocs dont les coordonnées vérifient x - xs 5. Procédé selon la revendication 3 ou 4, caractérisé en ce qu'il comporte en outre une étape (14) de modélisation, consistant à modéliser la carte de similarité, de façon à obtenir un modèle (àn,) défini par un nombre prédéterminé de paramètres. 6. Procédé selon la revendication 5, caractérisé en ce que ladite étape (14) de modélisation consiste à modéliser la carte de similarité sous la forme d'une surface. 7. Procédé selon la revendication 5 ou 6, caractérisé en ce que le modèle (S,y ) est une fonction parabolique à deux dimensions. 8. Procédé selon l'une quelconque des revendications précédentes, dans lequel un seul vecteur prédit est déterminé lors de ladite étape (16) de prédiction, caractérisé en ce que, lors de ladite étape (18) de détermination du vecteur de mouvement final, le vecteur de mouvement final (Vopt) est pris égal au vecteur de mouvement (Vpred) prédit lors de ladite étape (16) de prédiction. 9. Procédé selon l'une quelconque des revendications 3 à 7, dans lequel un seul vecteur prédit Vpred est déterminé lors de ladite étape (16) de prédiction, caractérisé en ce que le vecteur de mouvement final (Vopt) déterminé lors de ladite étape (18) de détermination du vecteur de mouvement final est défini par Vopt = E Vmin+ Vpred o E+1 ù Vmin est le vecteur de mouvement correspondant à l'extremum de la carte de similarité et E désigne le surcoût de codage du vecteur prédit Vpred, E étant S (Vpred) S (Vmin) défini par E = -1 ou par E = -1, où (Vmin) et S(Vmin) S, (Vpred) S- (Vpred) sont les valeurs de similarité respectivement associées à Vmin et à Vpred. 10. Procédé selon l'une quelconque des revendications 3 à 7, dans lequel une pluralité de vecteurs prédits Vi sont déterminés lors de ladite étape (16) de prédiction, caractérisé en ce que le vecteur de mouvement final (Vopt) déterminé lors de ladite étape (18) de détermination du vecteur de mouvement final est défini comme le barycentre des vecteurs de ladite pluralité de vecteurs prédits Vi pondérés respectivement par les poids 1/Ei, où Ei désigne le surcoût ~ (Vi) de codage du vecteur prédit Vi, Ei étant défini par Ei = ., S -1 ou par S,((Vmin) S),(Vi) respectivement associées à Vmin et à Vi, Vmin désignant le vecteur de mouvement correspondant à l'extremum de la carte de similarité. 11. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que la métrique de similarité consiste à calculer la somme ou la moyenne des valeurs absolues des différences entre les valeurs des pixels d'un bloc de l'image de référence (Ir) et les valeurs des pixels correspondants du bloc à coder (Mc) de l'image courante (Ic). Ei S ,o (Vmin) = -1, où S- (Vmin) et S- (Vi) sont les valeurs de similarité 12. Dispositif de codage d'une séquence vidéo constituée d'une pluralité d'images comportant chacune au moins un bloc de pixels, ledit dispositif comportant : des moyens de calcul de similarité, adaptés à calculer la valeur de la similarité, au sens d'une métrique de similarité prédéterminée, entre un bloc de pixels à coder (Mc) d'une image courante (Ic) de ladite séquence et une pluralité de blocs de pixels d'une image de référence (Ir) de ladite séquence ; des moyens de détermination de vecteurs de mouvement, adaptés à déterminer au moins un vecteur de mouvement par bloc de ladite séquence à partir d'au moins une valeur de similarité fournie par lesdits moyens de calcul de similarité ; ledit dispositif étant caractérisé en ce qu'il comporte en outre : des moyens de prédiction de vecteurs de mouvement, adaptés à déterminer, pour au moins un bloc de pixels à coder (Mc), une prédiction d'au moins un vecteur de mouvement (Vpred ; Vi) à partir d'au moins un vecteur de mouvement voisin, au sens d'un voisinage prédéterminé, ledit vecteur de mouvement voisin ayant été calculé par lesdits moyens de détermination de vecteurs de mouvement ; des moyens de détermination d'un vecteur de mouvement final (Vopt), adaptés à déterminer, pour le bloc de pixels à coder (Mc), un vecteur de mouvement final à partir de valeurs de similarité calculées pour le bloc de pixels à coder (Mc) par lesdits moyens de calcul de similarité et à partir dudit vecteur de mouvement (Vpred ; Vi) prédit par lesdits moyens de prédiction ; et des moyens de codage de pixels, adaptés à coder le bloc de pixels à coder (Mc) en utilisant ledit vecteur de mouvement final (Vopt). 13. Moyen de stockage d'informations lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, caractérisé en ce qu'il est adapté à mettre en oeuvre chacune des étapes du procédé selon l'une quelconque des revendications 1 à 11. 14. Produit programme d'ordinateur pouvant être chargé dans un appareil programmable, caractérisé en ce qu'il comporte des séquences d'instructions adaptées à mettre en oeuvre chacune des étapes du procédéselon l'une quelconque des revendications 1 à 11, lorsque ce programme est chargé dans et exécuté par l'appareil programmable.