CropResizeBorder 3.8 - Script vidéo AviSynth

Modérateur: Modérateurs

CropResizeBorder 3.8 - Script vidéo AviSynth

Messagepar leon1789 » Mer 31 Oct, 2007 10:53

Mise à jour du 28-10-1012

La petite histoire de << resize , autocrop , "snap 16x16" de m4ng >> ( cf. http://www.forum.m4ng.fr/resize-autocro ... vt934.html ) m'a donné l'idée de réaliser un petit script avs permettant de réaliser une fonction CropResizeBorder qui, comme son nom l'indique, permet de rogner, de redimentionner et d'ajouter des bords (noirs).

Dernière modification le 03-10-2009

Voici un petit script avs permettant de réaliser une fonction CropResizeBorder qui, comme son nom l'indique, permet de rogner, de redimentionner et d'ajouter des bords (noirs).

CropResizeBorder(Source, "Larg", "Haut", "Bloc", "Format", "Bords", "Zoom", "HD", "Full", "Verbose", ... )

Tous les paramètres sont optionnels sauf Source qui désigne la vidéo à traiter.


Code: Tout sélectionner
#
     # CropResizeBorder(Source, "Larg", "Haut", "Bloc", "Format", "Bords", "Zoom",
     #              "Cadre", "Image", "HD", "Full", "Verbose", "View", "Pixels",
     #                    "leftCut", "rightCut", "topCut", "bottomCut")
     # version 3.7
     # (merci à M. W. I. Prod.)
     #
     # Le premier paramètre Source est évidemment obligatoire car il désigne...
     # ...la vidéo à traiter ! :-)
     #
     # Les paramètres suivants sont tous optionnels.
     #
     # -- Larg et Haut (entiers) désignent les dimensions auxquelles on veut
     # redimensionner la vidéo.
     # Par défaut, ces entiers sont plus ou moins les largeur et hauteur de
     # Source rognée de ses bandes noires (compte tenu également des
     # paramètres Format et Cadre).
     #
     # -- Bloc (entiers) est nombre dont les dimensions de la résolution
     # seront multiples.
     # Par défaut, Bloc=16 (en fonction d'autres arguments).
     #
     # RQ : Larg et Haut sont arrondis automatiquement à de proches
     # multiples de Bloc.
     #
     # -- Format (flottant) indique la format de Source.
     # Par défaut, une heuristique essaie (sans aucune garantie !) de
     # déterminer le format de la source.
     #
     # -- Full (true/false) indique qu'on ne veut ni rognage ni bandes
     # noires sur les bords de l'image. En compensation, on accepte une très
     # légère déformation de l'image.
     # Par défaut, Full=false.
     #
     # -- Bords (true/false) indique si on accepte qu'il y ait des bords
     # noirs sur l'image.
     # Par défaut, Bords=true (en fonction d'autres arguments).
     #
     # -- Cadre (4/3., 16/9., 1.85, 2.35, etc.) indique un ratio Largeur/Hauteur
     # impératif pour la résolution finale.
     # Par défaut, Cadre=0 (ie. désactivé).
     #
     # -- Image (flottant) indique un ratio image reélle dans la vidéo finale.
     # Par défaut, Image=0 (ie. désactivé) (en fonction d'autres arguments).
     #
     # RQ : - si Image est spécifié alors le paramètre Format est inutile.
     #     - si Cadre est spécifié et Full activé alors les paramètres
     #      Image et Format sont inutiles.
     #
     # -- Zoom (flottant) indique un grossissement. En général, on prend
     # Zoom entre 0. et 1., mais sa valeur peut être supérieure à 1.
     # Une valeur inférieure à 0. "éloigne" l'image.
     # Par défaut, Zoom=0
     #
     # RQ : Zoom est utilisable lorsque
     #      * les valeurs Larg et Haut sont spécifiées toutes les deux;
     #      * une valeur Larg est spécifiée et HD=true;
     #      * une valeur Haut est spécifiée et HD=false;
     #      * une valeur Cadre est spécifiée.
     #
     # -- HD (true/false) indique si on accepte une résolution dont les
     # dimensions sont supérieures au standard DVD Pal  :
     # 720 pour la largeur et 576 pour la hauteur.
     # Par défaut, HD=false (en fonction d'autres arguments).
     #
     # RQ : HD est inutilisé si les valeurs Larg et Haut sont toutes les
     # deux spécifiées.
     #
     # -- Pixels ("pc" ou "tv") indique un encodage pixels carrés (pour PC)
     # ou rectangulaires (pour TV).
     # Par défaut, Pixels="pc".
     #
     # -- Verbose (true/false) permet de connaître les valeurs de quelques
     # variables du script.
     # Par défaut, Verbose=false
     #
     # -- View (true/false) permet de voir les informations d'AutoCrop.
     #
     # -- leftCut, rightCut, topCut, bottomCut permettent d'ajuster l'AutoCrop
     # en indiquant les nombres de colonnes (à gauche ou à droite) et les
     # nombre de lignes (en haut ou en bas) qu'il faut absolument rogner.
     # Par défaut, ces quatre constantes valent 0.
     #


Le script en question CropResizeBorder-3.8.zip ici http://leon1789.perso.sfr.fr/avisynth/


Je donnerai des exemples d'ici peu. :)
Dernière édition par leon1789 le Dim 28 Oct, 2012 23:27, édité 26 fois.
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar leon1789 » Mer 31 Oct, 2007 12:04

L'expérience la plus simple :
(m4ng est configuré en pixel PC et resize bilinear/bicubic, ce qui correspond à ce que je fais dans CropResizeBorder)

m4ng : format 16/9, snap 16x16 activé, autocrop :
Source.CropResizeBorder(Format=16/9.0, Bloc=16, Bords=false) :
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar leon1789 » Mer 31 Oct, 2007 12:15

Une autre expérience :

m4ng : format 16/9, snap 16x16 décoché, autocrop :
Source.CropResizeBorder(Format=16/9.0, Bloc=4, Bords=false) :
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar leon1789 » Mer 31 Oct, 2007 12:22

Une autre expérience :

m4ng : format 16/9, snap 16x16 décoché, plein écran forcé :
Source.CropResizeBorder(Format=16/9.0, Bloc=4, Haut=428, Bords=false) :
Dernière édition par leon1789 le Mer 31 Oct, 2007 12:37, édité 2 fois.
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar leon1789 » Mer 31 Oct, 2007 12:28

Une autre expérience :

m4ng : format 16/9, snap 16x16 activé, plein écran forcé :
Source.CropResizeBorder(Format=16/9.0, Bloc=16, Haut=416, Bords=false) :
Dernière édition par leon1789 le Mer 31 Oct, 2007 12:40, édité 1 fois.
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar leon1789 » Mer 31 Oct, 2007 12:39

Une autre expérience :

m4ng : format 16/9, snap 16x16 activé, plein écran compensé 4/3 :
Source.CropResizeBorder(Format=16/9.0, Bloc=16, Haut=540, Bords=true) :
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar pepsilite » Mer 31 Oct, 2007 15:01

Hébé, on ne l'arrête plus le Leon ... pour l'instant, je suis sur autre chose, je n'ai pas trop le temps de regarder tout ça ...
05/07/15 m4ng v5 est disponible au téléchargement en version finale : m4ng v5
Avatar de l’utilisateur
pepsilite
The Grinch
The Grinch
 
Messages: 22820
Inscription: 03 Fév 2007
Localisation: Chez moi le plus possible ...

Messagepar leon1789 » Mer 31 Oct, 2007 15:07

pepsilite a écrit:Hébé, on ne l'arrête plus le Leon ... pour l'instant, je suis sur autre chose, je n'ai pas trop le temps de regarder tout ça ...

Ben en fait, je suis en vacances, alors j'en profite un peu. :) Mine de rien, il m'a fallu trois jours (je m'y prenais comme un manche) pour arriver à ça : j'ai cru que je n'arriverai pas à résoudre ce problème (faire un avs simulant certaines fonctions vidéos de m4ng)
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar leon1789 » Sam 03 Nov, 2007 18:24

J'ai ajouté un petit "gadjet" (qui peut être utile des fois) : un paramètre Zoom (entier compris entre 0 et 255), optionnel bien sûr.
Dernière édition par leon1789 le Lun 31 Mar, 2008 8:26, édité 1 fois.
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar lauden » Dim 04 Nov, 2007 1:48

Sympa ça Leon :yeap:
lauden
Administrateur
Administrateur
 
Messages: 6893
Inscription: 12 Nov 2006

Messagepar Underground78 » Lun 05 Nov, 2007 8:13

Joli boulot ! :)
Avatar de l’utilisateur
Underground78
Administrateur
Administrateur
 
Messages: 11267
Inscription: 06 Fév 2007
Localisation: France

Messagepar leon1789 » Lun 05 Nov, 2007 9:29

Merci :)
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar leon1789 » Jeu 08 Nov, 2007 19:23

Bon voilà, j'ai modifié le script (version 2.2 maintenant) :

J'y ai placé une fonction heuristique qui essaie de déterminer le format de la source, mais ceci est sans aucune garantie ! ...à tester...

De plus, j'ai modifié la fonction de zoom : en supposant qu'on accepte des bandes noires (c'est le cas par défaut dans le script),
zoom = 0 fait voir toute l'image, avec des grandes bandes noires si besoin.
zoom = 0.50 zoome juste ce qu'il faut pour réduire de 50 % les bandes noires (et rogne un peu de l'image),
zoom = 0.75 zoome juste ce qu'il faut pour réduire de 75 % les bandes noires (et rogne un peu de l'image),
etc.
Exemple
Source.CropResizeBorder(Haut=544, Zoom=0) :

Source.CropResizeBorder(Haut=544, Zoom=0.50) :
on a bien supprimé 50 % des bandes noires.
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar Underground78 » Ven 09 Nov, 2007 8:04

Hum, pour la partie heuristique, ça marche comment par curiosité ?
Avatar de l’utilisateur
Underground78
Administrateur
Administrateur
 
Messages: 11267
Inscription: 06 Fév 2007
Localisation: France

Messagepar leon1789 » Ven 09 Nov, 2007 9:20

Underground78 a écrit:Hum, pour la partie heuristique, ça marche comment par curiosité ?


* Le but :
Je pars du principe qu'il n'y a que trois type de format source : 16/9 (la plupart des DVD, et certaines caméras persos) , 4/3 (certains DVD, et les caméras persos), ou Largeur/Hauteur pour des vidéos déjà encodées. Il s'agit donc de deviner (sans aucune garantie...) le format source : 16/9 ou 4/3 ou Largeur/Hauteur.

** Les moyens :
Les seules données utilisables sont les dimensions de l'image source (Source.Width et Source.Height) et celles de l'image après un simple autocrop (Source.AutoCrop.Width et Source.AutoCrop.Height) .

*** Ce que j'ai mis dans le script :
A partir de là, toutes les petites astuces sont bonnes à prendre : j'ai retenu celles-ci (mais si vous avez des idées, faut pas vous retenir ! :) ), c'est assez basique en fait et cela ne demande qu'à être améliorer...

Je regarde la source avant autocrop :
- si largeur > 1.3 x hauteur alors je me doute que c'est une image "pixels carrés" (déjà encodée) : la fonction renvoie le format largeur/hauteur.

- si largeur < 1.3 x hauteur alors :
-- on regarde s'il y a des bandes noires en haut et/ou en bas de l'image (à l'aide de l'autocrop) : s'il n'y a pas la moindre bande noire, alors je crois que c'est le format 4/3 (caméra perso), sinon le format 16/9 (DVD).

Bon, c'est vrai que c'est grossier :) mais je n'ai pas voulu faire compliqué pour un premier jet...
Le reste du script est totalement "mathématique", aucune devinette après. Et évidemment, si le format deviné n'est pas le bon, on peut le préciser au script par l'argument Format=....
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar Underground78 » Ven 09 Nov, 2007 17:04

Oki ...
Avatar de l’utilisateur
Underground78
Administrateur
Administrateur
 
Messages: 11267
Inscription: 06 Fév 2007
Localisation: France

Messagepar leon1789 » Lun 12 Nov, 2007 14:24

Underground78 a écrit:Hum, pour la partie heuristique, ça marche comment par curiosité ?

Underground78 a écrit:Oki ...

tu aurais d'autre(s) idée(s) ?
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar Underground78 » Lun 12 Nov, 2007 18:49

Euh, non, pas réellement, c'était juste de la curiosité ... ;)
Avatar de l’utilisateur
Underground78
Administrateur
Administrateur
 
Messages: 11267
Inscription: 06 Fév 2007
Localisation: France

Messagepar Dirk-Pitt » Lun 12 Nov, 2007 18:51

... et c'est un v ... :mdr
Dell OptiPlex 755, 8 Go ram, 1.5 To disk, dual screen 2 x Dell 2007FP ( 3200x1200 ). Linux openSUSE 11.0
Avatar de l’utilisateur
Dirk-Pitt
Membre Fondateur
Membre Fondateur
 
Messages: 10541
Inscription: 03 Fév 2007
Localisation: 01's Land

Messagepar leon1789 » Ven 04 Jan, 2008 13:43

Mise à jour 2.5 avec deux nouvelles options :

-- "Full = true/false" pour ceux qui ne veulent pas rogner (un peu) l'image, ni avoir des petites bandes noires, mais qui préfèrent avoir 100% de l'image quitte à subir une très légère déformation.

-- "Verbose =true/false" pour voir les constantes du script. C'est parfois bien utile...
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar leon1789 » Ven 04 Jan, 2008 15:41

Des petits exemples avc l'option Verbose activée pour "mieux" voir :mrgreen:

-0- Voici l'image source :
Source.BilinearResize(720,406) :


-1- On veut conserver l'intégralité de l'image, sans déformation, en gardant des bandes noires les plus petites possibles :
Source.CropResizeBorder() :

-2- On ne veut plus de bandes noires, mais on désire quand même garder le ratio initial de la source, quitte à rogner un peu l'image :
Source.CropResizeBorder(Bords=false) :

-3- On veut garder l'intégralité de l'image, mais sans bandes noires, avec une déformation minimale :
Source.CropResizeBorder(Full=true) :
Dernière édition par leon1789 le Ven 28 Mar, 2008 0:18, édité 1 fois.
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar Underground78 » Sam 05 Jan, 2008 12:34

Bien ça ! :)
Avatar de l’utilisateur
Underground78
Administrateur
Administrateur
 
Messages: 11267
Inscription: 06 Fév 2007
Localisation: France

Messagepar leon1789 » Dim 24 Fév, 2008 19:18

mise à jour 2.9 (le temps passe...) après petite discussion sur unité-vidéo : voir
http://www.unite-video.com/phpbb/viewtopic.php?t=8535
http://www.unite-video.com/phpbb/viewto ... 6392#86392
http://www.unite-video.com/phpbb/viewtopic.php?t=8534 (où on parle de m4ng)
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar leon1789 » Jeu 28 Fév, 2008 21:38

Underground78 a écrit:Hum, pour la partie heuristique, ça marche comment par curiosité ?

Je viens justement de la changer (version 3.1). C'est un peu plus subtile qu'avant, même si ça reste assez bourrin :
-- pour le format vidéo source, le script passe en revue les formats : pixels carrés, 16/9, 160/117, 4/3, 11/9
-- pour le ratio d'image, il passe en revue les ratios : 2.39, 2.35, 2.25, 2, 1.85, 16/9, 5/3, 4/3
Ensuite, il décide quel couple << format & ratio >> est le plus réaliste, i.e. celui qui donne une erreur minimale par rapport aux dimensions d'images avant et après autocrop.

Voilà, c'est un peu mieux qu'avant :) mais faut pas rêver, ça ne fonctionne pas à tous les coups...
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar M. W. I. Prod. » Ven 29 Fév, 2008 5:00

Bon j'ai laissé le soin à Léon de poster puisque c'est de son bébé qu'il est question.
Pour mon article (à compléter) il montre que m4ng déforme les sources TV.

Je sais que y'a d'autres choses sur le feu mais c'est vrai qu'intégrer la fonction à m4ng serait plus qu'intéressant. Elle pourrait être choisie par le bouton redimensionnement.

Maintenant le must serait que la sélection de la fonction :
1. ne fige pas le script
2. désactive le bouton Autocrop
3. affiche une case à cocher pour (dés)activer l'option bavardage
4. le meilleur pour la fin, le bouton crop pourrait changer les valeurs de leftCut, bottomCut, ...
5. fasse le café
6. pas d'addition puisque m4ng est gratuit. :hop:
Avatar de l’utilisateur
M. W. I. Prod.
 
Messages: 45
Inscription: 12 Fév 2007

Suivante

Retourner vers Scripts Avisynth

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités