Ускорение vImage против vDSP - PullRequest
3 голосов
/ 24 января 2012

Я пытаюсь использовать платформу Accelerate на iOS, чтобы обойти тот факт, что Core Image на iOS не поддерживает пользовательские фильтры / ядра.Я разрабатываю фильтр обнаружения краев, используя две свертки с ядром Собеля , но начинаю с простого размытия по Гауссу, чтобы получить его преимущества.Я знаю, что vImage ориентирован на манипулирование изображениями как матрицы, а vDSP фокусируется на обработке цифровых сигналов с использованием преобразований Фурье.Но хотя я начал использовать функции vImage (vImageConvolve_XXXX и т. Д.), Я слышал, как многие люди обсуждают использование функций vDSP (vDSP_conv, vDSP_imgfir и т. Д.) Для таких вещей, как свертки.Так что это приводит меня к поднятому вопросу: когда я должен использовать один поверх другого?Каковы различия между ними в отношении операций свертки?Я искал везде, но не смог найти четкого ответаМожет кто-нибудь пролить на него свет или направить меня в правильном направлении?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 29 января 2012

Если vImage предоставляет нужную вам операцию, обычно ее проще всего использовать. vImage делает блокировку кэша и многопоточность для вас, vDSP нет. vImage предоставляет операции с чередованным и целочисленным форматами, которые часто полезны для обработки изображений.

1 голос
/ 29 января 2012

В прошлый раз, когда я экспериментировал, ни одна из этих платформ не использовала преимущества возможности разделения ядра, что обеспечивает огромное повышение производительности при свертывании в пространственной области - гораздо больший прирост производительности, чем векторизованные инструкции, когда-либо купят вас , В частности, ядро ​​Sobel является разделяемым, поэтому, если вы используете vDSP или vImage (вместо, скажем, OpenCV), обязательно отделите ядро ​​самостоятельно.

...