3

我正在尝试使用 iOS 上的 Accelerate 框架来绕过 iOS 上的 Core Image 不支持自定义过滤器/内核的事实。我正在开发一个边缘检测滤波器,使用两个卷积和一个Sobel 内核,但是从一个简单的高斯模糊开始来掌握它的窍门。我知道 vImage 适合作为矩阵进行图像处理,而 vDSP 专注于使用傅里叶变换处理数字信号。但是虽然我开始使用 vImage 函数(vImageConvolve_XXXX 等),但我听到很多人在讨论使用 vDSP 的函数(vDSP_conv、vDSP_imgfir 等)来做卷积之类的事情。所以这让我想到了手头的问题:我什么时候应该使用一个而不是另一个?它们在卷积操作方面有什么区别?我到处寻找,但找不到明确的答案。有人可以阐明它,或者指出我正确的方向吗?

谢谢!

4

2 回答 2

2

如果 vImage 提供了您需要的操作,那么使用它通常是最简单的。vImage 会为您缓存阻塞和线程,vDSP 不会。vImage 提供交错和整数格式的操作,这通常对图像处理很有用。

于 2012-01-29T03:05:51.090 回答
2

上次我进行实验时,这些框架都没有利用内核可分离性,这在空间域中进行卷积时提供了巨大的性能提升 - 比向量化指令所购买的性能提升要大得多。特别是 Sobel 内核是可分离的,因此如果您使用vDSPor vImage(而不是 say OpenCV),请务必自己分离内核。

于 2012-01-29T04:23:30.520 回答