iOS Cocoa Touch vImage 子采样

标签 ios accelerate-framework vimage

我在 Cocoa Touch 中使用 vImages,在我的例子中,它基本上是 ARGB float 组,我需要进行子采样。低通滤波使用 vImage 函数没有问题,但如何从 2x2 像素中选择一个(假设我想按因子 2 进行子采样)?当然,我可以使用 vDSP 步幅函数,但这仅适用于水平二次采样,不适用于垂直二次采样。

我希望以下内容能够阐明我打算做什么。我希望选择所有标有 X 的像素,如下图所示:

X O X O X O
O O O O O O
X O X O X O
O O O O O O
X O X O X O
O O O O O O

但是由于内存是线性的,所以我的数组看起来是这样的:

X O X O X O O O O O O O X O X O X O O O O O O O X O X O X O O O O O O O

如何以合理的方式进行子采样?

编辑:我正在寻找一种有效的方法来对存储为一维 float 组(包括负值)的给定位图进行二维下采样。<​​/p>

最佳答案

现实情况是,当您进行这种子采样时,实际上并没有什么可以做的聪明的事情;跨步内存访问不允许使用很多技巧来加快速度,因此您使用的任何库代码本质上都等同于您可能在几分钟内自行编写的 C 代码。我会使用简单的 C 实现。

我相信这可以在 GPU 上相当高效地完成,但除非您的数据已经在 GPU 上下文中,否则这不会是性能上的胜利。如果您必须先将数据传输到那里,那么该成本将抵消实际操作中的任何性能节省。

关于iOS Cocoa Touch vImage 子采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11993468/

相关文章:

ios - 使两个按钮对齐到两个边缘的 VFL

iOS UITableView contentOffset 当键盘显示时

ios - 如何使用 get 方法显示 Json 响应

iphone - 如何检查 vDSP 函数是否在 neon 上运行标量或 SIMD

swift - Swift 中的 DFT 结果与 MATLAB 中的不同

ios - 在 swift 中使用 vImageHistogramCalculation 计算图像的直方图

ios - Facebook App 邀请通知在 ios 中不起作用

arrays - 将 ArraySlice 与 Accelerate 函数结合使用的更好方法?

ios - 使用 vImageHistogramCalculation 计算图像直方图的问题

objective-c - 如何使用 Accelerate Framework 将 iOS 相机图像转换为灰度图像?