Flou gaussien - écart-type, le rayon et la taille du noyau
J'ai appliqué un flou gaussien fragment shader en GLSL. Je comprends les principaux concepts derrière tout cela: convolution, la séparation de x et y en utilisant la linéarité, plusieurs passages pour augmenter le rayon...
J'ai encore quelques questions cependant:
Quelle est la relation entre le sigma et le rayon de l'?
J'ai lu que sigma est l'équivalent de rayon, je ne vois pas comment sigma est exprimée en pixels. Ou est le "rayon" juste un nom de sigma, ne sont pas liées à des pixels?
Comment puis-je choisir sigma?
Vu je utiliser les passes multiples pour augmenter sigma, comment choisir un bon sigma pour obtenir le sigma, je veux à tout passer? Si le sigma est égal à la racine carrée de la somme des carrés des sigmas et sigma est l'équivalent de rayon, ce qui est un moyen facile d'obtenir tout rayon souhaité?
Quelle est la bonne taille pour un noyau, et quel rapport avec le sigma?
J'ai vu la plupart des implémentations utilisent un 5x5 noyau. C'est probablement un bon choix pour une mise en œuvre rapide avec la bonne qualité, mais est-il une autre raison pour choisir une autre taille du noyau? Comment sigma se rapportent à la taille du noyau? Devrais-je trouver le meilleur sigma ainsi que les coefficients en dehors de mon noyau sont négligeables et juste normaliser?
Merci. J'ai eu un moment difficile de marquage de cette question pour le Débordement de la Pile.
OriginalL'auteur LodeRunner | 2013-07-24
Vous devez vous connecter pour publier un commentaire.
Quelle est la relation entre le sigma et le rayon de l'?
Je pense que vos termes sont interchangeables en fonction de votre mise en œuvre. Pour la plupart des glsl implémentations de flou Gaussien ils utilisent le sigma valeur pour définir la quantité de flou. Dans le flou Gaussien définition le rayon peut être considéré comme un "rayon de flou'. Ces termes sont, en l'espace de pixel.
Comment puis-je choisir sigma?
Cela permettra de définir la quantité de flou que vous voulez, ce qui correspond à la taille du noyau pour être utilisé dans le produit de convolution. De plus grandes valeurs plus flou.
La NVidia mise en œuvre utilise un noyau de taille des int(sigma*3).
Vous pouvez expérimenter à l'aide d'un petit noyau de taille, avec des valeurs plus élevées de sigma pour des considérations de performance. Ce sont des paramètres libres d'expérimenter avec, qui définit le nombre de pixels à utiliser pour la modulation et le pixel correspondant à inclure dans le résultat.
Quelle est la bonne taille pour un noyau, et quel rapport avec le sigma?
Basé sur le sigma valeur, vous aurez à choisir un correspondant de la taille du noyau. La taille du noyau permettra de déterminer le nombre de pixels de l'échantillon au cours de la convolution et le sigma va définir la façon dont beaucoup de les moduler par.
Vous pouvez poster du code pour une explication plus détaillée. NVidia a un très bon chapitre sur la façon de construire un Noyau Gaussien (http://http.developer.nvidia.com/GPUGems3/gpugems3_ch40.html).
Regardez l'Exemple 40-1.
OriginalL'auteur Aaron Hagan