Post Production d'AMV - Qualité Visuelle

Vous avez exporté votre flux vidéo depuis Premiere (ou un autre logiciel de montage). Vous l'avez rendu progressif, grace au telecine inverse ou au désentrelacement. A-t-il le meilleur look possible ?

Si vous pensez que c'est le cas, je parierais qu'il gagnerait à être *un peu* filtré.

Même les copies numériques les plus propres peuvent avoir des problèmes. Presque toutes les vidéos peuvent être nettoyées. Cependant, si vous avez comme source un DVD de bonne qualité, il est souvent suffisant pour gagner énormément, d'utiliser les nouvelles options de post-processing de mpeg2dec.dll au moment du rendu (soit en créant vos séquences sources ou à l'export), comme il est décrit dans le guide de préparation des sources. Cela va permettre de nettoyer la plupart des problèmes liés à la compression mpeg2, en les détectant au décodage. Ce système est vraiment bon :)

Cependant, vous aurez peut-être besoin de filtrage, et si c'est le cas, il y a quelques filtres qui devraient vous intéresser :

filtres de netteté (sharpening) - Ils peuvent améliorer la qualité visuelle d'une image en rendant les contours plus nets, en faisant ressortir les détails.

Filtres de lissage (smoothing) - Ils peuvent masquer les artefacts de compression ou compenser d'autres sources de bruit et/ou d'erreurs de couleur.

Filtres de réglage de couleurs - Ils peuvent corriger les problèmes sur l'allure générale de la vidéo - la luminosité, la saturation, etc.

Filtres exotiques - Des filtres faits pour contrecarrer un problème spécifique comme le ghosting, le moiré, le dot crawl, etc.

Les programmes conçus pour employer ces filtres sont VirtualDub et AviSynth. Sous VirtualDub on peut ajouter des filtres, prévisualiser les paramètres, et voir facilement la différence avant/après. Mais ils ont 2 problèmes :

1) Ils ne fonctionnent qu'en mode RGB. Ce n'est pas trop grave si vous avez exporté votre vidéo en RGB ( voir détails dans le guide pour exporter la vidéo) mais ça devient problématique si vous devez utiliser une opération en YUY2 comme par exemple IVTC, avant le filtrage.

2) Certains d'entre eux ne sont pas aussi bons que des filtres avisynth.

Heureusement pour nous, (presque) tous les filtres virtualdub peuvent être utilisés dans Avisynth ! Donc, afin de rester cohérents, tout le travail de filtrage dans ces guides sera effectué sous avisynth. La bonne nouvelle c'est que vous n'avez pas besoin de faire plusieurs encodages pour utiliser des filtres des deux programmes, et vous gardez le contrôle de tous les changements d'espaces colorimétriques.

Pour rendre les choses encore plus faciles, si vous installez le package AdvancedAVS , il copiera un fichier nommé vdub_filters.avs qui définit une commande avisynth pour presque tous les filtres virtualdub connus, et vous pourrez utiliser ces commandes dans vos scripts avisynth. Les filtres virtualdub sont stockés dans AVSFilters/vdubfilters/ donc si vous voulez en ajouter d'autres, copiez-les dans ce répertoire, et il y aura probablement déjà une fonction définie pour ce filtre, lisez simplement le fichier vdub_filters.avs dans le répertoire AVSFilters pour connaître la fonction à utiliser pour votre filtre virtualdub.

OK, donc tous les filtres virtualdub de ce guide seront en fait utilisés dans AVISynth.

Je vous entends pleurer "Mais attends, ça veut-dire qu'il faut recharger un script à chaque fois qu'on veut voir le résultat d'un filtre ?!"

Et bien, c'était vrai jusqu'à l'invention de *roulements de tambour*

VirtualdubAVS

Ce programme est un don du ciel pour quiconque fait du filtrage avec AVISynth. Si vous téléchargez le pack Advanced Avisynth et que vous l'installez (vous devez avoir installé AMVApp d'abord) il contient une version de VirtualDubAVS. Pour qu'il fonctionne au mieux, veuillez indiquer votre répertoire VirtualDub d'origine au moment oû l'installeur vous le demande. Sinon il sera installé dans votre répertoire AMVApp (il y a un lien vers l'emplacement où vous l'avez installé dans le menu Démarrer>Programs>AMVapp

 

Utiliser VirtualdubAVS

Avec ce programme vous pouvez ouvrir un fichier .avs comme vous pourriez le faire avec VirtualDub (en utilisant 'Open video file...') mais ensuite, en appuyant sur Ctrl+E, une fenêtre d'édition de texte apparaît pour vous permettre d'éditer le script. Et le meilleur c'est que quand vous faites une modification, vous pouvez appuyer sur F5, et il sauvegardera automatiquement le script, le mettre à jour dans la fenêtre et afficher l'image que vous étiez en train de regarder pour que vous puissiez voir les changements ! *bave*

Ce programme propose également une option pour ouvrir un fichier média existant (comme un avi ou un mpeg) mais en le chargeant par l'intermédiaire d'avisynth. Vous pouvez choisir un patron pour la méthode d'ouverture du fichier et il créera un fichier .avs nommé lefichieroriginal--avisynth.avs - ceci peut accélérer votre utilisation d'avisynth une fois que vous y êtes habitué.

Il y a des patrons pour ouvrir des AVI (AVIsource), du MPEG (DirectShowSource), et des fichiers DVD2AVI (avec mpeg2dec). Vous pouvez créer d'autres patrons - ils sont stockés dans le sous-répertoire templates du répertoire où vous avez installé VirtualDubAVS.

OK, Le meillleur moyen de se faire à tout ceci est de s'en servir, donc que diriez vous de faire un peu de lissage ?

 

Lissage spatial simple

Le lissage spatial est une technique qui prend une source vidéo et essaie de se débarasser de différents types de bruit vidéo dans chacune des images, indépendamment. Chaque programme de lissage a sa propre technique, avec ses avantages et ses inconvénients. Les deux filtres principaux que vous devriez connaître pour l'élimination simple de bruit image par image sont 2D Cleaner et SmartSmootherHiQ (Qui est une version améliorée de Smart Smoother). Les deux sont très utiles à leur manière. Essayons l'un d'entre eux et vous verrez comment le filtrage d'avisynth marche, et également comment VirtualDubAVS nous facilite la tâche.

Au choix, faites un script avisynth qui charge un fichier avi de votre choix, ou bien utilisez l'option géniale 'load file via avisynth' dans VirtualdubAVS. Si vous avez écrit votre fichier avisynth (qui commence par AVIsource ou équivalent) ouvrez-le dans VirtualDubAVS avec 'Load AVI File' ou par glisser-déposer.

Appuyez sur Ctrl-E.

Là une fenêtre d'édition de texte devrait apparaître, qui contient le script en cours dans VirtualDubAVS. Afin d'ajouter un filtre vous devez ajouter une commande à la fin de ce script (note : si vous n'utilisez pas AMVapp vous devrez sans doute inclure une commande loadplugin au début de votre script avant). Notez bien - S'il y a un plantage quelconque lors de l'utilisation d'un script avisynth, vous devrez peut-être fermer VirtualDubAVS et le réouvrir pour nettoyer la mémoire.

Ajoutez les lignes suivantes à la fin de votre script :

ConvertToYUY2()
_2dcleanYUY2(0,10,2,3)

OK, maintenant je vais rapidement expliquer ce que ça fait :

1) ConvertToYUY2() nous assure que la vidéo est dans le format correct pour appliquer un filtre avisynth. Si la source est déjà dans ce format la vidéo ne sera pas modifiée donc ça ne peut pas faire de mal de l'ajouter, à part que ça ralentira le processus de manière dérisoire. Les parenthèses vides sont normales.

2) _2DCleanYUY2 est le nom du filtre, et les nombres entre parenthèses sont les options. Elles fonctionnent comme suit : - 0= filtrage entrelacé désactivé, 10=force, 2= rayon de flou (x) 3= rayon de flou (y).

Maintenant, changez le nombre 10 en 100 et appuyez sur F5. Ca devrait être très flou :) Idéalement ce qu'on veut faire avec ce filtre c'est un flou léger sur la source, qui va réduire le bruit sans complètement bousiller les détails. Je trouve que de petites valeurs de rayon (2x et 2y) sont bonnes avec une force d'environ 10 à 15. Si le bruit est large, alors le rayon devrait être augmenté (plus lent). Si vous devez éliminer plus de bruit alors augmentez la force, mais sachez que pour des sources très bruitées, vous finirez par obtenir une espèce d'aquarelle.

L'autre filtre mentionné ci-dessus est SmartSmootherHiQ qui se lance avec la commande suivante :

ConvertToYUY2()
SmoothHiQ(Diamètre,Seuil Luma,Seuil Chroma,Quantité,Maintenir Difference)

Les mots ci-dessus doivent être remplacés par des nombres. Il y a un fichier html dans le répertoire Docs d'AdvancedAVS (accessible depuis le menu démarrer dans AMVapp/AdvancedAVSDocs/) qui explique l'utilité de ces fonctions et les bonnes valeurs à mettre.

Personnellement je préfère 2D cleaner pour les anime mais SmoothHiQ peut être bon sur des sources avec beaucoup de détails. Vous devriez tester les deux et voir lequel vous préferez.

Lissage spatial intelligent

Il y a cependant un autre filtre qui mérite notre attention. Il a été conçu spécialement pour être utilisé avec des anime. Malheureusement il est en cours de développement et donc ne marche qu'en mode RGB (ce qui signifie que vous devriez l'utiliser juste après avoir exporté depuis Premiere en mode RGB, avant de convertir en YUY2 pour d'autres filtres avisynth, et sur des sources progressives). Il n'est également pas aussi rapide qu'il devrait l'être parce qu'il est encore expérimental. Quoi qu'il en soit, il est utile de le mentionner car vous pouvez lui trouver un intérêt.

Ce filtre s'appelle msmooth et fait trois choses. 1) Il observe l'image à la recherche de contours nets 2) Il crée un masque qui va couvrir ces détails de l'image 3)Enfin il lisse les zones qui ne sont pas masquées. C'est parfait pour le bruit numérique comme par exemple les macroblocs ou le bruit mosquito (NdT : Effet de Gibbs). Pour utiliser msmooth, la commande est la suivante :

Msmooth(strength=7,threshold=10,mask=false,debug=false)

Ce qu'il faut faire c'est commencer par entrer mask=true. Cela va vous montrer quelles parties sont considérées comme des "détails". Vous devriez ensuite changer la valeur de threshold (seuil) et mettre à jour avec f5 jusqu'a ce qu'uniquement les détails de l'image soient en surbrillance (et non le bruit). Une fois que vous avez la bonne valeur de seuil, mettez mask=false et augmentez la valeur strength (agressivité du lissage) jusqu'à ce que vous soyez satisfait de l'élimination du bruit. Bien sur, ce filtre n'est pas parfait et il est parfois difficile de trouver l'équilibre avec le seuil de détection de contours. Une fois de plus, vous devriez tester ce filtre mais ne l'utiliser que si les autres méthodes de filtrage ne marchent pas.

 

Filtrage Temporel

C'est une excellente méthode pour réduire le bruit mais beaucoup de gens la dédaignent au profit du lissage spatial, plus logique. Le fonctionnement du lissage temporel est de détecter si un pixel change de couleur parce qu'il doit changer de couleur ou à cause du bruit. Si du bruit est détecté, on fait une moyenne des pixels sur le temps, ou bien le premier pixel est copié dans les images suivantes. Il y a différents moyens de détecter s'il s'agit de bruit ou pas, bien sûr, mais le résultat est une réduction impressionante du bruit, et une augmentation encore plus impressionante de la compressibilité, puisque ce sont ces changements subtils que l'on compresse à la fin.

Un des meilleurs lisseurs temporels qui soient est en fait un filtre virtualDub appelé Temporal Cleaner. Comme c'est un filtre vdub, il tourne en RGB et donc devrait être utilisé sur les fichiers RGB exportés depuis Premiere, et avant toutes les opérations YUY2. La bonne nouvelle est que ce filtre fonctionne aussi sur des sources entrelacées, puisqu'il ne fait pas de lissage spatial, donc vous pouvez l'avoir au début de votre script si vous avez besoin de désentrelacer avec une commande YUY2. Bien sûr, pour ça il vous faut avoir exporté en RGB, mais c'est suffisament facile à faire.

Pour utiliser Temporal Cleaner (la version fournie dans le pack AdvancedAVS ) ajoutez ceci après la ligne qui charge votre source :

ConvertToRGB32() #Conversion sans perte pour les sources RGB24
VD_TemporalCleaner(10, 4, 16, 8, 30, false, true)

Si vous voulez savoir ce qui signifient ces options, et bien il vaut mieux lire la documentation ( dans le menu démarrer/Programs/AMVapp/AdvancedAVS Docs) mais honêtement les paramètres par défaut sont très bon pour la plupart des cas.

Ce filtre peut-être très lent parfois et en conséquence, ErMaC vous recommande d'appliquer le filtrage temporel sur votre fichier exporté, d'encoder une nouvelle version sans perte, et ensuite de faire tous vos filtrages sur cette version nettoyée, simplement parce que vous gagnez du temps si vous encodez vers plein de formats différents en mode 2 passes.

Lissage dans le temps et l'espace

Oui, vous l'avez deviné, ces filtres font un peu des deux. Cependant, ce ne sont pas des filtres génériques à tout faire et qui seraient meilleurs que les filtres individuels. Ils sont, par contre, faits pour filtrer votre vidéo afin de réduire le bruit et être utilisés à votre avantage sur la plupart des sources que vous allez compresser. Les deux filtres intéressants de cette catégorie sont Convolution3D et le filtre STMedian. Personnellement je trouve STMedian trop puissant et pas aussi efficace que Convolution3D, donc je n'en parlerai pas en détails. Je trouve que convolution3D, en revanche, est presque miraculeux. Essayez ceci :

ConvertToYUY2()
Convolution3d(1,8,8,8,8,3,0)

Maintenant, vous pouvez remarquer...euh...pas grand chose. L'effet visuel direct de convolution3D sur une image est bien présent, mais ne se voit pas autant qu'un lisseur spatial. Cependant, si vous compressez votre vidéo avec un bitratre maximum constant, une fois avec convolution3D et une fois sans, vous remarquerez que la version convolution3d est plus petite ! Houra !

C'est une bonne chose puisque ça signifie que le compresseur arrive mieux à compresser un fichier qui a été filtré par convolution3D, ce qui signifie de la qualité en rab. Egalement, vous pouvez rendre le filtre plus agressif, ce qui est bon pour des sources bruitées, et très bon pour des sources analogiques - lisez la documentation pour plus d'infos. En résumé, convolution3D est une bonne chose qui trouve sa place dans tous mes encodages (NdT : idem, j'ai pu obtenir des divisions de taille par 2 sans affecter la qualité visuelle).

Si vous voulez jouer avec les paramètres, l'auteur a fait quelques paramètres pré-enregistrés que vous pouvez utiliser. Les paramètres ci-dessus sont fait pour les anime de qualité moyenne, mais à la place vous pouvez utiliser...

Convolution3d(preset="movieHQ") # Film Haute Qualité(bonne source DVD)
Convolution3d(preset="movieLQ") #Film basse Qualité (source DVD bruitée)
Convolution3d(preset="animeHQ") #Anime Haute Qualité (bonne source DVD)
Convolution3d(preset="animeLQ") #Anime basse Qualité (source DVD bruitée)
Convolution3d(preset="animeBQ") #Anime mauvaise Qualité
Convolution3d(preset="vhsBQ") #capture K7 mauvaise Qualité

Mais sincèrement, les paramètres donnés plus haut marcheront très bien pour la plupart des cas - Si vous le devez vraiment, testez les paramètres pour basse et mauvaise Qualité.

Lisseurs pour l'analogique

Certains algorithmes de lissage sont créés pour des types spécifiques de bruits présents dans les sources analogiques. Dans ces cas, Convolution3D peut être utile jusqu'à une certaine limite, avec des valeurs fortes, mais il y a des filtres utiles pour les sources analogiques, en particulier les captures de télé ou de K7. Le plus utile est appelé Chroma Noise Reducer 2 et est excellent sur les sources analogiques. C'est un filtre avisynth très simple à utiliser - il fonctionne en YUY2 et on s'en sert ainsi :

Cnr2()

Facile.

 

Filtres de netteté

En compression, la netteté n'est pas vraiment une bonne chose :) Cela rend le fichier beaucoup plus difficile à compresser. Cependant, il y a des situations où l'améliration des contours peut être utile pour augmenter la qualité d'image. Il y a deux algorithmes que vous devez connaître pour les anime, qui donnent tous deux des résultats très différents.

Le premier est Warpsharp Qui ne ressemble pas aux algorithmes de contours classiques puisqu'il affine l'image par distorsion plutôt que par circonvolution. Pour voir ce que je veux dire, essayez-le :) Il y a des versions de warpsharp pour les modes RGB et YUV, que vous trouverez dans le pack advanced avs - pour utiliser la version YUV faites

ConverttoYUY2()
WarpSharp(depth=22)

ou RGB

ConvertToRGB32() #nécessaire pour lire les données RGB24 correctement
VD_WarpSharp(22)

L'avantage de warpsharp est l'affinage des contours abimés, et l'élimination du Dot crawl. C'est un filtre utile et il est probablement mieux de l'utiliser *après* le redimensionnement mais il est utile dans des cas très spécifiques. Je ne l'utiliserais pas tout le temps, seulement s'il y a des problèmes de contours dans la vidéo, cela pourrait aider.

L'autre filtre de contour dont je vais parler est msharpen - qui est le frère de msmooth. Comme msmooth, il fait de la détection de contours sur la source, et crée un masque, mais cette fois il masque tout ce qui n'est pas un contour, et affine seulement les contours. Cela peut donner de bons résultats. Cependant il est très important de bien configurer la détection de contours.

Msharpen(strength=7,threshold=10,mask=false,debug=false)

Paremétrez le seuil (threshold) avec la valeur mask=true puis mettez mask=false et Paremétrez la force (strength). On veut des petites valeurs pour la force - n'y allez pas trop fort avec ce filtre. Il sera utile pour des sources floues.

 

Corriger la Couleur

Hum, pour cette partie vous êtes plus ou moins livré à vous même, parce que je ne peux pas vous conseiller sur les valeurs des paramètres, chaque source différente nécessitant sa propre solution. Ce que je peux faire, c'est vous donner une liste des filtres disponibles et ce qu'ils font. La documentatin pour ces filtres est fournie avec le pack AdvancedAVS.

Tweak - Un filtre Avisynth qui règle la Teinte, la luminosité, la saturation, et le contraste

VD_Hue - C'est la version VirtualDub qui ne marche qu'avec une source RGB, et dont la syntaxe est VD_Hue(hteinte,preserve_luma,saturation,intensité,r,g,b,y,c,m)... tweak est plus facile.

RGBAdjust - un filtre interne à AVISynth qui règle les valeurs Rouge Vert Bleu et couche Alpha d'une source. Il vaut mieux l'utiliser sur une source RGB pour des raisons évidentes, et il faut renseigner les 4 paramètres, ex : RGBAdjust(0.9,0,0,0) réduira le niveau de rouge de 10% (Essayez-le sur le DVD region2 du voyage de Chihiro :P)

Levels - Change le gamma dans les valeurs de luminance de votre source. Commande Avisynth interne identique au filtre VirtualDub : voir la doc. Avisynth.

 

Filtres exotiques - utilisation générale

Il y a des filtres qui peuvent être très utiles pour la qualité de votre vidéo au moment de la compression, qui n'appartiennent pas aux catégories ci-dessus mais qu'il est bon de noter. Le premier, et le plus important en compression s'appelle Dup (disponible dans le pack).

Dup est un autre filtre intelligent créé spécifiquement pour l'animation. Souvent, l'animation n'est pas vraiment à 24 images par secondes comme les films - c'est plutot de l'ordre de 12 ips. Cependant, en raison de la nature même de la vidéo, deux images identiques à l'origine ne seront pas toujours identiques à cause du bruit. S'il y a un pixel différent d'une image à l'autre, alors le compresseur devra compresser le macroblock correspondant à ce pixel. Ceci arrive plus souvent qu'on ne le voudrait.

Donc, ce que fait Dup c'est détecter si la dernière image ne serait pas la même que l'image actuelle (modulo un peu de bruit). Si c'est la même image, au lieu d'utiliser celle qui contient un bruit un peu différent, il fait une dupplication de la première image. Ce qui signife que pas un pixel ne change entre les images, et un codec inter-frame n'aura pas besoin de compresser quoi que ce soit de l'image. Si on aditionne tout cela sur la longueur d'un amv, on économise un paquet de bits.

Ca a l'air génial, non ? Ben c'est le cas, quand ça marche.

Le seul problème c'est que parfois la détection n'est pas assez sensible. Les ordinateurs ne distinguent pas les choses de la même manière que nous et deux images qui, de manière évidente, ne sont pas identiques peuvent tomber dans la zone de similarité de l'ordinateur. Une scène dans laquelle il pleut, la pluie peut être ignorée, considérée comme du bruit, et les images seront copiées, donnant un résultat bizarre, un zoom très lent pourrait également rendre deux images consécutives trop resemblantes et à nouveau la copie rendra bizarre. C'est un calvaire. En gros, ca ne coute rien de l'essayer si vous avez du temps. J'ai essayé sur une compression qui d'habitude donnait 15Mo et au final j'ai eu 12Mo avec Dup - ce qui est une économie énorme pour aucune perte visible de détails, mais ça ne marche pas sur toutes les vidéos donc vous devez le tester.

Filtres exotiques - Spécifique

Je pense que maintenant vous avez de bonnes bases sur l'utilisation des filtres de différents types, donc voici juste une liste des problèmes graphiques courants et des filtres faits pour les régler :

Effet Arc-en-ciel/Moiré

SmartSmootherIQ par Tim Park - un filtre virtualDub. Lent, nécessite beaucoup de passes si le moiré est important mais ça marche.

Antiblink - un filtre avisynth en cours de développement. Ca vaut le coup de regarder.

MergeChroma(Convolution3d(1,8,8,8,8,3,0)) - marche également bien.

Dot Crawl

Warpsharp - Il y a une version virtualdub et une version avisynth de ce filtre. La version avisynth est bugguée et doit être chargée séparément (c'est dans le répertoire AVSFilters/extras/ si vous installez le pack AdvancedAVS )

Chroma offset

Flaxen's VHS Tool - un filtre virtualdub qui contient des options de correction de chrominance.

ChormaShift - un filtre avisynth fait exprès pour (inclus dans adv pack)

Si vous avez besoin d'un filtre spécifique pour vos besoins, essayez de chercher dans cette liste pour des filtres avisynth et ce site web pour des filtres virtualdub