The Colour of Red

[side note: if you are looking for the app, it is available here on the play store.]

What does red look like? Maybe a flag, or an apple, or blood, but these are all relative terms. It's a notoriously tricky problem to figure out how to explain what it's like to see red to someone who's never seen it - maybe it's not possible? Even stranger is the common realization that maybe it's arbitrary...could it be that other people experience colours completely differently to how you do? Perhaps to them, red feels like green does to you, and vice-versa. They'd still call all the items above 'red', but they'd experience them in the same way you do green. What's more, if this were possible, perhaps you'd never know...
It's known as the Inverted Spectrum problem, and it's a tricky one: it's very easy to assume everyone experiences things the same as you. Some people can go a long time before realizing they're colour-blind, where others experience the colours of the world differently.

The Inverted spectrum problem is something that has been studied a lot - personally I'm interested more in other inverted experiences: Can your 'anger' feel like my 'confused'? Can your 'fast' feel like my 'slow'? What would these even mean? There is however an interesting information question even with colours: can you learn to behave in the same way in an environment when the spectrum is inverted? That is, is the feeling of red some useful information that actually matters, or can we switch it with green and still have the same information (after some time of learning).
So...I decided to try it out :) I have an Android phone, a laptop, and a Utopia 360 VR headset (similar in principle to Google cardboard, pictured above). This makes it possible to stream the phone's camera to both my eyes, and manipulate the signal however I like. After one day of screwing around updating Android studio and trying to get the Camera stream working, I finally came across a google library Grafika and managed to get it all working after a second day of hacking. For those also with Androids and cardboard-like viewing equipment, the app should be available on the Play Store at the following link:

It does colour inversion (the above are pinkish roses), plus it can invert up/down and left/right directions, similar to physical inversion goggles. You lose binocular 3D information, although if I can find one of those new phones with two cameras, that'd be possible to add back in :)

Anyway, enjoy! I'm curious how people find the changes - colour inversion is certainly a lot easier than left/right or up/down, those break my muscle memory for how to move my head to look at things. I am keen to experiment with skill learning though (e.g. how fast can I re-learn to score a goal in rocket league when up is down? compared to when left is right?...). And if anyone has ideas for other modifications I should add, let me know. For the technologically inclined, it's all done through openGL vertex and fragment shaders, so anything they can do is possible - so e.g. remapping luminance, or pixellation, or simple edge detection, ...


  1. Ooooooooooooooo!!!!!!!
    I have been thinking about solipsism a bit lately.

  2. It looks like you've inverted the hue channel in the HSV colour space? (I didn't look at the code) Since different hue values don't all look the same brightness to the eye, treating them as equivalent scales tends to affect the luminance/brightness of each pixel which might mess with what you're trying to test. E.g. something that was originally a smooth brightness gradient becomes choppy.

    If you map over the values taking luminance into account you might get a better result. Just a thought, maybe you're already doing this. :)

    1. Indeed, you guessed right - I convert rgb -> hsl, then rotate hue, and convert back to rgb. It's a good point that luminance perception isn't constant - perhaps changing to something like LAB, and inverting a/b would be closer?

      It's interesting to think though about whether the 'colour' of luminance is as free to swap as hue too - can one person's black look like another's white? What does black even look like if it's the absence of signal... something that's easy to implement in the app, at least :)


Post a Comment

Popular posts from this blog

Sounds good - part 1

Real life is full of Kaizo blocks

Sounds good - part 2