Comment mettre en œuvre une boîte ou un flou gaussien sur iOS
Je veux être en mesure de prendre une image et flou assez rapidement (par exemple en 0.1 sec). La taille de l'Image serait presque jamais être supérieure à 256 x 256 px.
Dois-je loop thru chaque pixel et la moyenne avec les voisins ou est-il un niveau supérieur que je puisse faire cela?
PS: je suis conscient que plusieurs zone de flou peut se rapprocher d'un flou gaussien.
Vous devez vous connecter pour publier un commentaire.
Je l'ai trouvé vraiment très rapide assez merdique moyen pour iOS3.2+ apps
Ce pixellise l'on a une vue 4x4 pixels morceaux puis les échelles vers le haut à l'aide de filtrage bilinéaire... il est EXTRÊMEMENT rapide et semble ok si vous avez envie d'un flou d'arrière-plan de la vue sous un modal vue.
L'annuler, il suffit de régler le tramage à l'échelle de retour à 1,0 ou désactiver la pixellisation.
De how-do-i-créer-floue-texte-dans-un-iphone-vue:
Prendre un coup d'oeil à Apple GLImageProcessing iPhone échantillon. Il fait un peu flou, entre autres choses.
Le code comprend:
Si vous avez toujours ou au moins utilisent souvent le même flou paramètres susceptibles de gagner de la vitesse en faisant le filtrage dans le domaine fréquentiel au lieu de le domaine spatial.
Les avantages de cette approche est que pixel-sage de multiplication doit être assez rapide par rapport à la moyenne d'un quartier. Donc, si vous traiter un lot d'images ce qui pourrait aider.
L'inconvénient est que je n'ai aucune idée à quelle vitesse vous pouvez faire des transformées de fourier sur l'iPhone donc cela peut très bien être beaucoup plus lent que les autres implémentations.
Autre que cela, je suppose que depuis l'iPhone a le support OpenGL, vous pourriez peut-être utiliser ses texturing/fonctions de dessin à faire. Désolé de le dire, bien que je ne suis pas OpenGL expert et ne peut pas vraiment donner tous les conseils pratiques que la façon dont cela est fait.
Voici deux astuces pour homme pauvre flou:
Prendre l'image, un tirage au sort à une opacité partielle 5 ou 6 (ou cependant de beaucoup que vous voulez) fois chaque fois offseting par un couple de pixels dans une direction différente. dessin fois de plus en plus de directions vous obtient une meilleure flou, mais de toute évidence vous en échange de temps de traitement. Cela fonctionne bien si vous voulez un effet de flou avec un relativement petit rayon.
Pour des images monochromatiques, vous pouvez réellement utiliser le construire dans l'ombre comme un simple flou.
Vous voudrez peut-être jeter un coup d'oeil à Mario Klingemann de StakBlur algorithme. Ce n'est pas Gaussienne, mais assez proche.
N'importe quel algorithme qui modifys images sur un pixel de niveau via openGL va être un peu lent; pixel-par-pixel manipulation sur une texture openGL et puis la mise à jour à chaque image est malheureusement performance adéquate.
Passer un peu de temps à écrire un banc d'essai et l'expérimentation avec la manipulation de pixels avant de s'engager à la mise en œuvre d'un complexe de flou de routine.
Les principes de base de l'effet de flou (ou peut-être plus d'un ramollir), est en moyenne de 2 pixels voisins, et d'appliquer la moyenne de deux pixels. parcourir cette tout au long de l'image, et vous obtenez un léger flou de bougé (adoucir).