Skip to main content

Point Tracker

Description

This app demonstrates the use of a tracker for sparse 2D feature points.

Image: Screenshot of the point tracker app on android

Feature Point Tracking

Feature points are tracked from frame to frame for as long as possible. Additionally, the tracker actively adds new feature points in empty regions, ensuring a steady supply of points to track.

Database and Visualization

The tracker stores a historical record of all feature points in a database, Database, efficiently maintaining image coordinates for each point across multiple previous frames. The application visualizes this database by drawing a path for each feature point, showcasing its image coordinates from previous frames – also known as tracks.

Demo and Implementation

The demo utilizes a platform-independent class called PointTrackerWrapper, which acquires input media and returns an augmented image with point paths (tracks). This class serves as a wrapper around the core tracking logic, implemented in the Tracking::Point::PointTracker class.

Building

Ensure the third-party libraries have been built for Android for all of the required Android ABIs. Let's assume the base location for third-party libraries is ${HOME}/install_ocean_thirdparty, i.e., the Android versions will be located in ${HOME}/install_ocean_thirdparty/android_${ANDROID_ABI}....

# Define this so that Gradle (and CMake) can find the third-party libraries.
export OCEAN_THIRDPARTY_PATH="${HOME}/install_ocean_thirdparty"

# Change into the directory with the Gradle config of this project
cd ${OCEAN_DEVELOPMENT_PATH}/build/gradle/application/ocean/demo/tracking/pointtracker/android

# In ./app/build.gradle.kts, ensure that only those Android ABIs are enabled for which the corresponding third-party libraries have been built. Otherwise, your build will fail, cf. the [general build instructions](https://github.com/facebookresearch/ocean/blob/v1.0.0/building_for_android.md#4-building-the-ocean-android-demotest-apps).

# Build the debug and release APK of this
./gradlew assemble

# Install the desired APK
adb install app/build/outputs/apk/debug/app-debug.apk
adb install app/build/outputs/apk/release/app-release.apk

By default, the log output will be displayed on the screen of the phone as well as in the Android logs, which can be displayed using:

adb logcat -s Ocean