可以在iPhone GPU上运行像GrabCut这样的图像分割算法吗?

时间:2012-08-31 06:54:38

标签: ios image-processing gpu

我一直在玩iPhone上的GrabCut算法(在OpenCV中实现)。表现很糟糕。即使在模拟器上也需要大约10-15秒的时间才能运行大约800x800的图像。在我的手机上,它运行了几分钟,最终耗尽内存,并崩溃(iPhone 4)。我敢肯定,如果我在C中编写自己的算法版本,我可以做一些优化,但我觉得没有多少优化可以让它在任何地方都可用。我在一些学术论文中挖出了一些性能测量结果,甚至他们在多核1.8 ghz CPU上看到了30秒的运行时间。

所以我唯一的希望就是GPU,我完全不了解它。到目前为止,我已经对OpenGL ES做了一些基础研究,但这是一个非常深入的主题,我不想浪费时间或几天学习基本概念,这样我就可以知道我是否在正确的道路。

所以我的问题有两个:

1)可以在GPU上运行像GrabCut这样的东西吗?如果是这样,我希望有一个起点,而不是“学习OpenGL ES”。理想情况下,我想知道我需要特别注意哪些概念。请记住,我没有使用OpenGL的经验,也没有很少的图像处理经验。

2)即使这种类型的算法可以在GPU上运行,我应该期待什么样的性能提升?考虑到当前的运行时间在CPU上大约30秒AT BEST,GPU似乎不太可能在运行时充分发挥作用,使算法变得有用。

编辑:为了使算法“有用”,我认为它必须在10秒或更短的时间内运行。

提前致谢。

1 个答案:

答案 0 :(得分:2)

似乎抓取不会从图像分辨率中受益。这意味着结果的质量不直接取决于输入图像的质量。另一方面,性能受益于尺寸,意味着图像越小,算法执行剪切的速度越快。因此,尝试将图像缩小到300x300,应用抓取,取出遮罩,将遮罩缩放到原始大小,然后将遮罩应用于原始图像以获得结果。如果有效,请告诉我。

卢卡