【发布时间】:2010-01-22 20:56:31
【问题描述】:
我想对用 iPhone 拍摄的照片进行图像处理。 此处理将涉及二维矩阵卷积等。
恐怕嵌套NSArrays 的性能会很差。处理基于像素的图像的正确方法是什么?我应该简单地使用分配有malloc 的C 数组吗?
【问题讨论】:
标签: iphone objective-c iphone-sdk-3.0 image-processing image-manipulation
我想对用 iPhone 拍摄的照片进行图像处理。 此处理将涉及二维矩阵卷积等。
恐怕嵌套NSArrays 的性能会很差。处理基于像素的图像的正确方法是什么?我应该简单地使用分配有malloc 的C 数组吗?
【问题讨论】:
标签: iphone objective-c iphone-sdk-3.0 image-processing image-manipulation
您是否查看过 iPhone SDK 中可用的 Quartz 2D 引擎?或者也许是核心图形? Apple 有一个很好的overview document 描述了 iPhone 上可用的所有不同的成像技术。不幸的是,iPhone 上还没有像 ImageKit 这样好的东西。
【讨论】:
我建议使用 OpenCV 图像处理库,因为它包含针对您想要的任何东西的优化算法。 OpenCV 肯定会比使用 NSArray 手动处理更快。 但有一个主要缺点 - OpenCV 库是用 C/C++ 编写的,因此您必须将 NSImage 转换为原生 OpenCV 图像格式才能进行处理。但是谷歌如何做到这一点真的很容易。 我在自己的 iPhone 项目中使用 OpenCV,这里是为 iPhone 构建 OpenCv 的小指南:http://computer-vision-talks.com/2010/12/building-opencv-for-ios/
【讨论】:
是的,您将使用 C 数组,因为无论如何这都是您取回像素数据的方式。
如前所述,您应该看看是否可以使用 Quartz2D 进行您感兴趣的操作,因为基于硬件的它可能会更好地执行。如果没有,请自行处理像素数组。
【讨论】:
iPhone 也支持 OpenCL,而且它的 GPU 比 CPU 具有更多的处理能力。
【讨论】: