Frage

Ich versuche, das Beschleunigungsframework unter iOS zu verwenden, um die Tatsache zu umgehen, dass Core Image unter iOS keine benutzerdefinierten Filter / Kernel unterstützt.Ich entwickle einen Kantenerkennungsfilter mit zwei Faltungen mit einem Sobel-Kernel, aber mit einer einfachen Gaußschen Unschärfe beginnen, um den Dreh raus zu bekommen.Ich weiß, dass vImage auf Bildmanipulation ausgerichtet ist, da Matrizen und vDSP sich auf die Verarbeitung digitaler Signale mit Fourier-Transformationen konzentrieren.Aber obwohl ich angefangen habe, die vImage-Funktionen (vImageConvolve_XXXX usw.) zu verwenden, höre ich viele Leute, die über die Verwendung der vDSP-Funktionen (vDSP_conv, vDSP_imgfir usw.) diskutieren, um beispielsweise Faltungen auszuführen.Das führt mich also zu der vorliegenden Frage:wann sollte ich eins über dem anderen verwenden?Was sind die Unterschiede zwischen ihnen in Bezug auf Faltungsoperationen?Ich habe überall gesucht, konnte aber keine klare Antwort finden.Kann jemand ein paar Lichter darauf werfen oder mich in die richtige Richtung weisen?

Danke!

War es hilfreich?

Lösung

Wenn Vimage die benötigte Operation bietet, ist es normalerweise einfachste, dies zu verwenden.vimage sperrt Cache blockiert und fädelt für Sie, VDSP nicht.Vimage bietet Operationen auf interleaved und ganzzahligen Formaten, die häufig für die Bildverarbeitung nützlich sind.

Andere Tipps

Als ich das letzte Mal experimentiert habe, hat keines dieser Frameworks die Trennbarkeit des Kernels ausgenutzt, was eine riesig Leistungssteigerung beim Falten im räumlichen Bereich - eine weitaus größere Leistungssteigerung als vektorisierte Anweisungen, die Sie jemals kaufen werden.Insbesondere der Sobel-Kernel ist trennbar, also wenn Sie verwenden vDSP oder vImage (anstatt zu sagen OpenCV), achten Sie darauf, den Kernel selbst zu trennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top