【发布时间】:2012-01-24 02:54:56
【问题描述】:
我正在尝试使用 iOS 上的 Accelerate 框架来绕过 iOS 上的 Core Image 不支持自定义过滤器/内核的事实。我正在开发一个边缘检测过滤器,它使用两个带有Sobel kernel 的卷积,但是从一个简单的高斯模糊开始来掌握它的窍门。我知道 vImage 适合作为矩阵进行图像处理,而 vDSP 专注于使用傅里叶变换处理数字信号。但是虽然我开始使用 vImage 函数(vImageConvolve_XXXX 等),但我听到很多人在讨论使用 vDSP 的函数(vDSP_conv、vDSP_imgfir 等)来做卷积之类的事情。所以这让我想到了手头的问题:我什么时候应该使用一个而不是另一个?它们在卷积操作方面有什么区别?我到处寻找,但找不到明确的答案。有人可以解释一下吗,或者指出我正确的方向?
谢谢!
【问题讨论】:
-
作为一个仅供参考,我有一个非常快速的 GPU 加速 Sobel 边缘检测过滤器作为我的GPUImage 框架的一部分。它可以在 iPhone 4 上在 2.5 毫秒内处理 640x480 帧的视频,这看起来甚至比基于 Accelerate 的卷积要快得多。
-
@Brad-Larson 哇!这个看起来很有前途!它几乎就像 iOS 的 OpenCL :) 感谢框架和基准测试。我怀疑 OpenGL 路线会在性能方面产生更好的结果。但是由于内存限制(以及随之而来的图像大小限制)CPU 处理(通过 Accelerate、CoreImage 等)仍然是处理大图像的首选方式,例如。存储在图像库中(因为它们可能大于 2048x2048 像素),即使它更慢。一旦我提高了我的 GLSL 技能,我就会试一试!
-
基于 A5 的设备(iPhone 4S、iPad 2、Retina iPad)都支持 4096x4096 纹理,但您说得对,我们需要某种平铺实现来处理这些较大的图像。我知道如何做到这一点,但这需要一些工作。
标签: ios convolution accelerate-framework vdsp vimage