Fresh Eyes was inspired by people on our own team. Sean and Cameron have a color vision deficiency known as deuteranomaly. This condition makes it difficult for them to discern red and green from each other, due to malfunctioning cones in the eye. This leads to other problems with other colors as well, since all colors tend to mingle with each other at some point to make another color. There are many simulators and emulators online that can show someone with normal color vision what it is like to have a color vision deficiency, but there didn't seem to be any that would offer the reverse. We set out to do just that.

How it works

We discovered a web app named Spectrum, which was a Chrome extension that would filter the colors of a web page and process them to show someone what it would look like with a color deficiency. We liked the concept, but decided that we would reevaluate it a bit, since we had to reverse-engineer the idea anyway. Each color in the sRGB color space can be presented as a vector, and using transform matrices, we were able to transform colors in order to present them in ways that would be more visible and appealing to someone with a color vision problem. We also were able to explore concepts put forth by the team at EnChroma, who develop glasses that supposedly filter light in order to assist those with color vision deficiencies. Since Sean and Cameron had deuteranomaly, they were able to provide input and essentially be test subjects for the extension.

Challenges we ran into

The main challenge we faced again and again throughout this project was trying to determine the best color transformation that amended the color-blindness problem without altering the colors of a web page too severely. First, we just went extreme to make sure it would even be possible. We did this by rotating the hue with a filter. Doing this provided an entirely different set of colors on the screen and created contrasts that Sean and Cameron were able to see. We commonly performed these filter tests on Ishihara Tests, the standard test for color-blindness. By doing this, we were able to verify whether Sean and Cameron were seeing the correct thing, therefore showing the filter working correctly.

Accomplishments that we're proud of

The greatest achievement for this project was the algorithm used with the color matrices, which was meticulously calculated and tested again and again until the most optimal filter we could create was formed. The filter allows Sean and Cameron to clearly see the numbers in Ishihara Tests as well as see green and red vividly. The filter works on essentially everything that sits within the browser window. It works with pictures, animated gifs, videos, Netflix, flash games, and others.

What we learned

We learned a lot about coding and color through this project. The biggest thing is how amazingly subjective of an experience color is. We were consistently surprised with what everyone was seeing, since Sean and Cameron would see things differently than the rest of the team. On top of that, we learned about how surprisingly simple it is to apply a filter to a web page, but how hard it is to perfect it. The filter has great potential to help a lot of people. It may not be perfect, but it has such a massive benefit to those who suffer from color vision deficiencies. This could allow people to view and use web pages more functionally than before. Color-blindness is a topic that is often heard of, but rarely understood. Addressing this issue will help a very large amount of people, as it affects approximately 1 in 12 men and 1 in 200 women in the world. With around 7 billion people in the world, that's a huge population that could potentially be helped by applications such as this one.

What's next for Fresh Eyes

  • Enabling support for other types of color vision deficiency or color blindness (e.g., tritanopia/tritanomaly).
  • Porting our extension to other web browsers.
  • Extending our color filter algorithm to other platforms (e.g., smartphones, Instagram filters, etc.)

Built With

Share this project: