Question

J'essaie d'utiliser le cadre Accelerate sur iOS pour contourner le fait que l'image de base sur iOS ne prend pas en charge les filtres / noyaux personnalisés. Je développe un filtre de détection de bord en utilisant deux convolutions avec un Noyau Sobel, mais en commençant par un simple flou gaussien pour en avoir les pending. Je sais que Vimage est orienté vers la manipulation de l'image car les matrices et le VDSP se concentrent dans le traitement des signaux numériques en utilisant des transformations de Fourier. Mais bien que j'ai commencé à utiliser les fonctions vimage (vimageconvolve_xxxx, etc.), j'entends beaucoup de gens discuter de l'utilisation des fonctions de VDSP (VDSP_CONV, VDSP_IMGFIR, etc.) pour faire des choses comme des convolutions. Donc, cela m'amène à la question à accomplir: quand dois-je en utiliser l'une sur l'autre? Quelles sont les différences entre eux en ce qui concerne les opérations de convolution? J'ai regardé partout mais je n'ai pas pu trouver de réponse claire. Quelqu'un peut-il faire des lumières dessus ou me pointer dans la bonne direction?

Merci!

Était-ce utile?

La solution

Si Vimage fournit l'opération dont vous avez besoin, il est généralement le plus simple de l'utiliser. Vimage fait le blocage et le filetage du cache pour vous, ne le fait pas VDSP. Vimage fournit des opérations sur des formats entrelacés et entiers, qui sont souvent utiles pour le traitement d'image.

Autres conseils

La dernière fois que j'ai expérimenté, aucun de ces cadres n'a profité de la séparabilité du noyau, qui offre un énorme Booss de performance lors de la convolution du domaine spatial - une augmentation des performances beaucoup plus importante que les instructions vectorisées vous achèteront jamais. Le noyau Sobel en particulier est séparable, donc si vous utilisez vDSP ou vImage (Au lieu de dire OpenCV), assurez-vous de séparer le noyau vous-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top