Android平板电脑上超级慢的图像处理

时间:2011-08-22 15:55:06

标签: image-processing android-ndk

我正在尝试在Android平板电脑(SLIC

中实施SLIC超像素算法

我使用stl-lib和所有端口在C ++中使用与android环境一起工作的代码。应用程序正在做什么是从相机中获取图像并将数据发送到本机代码中进行处理。

我运行了应用程序,但问题是处理单帧(640 x 400)需要20-30秒,而在我的笔记本中运行Visual Studio应用程序几乎可以立即完成!

我检查了内存泄漏,他们不是......他们的任何东西都可能导致计算时间比笔记本中的VS2010贵一些吗?

我知道这个问题可能非常开放,并不是非常具体,但我也真的在黑暗中。希望你们能帮忙。

由于

PS。我检查每个进程的运行时间,我认为每行代码执行时间都会上升。我没有看到任何比平时更长的特定功能。

PSS。你认为跟随可能导致缓慢吗?

  1. 内存大小:调查,在原生中没有太多暂停时间显示GC
  2. STL-library:尚未调查,STL中运行的vector,max和min等函数是否可能会导致显着的缓慢?
  3. Android环境吗?
  4. 安卓平板电脑的硬件规格较低(Acer Iconia标签 - 1GHz Nvidia Tegra 250双核处理器,拥有1GB内存)
  5. 用Java运行会更好吗?
  6. PSSS。如果您有时间,请查看the code

1 个答案:

答案 0 :(得分:3)

我已经查看了您的代码,可以提出以下建议:

  1. 首先,您需要将行APP_ABI := armeabi-v7a添加到Application.mk文件中。否则,您的代码将被编译为旧的armv5te体系结构,其中您没有任何FPU(所有浮点运算都被模拟),可用的寄存器更少等等。
  2. 您的SLIC实现密集使用double浮点值进行计算。您应该尽可能用float替换它们,因为ARM仍然错过double类型的硬件支持。