The original OpenCV framework, primarily led and developed by Intel, has adapted and been tailored to ARM-based devices that are versatile, mobile, and highly power consumption-aware. Performance-wise, as one shall see later, ARM and other non-x86 architectures have their limitations too. It is a matter of market dynamics and inertia, not an inherent flaw. If one pursues a high framerate, e.g. for the purpose of tracking, then hardware acceleration for video becomes quite imperative. It is no coincidence that startups specialising in computer vision on devices end up selling hardware with particular strengths, or otherwise provide hardware addons that make up for desktop-versus-mobile performance anomalies2. Multi-core devices and rendering-centric chips yield a lot more frames per second and offload instructions from the processing pipeline.
It is worth emphasising that depending on the hardware at hand - and in particular acceleration of software at hardware level (e.g. video playback) - one can swiftly move from infeasibility to feasibility. Some code was furthermore optimised for particular chips at compilation time. For pattern recognition tasks, for example, it is possible to parallelise particular instructions or join together more data to run operations on. OpenCV takes this approach, but with a Dalvik virtual machine the performance gain might be eroded and acceleration impeded. In the future, it may be worth exploring how overall performance varies depending on hardware used; at present, only emulation mode on dual-core 64-bit and 32-bit x86/AMD Athlon hardware is assessed alongside non-emulated binaries (APK) on a single-core ARM-class chipset. Section 4 will touch on that.
Roy Schestowitz 2012-07-02