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

fastcv

#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.

NOTE: If you’re eager to get started with coding, join the Star Trails Developer Challenge to get the Starter Kit with information how how to get this and 14 other code examples

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.

Get the code for the FastCV tutorial on GitHub as part of the Star Trails Timelapse Starter Kit

Join the Star Trails Timelapse Challenge Now


FastCV Image Processing Part 4
How To Use Android NDK to Build FastCV for the RICOH THETA
View RICOH THETA Files Directly from Oculus Go with THETA Plug-in
How To Create a FastCV Application with the RICOH THETA Plug-in SDK
#2

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!!


#3

@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.


#4

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.


#5

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. https://qiita.com/roohii_3/items/63a546169981f41967df

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.


#6

@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.


#7

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…”