Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Visual MIMO

An Android implementation of visible light communication. See report here.

Setup - Android

  • Import project in Android Studio
  • Add: ndk.dir=[path/to/ndk] to
  • Download folder OpenCV-2.4.10-android-sdk and place in root of project

Setup - MATLAB

  • Run sample.m to generate vmimo.avi. It's short so run it looping: mplayer -loop 0 vmimo.avi.

NDK Code

C++ code is in app/src/main/jni/. The CV logic is in image_processing.cpp, with the NDK abstracted out. native.cpp connects image_processing.cpp to the Android code, and simulator.cpp allows developing CV algorithms without any Android by simulating the flow of images and corners from the Android code.

To run on a computer, cd to the jni directory and run make, then ./simulator.

Test Bench

The test bench is in bench (currently in the analytics branch). The project uses Maven, so you must right click on it > Configure > Make Maven Project (Eclipse, assuming Maven project installed). It utilizes VLCj to do video outputs, and directly references the server-side image generation.

Current hacks

  • At the time of writing, Android Studio / gradle support for NDK is limited to projects that don't include libraries. The gradle config thus disables the NDK compile and manually runs ndk-compile when building the project.
  • The Android project was based on an old Vuforia sample, so large parts of it are super ugly. If you want to add a UI element or feature, look at app/src/main/java/com/android/visualmimo/


  • Play with new new embedding methods
  • Clean up MATLAB code a lot
  • Figure out how to draw on Android screen to display information
  • Chromecast pairing demo


Android Prototype for Visual MIMO.



No releases published


No packages published
You can’t perform that action at this time.