CropResizeBorder 3.8 - Script vidéo AviSynth

Modérateur : Modérateurs

Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

CropResizeBorder 3.8 - Script vidéo AviSynth

Message par leon1789 »

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. :)
Modifié en dernier par leon1789 le dim. 28 oct., 2012 23:27, modifié 26 fois.
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

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 : [lightbox]http://img267.imageshack.us/img267/4739/m4ng1kc0.th.jpg[/lightbox]
Source.CropResizeBorder(Format=16/9.0, Bloc=16, Bords=false) : [lightbox]http://img150.imageshack.us/img150/7185 ... fl9.th.jpg[/lightbox]
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

Une autre expérience :

m4ng : format 16/9, snap 16x16 décoché, autocrop : [lightbox]http://img232.imageshack.us/img232/329/m4ng2rh5.th.jpg[/lightbox]
Source.CropResizeBorder(Format=16/9.0, Bloc=4, Bords=false) : [lightbox]http://img232.imageshack.us/img232/826/ ... kj2.th.jpg[/lightbox]
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

Une autre expérience :

m4ng : format 16/9, snap 16x16 décoché, plein écran forcé : [lightbox]http://img232.imageshack.us/img232/3331/m4ng3uy2.th.jpg[/lightbox]
Source.CropResizeBorder(Format=16/9.0, Bloc=4, Haut=428, Bords=false) : [lightbox]http://img100.imageshack.us/img100/6059 ... ra8.th.jpg[/lightbox]
Modifié en dernier par leon1789 le mer. 31 oct., 2007 12:37, modifié 2 fois.
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

Une autre expérience :

m4ng : format 16/9, snap 16x16 activé, plein écran forcé : [lightbox]http://img151.imageshack.us/img151/5369/m4ng4zs3.th.jpg[/lightbox]
Source.CropResizeBorder(Format=16/9.0, Bloc=16, Haut=416, Bords=false) : [lightbox]http://img155.imageshack.us/img155/6870 ... bp8.th.jpg[/lightbox]
Modifié en dernier par leon1789 le mer. 31 oct., 2007 12:40, modifié 1 fois.
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

Une autre expérience :

m4ng : format 16/9, snap 16x16 activé, plein écran compensé 4/3 : [lightbox]http://img256.imageshack.us/img256/3348/m4ng5ve0.th.jpg[/lightbox]
Source.CropResizeBorder(Format=16/9.0, Bloc=16, Haut=540, Bords=true) : [lightbox]http://img525.imageshack.us/img525/9034 ... eh1.th.jpg[/lightbox]
Avatar du membre
pepsilite
The Grinch
The Grinch
Messages : 23287
Enregistré le : sam. 03 févr., 2007 19:13
Localisation : Chez moi le plus possible ...

Message par pepsilite »

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 ...
06/01/2020 m4ng v6 est disponible au téléchargement en version finale : m4ng v6
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

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

Message par leon1789 »

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.
Modifié en dernier par leon1789 le lun. 31 mars, 2008 9:26, modifié 1 fois.
lauden
Administrateur
Administrateur
Messages : 6893
Enregistré le : dim. 12 nov., 2006 0:12

Message par lauden »

Sympa ça Leon :yeap:
Avatar du membre
Underground78
Administrateur
Administrateur
Messages : 11272
Enregistré le : mar. 06 févr., 2007 21:54
Localisation : France
Contact :

Message par Underground78 »

Joli boulot ! :)
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

Merci :)
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

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) : [lightbox]http://img214.imageshack.us/img214/6593/zoom0nl6.th.jpg[/lightbox]

Source.CropResizeBorder(Haut=544, Zoom=0.50) : [lightbox]http://img214.imageshack.us/img214/9158 ... tk1.th.jpg[/lightbox]
on a bien supprimé 50 % des bandes noires.
Avatar du membre
Underground78
Administrateur
Administrateur
Messages : 11272
Enregistré le : mar. 06 févr., 2007 21:54
Localisation : France
Contact :

Message par Underground78 »

Hum, pour la partie heuristique, ça marche comment par curiosité ?
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

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 du membre
Underground78
Administrateur
Administrateur
Messages : 11272
Enregistré le : mar. 06 févr., 2007 21:54
Localisation : France
Contact :

Message par Underground78 »

Oki ...
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

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 du membre
Underground78
Administrateur
Administrateur
Messages : 11272
Enregistré le : mar. 06 févr., 2007 21:54
Localisation : France
Contact :

Message par Underground78 »

Euh, non, pas réellement, c'était juste de la curiosité ... ;)
Avatar du membre
Dirk-Pitt
Membre Fondateur
Membre Fondateur
Messages : 10541
Enregistré le : sam. 03 févr., 2007 19:08
Localisation : 01's Land
Contact :

Message par Dirk-Pitt »

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

Message par leon1789 »

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

Message par leon1789 »

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

-0- Voici l'image source :
Source.BilinearResize(720,406) : [lightbox]http://img91.imageshack.us/img91/3131/o ... nm4.th.jpg[/lightbox]


-1- On veut conserver l'intégralité de l'image, sans déformation, en gardant des bandes noires les plus petites possibles :
Source.CropResizeBorder() : [lightbox]http://img88.imageshack.us/img88/7118/b ... ah4.th.jpg[/lightbox]

-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) : [lightbox]http://img91.imageshack.us/img91/3228/b ... zh8.th.jpg[/lightbox]

-3- On veut garder l'intégralité de l'image, mais sans bandes noires, avec une déformation minimale :
Source.CropResizeBorder(Full=true) : [lightbox]http://img91.imageshack.us/img91/8755/b ... ak5.th.jpg[/lightbox]
Modifié en dernier par leon1789 le ven. 28 mars, 2008 0:18, modifié 1 fois.
Avatar du membre
Underground78
Administrateur
Administrateur
Messages : 11272
Enregistré le : mar. 06 févr., 2007 21:54
Localisation : France
Contact :

Message par Underground78 »

Bien ça ! :)
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

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

Message par leon1789 »

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 du membre
M. W. I. Prod.
Messages : 45
Enregistré le : lun. 12 févr., 2007 14:10
Contact :

Message par M. W. I. Prod. »

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:
Répondre