SoftSharpen 8.8 - Script vidéo AviSynth

Modérateur : Modérateurs

ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

Testé rapidement et approuvé, dans la prévisualisation de M4NG je n'ai rencontré aucun problème en activant toutes les options. J'encoderai un film plus tard.

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 ?
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

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.
impec.
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 (...)
Certes, ils arrivent fréquemment lorsque le débit est trop faible, pas de doute.
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.
ricou a écrit :(...) avec un débit suffisant il n'est pas nécessaire d'activer ces options. Ai-je raison ?
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.
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.
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

Toujours là Leon ?

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é ?
Avatar du membre
Subbat
Administrateur
Administrateur
Messages : 8836
Enregistré le : jeu. 11 déc., 2008 20:12
Localisation : Quelque part... dans le centre de la France...

Message par Subbat »

Salut,

Tu as essayé avec un autre filtre de désentrelacement ? Yadif par exemple qui est est dispo dans m4ng...
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

Salut
Effectivement, tous les filtres ne se valent pas en fonction des sources et des goûts de chacun. Dans Softsharpen, c'est TDeint(mode=2) qui est utilisé pour désentrelacer. Comme le propose Subbat, il y a aussi Yadif à tester.
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

Sur le film d'aujourd'hui je n'ai rien testé d'autre.
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 ? :o:
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

Je pense que ri4m utilisait le filtre Sangnom.

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
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

J'ai trouvé une bonne scène pour tester le désentrelacement de ce film.

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 ?
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

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.
Qu'appelles-tu "images dédoublées" ? Peux-tu nous poster de telles images ?

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 ?
Non, aucune importance à l'ordre des paramètres.
Avatar du membre
Subbat
Administrateur
Administrateur
Messages : 8836
Enregistré le : jeu. 11 déc., 2008 20:12
Localisation : Quelque part... dans le centre de la France...

Message par Subbat »

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)...
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

leon1789 a écrit : Qu'appelles-tu "images dédoublées" ? Peux-tu nous poster de telles images ?
Comme je ne savais pas quelles images seraient le plus parlante : voici un court extrait

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
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

Effectivement, le résultat n'est pas joli. Quel est ton script avisynth ?
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

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 fait, dans les toutes fonctions avisynth, l'ordre des arguments "optionnels" n'a pas d'importance.
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.
Modifié en dernier par leon1789 le sam. 27 oct., 2012 17:29, modifié 1 fois.
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

leon1789 a écrit :Effectivement, le résultat n'est pas joli. Quel est ton script avisynth ?
ca devait être à peu près ça :

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))
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

Et puis pour comparer, avec le désentrelacement Yadif et les même paramètres de softsharpen : à télécharger

Je trouve que ce n'est pas parfait non plus, c'est pour ça que je souhaitais en essayer d'autres.
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

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) 

...
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.

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) 

...
Quel résultat donne ce script ?

Idem si tu utilises Yadif ou tout autre désentrelaceur : il faut le placer avant le resize.
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

OK, c'est la première fois que je touche au code avs, je ne sais pas du tout comment l'utiliser. Et je ne le fais que parce que ton site propose une solution d'amélioration de vidéo facile à utiliser. Quoi que ça m'intéresse de plus en plus d'apprendre le fonctionnement.

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.
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

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.
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 ) :

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))
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.
oui, c'est logique (heureusement ;) ).
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

ah oui j'avais oublié que l'on pouvait redimensionner avec softsharpen, ne l'ayant jamais fait.

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. :D
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

ricou a écrit : Est-ce que j'ai une chance d'avoir de meilleurs résultats ou ce sera pareil ?
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)

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.
ricou a écrit :Mettre le crop après les options d'améliorations de vidéo ne pose pas de problème ?
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
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

Je viens de voir qu'il était disponible dans m4ng d'ailleurs.
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 ?
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

ricou 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).
Le DVD est codé d'origine en 720x576 et ensuite on a effectivement l'habitude de redresser l'anamorphose : c'est
-- 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)
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é ?
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.

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))
Dans cropresizeborder, on précise le format du DVD (1.77777777 ou 16/9. , avec un point après le 9) et on précise que l'on ne veut pas de ligne noire (full = true)
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.
De manière élémentaire, à la main :

Code : Tout sélectionner

Video = video.LanczosResize(720,404).crop(0,50,0,-50)
C'est également possible d'y arriver avec m4ng.

ricou a écrit : Il n'est pas possible de croper avant le redimensionnement ou d'ajouter des bandes noires ?
Si bien sûr et c'est exactement ce que fait cropresizeborder, d'où son nom : crop, puis resize, puis border ;)
A la main, le code serait

Code : Tout sélectionner

video = video.crop(0,72,0,-72).LanczosResize(720,304)
ou ce que fait en réalité cropresizeborder pour une vidéo 2.39 quand on autorise des bandes noires

Code : Tout sélectionner

video = video.crop(0,74,0,-74).LanczosResize(720,300).addBorders(0,2,0,2)
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

Sacré édition de post. :mdr
J'avais déjà commencé de répondre au précédent message, je continue quelques tests avant de la poster.
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

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.
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)
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.
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 :

Code : Tout sélectionner

video = video.TDeint(mode=2)
Video=Crop(Video, 0, 72, 0, 72)
Video=HybridFupp ( Video, 720, 304, preset="Low")
Mais le résultat c'est qu'il y a les mêmes artefacts qu'il y avait avec les autres filtres de redimensionnement. :(



J'ai déjà essayé cropresizeborder hier, avec cette commande :

Code : Tout sélectionner

Video=CropResizeBorder(Video)
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.

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)
Donc je redimensionne à 408 (divisible par 8), j'ajoute 4px de bandes noires qui resteront après le crop.
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) 
où je comprends que la vidéo fait 300px dont 4px de bandes noires, soit 296px de visible.



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)
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


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.
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

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)
:gy: tu as raison :gy: heu mince alors...
Et en plus, 0.8 me paraît une valeur trop forte. Je vais devoir revoir ça.
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 :

Code : Tout sélectionner

video = video.TDeint(mode=2)
Video=Crop(Video, 0, 72, 0, 72)
Video=HybridFupp ( Video, 720, 304, preset="Low")
Mais le résultat c'est qu'il y a les mêmes artefacts qu'il y avait avec les autres filtres de redimensionnement. :(
Il n'y a pas forcément de miracle.
Juste pour voir, essaie mode=0 dans TDeint.
ricou a écrit : J'ai déjà essayé cropresizeborder hier, avec cette commande :

Code : Tout sélectionner

Video=CropResizeBorder(Video)
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.
Oui, lorsqu'on autorise les bandes noires, elles peuvent arriver sur les 4 bords en même temps.
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) 
Non, la vidéo n'est pas redimensionnée en 720x300, mais en 720x304 (multiple de 16).
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.
ricou 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.
Exact ! L'image réelle doit faire 301px car 720 / 2.39 = 301 environ
ricou a écrit : 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)
Donc je redimensionne à 408 (divisible par 8), j'ajoute 4px de bandes noires qui resteront après le crop.
C'est un peu étrange d'ajouter des bords noirs (avec addBorders) pour les retirer juste après (avec crop)
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)
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 ?
Disons que 308 n'est même pas divisible par 8, ça peut être gênant...

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).
ricou a écrit :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) 
où je comprends que la vidéo fait 300px dont 4px de bandes noires, soit 296px de visible.
Ce code crée une vidéo à la résolution 720x304 :
300 pour l'image visible + 2x2 bords noirs.
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)
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 :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
Je n'ai pas analysé toutes les images évidemment.
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.
Répondre