2017-04-11 5 views
0

Ich experimentiere seit kurzem mit OpenCv, vor allem mit den Featuredetektoren (zB SIFT, SURF ...) Nun beginne ich OpenCL zu betrachten und wollte fragen, ob es OpenCL gibt "Unterstützung" für diese Feature-Detektoren.OpenCL Unterstützung für OpenCV Featuredetektor/Deskriptor

Während "googeln" die Frage habe ich diesen Link 1 mit möglichen OpenCL beschleunigte Funktionen gefunden. Aber es sind keine Featuredetektoren aufgeführt, nur die Matcher. Auf github fand ich folgenden Code 2, der anzeigt, dass es möglich ist, SURF zu verwenden. Weiß jemand, welche Ftektoren/FESKriptoren in OpenCL implementiert sind? (Und vielleicht, wie sie benutzen)

Grüße Drian

Antwort

1

OpenCL direkt keine Merkmalsdetektoren unterstützen.

OpenCL ist kein Framework für die Bildverarbeitung, sondern eine Low-Level-API, um den Algorithmus parallel auszuführen. Daher unterstützt es viele Low-Level-Funktionen, wie z. B. Vektorfunktionen, trigonometrische Funktionen und andere Low-Level-Befehle, aber keine domänenspezifischen Funktionen, um Features in einem Bild zu erkennen.

OpenCV verwendet OpenCL, um bestimmte Vorgänge zu beschleunigen, indem sie auf der GPU ausgeführt werden.

Grundsätzlich, wenn Sie ein hohes Maß verwenden möchten, einfach Bibliothek verwenden für Bildverarbeitung, verwenden Sie OpenCV.

Wenn Sie einen Algorithmus für parallele Ausführung selbst auf CPUs, GPUs oder anderen Beschleunigern implementieren möchten, verwenden Sie OpenCL.

+0

Danke für die Antwort. Also wenn ich zB beschleunigen möchte. SURF auf einer GPU oder einem anderen Parallelprozessor Ich muss versuchen, es selbst zu programmieren, indem ich die opencv-Funktionen + selbstgeschriebene Funktionen verwende, die in opencl implementiert sind? Oder ist es möglich, "Opencvs Implementierung von Surf-Einsatz zu sagen, Opencl, um sich zu beschleunigen" – Drian

+0

@Drian: Corect, müssen Sie die Algorithmen selbst implementieren. Sie können OpenCV-Quellcode nicht einfach kopieren und einfügen, da der Algorithmus für die parallele Ausführung geschrieben werden muss. Der parallele Code heißt Kernel. Diese Kernel sind in einer Teilmenge der C++ - Sprachspezifikation geschrieben. – Marco

Verwandte Themen