Il ya plusieurs lunes, j'ai écrit noyau de convolution pour le cacao. Il avait des fonctions de classe confort pour faire de nombreux types de filtres, y compris le flou, le gaufrage, décrivant la détection de contour, le déplacement horizontal, LaPlacian, Adoucir, passe-haut, etc Maintenant, cela se passait avant Core Image et longtemps avant le passage à Intel. Je ne me souviens pas exactement quand je l'ai écrit, mais je devine qu'il était vers 2001 ou 2002. La méthode qui est réellement appliqué le filtre à une image utilisée AltiVec si elle était disponible, et si elle n'était pas, il a fait un filtre à la force brute sur le CPU.
Naturellement, une fois le passage à Intel est arrivé, le code AltiVec n'était plus utile, puis d'Apple est sorti avec Core Image, qui noyau de convolution includesda et de tous les paramètres de filtre que j'avais créé et plus encore. Alors, j'ai arrêté de maintenir le code.
Ensuite, lorsque l'iPhone est sorti et n'a pas eu Accélérer ou Core Image, j'ai vu une utilisation potentielle pour le code source ancienne. J'ai eu un projet dès le début où je devais être en mesure de rendre une image floue. Alors, j'ai soufflé la poussière de l'ancien code. Je n'ai pas de convertir l'ensemble du noyau de convolution - Je ne voulais pas passer par l'effort, si ce n'était pas aller au travail - j'ai donc créé une catégorie de flou sur UIImage. Et ça n'a pas fonctionné.
Pressé par le temps, j'ai trouvé une autre solution parce que j'étais incertain du processeur sur l'iPhone d'origine serait en mesure d'appliquer un noyau de convolution assez vite à mes fins, mais j'ai inclus le code cassé quand j'ai publié le code source de reproduisant l'effet Urban Spoon. Aujourd'hui, j'ai reçu un e-mail d'un lecteur qui a trouvé mon erreur, plutôt crétin. Le filtre de convolution allait bien, j'ai juste précisé le CGImage tort quand spécifiant mon fournisseur tout en convertissant les données octet de revenir à un CGImage.
Maintenant, depuis que j'ai écrit ce code, Apple a sorti le cadre Accélérer pour iOS, alors il pourrait certainement être prises plus rapidement. Il est peu probable que je serai en mesure de consacrer le temps qu'il conversion à utiliser Accélérer moins j'ai besoin d'un noyau de convolution pour mon travail propre client; j'ai trop sur mon assiette en ce moment pour l'aborder. Si quelqu'un est intéressé à faire du port de convolution complète du noyau, vous pouvez consulter le code source pour Crimson FX. C'est un projet vieux de cacao qui ne peuvent plus travailler, mais il a, je crois, la dernière version du noyau de convolution, avant j'ai abandonné le maintenir. Il ne devrait pas être difficile de porter le noyau de convolution entier pour iOS de la même manière. Une fois que vous arrivez à l'octet de données sous-jacentes, le processus est exactement à 100% les mêmes (même si l'ordre des octets est différent), et le code pour convertir vers et à partir des données octet est cette catégorie UIImage-Flou.
Donc, sans plus tarder, j'ai créé un petit projet d'échafaudage pour tenir le pas accéléré UIImage-Flou catégorie. Amusez-vous avec lui et laissez-moi savoir si vous l'utilisez dans quelque chose d'intéressant. Si vous l'améliorer et souhaitez partager vos améliorations, faites le moi savoir, et je vais le poster ici.
Vous pouvez trouver le code source ici. Voici une capture d'écran de l'échafaud de test avec l'image originale et après brouille plusieurs ont été appliquées. L'image est tirée des Bibliothèque du Congrès et Imprime Photographies Collection. Plattsburgh est l'endroit où j'ai grandi, donc cette image du domaine public a frappé mon imagination. Je ne sais pas pourquoi, mais la base de l'armée a été orthographié Plattsburg, sans «h» de la fin même si la ville a toujours été à Plattsburgh avec «h» de la fin.

Merci à Anthony Gonsalves pour trouver mon erreur!
Naturellement, une fois le passage à Intel est arrivé, le code AltiVec n'était plus utile, puis d'Apple est sorti avec Core Image, qui noyau de convolution includesda et de tous les paramètres de filtre que j'avais créé et plus encore. Alors, j'ai arrêté de maintenir le code.
Ensuite, lorsque l'iPhone est sorti et n'a pas eu Accélérer ou Core Image, j'ai vu une utilisation potentielle pour le code source ancienne. J'ai eu un projet dès le début où je devais être en mesure de rendre une image floue. Alors, j'ai soufflé la poussière de l'ancien code. Je n'ai pas de convertir l'ensemble du noyau de convolution - Je ne voulais pas passer par l'effort, si ce n'était pas aller au travail - j'ai donc créé une catégorie de flou sur UIImage. Et ça n'a pas fonctionné.
Pressé par le temps, j'ai trouvé une autre solution parce que j'étais incertain du processeur sur l'iPhone d'origine serait en mesure d'appliquer un noyau de convolution assez vite à mes fins, mais j'ai inclus le code cassé quand j'ai publié le code source de reproduisant l'effet Urban Spoon. Aujourd'hui, j'ai reçu un e-mail d'un lecteur qui a trouvé mon erreur, plutôt crétin. Le filtre de convolution allait bien, j'ai juste précisé le CGImage tort quand spécifiant mon fournisseur tout en convertissant les données octet de revenir à un CGImage.
Maintenant, depuis que j'ai écrit ce code, Apple a sorti le cadre Accélérer pour iOS, alors il pourrait certainement être prises plus rapidement. Il est peu probable que je serai en mesure de consacrer le temps qu'il conversion à utiliser Accélérer moins j'ai besoin d'un noyau de convolution pour mon travail propre client; j'ai trop sur mon assiette en ce moment pour l'aborder. Si quelqu'un est intéressé à faire du port de convolution complète du noyau, vous pouvez consulter le code source pour Crimson FX. C'est un projet vieux de cacao qui ne peuvent plus travailler, mais il a, je crois, la dernière version du noyau de convolution, avant j'ai abandonné le maintenir. Il ne devrait pas être difficile de porter le noyau de convolution entier pour iOS de la même manière. Une fois que vous arrivez à l'octet de données sous-jacentes, le processus est exactement à 100% les mêmes (même si l'ordre des octets est différent), et le code pour convertir vers et à partir des données octet est cette catégorie UIImage-Flou.
Donc, sans plus tarder, j'ai créé un petit projet d'échafaudage pour tenir le pas accéléré UIImage-Flou catégorie. Amusez-vous avec lui et laissez-moi savoir si vous l'utilisez dans quelque chose d'intéressant. Si vous l'améliorer et souhaitez partager vos améliorations, faites le moi savoir, et je vais le poster ici.
Vous pouvez trouver le code source ici. Voici une capture d'écran de l'échafaud de test avec l'image originale et après brouille plusieurs ont été appliquées. L'image est tirée des Bibliothèque du Congrès et Imprime Photographies Collection. Plattsburgh est l'endroit où j'ai grandi, donc cette image du domaine public a frappé mon imagination. Je ne sais pas pourquoi, mais la base de l'armée a été orthographié Plattsburg, sans «h» de la fin même si la ville a toujours été à Plattsburgh avec «h» de la fin.
Merci à Anthony Gonsalves pour trouver mon erreur!
Aucun commentaire:
Enregistrer un commentaire