Convolution 3D (Beta4)

 

Ce filtre applique une convolution3D à tous les pixels de l'image.

Les 3D correspondent aux 2D spatiales (hauteur*largeur) et à la dimension frequentielle (= temporelle).

 

Pour determiner la valeur d'un pixel, le filtre prend en compte la valeur originale du pixel, mais aussi celle des pixels voisins.

Différentes matrices de calcul sont proposées. (cf explications du bas de la page)

 

      Convolution3d(matrix=0 , ythresh=3 , cthresh=4 , t_ythresh=3 , t_cthresh=4 , influence=3 , debug=0)

 Valeurs possibles

Valeurs raisonées

matrix

0 = matrice d'origine

1 = matrice alternative

2 = matrice d'origine, plus rapide

3 = matrice alternative, plus rapide

 

° La matrice 0 préserve plus les détails. Elle est recommandée pour des films.

° La matrice 1 donne un résultat plus flou. A utiliser pour des animes ou sur une source vraiment mauvaise.

° La matrice 2 correspond à la matrice 0, mais évite certains calculs (moins précis, mais plus rapide)

° La matrice 3 correspond à la matrice 1, mais évite certains calculs (moins précis, mais plus rapide)

0/1/2/3

défaut = 0

0

ythresh

Seuil de la filtration spaciale de la luminance.

de 0 à ∞

défaut = 3

2 à 12 (ou +)

cthresh

Seuil de la filtration spaciale de la chrominance.

de 0 à

défaut = 4

2 à 12 (ou +)

t_ythresh

Seuil de la filtration temporelle de la luminance.

de 0 à

défaut = 3

2 à 12 (ou +)

t_cthresh

Seuil de la filtration temporelle de la chrominance.

de 0 à

défaut = 4

2 à 12 (ou +)

influence

Influence temporelle

 

Cet argument permet, pour accélerer la filtration, d'eviter de tenir compte de certaines informations temporelles.

Plus on augmente ce facteur, plus le traitement est long, mais plus la compressibilité est élevée.

-1  ---> desactivation complète du traitement temporel (ne reste donc que le spatial)

3 ---> valeur "référence"

 

Pour des films, le bon choix (vitesse/efficacité) se situe entre 2.5 et 3 ---> à vous de tester.

de 0 à

défaut = 3

-1

2.5 ou 3

 10

debug

0 --> Désactivé

1 --> Mode Debug

-1 --> SMP Désactivé

-2 --> SMP Forcé

0/1/-1/-2

défaut = 0

 0

      Convolution3d(preset=" ... ")

Utilisation

preset="movieHQ"

Convolution3D(0,3,4,3,4,2.8,0)

Film de qualité correcte

preset="movieLQ"

Convolution3D(0,6,10,6,8,2.8,0)

Film de qualité passable

preset="animeHQ"

Convolution3D(0,6,12,6,8,2.8,0)

Anime de qualité correcte

preset="animeLQ"

Convolution3D(1,8,16,8,8,2.8,0)

Anime de qualité passable

preset="animeBQ"

Convolution3D(1,12,22,8,8,2.8,0)

Anime 'tout pourri'

preset="vhsBQ"

Convolution3D(0,32,128,16,64,10,0)

Acquisition, vhs, ...

Filtrage 'passe partout' pour un film

Convolution3D(0,3,4,3,4,3,0)

 

Filtrage rapide pour un anime

Convolution3D(3,8,12,8,12,2.5,0)

 

 

 

Fonctionnement de Convolution3D :

 

Explications de base, en 2D.

 

Par souci de simplification, je vais parler de 'pixel'.

Mais en fait, un pixel correspond à 3 valeurs et Convolution3D effectue un traitement pour chacune des composantes (Y, U et V).

 

Le principe est de faire une moyenne pondérée : à chaque pixel est associé un poids particulier.

 

Matrice - Pixels

A B C

D E F

G H I

 

Matrice - Poids  Valeurs servant d'exemple, ne correspondant pas aux valeurs utilisées par le plugin Convolution3D.dll

1 2 1

2 4 2

1 2 1

 

La valeur du pixel E est donc calculée à partir des valeurs de ses pixels voisins ( A B C - D F - G H I )

 

La somme de tout les coef de cettre matrice est 16, donc le calcul est fait comme suit :
Valeur = (A * 1 + B * 2 + C * 1 + D * 2 + E * 4 + F * 2 + G * 1 + H * 2 + I * 1) / PoidsTotal (16)


 

Utilisation des seuils.

 

Maintenant, voyons à quoi correspond l'utilisation des seuils.

 

Matrice - Pixels

A B C

D E F
G H I

12 46 51

45 50 70

52 53 59


Avec un seuil maximum de 10, tous les pixels s'écartant de plus de 10 de la valeur centrale vont être remplacés par la valeur centrale.
 

Matrice - Pixels

A B C

D E F
G H I

50 46 51

45 50 50

52 53 59

 

Le calcul de convolution (~ moyenne pondérée) est effecté à partir de ces dernières valeurs.
Ceci permet d'éviter des effets de ghosting ou un flou trop important.

 

La même chose sur 3D.

 

En plus de se référer aux valeurs de l'image, le calcul tient compte des valeurs des pixels des images suivante/précédente.

On a donc un dimension temporelle qui vient s'ajouter. Convolution3D est un filtre spatio-temporel.

 

Les nouvelles matrices ne tiennent compte sur les images précédente/suivante que de la valeur du pixel central.

Ceci afin de gagner en temps d'encodage (au détriment de la précision).

 

Récapitulatif des Matrices.

 

Matrice 0  ▬► analyse 27 pixels

 

Matrice 1  ▬► analyse 27 pixels

A B C

D E F
G H I

A B C

D E F
G H I

A B C

D E F
G H I

A B C

D E F
G H I

A B C

D E F
G H I

A B C

D E F
G H I

et effectue une moyenne pondérée avec les coeff :

 et effectue la moyenne

1 2 1

2 4 1

1 2 1

2 4 8

4 8 4

2 4 8

1 2 1

2 4 1

1 2 1

1 1 1

1 1 1

1 1 1

1 1 1

1 1 1

1 1 1

1 1 1

1 1 1

1 1 1

   

Matrice 2  ▬► analyse 11 pixels

Matrice 3  ▬► analyse 11 pixels

A B C

D E F
G H I

A B C

D E F
G H I

A B C

D E F
G H I

A B C

D E F
G H I

A B C

D E F
G H I

A B C

D E F
G H I

et effectue une moyenne pondérée avec les coeff :

 et effectue la moyenne

0 0 0

0 4 0

0 0 0

2 4 8

4 8 4

2 4 8

0 0 0

0 4 0

0 0 0

0 0 0

0 1 0

0 0 0

1 1 1

1 1 1

1 1 1

0 0 0

0 1 0

0 0 0

 

 

Influence Temporelle.

     

Le filtre travail à partir des valeurs absolues des différences et effectue ce calcul :

 

      différence entre la valeur d'un pixel sur l'image et du même pixel sur l'image précédente
+    différence entre la valeur d'un pixel sur l'image et du même pixel sur l'image suivante
+    différence entre la valeur d'un 2eme pixel (jointif) sur l'image et du même pixel sur l'image précédente
+    différence entre la valeur d'un 2eme pixel (jointif) sur l'image et du même pixel sur l'image suivante

=    Résultat

 

Si ce résultat est supérieur à la valeur de la Ti → travail à partir de 9 pixels (spacial)
Si ce résultat est inférieur à la valeur de la Ti   → travail à partir de 11 ou 27 pixels (suivant la matrice) (spacial + temporel)

 

 

• Analyser 27 pixels

• Appliquer certains coefficients aux valeurs des pixels, afin de faire une moyenne à partir de valeurs 'homogènes'.

• Luminance → seuil de 3 sur l'image pour les pixels de l'image en cours et seuil de 6 pour les pixels des images suivante/précédente.

• Chrominance → seuil de 4 sur l'image pour les pixels de l'image en cours et seuil de 8 pour les pixels des images suivante/précédente.

• Limiter à un traitement 2D certains calculs portants sur la somme de différentes valeurs de pixels, jugée trop importante. (Ti ~ 2)

Convolution3D(0,3,4,6,8,2,0)

 

Trouver la recette miracle

→ Vous avez tous les éléments pour comprendre comment ajuster vos réglages ... à vous de jouer. (enfin d'encoder plutôt ...)

 


 

Un grand merci à Sebastien Lucas ( ~ Vlad ) pour ce superbe plugin et pour toutes les explications qu'il m'a très gentillement fournies.

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Ctrl-Alt-Suppr~~~~~~~~~~~~~~~~~