问题标签 [accelerate-framework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
55653 浏览

iphone - 使用 Apple FFT 和 Accelerate 框架

有没有人使用过Apple FFTiPhone 应用程序,或者知道我在哪里可以找到关于如何使用它的示例应用程序?我知道 Apple 发布了一些示例代码,但我不确定如何将其实施到实际项目中。

0 投票
1 回答
3714 浏览

ios - Apple Accelerate Framework 缩放和标准化矢量

我可以使用哪些函数来Accelerate.framework按标量缩放向量,并对向量进行归一化?我发现一个我认为可能适用于文档中的缩放,但我对它的操作感到困惑。

0 投票
2 回答
1323 浏览

ios - 为什么我不能在 iPhone 上编译引用 vImage 库的代码?

我正在尝试在我的代码中包含基于 vImage 的功能。但是编译失败 - 它甚至似乎根本无法识别函数/变量。

但与此同时,基于 vDSP 的代码似乎运行良好。此外,代码在模拟器中编译但在设备中失败。

示例代码(失败)如下

在这里,DSPComplex 是基于 DSP 的代码,在同一框架中 - 工作正常,而 vImagePixelCount - 这是基于 vImage 的代码 - 它失败了。谁可以帮我这个事?iOS4 中不包含 vImage 吗?

我在设备中使用 iOS4.2。

0 投票
1 回答
3402 浏览

iphone - 为 iPhone 设置 Apple 的 Accelerate FFT

我正在尝试了解数字声音处理的概念,并且我想实现 Apple 的 Accelerate Framework链接的 FFT 。在 vDSP API 中,您可以找到一个不错且快速的 FFT,但不幸的是我无法正确设置它。我认为文档真的很难理解。我正在尝试对 iPhone 麦克风的信号进行 FFT。有人可以给我一个设置或一些我可以阅读的网站吗?真的很棒。

感谢您的所有回答。

0 投票
1 回答
3851 浏览

iphone - 使用 Accelerate 框架进行 FFT 时如何设置缓冲区?

我正在使用 Accelerate 框架来执行快速傅里叶变换 (FFT),并试图找到一种方法来创建一个长度为 1024 的缓冲区以供使用。我可以访问平均峰值和峰值我要对其进行 FFT 的信号。

有人可以帮助我或给我一些提示吗?

0 投票
3 回答
762 浏览

opencv - OpenCV for Mac 是否使用 Accelerate 框架?

Accelerate 框架是一个特定于 Mac 的框架,它提供了图像卷积和 LAPACK 等功能,据说经过优化可以在 Mac 上尽可能快地运行。我的问题:OpenCV 是否利用了这一点?具体来说,“filter2D”函数是否使用加速?

0 投票
4 回答
3819 浏览

signal-processing - 什么可能导致 FFT 数据在错误频率出现尖峰?

我正在使用 Apple 的 Accelerate 框架在 iPhone 上实现 FFT 音高检测 如前所述

我了解相位偏移、bin 频率,并研究了几个使用 FFT 技术(简单音高检测、自相关、倒谱等)检测音高的开源调谐器。这是我的问题:

我的 FFT 结果始终偏离 5-10 Hz (+/-),即使这些 bin 仅相隔 1-2 赫兹。我尝试了不同的算法,即使是在高分辨率下采样的简单 FFT 也会在看似错误的地方显示幅度峰值。这不是一致的偏移量;有些太高,有些太低。

例如,一个 440Hz 的音调是 445.2Hz;a 220Hz 为 214Hz;880Hz 为 874Hz;1174Hz 作为 1183Hz 使用音调发生器。用于 Mac的类似开源调谐器使用几乎完全相同的算法,可以完美地检测音高。(在设备上与模拟器上的这些差异是不同的,但它们仍然是关闭的。)

我认为问题不在于 bin 分辨率,因为在实际音调和检测到的幅度尖峰之间通常有几个 bin。就好像输入只是听到错误的音调。

我在下面粘贴了我的代码。一般流程很简单:

将一步推到 FFT 缓冲区 -> Hann Window -> FFT -> Phase/Magnitude -> Max pitch 错误。

0 投票
1 回答
2645 浏览

c++ - 使用 vDSP 函数的自相关

给定一个浮点数或双精度数的一维向量,如何使用 Accelerate Framework 中 vDSP 库中的函数计算该向量的自相关?

有人会怀疑 vDSP_acor() 和 vDSP_acorD() 函数会执行此计算,但文档 vDSP_Library.pdf(可在此处获得)并不能很好地解释如何使用函数参数。

同样, vDSP_conv() 和 vDSP_convD() 函数提到了在两个向量之间执行相关和卷积的能力,但没有提供足够的解释或示例代码让我能够成功使用它们。例如,如果使用过滤器内核对 2D 矩阵进行卷积,我想需要两次调用 vDSP_convD(),使用不同的 signalStride 值,但文档中省略了这一点。另一个遗漏是过滤器中的数据必须如何打包。如果用零填充,那么零是第一个还是最后一个,或者它们是否需要均匀分布在非零条目的任一侧是否重要?对过滤器长度、结果长度和输入长度有要求吗?

有用示例的建议:使用 vDSP_acor() 和 vDSP_conv() 实现向量与其自身的自相关。频域中两个数组的二元乘法,这些数组被打包为已使用 vDSP_fft2d_zrip() 进行前向 FFT 处理的真实数据,在 IFT 返回未归一化的答案之前,该数组将用于计算自相关函数。在一维和二维数组上实现高斯核卷积。一般来说,这是一个很棒的库(你能说 FAST 吗?!),但我发现这些特殊功能有点难以理解,并且上述示例可能会被广泛使用,因为它们在信号处理和图像分析中非常常见。

对 vDSP_Library 参考文档维护者的建议:我假设“空间域”和“时域”在整个文档中是等效的。如果不是,请务必区分。此外,请检查任何公式是否具有与正在讨论的函数中声明的参数名称匹配的明确定义的参数。

脚注:这里我指的自相关定义为:A[T] = <(X[t]-m)(X[tT]-m)>/v,其中 A[T] 是滞后 T 处的自相关, t 是信号 X 的索引,m 是 X 在所有 t 上的平均值,v 是 X 在所有 t 上的方差,尖括号 <> 表示所有可用的相隔 T 的 X 对的平均值。

0 投票
1 回答
1729 浏览

iphone - 使用 Accelerate 框架对无符号 8 位整数数组求和

我可以使用 Accelerate Framework 对无符号 8 位整数数组求和而不转换为浮点数组吗?

我目前的做法是:

但是 vDSP_vfltu8 很慢。

0 投票
5 回答
7556 浏览

iphone - 使用 Accelerate Framework 和 vDSP 的 iPhone 图像处理

更新:请参阅下面的附加问题以及更多代码;

我正在尝试编写用于模糊图像的类别。我的出发点是Jeff LaMarche 的示例。虽然这(在其他人建议的修复之后)工作正常,但对于我的要求来说它太慢了一个数量级 - 在 3GS 上,可能需要 3 秒才能做一个像样的模糊,我想把它降到 0.5 以下秒全屏(越快越好)。

他提到 Accelerate 框架是一种性能增强,所以我花了最后一天研究这个,特别是根据 Apple 文档的 vDSP_f3x3

通过使用 3x3 内核执行二维卷积来过滤图像;单精度。

完美 - 我有一个合适的过滤器矩阵,我有一个图像......但这就是我难过的地方。

vDSP_f3x3 假设图像数据是 (float *) 但我的图像来自;

上下文来自 CGBitmapContextCreate 和 kCGImageAlphaPremultipliedFirst,所以我的 srcData 实际上是 ARGB,每个组件有 8 位。

我怀疑我真正需要的是带有浮动组件的上下文,但根据这里的 Quartz 文档,kCGBitMapFloatComponents 仅在 Mac OS 上可用,在 iOS 上不可用:-(

有没有一种使用加速框架将我拥有的整数分量转换为 vDSP_f3x3 需要的浮点分量的快速方法?我的意思是我可以自己做,但是当我这样做时,然后是卷积,然后再转换回来,我怀疑我会让它变得比现在更慢,因为我可以边做边做卷积。

也许我有错误的方法?

有人对我使用 vDSP 在 iphone 上进行了一些图像处理有什么建议吗?我可以找到的文档非常面向参考,并且在涉及此类事情时对新手不太友好。

如果有人有关于真正快速模糊的参考(和高质量,而不是降低分辨率,然后重新缩放我见过的看起来很裤子的东西),那就太棒了!

编辑:

谢谢@Jason。我已经这样做了,它几乎可以工作了,但现在我的问题是,虽然图像确实模糊,但在每次调用时它都会向左移动 1 个像素。它似乎也使图像变成黑白的,但这可能是别的东西。

这段代码中有什么明显不正确的地方吗?我还没有优化它,它有点粗糙,但希望卷积代码足够清晰。

我应该补充一点,如果我注释掉 vDSP_conv 行,并将下面的行更改为;

然后正如预期的那样,我的结果是原始来源的克隆。在颜色上而不是向左移动。这对我来说意味着这是错误的卷积,但我看不出在哪里:-(

想法:实际上考虑到这一点,在我看来,卷积需要知道输入像素是 ARGB 格式,否则卷积会将这些值相乘而不知道它们的含义(即它将多个 R * B 等) . 这可以解释为什么我得到了我认为的黑白结果,而不是转变。同样,我认为可能需要比我这里的幼稚版本更多...

最后的想法:我认为向左移动是过滤器的自然结果,我需要查看图像尺寸并可能将其填充......所以我认为代码实际上工作正常,因为我已经提供了它。