HybridFuPP version 0.92b



INTRODUCTION 

Ce script Avisynth permet de re-dimensionner l’image (en utilisant l’algorithme de son choix) et d’appliquer différents filtrages aux multiples zones qui la composent (contours, zones statiques, zones en mouvement, zones sombres ou claires) : HybridFuPP permet donc d'opérer un filtrage «adaptif» et d'obtenir par ce biais une image plus propre et davantage compressible.

L’idée maîtresse est en fait de filtrer au maximum les éléments pas ou peu visibles, et à l’inverse de filtrer le moins possible les zones les plus visibles. Pour cela, HybridFuPP a le plus souvent recours à des masques correspondant aux différentes zones à traiter.

Les traitements proposés en standard sont : le redimensionnement (5 possibilités) le débruitage des zones statiques, le débruitage des zones en mouvement, le débuitage des zones très sombres ou très claires, le débruitage des canaux chromatiques (U et V), l'accentuation ou la désaccentuation des contours (influences horizontale et verticale distinctes), la modification de la luminosité des contours, le deringing (suppression des artefacts autour des contours) et le deblocking (suppression des effets de blocs générés par la compression mpeg).

Bien qu'HybridFuPP soit au départ destiné à des sources relativement «propres», le filtrage spatio-temporel utilisé est suffisamment souple et puissant pour en permettre l’utilisation avec des sources présentant certaines formes de bruit, pour peu que l’on augmente les réglages associés.

HybridFuPP est fourni avec un certain nombre de présélections (presets) permettant aux débutants de l'utiliser facilement, et aux utilisateurs plus avertis de s'en servir comme bases pour leurs explorations. HybridFuPP permet par ailleurs, comme on le verra plus loin, de définir ses propres chaînes de traitement, ce qui en fait un outil puissant, flexible et modulaire.



PRE-REQUIS

HybridFuPP a été développé en utilisant avisynth 2.55 ; il est donc conseillé d’utiliser cette version au minimum, et de préférence la dernière version connue 2.56 beta 1 du 06/01/05.

Copiez HybridFuPP.avsi et les .dll (filtres) dans votre répertoire plug-in d’avisynth (par défaut, C:\Program Files\AviSynth 2.5\plugins).

NB : Vous devez préalablement extraire les dll de leurs packages respectifs.

Assurez-vous d’avoir chargé les filtres UnFilter.dll (v1.5), msharpen.dll (v1.10b2), Deen.dll (v1.0 beta 1), MVTools.dll (0.9.9.1) et Masktools.dll (v1.5.6) dans votre script principal.



SYNTAXE

HybridFuPP( clip, int width, int height, bool Fast, bool Dering, bool Deblock, int MP_Mode, int EM_Mode, int DB_Q, int DB_Off_a, int DB_Off_b, int M_Thr, int M_SCD, int  E_Thr, int D_Thr, int B_Thr, int Resizer , int S_Str, int T_Str, int S_Radius, int S_Dist, int C_Str, int M_Str, int E_Str_X, int E_Str_Y, int E_Str_B, int LP_Str, int DR_Str, int DR_Radius, string show, int N1, int N2, int M, int E1, int E2, int LP, int DR, string Preset )



PARAMETRES DISPONIBLES (tous les paramètres sont optionnels)

Paramètres généraux :

Paramètres

Valeurs possibles

Commentaires

Resizer

0..5

Type de re-dimensionnement

0 : bilinéaire ( netteté - - - / compressibilité + + + )

1 : bicubique ( netteté - - / compressibilité + + )

2 : bicubique ( netteté - / compressibilité + )

3 : bicubique ( netteté +, compressibilité - )

4 : bicubique ( netteté + +, compressibilité - - )

5 : lanczos ( netteté + + +, compressibilité - - - )


Width


Largeur après re-dimensionnement. Les dimensions doivent être au minimum des multiples de 4 ( 8 si vous voulez utiliser le filtrage du mouvement ). Il est cependant conseillé d'utiliser des dimensions finale divisibles par 16 pour des raisons de rapidité.

Height


Hauteur après re-dimensionnement. Les dimensions doivent être au minimum des multiples de 4 ( 8 si vous voulez utiliser le filtrage du mouvement ). Il est cependant conseillé d'utiliser des dimensions finale divisibles par 16 pour des raisons de rapidité.

Fast

True / false

Si True, le calcul des masques des zones sombres, des zones claires et des zones en mouvement (avec MP_Mode = 2 uniquement) se fait à partir d'une image dont les zones statiques ont déjà été débruitées (cela permet à HybridFuPP d'économiser en temps de traitement). Avec la valeur False, ces masques sont calculés à partir de l'image d'origine simplement re-dimensionnée

Preset

Very low

Low

Medium

High

Very High

Anime1

Anime2

Les presets ne sont que des pré-réglages. Il permettent d'utiliser HybridFuPP facilement, tout en autorisant leur modification partielle ou totale par l'utilisateur.

Les notions de «Very Low» et «Very High» (et leurs valeurs intermédiaires) se rapportent à la qualité du rendu final. Very low délivrera une qualité relativement faible, Very High une excellente qualité. Bien entendu, lorsque la qualité finale est faible, cela signifie que davantage de bruit a été éliminé (et l'image dans son ensemble davantage lissée) ; la video devient donc plus compressible.

Les presets Anime1 et Anime2 sont dédiés aux films d'animation. Anime 2 est très efficace sur les sources très «bruitées», mais peut avoir parfois tendance à éliminer certains détails de l'image.

Show

E, M, D, B, R, P

Permet l'affichage des masques et/ou des valeurs utilisées afin de faciliter le réglage des seuils si nécessaire (nb : l’image affichée est celle après filtrage)

E : masque des contours (Edges)

M : masque des zones en mouvement (Motion)

D : masque des zones sombres (Dark areas)

B : masque des zones claires (Bright areas)

R : Affiche le masque pour le deringing

P : Affiche les valeurs des différents paramètres. La mention « mod » apparaît derrière le nom du preset lorsque certaines valeurs ont été forcées.

Ex : HybridFuPP(448, 320, Show="MDL") affiche les masques des zones en mouvement, des zones sombres et des zones claires.




Débruitage des zones statiques

S_Str

0..100

Intensité du filtrage spatial

S_Radius

0..3

Rayon utilisé pour le filtrage spatial

S_Dist

0.0 .. 1.0

Distance influant sur le seuil du filtrage spatial. Plus cette valeur est faible, plus le filtrage spatial respecte les contours

T_Str

0..100

Intensité du filtrage temporel

C_Str

0..100

Intensité du filtrage des canaux chromatiques (UV)



Débruitage des zones en mouvement

MP_Mode

0..2

Traitement des zones en mouvement.

0 : permet de désactiver le filtrage des zones en mouvement

1 : correspond à un traitement par compensation de mouvement

2 : correspond à un flou appliqué à ces zones ; c'est la valeur par défaut.


M_Thr
0..255
Seuil de détection du mouvement

M_SCD

0..999

Seuil de détection de changement de scène (utilisé pour la détection de mouvement)

M_Str

0..300

Intensité du filtrage spatial du mouvement (uniquement avec MP_Mode = 2)



Traitement des contours (accentuation et deringing)

EM_Mode

1..2

Type de masque pour la détection des contours. Deux types de masques sont disponibles : 1 est plutôt adapté aux films, 2 plutôt aux animes

E_Thr

0..255

Seuil de détection des contours

E_Str_X

-50..50

Intensité de l’accentuation horizontale des contours

E_Str_Y

-50..50

Intensité de l’accentuation verticale des contours

E_Str_B

-200..200

Réglage de la luminosité des contours

Dering

True / false

Permet de filtrer la source lorsque les contours présentent des artefacts. Ce réglage est par défaut désactivé dans l'ensemble des presets. Il est à noter qu'il ralentit de manière notable le fonctionnement d'HybridFuPP

DR_Radius

0..10

Rayon d'action du traitement de deringing

DR_Str

0..100

Intensité du traitement de deringing



Traitement des zones sombres et des zones claires

D_Thr

0..255

Seuil de détection des zones sombres

B_Thr

0..255

Seuil de détection des zones claires. Attention, dans tous les presets, cette valeur est à 0. Pour utiliser le traitement des zones claires ou afficher le masque correspondant, il faut préciser la valeur de ce paramètre. Une valeur entre 160 et 180 est généralement pertinente

LP_Str

0..30

Intensité du filtrage des zones sombres et des zones claires



Deblocking

Deblock

True / false

Activation du deblocking : attention, si vous devez faire un crop sur votre source, celui-ci doit utiliser des valeurs divibles par 4

DB_Q

0..51

Intensité du déblocking (quant)

DB_Off_a

0..51

Sensibilité aux contours

DB_Off_b

0..51

Affecte à la fois la détection et le traitement des blocs


NB : les paramètres N1, N2, E1, E2, M, LP et DR sont définis dans la section ‘PARAMETRES AVANCES’.



PRESELECTIONS (attention, les paramètres associés à chaque preset sont susceptibles d’être modifiés, le script étant encore en version beta)

Les noms des presets sont associés à la qualité du rendu final

ex : HybridFuPP(preset = "very high", E_Thr = 12, dering = true)

presets

parameters

Very Low

Low

Medium

High (défaut)

Very High

HybridQ

Anime1

Anime2

Resizer

0

2

3

4

5

0

1

1

Fast

True

True

True

True

True

True

True

True

S_Str

12

12

10

5

7

5

20

20

S_Radius

1

1

1

1

1

1

1

2

S_Dist

0.1

0.1

0.1

0.1

0.1

0.1

0.1

0.1

T_Str

5

5

3

3

2

3

15

15

C_Str

20

20

20

20

20

20

20

20

MP_Mode

2

2

2

2

2

2

0

0

M_Thr

10

10

10

10

10

10

10

10

M_SCD

260

260

260

260

260

260

260

260

M_Str

120

120

120

120

80

120

0

0

EM_Mode

1

1

1

1

1

1

2

2

E_thr

14

14

14

12

12

10

7

7

E_Str_X

0

0

0

0

0

36

30

40

E_Str_Y

0

0

0

0

0

36

30

40

E_Str_B

0

0

0

0

0

0

-3

-3

dering

False

False

False

False

False

False

False

False

DR_Radius

2

2

2

2

2

2

4

4

DR_Str

30

30

30

30

30

30

30

30

D_Thr

39

37

35

32

31

32

30

30

B_Thr

0

0

0

0

0

0

0

0

LP_Str

30

30

30

30

30

30

40

40

Deblock

false

False

False

False

False

False

False

False

DB_Q

25

25

25

25

25

25

25

25

DB_Off_a

0

0

0

0

0

0

0

0

DB_Off_b

0

0

0

0

0

0

0

0



PARAMETRES AVANCES

HybridFuPP permet de définir ses propres chaînes de filtrage.

Pour le traitement des parties en mouvement, des zones claires ou sombres et pour le deringing, seule la chaîne de filtrage après re-dimensionnement peut être définie.

Pour les zones neutres et les contours, il est possible de définir le filtrage avant ou après le re-dimensionnement.

Le re-dimensionnement reste quant à lui géré à part entière par le script (mais l’algorithme utilisé peut être défini par le paramètre Resizer).

N1

chaîne de filtrage des zones neutres, avant re-dimensionnement

N2

chaîne de filtrage des zones neutres, après re-dimensionnement

E1

chaîne de filtrage des contours, avant re-dimensionnement

E2

chaîne de filtrage des contours, après re-dimensionnement

M

chaîne de filtrage des zones en mouvement, après re-dimensionnement

LP

chaîne de filtrage des zones sombres ou lumineuses, après re-dimensionnement

DR

chaîne de filtrage pour le deringing, après re-dimensionnement



NB : les chaînes de filtrage doivent être définies entre quotes

Ex : HybridFuPP(640, 480, preset = "medium", N2 = "deen()"

Si la chaîne contient elle même des quotes, il faut alors l’encadrer par des triples-quotes

ex : DR = """BlindPP(quant= 2, cpu2 = "xxxxxx", moderate_h = 40, moderate_v = 80)"""

Lorsque l’un ou plusieurs des paramètres avancés sont omis, ils sont alors remplacés par les valeurs par défaut (voir ci-dessous).

Il est donc possible de définir partiellement les chaînes de filtrages (ex : ne définir que N1, N2 et LP ; les autres paramètres M, E1, E2 et DR utiliseront les chaînes par défaut d’HybridFuPP).

Pour annuler une chaîne de filtrage native d’HybridFuPP, sans pour autant en définir une autre, indiquer XX = "", où XX est le nom du paramètre (ex : E2 = "" ).

NB : On ne peut pas ajouter un filtre à une chaîne par défaut d’HybridFuPP, il faut la redéfinir intégralement.



Chaînes de traitement par défaut de HybridFuPP :

N1

""

N2

"""Deen("a3d", S_Radius, S_Str, 3*C_Str, T_Str, C_Str, S_Dist, 9)"""

E1

"UnFilter(E_Str_X, E_Str_Y)"

E2

ColorYUV(off_Y = E_Str_L)”

M

"""Deen("a2d", 1, M_Str, 0, 0, 0, 0, 0)"""

LP

"""Deen("a2d", 2, LP_Str, 0, 0, 0, 0, 0)"""

DR

"""Deen("a2d", 2, DR_Str, 0, 0, 0, 0, 0)"""



NB : la chaîne M n'est utilisée que si le paramètre MP_Mode est égal à 2



EXEMPLES

HybridFuPP( 448, 320 )


Re-dimensionne à 448x320, utilise les valeurs par défaut. Equivaut donc à HybridFuPP(448, 320, preset = "high")

HybridFuPP( 448, 320, preset="low" )

Re-dimensionne à 448x320, utilise la pré-selection “low”

HybridFuPP( 448, 320, preset="medium", E_Str_X= 40, E_Str_Y = 10 )


Re-dimensionne à 448x320, preset medium, Les contours sont accentués, avec une valeur plus forte sur l’axe horizontal que sur l’axe vertical (meilleur aspect pour les SVCDs)

HybridFuPP(preset = "very high", S_Str = 8, T_Str = 5, C_Str = 0, D_Str = 0 )


Pas de re-dimensionnement, preset "very high", sauf pour S_Str (filtrage spatial) et T_Str (filtrage temporel) qui prennent respectivement les valeurs 8 et 5. Les canaux chromatiques et les zones sombres ne seront pas traités

HybridFuPP( 448, 320, M_Str = 160, dering = true )


Re-dimensionne à 448x320, utilise les valeurs par défaut (voir preset "high"), à l’exception des paramètres M_Str (intensité du filtrage du mouvement) et du deringing ici activé.

HybridFuPP( 448, 320, M_Str = 160, dering = true, show = "M" )


Identique à l’exemple précédent, mais affiche le masque de détection du mouvement

HybridFuPP( 448, 320, preset = "very high", LP = "" )


Re-dimensionne à 448x320, utilise la préselection “very high”. Le traitement des zones sombres et lumineuses est cependant désactivé.

HybridFuPP( 448, 320, show = "MDL", B_Thr = 165 )


Re-dimensionne à 448x320 et affiche les masques de détection de mouvement (M), le masque des zones sombres (D) et le masque des zones claires (L), en utilisant les valeurs par défaut, à l'exception du seuil pour les zones lumineuses,la valeur par défaut (0) ne permettant pas d'afficher le masque

HybridFuPP( 448, 320, N2 = "temporalsoften(2,3,3,6,2)", deblock = true)

Re-dimensionne à 448x320. La chaîne de traitement N2 (débruitage des zones statiques) d'HybridFuPP est remplacée au profit d'un traitement par le filtre TemporalSoften. Le deblocking est par ailleurs activé





Exemples de scripts :

script classique :

Mpeg2Source("c:\test\test.d2v", idct = 6)

Crop(24, 80, 672, 416, align = true)

HybridFuPP(448, 320, preset = "very high")

AddBorders(16,128,16,128)



Pour ceux qui utiliseraient GripFit(), vous pouvez utiliser les variables publiques GripFit_resize_width and GripFit_resize_height variables pour définir la taille finale de l’image. Ces variables sont initialisées par GripCrop() :

Mpeg2Source("c:\test\test.d2v",idct=6)

GripCrop(480, 576, overscan = 2, source_anamorphic=true, dest_anamorphic=true)

HybridFuPP(preset = "very high", width = GripFit_resize_width, height = GripFit_resize_height)

GripBorders()



REMERCIEMENTS

Manao (beaucoup)

Neuron2, MarcFD and trbarry (pour leurs filtres)

Beiji, CAS, ThomN2H, Cyberyeye, Didée, Bond, Jorel, Audioslave and Scharfis_brain (pour leurs astuces, tests, idées et remontées d’informations)

A tous ceux qui ont essayé ou utilisent HybridFuPP...



- FuPP -



HISTORIQUE

0.92b

Introduction de deux modes pour la gestion des mouvements : traitement par débruitage temporel après compensation de mouvement, ou bien par application d'un filtrage spatial sur les zones en mouvement. Le second (mode par défaut) est plus rapide, mais délivre une qualité moindre


suppression du paramètre MM_Type (choix du type de masque de mouvement)


Deux types de masques pour les contours sont dorénavant disponibles (sélection avec le paramètre EM_Mode) : 1 est plutôt adapté aux films, 2 plutôt aux animes)


Nouveau deringing entièrement contrôlable, sans aucune limitation par rapport à la taille de l'image


Implémentation du déblocking issu des MVTools (nouveaux paramètres Deblock, DB_Q, DB_Off_a et DB_Off_b)


Gestion des zones sombres revue (moins agressive)


Désactivation par défaut de la gestion des zones claires dans les presets


Les paramètres S_Str et T_Str gèrent dorénavant distinctement et respectivement l'intensité du filtrages spatial et celle du filtrage temporel (remplacent le paramètre ST_Str)


Afin d'améliorer la précision et l'efficacité du débruitage des zones statiques, deux nouveaux paramètres sont introduits : S_Radius et S_Dist. Le premier influe sur le rayon du filtrage, le second influe sur le seuil du filtrage spatial (plus cette valeur est faible, plus le filtrage spatial respecte les contours environnants)


Nouveau paramètre E_Str_B : correction de la luminosité sur les contours


Introduction de la commande Fast (true / false). Si True, le calcul des masques des zones sombres, des zones claires et des zones en mouvement (avec MP_Mode = 2 uniquement) se fait à partir d'une image déjà débruitée (cela permet à HybridFuPP d'économiser en temps de traitement). Avec la valeur False, ces masques sont calculés à partir de l'image d'origine simplement re-dimensionnée


Introduction de deux presets anime1 et anime2


Introduction d'un preset HybridQ qui permet d'obtenir des contours nets tout en maintenant un bon taux de compressibilité


Le paramètre L_Thr a été renommé en B_Thr


Nouvelles possibilités d'affichage avec 'Show' : “R” qui affiche les zones qui vont faire l'objet d'un éventuel traitement de deringing, et “P” qui affiche les valeurs de l'ensemble des paramètres




Attention : les plages de valeurs possibles de certains paramètres ont été ré-étalonnées ; se reporter à la documentation ci-dessus.



0.9a à 0.912a

Versions alphas non officielles



0.89a à 0.897a

Versions alphas non officielles



0.882b

correction d'un bug lorsque la largeur ou la hauteur de l'image redimensionnée est inférieure à 256.



0.881b

correction d'un bug concernant le mode dering et impactant le preset 'anime'



0.88b

Abandon des re-dimensionnements multiples (il subsiste donc un seul paramètre Resizer)


Modifications des chaînes de filtrage livrées en standard


Gestion des zones claires (à l’instar de la détection et du traitement des zones sombres)


Amélioration du filtrage des couleurs


Utilisation par défaut d’un nouveau masque de détection de mouvement, beaucoup plus efficace. Il est cependant possible de sélectionner d’autres masques, légèrement plus rapides pour certains, grâce au paramètre MM_Type)


Création de nouveaux presets: «very low», «low», «medium», «high» (défaut), «very high» et «anime »


Le mode Debug s’appelle dorénavant «Show». Comme auparavant, il permet d’afficher les masques utilisés afin d‘affiner les réglages si nécessaire. Son mode de fonctionnement a également été simplifié.


Création de nouveaux paramètres (C_Str = intensité du filtrage des couleurs, L_Thr = seuil de détection des zones claires, LP_Str = intensité du filtrage des zones claires et sombres) et abandon d’autres (chroma, dark, D_Str, Eresizer, Nresizer, CH…)


Le mode dering ne renvoit dorénavant plus de message d’erreur si les dimensions cibles ne sont pas des multiples de 16. Il se désactive simplement le cas échéant.



0.85a à 0.87a

Versions alpha non officielles



0.84b

Possibilité de créer ses propres chaînes de filtrage


Mode debug amélioré (affichage en couleurs, possibilité de combiner les modes)


Ajout d’un paramètre gérant l’intensité du filtrage des zones sombres


Vitesse sensiblement améliorée


Plus de limitations concernant la taille finale (mod 16) pour les modes chroma et dark (anciennement ‘special’)


Le deringing (optionnel) n’est plus effectué avant, mais après le re-dimensionnement. La limitation à une taille dont les composantes sont divisibles par 16 ne concernent donc dorénavant que la taille finale de l’image, et non plus la source.


Attention : certains paramètres ont été renommés (ex : special devient dark)


L’ordre des paramètres a également été modifié ! Soyez donc très vigilants si vous utilisiez des paramètres non nommés avec les versions précédentes. Ex : HybridFuPP(448,320,12,7,10,30,9,32,17,1,5,true,true,true,30,0)



0.80a à 0.83a

Versions alpha non officielles



0.71b:

Ajout d’un seuil pour le mode special (càd la détection des zones sombres)



0.7b

Introduction d’un re-dimensionnement et d’un filtrage particulier pour les zones sombres de l’image (optionnel) : 12% de compressibilité en plus !


Possibilité de choisir le type de re-dimensionnement pour les contours


Réintroduction du filtrage spatial (à la demande de Beiji !)


Petite dégradation de la vitesse si l’on utilise le traitement spécial des zones sombres, un peu plus rapide qu’avant sinon.



0.6b

Possibilité de choisir le type de re-dimensionnement pour les parties de l’image qui ne sont ni des contours, ni en mouvement


Utilise dorénavant le masque de détection des contours de msharpen


Modification des valeurs par défaut


Modification des présélections


Possibilité de changer partiellement les réglages lorsque l’on utilise les présélections


Suppression du filtrage spatial pour les mouvements (gain de compressibilité quasi inexistant)


Amélioration générale de la qualité de l’image


Amélioration de la vitesse



0.5b

Ajout des pré-selections


Modification des valeurs par défaut pour une meilleure qualité de l’image


Modification de l’emplacement du filtrage spatio-temporel dans la chaîne de traitement



0.4b

Ajout des paramètres pour le filtrages spatio-temporel et pour le filtrage spatial (nb : ce dernier a été retiré à partir de la version 0.6b)


Modification de la valeur par défaut pour le seuil de détection de contours de 15 à 10


Le filtrage chromatique est dorénavant effectué après le re-dimensionnement. Le dering est lui toujours fait avant.



0.3b

Les erreurs concernant les sources dont les dimensions ne sont pas des multiples de 16 sont mieux gérées



0.2b

Première version téléchargeable