How Android Developers Can Build FastCV Apps for the RICOH THETA Part 1

This article was originally published in Japanese by roohi_3.

Image processing with THETA plug-in - FastCV introduction

Hello, this is @roohii_3 of Ricoh. I’ve recently been working on image processing projects with Python and OpenCV. Until last year I was designing and developing a project using C++ as the main language.

The latest model of RICOH THETA, the THETA V, introduced in November 2018, supports customization with "plug-ins". Developers can create plug-ins by registering in the RICOH THETA Plug-in Partner Program.

When I started with Android development, I heard the keyword "NDK" for the first time. As I work image processing projects on a daily basis, I decided to create a plugin that does some sort of image processing.

I used FastCV as the image processing library. As this is a broad topic, I’ll focus on "Introducing FastCV - using a simple API". I will summarize the procedure for image processing with FastCV in a future article.

What is FastCV

FastCV is a Computer Vision library provided by Qualcomm. It is distributed under a Qualcomm license. Operations involved in image processing are optimized for ARM processors and are particularly effective for Qualcomm’s Snapdragon processors. To use FastCV, it is necessary to program with C/C ++ using the Android NDK (Native Development Kit).

Why FastCV?

When people discuss image processing libraries, many people think of OpenCV. With "OpenCV for Android SDK", It’s not that OpenCV cannot be used to build a plug-in. However, since RICOH THETA V uses Snapdragon as the main processor, I am going to try and use FastCV.

API Reference

Documentation is included with Qualcomm FastCV Library.

It seems that modules such as basic point processing, feature point extraction, clustering, and machine learning are also available.

Development Environment

The procedure introduced in this article was confirmed with the following environment.

  • RICOH THETA V firmware ver. 2.50.1
  • RICOH THETA Plug-in SDK ver. 1.0.1
  • Windows 7 Professional 64 bit
  • Android Studio ver. 3.2.1
  • NDK ver. 18.1.5063045
  • FastCV ver. 1.7.1

Preparation

Organize the NDK development environment and install FastCV SDK.

Development environment development

Please refer to the links below to arrange the introduction of Android Studio and the plugin development environment.

Installation of NDK

  • Launch Android Studio and select "Tools > SDK Manager" from the menu
  • Select "SDK Tools" tab, check "NDK" and click "OK"

Follow the screen and click "Finish" when installation is completed

Install FastCV SDK

In my case, the FastCV SDK was installed in the following location.

C:/Android/Development/fastcv-android-1-7-1

If you see the following error when executing the installer, specify the Java VM on the command line.

To the command line, enter as follows:

fastcv-installer-android-1-7-1/fastcv-installer-android-1-7-1.exe LAX_VM "C:/Program Files(x86)/Java/jre1.8.0_171/bin/java.exe"

In my next article, I will cover preparation of the Android project file first then explain how to import FastCV and build it.

1 Like

Hi,
Great post, thanx!

You write that openCV can’t be used as a plugin, why is that? When looking at the specs of openCV I don’t see a reason why it shouldn’t work. Have you got more info on that?

Thanx!!

@Kasper I believe @codetricity will probably respond directly, but I believe openCV can be used in a plug-in, but not as a plug-in itself.

I’m going to clarify this with roohi_3.

Maybe these will work with modifications?

https://opencv.org/platforms/android/opencv4android-samples.html

I put a question about this in Japanese on Qiita.

1 Like

These are the answers from roohii_3

Note that the article roohii_3 references on OpenCV is in Japanese. So, you’ll need to use machine translation right now. I’ll talk to @jcasman about getting help translating it. The process of porting the NDK applications has a lot of potential, but there’s some work involved. From the article, it looks like OpenCV can be used as well as FastCV. I changed the original article to reflect this. Thank you for your help with pointing this out.

Question: Could you please explain more about the problem of opencv

Answer: As for the method of introducing OpenCV, I wrote the details in the following article. Please refer to it. THETAの中でOpenCVを動かす #Android - Qiita

Question: Will these examples work? https://opencv.org/platforms/android/opencv4android-samples.html

Answer: Regarding that sample code, unfortunately it can not be run with THETA. It is because it is necessary to reflect THETA original camera parameters and others. Therefore, there is a possibility that it will work if improvement is added to the sample code.

1 Like

@Kasper If Craig’s 2 questions and answers above are useful and if a machine translation of the full referenced OpenCV article isn’t good enough, please let me know. I would be willing to do a cleaner translation, since I’m interested in the topic myself.

I think we should do the translation as I think OpenCV can be used, but that roohii_3 encountered some problems. As OpenCV is more popular than FastCV, it would be good to figure out what the problems with OpenCV were and why he ended up using FastCV.

His original article in Japanese stated something similar to, “it’s not the case that OpenCV doesn’t work, but…”

1 Like

I received this from roohi_3

Overall, I think the people of OpenCV is easy to use for developers.

The advantage of OpenCV is,
· API is and develop the number of users that have been enhanced even more, information will be mentioned that there is a high likely-update frequency to come by.

FastCV is a manufacturer Qualcomm manufacturer of Snapdragon, it has been optimized for GPU processing of Qualcomm-made chip.
The advantage of using FastCV in THETA plug-ins, THETA because it has a built-in Snapdragon, is that it can benefit from the optimization of the GPU processing.

For those who are in the image processing on a daily basis, considering the fact that one can use the image processing technology hand in ease of entering, the latest of the information, I think it easier to use OpenCV.