Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Android colorblind assistance camera filter
Java C
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
assets/_pre_production
gen/li/peterandpatty/trichromat
jni
res
src/li/peterandpatty/trichromat
.classpath
.gitignore
.project
AndroidManifest.xml
Colanomalous-1.0.1.apk
Colanomalous-1.0.2.apk
Colanomalous-1.0.apk
README
default.properties

README

TriChromat is a basic camera preview filter for Android, designed to help colorblind users detect colors they normally would have difficulty detecting.


Currently there are two transformations implemented, one that copies the red channel into the blue channel (RedGreenBlue to MagentaBlue), and one that copies the green channel into the blue channel (RedGreenBlue to RedCyan).

Which transformation is more helpful to you will depend on the type of colorblindness you have.  I am protonopic (missing red cones) so for me the RGB2MG transform is most helpful.  This type of transformation of course loses the blue information, but I find it is very helpful for reading graphs and other figures that use too much red/green.


I have tried to design the application to be easily extensible with additional image transformations.  Since it is open source, this means you can easily fork it and make your own version with a different image transformation.  

I am also hoping that it will be possible to support a pure plugin model where a user can install TriChromat and an external APK with additional transformations and TriChromat will be able to load in the additional transformations.  In this model, you would not even need to fork and redistribute a new camera filter app, you would only need to implement the interface YUVProcessor and then distribute that code as its own APK.

I believe it should be possible to get this working using Intents to discover additional transformations and DexClassLoader to bring the code in, but I'm not sure; this will take some more work.


Currently, all menus are implemented within the main Activity.  This is not such good style, but I'm too lazy to change it for now.


I have experimented with using AndroidNDK to implement the RGB2MG transformation in native C++ code.  Thus far this is not working (i.e. the image looks weird) and it is also not any faster than the pure Java implmentation.  I just pulled the implementation for this from another open source project online (NYARToolkit), so I am looking for other sources of canned code for this.  If I find more time I may try to implement this myself in future.
Something went wrong with that request. Please try again.