2017-04-11 3 views
0

J'ai récemment commencé à expérimenter avec OpenCv, en particulier avec les featuresetectors (par exemple SIFT, SURF ...) Maintenant, je commence à regarder dans OpenCL et je voulais demander s'il y a OpenCL "support" pour ces vedettes. En "google" la question, j'ai trouvé ce lien 1 avec d'éventuelles fonctions accélérées OpenCL. Mais il n'y a pas de vedettes listées, seulement les allumettes. Sur github j'ai trouvé le code suivant 2 qui indique qu'il est possible d'utiliser SURF. Est-ce que quelqu'un sait quels fetectors/feskriptors sont implémentés dans OpenCL? (Et peut-être comment les utiliser)OpenCL support pour OpenCV featuredetector/deskriptor

Salutations DRIAN

Répondre

1

OpenCL ne prend pas en charge directement les détecteurs de caractéristique. OpenCL n'est pas un cadre pour le traitement d'image, mais une API de bas niveau pour exécuter l'algorithme en parallèle. Par conséquent, il prend en charge de nombreuses fonctions de bas niveau, telles que les fonctions vectorielles, les fonctions trigonométriques et d'autres instructions de bas niveau, mais pas de fonctions spécifiques au domaine, comme la détection de caractéristiques dans une image. OpenCV utilise OpenCL pour accélérer certaines opérations en les exécutant sur le GPU.

Fondamentalement, si vous souhaitez utiliser un haut niveau, facile à utiliser la bibliothèque pour traitement d'images, vous utilisez OpenCV.

Si vous souhaitez implémenter un algorithme pour exécution parallèle par vous-même sur les processeurs, processeurs graphiques ou d'autres accélérateurs, vous utilisez OpenCL.

+0

Merci pour la réponse. Donc, si je veux accélérer, par exemple. SURF sur un GPU ou tout autre processeur parallèle, je dois essayer de le coder moi-même en utilisant les fonctions opencv + les fonctions auto-exécutées qui sont implémentées dans opencl? Ou est-il possible de "dire à l'implémentation de open surf d'opencl pour accélérer vous-même" – Drian

+0

@Drian: Corect, vous devrez implémenter les algorithmes par vous même. Vous ne pouvez pas simplement "copier et coller" le code source OpenCV car l'algorithme doit être écrit pour une exécution parallèle. Le code parallèle s'appelle les noyaux. Ces noyaux sont écrits dans un sous-ensemble de la spécification du langage C++. – Marco