SoftSharpen 8.8 - Script vidéo AviSynth
Modérateur : Modérateurs
Pour le ringing, blocking et banding, ce sont des problèmes qui apparaissent quand on a un débit qui est un peu faible pour le film il me semble, avec un débit suffisant il n'est pas nécessaire d'activer ces options. Ai-je raison ?
impec.ricou a écrit :Testé rapidement et approuvé, dans la prévisualisation de M4NG je n'ai rencontré aucun problème en activant toutes les options.
Certes, ils arrivent fréquemment lorsque le débit est trop faible, pas de doute.ricou a écrit :Pour le ringing, blocking et banding, ce sont des problèmes qui apparaissent quand on a un débit qui est un peu faible pour le film il me semble (...)
Mais avant même la phase de compression, ils peuvent se produire lors du traitement vidéo :
-- le ringing peut apparaître avec une hausse de netteté trop forte ;
-- le blocking avec certains filtres poussés trop forts (par exemple le débruiteur temporel de softsharpen(*) )
-- le banding peut éventuellement arriver quand on convertit une source RGB (par exemple) en YV12 ! (On me l'a fait constater sur un exemple d'un dessin animé.)
(*) si le débruitage temporel est monté assez fort (ce qui n'est pas le cas par défaut), alors il peut créer des petits blocs sur des mouvements rapides. Cela étant, les blocs sont atténués par le floutage du mouvement.
Oui, si la source est propre et que tu ne pousses pas trop fort les filtres, il n'y a pas de problème en général.ricou a écrit :(...) avec un débit suffisant il n'est pas nécessaire d'activer ces options. Ai-je raison ?
Fais quand même attention au banding, dès fois il est vicieux Dans Iron Man par exemple, il y a un passage assez sombre qui produit du banding dès la lecture du .d2v ... c'est d'ailleurs à partir de cette expérience que j'ai ajouté cette option à softsharpen.
Je n'ai pas fait d'encodage depuis plus 2 mois et aujourd'hui j'ai vérifié un problème que j'avais déjà vu cet été mais dont je n'étais pas sur.
J'ai utilisé ton filtre de désentrelacement, et j'ai de très léger effets de peigne à la lecture par moment. En fait ça fait plus l'impression d'avoir une grille qui apparait pendant une seconde sur certaine scène rapide tellement c'est léger, mais du coup ce n'est pas parfait.
L'as-tu déjà constaté ?
Par contre, maintenant que j'ai regardé tout le film, je dirais que c'est peut-être juste un problème d'aliasing en fait. Mais mes précédents tests avec ce filtre m'avaient vraiment déçu, j'avais une grosse perte de qualité dans certaines scènes.
Avant j'avais toujours utilisé le filtre de désentrelacement proposé dans RI4M avec laquelle je n'ai jamais eu de problème, c'était déjà Yadif ?
J'ai déjà fait quelques tests avec le filtre de M4NG et j'en étais effectivement satisfait.
As-tu des raisons particulières pour avoir choisit ce filtre plutôt qu'un autre Leon ? As-tu des arguments en sa faveur ?
Comme je disais, il y a des sources qui vont mieux être traitées (en fonction de ce que l'on recherche) par yadif, d'autres par tdeint, etc.
Par exemple : http://www.forum.m4ng.fr/image-vp112212.html#112212
Donc le filtre anti-aliasing de softsharpen corrige les problèmes que j'avais, par contre en regardant image par image, j'ai des images dédoublées sur tous les passages rapides (avec ou sans aa).
J'ai testé en activant le deblending à 20, mais je n'ai vu aucune amélioration
J'ai ensuite testé avec yadif, et aucun problème, ni aliasing, ni dédoublement.
Est-ce que vous connaissez d'autres bon filtres que je pourrais tester ?
Pendant que j'y suis, est-ce que l'ordre des filtres dans la commande de softsharpen a de l'importance ou on peut les mettre dans n'importe quel ordre ?
Qu'appelles-tu "images dédoublées" ? Peux-tu nous poster de telles images ?ricou a écrit : Donc le filtre anti-aliasing de softsharpen corrige les problèmes que j'avais, par contre en regardant image par image, j'ai des images dédoublées sur tous les passages rapides (avec ou sans aa).
J'ai ensuite testé avec yadif, et aucun problème, ni aliasing, ni dédoublement.
Non, aucune importance à l'ordre des paramètres.ricou a écrit : Pendant que j'y suis, est-ce que l'ordre des filtres dans la commande de softsharpen a de l'importance ou on peut les mettre dans n'importe quel ordre ?
Comme je ne savais pas quelles images seraient le plus parlante : voici un court extraitleon1789 a écrit : Qu'appelles-tu "images dédoublées" ? Peux-tu nous poster de telles images ?
J'ai notamment noté :
- au moment où il touche le sol, le plan change de vu et les 2 plans se confondent
- l'aller-retour de la corde quand il la jette
- son doigt de la main droite qu'il bouge
En fait, dans les toutes fonctions avisynth, l'ordre des arguments "optionnels" n'a pas d'importance.Subbat a écrit :Ah bah tu vois, j'aurais cru que pour au moins le redimensionnement il y avait une place spéciale (au début, à la fin)...
En revanche dans le script lui-même, dans le code proprement dit qui enchaîne les filtres, l'ordre d'application des filtres est important.
ca devait être à peu près ça :leon1789 a écrit :Effectivement, le résultat n'est pas joli. Quel est ton script avisynth ?
Code : Tout sélectionner
# **** m4ng & AVIsynth 2.5x script **** pass 2+
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\undot.dll")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\FluxSmooth.dll")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\Convolution3D.dll")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\MaskTools.dll")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\MVTools.dll")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\Asharp.dll")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\MSharpen.dll")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\TDeint.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\ASharp.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\DctFilter.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\Deen.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\DGDecode.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\GradFun2db.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\MSharpen.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\mt_MaskTools")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\mvTools2.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\RemoveGrainSSE2.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\TDeint.dll")
Import("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\SoftSharpen.avsi")
Source="f:\filmenco\pirates\pirates3\film\video_ts\vts_01_0.ifo"
Largeur=720
Hauteur=400
ratio =1.800000
vratio =1.800000
real_l=720
real_l4=720
Crop_g=0
Crop_d=0
Crop_h=48
Crop_b=-48
Borders_g=0
Borders_d=0
Borders_h=0
Borders_b=0
Indice=0.219298
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\DGDecode.dll")
Video=MPEG2Source("f:\filmenco\pirates\pirates3\film\video_ts\vts_01_1.d2v")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\NicAudio.dll")
Audio=NicAC3Source("f:\filmenco\pirates\pirates3\film\video_ts\VTS_01~2.AC3").DelayAudio(4.200000)
Import("C:\PROGRA~2\m4ng_v3\system\AudioMix.avsi") #(c) 2oo9 - Dirk Pitt
# ====================================================================
Audio=Audio.AudioChannels == 6 ? DownMix( Audio ) : Audio
Audio=Audio.AudioChannels == 1 ? MonoToStereo( Audio ) : Audio
Video=Audiodub(Video, Audio)
Video=BilinearResize(Video, Largeur, Hauteur)
Video=Crop(Video, crop_g, crop_h, crop_d, crop_b)
Video=Trim(Video, 47093, 55186)
video = video.SoftSharpen(preset="film", sharp=20.0, deNoisT=7.2, deRin=3, move=34, dct=3, deInt=true, aa=true)
Return(AssumeFrameBased(Video))
Je trouve que ce n'est pas parfait non plus, c'est pour ça que je souhaitais en essayer d'autres.
C'est normal que le désentrelacement se passe mal car tu demandes le désentrelacement après avoir redimensionner et rogner la vidéo : le fait de modifier l'image comme cela "casse" l'entrelacement correct de l'image et du coup TDeint ne s'y retrouve pas au moment de désentrelacer.ricou a écrit :Code : Tout sélectionner
... Video=BilinearResize(Video, Largeur, Hauteur) Video=Crop(Video, crop_g, crop_h, crop_d, crop_b) Video=Trim(Video, 47093, 55186) video = video.SoftSharpen(preset="film", sharp=20.0, deNoisT=7.2, deRin=3, move=34, dct=3, deInt=true, aa=true) ...
Je pense que Yadif est effectivement meilleur dans ces mauvaises conditions. Mais le truc est d'éviter si possible de se mettre dans des mauvaises conditions. Dans des conditions normales, je pense que TDeint s'en tire mieux.
De manière absolument générale, il ne faut rien faire sur la vidéo avant le désentrelacement. Donc un script correct est de désentrelacer juste avant de faire le redimensionnement, comme cela :
Code : Tout sélectionner
...
video = video.TDeint(mode=2)
Video=BilinearResize(Video, Largeur, Hauteur)
Video=Crop(Video, crop_g, crop_h, crop_d, crop_b)
Video=Trim(Video, 47093, 55186)
video = video.SoftSharpen(preset="film", sharp=20.0, deNoisT=7.2, deRin=3)
...
Idem si tu utilises Yadif ou tout autre désentrelaceur : il faut le placer avant le resize.
Merci pour ces conseils, c'est en cours d'encodage.
Par contre, dans ces conditions, je pense que l'option de désentrelacement de ton site est quasi inutile, car rare sont les films entrelacés qu'il ne faut pas croper.
PS : le filtre yadif étant ajouté dans le code par M4NG, il était au bon endroit, d'où un meilleur résultat.
En fait, tu peux concentrer le code en quelques lignes car softsharpen peut désentrelacer et redimensionner lui-même ( options deInt=true, larg=Largeur, haut=Hauteur ) :ricou a écrit : Par contre, dans ces conditions, je pense que l'option de désentrelacement de ton site est quasi inutile, car rare sont les films entrelacés qu'il ne faut pas croper.
Code : Tout sélectionner
...
Video=Audiodub(Video, Audio)
video = video.SoftSharpen(preset="film", sharp=20.0, deNoisT=7.2, deRin=3, deInt=true, larg=Largeur, haut=Hauteur)
Video=Crop(Video, crop_g, crop_h, crop_d, crop_b)
Video=Trim(Video, 47093, 55186)
Return(AssumeFrameBased(Video))
oui, c'est logique (heureusement ).ricou a écrit : PS : le filtre yadif étant ajouté dans le code par M4NG, il était au bon endroit, d'où un meilleur résultat.
Est-ce que j'ai une chance d'avoir de meilleurs résultats ou ce sera pareil ?
Mettre le crop après les options d'améliorations de vidéo ne pose pas de problème ?
En tout cas en mettant tdeint au bon endroit ça fonctionne bien. Il reste quelque mini défauts, mais il faut se concentrer sur un objet précis pour l'apercevoir, et je pense qu'il ne sera pas possible d'avoir la perfection.
Dans softsharpen, le resize se fait avec BicubicResize (qui s'exécute en début de script ou en fin de script, en fonction qu'il s'agisse d'une réduction ou d'un agrandissement)ricou a écrit : Est-ce que j'ai une chance d'avoir de meilleurs résultats ou ce sera pareil ?
BicubicResize est plus net et précis que BilinearResize. En visionnant le .avs (sans compression par un codeur), la différence entre bilinear et bicubic peut se voir.
Cela étant, dans la pratique, si l'encodage se traduit par une forte compression, le gain en netteté de bicubicresize sera complètement anéanti, et pourrait même se traduire par davantage d'artefacts.
En clair, pour résumer, je dirais que :
-- pour une forte compression (bas débit), bilinearResize est préférable ;
-- pour un encodage de qualité (débit normal ou haut), bicubicResize est meilleur.
En fait, il y a plein de filtres de resize. Pour moi, le meilleur en général (mais pas forcément dans tous les cas possibles et imaginables) est LanczosResize.
non pas de problème, car la fonction crop ne travaille pas "réellement" les pixels de l'image : il s'agit juste de couper, sans rien modifier par ailleurs.ricou a écrit :Mettre le crop après les options d'améliorations de vidéo ne pose pas de problème ?
Et comme le temps d'encodage n'est pas du tout ma priorité, je vais essayer les fupp également.
Néanmoins, dans ce cas, je ne veux pas réellement redimensionner la vidéo, c'est juste que la source est un dvd anamorphosé, et que sinon l'image est déformée.
Je me suis donc dit qu'il existait peut-être un script tout prêt pour ça, et je suis tombé sur cropresizeborder d'un certain leon...
Donc au final, je comprends que l'on est obligé de redimensionner l'image alors que l'on conserve la résolution d'origine ? (drôle de bête encore cette anamorphose).
Ton cropresizeborder permet d'automatiser le processus, mais le résultat est le même qu'en choisissant la résolution et le crop manuellement en terme de qualité ?
Voici mon impression résultant des différents tests sur ce passage :
Le film a été encodé en x264 en une passe avec un débit de 1200 kbs. Il dure 5 min 24 sec et j'ai utilisé ces options pour tous :
video = video.SoftSharpen(preset="film", sharp=20.0, deNoisT=7.2, deRin=3, move=34, dct=3)
voici donc : les différentes options changées : le nombre de fps à l'encodage : la taille du fichier final
- yadif + bilinear : 40 fps : 45453 mo : ne perd pas d'information mais laisse trainer des artefacts (bout du doigts de la frame suivante qui apparait à côté du doigt actuel) + créé du ringing
- tedint + bilinear : 24 fps : 45433 mo : idem sans le ringing
- tedeint + bicubic (code donné par leon) : 22fps : 45442Mo : légère perte d'informations (le doigt est estompé par moment) et quelques artefacts (comme le bilinear mais moins marqué)
- tdeint + lanczos : 22 fps : 45392 Mo : comme le bicubic mais perds moins d'informations
- tdeint + fupp : 16 fps : 45442 mo : perte d'informations (à peine plus que lanczos), mais aucun artefact qui traine.
Je n'ai vu absolument aucune différence entre le preset very low et le preset high, par contre le hybridQ me semble un peu mieux, un peu plus de flou mais ce flou compense les pertes d'informations, ce qui est plus agréable à regarder à vitesse normale.
- yadiff + fupp hybrid : 20 fps : comme le tdeint + fupp mais avec un léger ringing
Au final, à vitesse normale, à part le ringing qui est un peu gênant par endroit, je n'ai vu aucune différence entre tous, mais mon choix se portera sur tdeint + fupp hybrid.
Maintenant mon problème de résolution à résoudre :
Ce film, j'aimerais qu'il est une résolution de 720 x 404, puis croper en haut et en bas de 50px, afin d'arriver au final à 720 x 304. Ce qui permet d'avoir la bonne résolution avec 2px de bandes noires et un multiple de 16.
Par contre pour redimensionner en fupp, il faut un multiple de 8, ce qui n'est pas bon avec 404. Comment puis-je faire ? Il n'est pas possible de croper avant le redimensionnement ou d'ajouter des bandes noires ?
J'ai vu que dans le code m4ng, pour redimensionner en fupp, il y avait ceci : Largeur/8*8. Ce qui permet de solutionner le problème, mais que fait cet argument pour que ça fonctionne ?
Le DVD est codé d'origine en 720x576 et ensuite on a effectivement l'habitude de redresser l'anamorphose : c'estricou a écrit : Donc au final, je comprends que l'on est obligé de redimensionner l'image alors que l'on conserve la résolution d'origine ? (drôle de bête encore cette anamorphose).
-- soit 720x540 (souvent arrondi à 720x544) pour un DVD format 4/3 ;
-- soit 720x405 (souvent arrondi à 720x400) pour un DVD format 16/9.
(/!\ le format du DVD n'est pas le format de la vidéo : exemple ton film qui est visiblement en 2.39)
En terme de qualité finale (flou, artefacts, etc.), la seule différence avec une solution manuelle est la manière de redimensionner : pour cela cropresizeborder utilise Lanczos, et à la main on a le choix de prendre ce que l'on veut.ricou a écrit : Ton cropresizeborder permet d'automatiser le processus, mais le résultat est le même qu'en choisissant la résolution et le crop manuellement en terme de qualité ?
Par ailleurs, Cropresizeborder n'agit pas comme m4ng dans l'ordre des filtres :
-- m4ng redimensionne d'abord, puis rogne l'image (plus facile à mettre en oeuvre quand on tolère des bandes noires dans la vidéo finale) ;
-- Cropresizeborder rogne d'abord, puis redimensionne (plus fidèle quand on désire éliminer toute bande noire) .
En termes de déformation et perte d'image, la différence est visible lorsque l'on veut supprimer tout bord noir. Prenons l'exemple de script d'encodage pour Pirates des Car. :
-- avec m4ng, le script va redimensionner l'image en 720x400 (car DVD format 16/9) puis rogner un multiple de 16 lignes. Cet ordre opératoire implique une très légère déformation (car on devrait redimensionner théoriquement en 720x405) et un perte possible d'une petite partie de l'image (car le crop final peut se révéler trop agressif).
-- avec cropresizeborder, on rogne d'abord (ce qui se fait à 1 ou 2 lignes près) puis on redimensionne à une résolution multiple de 16 de manière la moins déformante possible.
Si tu peux/veux, laisse un petit bout de vob pour que je te montre,
ou tu peux commencer par essayer ce script (attention à bien charger le plugin autocrop nécessaire)
Code : Tout sélectionner
Video = MPEG2Source("f:\filmenco\pirates\pirates3\film\video_ts\vts_01_1.d2v")
Video = video.cropresizeborder(720, format = 16/9., full = true)
Video = Trim(Video, 47093, 55186)
Return(AssumeFrameBased(Video))
De manière élémentaire, à la main :ricou a écrit : Maintenant mon problème de résolution à résoudre :
Ce film, j'aimerais qu'il est une résolution de 720 x 404, puis croper en haut et en bas de 50px, afin d'arriver au final à 720 x 304. Ce qui permet d'avoir la bonne résolution avec 2px de bandes noires et un multiple de 16.
Code : Tout sélectionner
Video = video.LanczosResize(720,404).crop(0,50,0,-50)
Si bien sûr et c'est exactement ce que fait cropresizeborder, d'où son nom : crop, puis resize, puis borderricou a écrit : Il n'est pas possible de croper avant le redimensionnement ou d'ajouter des bandes noires ?
A la main, le code serait
Code : Tout sélectionner
video = video.crop(0,72,0,-72).LanczosResize(720,304)
Code : Tout sélectionner
video = video.crop(0,74,0,-74).LanczosResize(720,300).addBorders(0,2,0,2)
T'es sur de ton coup ? car il y a ça dans le fichier avsi sur ton ftp sfr :leon1789 a écrit : En terme de qualité finale (flou, artefacts, etc.), la seule différence avec une solution manuelle est la manière de redimensionner : pour cela cropresizeborder utilise Lanczos, et à la main on a le choix de prendre ce que l'on veut.
Code : Tout sélectionner
### RESIZE
Video = Video.BicubicResize(Largeur,Hauteur,0,0.8)
Dans le cas de ce film, j'ai l'impression qu'il est donc mieux de faire le crop d'abord effectivement, j'ai donc essayé ceci :leon1789 a écrit : Par ailleurs, Cropresizeborder n'agit pas comme m4ng dans l'ordre des filtres :
-- m4ng redimensionne d'abord, puis rogne l'image.
-- Cropresizeborder rogne d'abord, puis redimensionne.
Code : Tout sélectionner
video = video.TDeint(mode=2)
Video=Crop(Video, 0, 72, 0, 72)
Video=HybridFupp ( Video, 720, 304, preset="Low")
J'ai déjà essayé cropresizeborder hier, avec cette commande :
Code : Tout sélectionner
Video=CropResizeBorder(Video)
Effectivement, cette commande n'ajoute pas de bande noire sur les côtés, par contre la vidéo est redimensionnée en 720 x 300 :
Code : Tout sélectionner
Video = video.cropresizeborder(720, format = 16/9., full = false)
Le problème avec cette commande c'est que 404 n'est pas divisible par 8 pour le filtre fupp :
Code : Tout sélectionner
Video = video.LanczosResize(720,404).crop(0,50,0,-50)
Et puis il y a une chose dont je me suis rendu compte sur ce que j'ai fait hier, c'est que quand ma vidéo finale fait 304px de haut, vu que j'ai 3-4px de bandes noires, l'image ne fait pas 304px.
C'est pourquoi j'ai pensé à ce code, peux-tu me confirmer qu'il est correct :
Code : Tout sélectionner
Video=HybridFupp ( Video, 720, 408, preset="HybridQ")
Video=AddBorders(Video, 0, 2, 0, 2)
Video=Crop(Video, 0, 52, 0, 52)
La vidéo fait donc 308px, mais l'image visible 304px, par contre 308 n'est pas divisible par 16, est-ce grave ?
Contrairement à ce code que tu donnes
Code : Tout sélectionner
video = video.crop(0,74,0,-74).LanczosResize(720,300).addBorders(0,2,0,2)
Et au final, après avoir retourné les chiffres dans tous les sens, ce qui me semble le mieux c'est ça :
Code : Tout sélectionner
video = video.TDeint(mode=2)
Video=HybridFupp ( Video, 720, 408, preset="HybridQ")
Video=Crop(Video, 0, 52, 0, 52)
en fupp HybridQ
en Lanczos
PS : ce n'est pas que je tiennes absolument à utiliser fupp, mais c'est surtout pour mes connaissances générales que je fais tout ça.
tu as raison heu mince alors...ricou a écrit :T'es sur de ton coup ? car il y a ça dans le fichier avsi sur ton ftp sfr :Code : Tout sélectionner
### RESIZE Video = Video.BicubicResize(Largeur,Hauteur,0,0.8)
Et en plus, 0.8 me paraît une valeur trop forte. Je vais devoir revoir ça.
Il n'y a pas forcément de miracle.ricou a écrit : Dans le cas de ce film, j'ai l'impression qu'il est donc mieux de faire le crop d'abord effectivement, j'ai donc essayé ceci :Mais le résultat c'est qu'il y a les mêmes artefacts qu'il y avait avec les autres filtres de redimensionnement. :(Code : Tout sélectionner
video = video.TDeint(mode=2) Video=Crop(Video, 0, 72, 0, 72) Video=HybridFupp ( Video, 720, 304, preset="Low")
Juste pour voir, essaie mode=0 dans TDeint.
Oui, lorsqu'on autorise les bandes noires, elles peuvent arriver sur les 4 bords en même temps.ricou a écrit : J'ai déjà essayé cropresizeborder hier, avec cette commande :Car j'ai lu quelque part que lorsqu'on ne mettait pas d'arguments, la vidéo n'était pas déformée et qu'on autorisait des bandes noires, soit tout à fait ce que je souhaite. Malheureusement ça ajoutait 1px noire sur les côtés gauche et droit aussi.Code : Tout sélectionner
Video=CropResizeBorder(Video)
Non, la vidéo n'est pas redimensionnée en 720x300, mais en 720x304 (multiple de 16).ricou a écrit : Effectivement, cette commande n'ajoute pas de bande noire sur les côtés, par contre la vidéo est redimensionnée en 720 x 300 :Code : Tout sélectionner
Video = video.cropresizeborder(720, format = 16/9., full = false)
C'est l'image réelle qui est en 720x300 , et il y a en plus 2 lignes noires en haut et bas , ce qui au total fait bien 720x304.
Exact ! L'image réelle doit faire 301px car 720 / 2.39 = 301 environricou a écrit : Et puis il y a une chose dont je me suis rendu compte sur ce que j'ai fait hier, c'est que quand ma vidéo finale fait 304px de haut, vu que j'ai 3-4px de bandes noires, l'image ne fait pas 304px.
C'est un peu étrange d'ajouter des bords noirs (avec addBorders) pour les retirer juste après (avec crop)ricou a écrit : C'est pourquoi j'ai pensé à ce code, peux-tu me confirmer qu'il est correct :Donc je redimensionne à 408 (divisible par 8), j'ajoute 4px de bandes noires qui resteront après le crop.Code : Tout sélectionner
Video=HybridFupp ( Video, 720, 408, preset="HybridQ") Video=AddBorders(Video, 0, 2, 0, 2) Video=Crop(Video, 0, 52, 0, 52)
Ce code simplifié fait exactement la même chose :
Code : Tout sélectionner
Video=HybridFupp ( Video, 720, 408, preset="HybridQ")
Video=Crop(Video, 0, 50, 0, 50)
Disons que 308 n'est même pas divisible par 8, ça peut être gênant...ricou a écrit : La vidéo fait donc 308px, mais l'image visible 304px, par contre 308 n'est pas divisible par 16, est-ce grave ?
Le problème ne vient pas de la dimension de l'image réelle (visible si tu préfères), mais la dimension (ou résolution) de la vidéo. Je pense qu'il est préférable d'avoir une vidéo 720x304 avec une image réelle de 300 , et deux bords de 2 pixels chacun (pour un total de 300 + 2x2 = 304).
Ce code crée une vidéo à la résolution 720x304 :ricou a écrit :Contrairement à ce code que tu donnesoù je comprends que la vidéo fait 300px dont 4px de bandes noires, soit 296px de visible.Code : Tout sélectionner
video = video.crop(0,74,0,-74).LanczosResize(720,300).addBorders(0,2,0,2)
300 pour l'image visible + 2x2 bords noirs.
Redimensionner en 720x408 n'est pas le mieux a priori. Mais je comprends que tu ne puisses pas faire autrement avec HybridFupp.ricou a écrit : Et au final, après avoir retourné les chiffres dans tous les sens, ce qui me semble le mieux c'est ça :Code : Tout sélectionner
video = video.TDeint(mode=2) Video=HybridFupp ( Video, 720, 408, preset="HybridQ") Video=Crop(Video, 0, 52, 0, 52)
Je n'ai pas analysé toutes les images évidemment.ricou a écrit :J'aimerais bien ton avis sur ces 2 courts extraits concernant la résolution inscrite ci-dessus (la même pour les 2), et leur différence de filtre de redimensionnement :
en fupp HybridQ
en Lanczos
Pour moi, les images sont très proches. C'est un peu plus lissé et moins d'artefacts avec HybriddFupp, mais parfois les textures sont mieux conservées avec Lanczos.