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 |
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 |
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 |
A B C D E F |
A B C D E F |
A B C D E F |
A B C D E F |
A B C D E F |
|
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 |
A B C D E F |
A B C D E
F |
A B C D E
F |
A B C D E F |
A B C D E
F |
|
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~~~~~~~~~~~~~~~~~