True Color

A new color analytic app that find out what is ones true color. Giving people the opportunity to discover the main color themes in their life while providing a deeper insight into color trends and how they translate between the physical and the social worlds.

I always been a fan of minimalism and colors, I find it really interesting to explore the relation between the colors around us (or on us), who we are, how we feel and what we go through, so I decided to create an app that can help document and visualize what colors do we really feed ourselves with. 

True Color Image mode

True Color Image mode

True Color Abstract mode

True Color Abstract mode

The idea is very simple, building on the growing culture of selfies every day (or more than once a day) I’ll take a picture of myself or some significante event I attend that day – i.e: eating pastrami sandwich or going on a hike. The app will analyze the color content of the image and will select the four most dominating colors in the image, once the data is processed the user will be able to view it in abstract or image mode.

 

I explored a few ways to extract the main color from an environment, and the one that seems to work in the most accurate way to use the kmean clustering algorithm of the opencv library, the idea behind it is very simple, clustering is all about finding groups inside data that has similarity or closeness to each other, the kmean algorithm takes a matrix of colors and find the main color values in it, then it also define the distance between the selected colors and the rest of the pixels in the matrix, here is a python code that illustrate how it will work on a static image.

Getting the main color value of an image using opencv kmean clustering (python)

 I also added a function that also print the color values at the bottom of the image

While the above code works really nice from a python environment it only takes a few simple syntax tweaks to convert it into c/c++ which opencv is based on and could easily be integrated into any mobile development language, the idea is identical here, the main difference is that we return the image matrix so it could be handled from the mobile platform rather than display it on the screen immediately as well as returning the color values to be saved on the database. but before we can go ahead an analyze the image value, we’ll need to capture the input from the device camera, I use the bellow trick which include a short delay before reporting an error as on some computer and devices there will be a few attempts before the camera is ready

OpenCV video capture (cpp)

 colorizeImage – OpenCV  image clustering with kmean (cpp)

This will result with an image transformation like the following

beach   True-Color-Beach
UFO   True-Color-UFO
store   True-Color-Store

Obviously I need to take a look into the amount of red I surround myself with. 

The abstract mode will be a daily or monthly feed with a representation of the image colors while the image mode will create four colorized images based on the core colors of the image. once a user click on one of the images/colors the app will load a feed dedicated to the color selected with images which include similar colors to the one selected. 

Monthly image feed

Monthly image feed

Monthly color feed

Monthly color feed

The monthly view of the app will give user the ability to analyze their color trends throughout time with relation to other color trends such as global color trends, color trends among your friends/followers, color trends by topics and local color trends around your geographic location or destination (if you are traveling to a business meeting in Australia wouldn’t you like to know what’s the popular tie colors among the business community there)

Welcome screen

Welcome screen

Registration Screen

Registration Screen

Since one of the main objectives of this app is to learn how to build an app, so I was thinking on using the Parse framework to handle all the database connections and enable the native integration of facebook users (I guess there is a good side to being bought by facebook!)

I find the idea of browsing data based on color choice as the main relation rather than a query or a preconceived interpretation to be really interesting, specially in regard to style and self definition. one of my favorite options of google images search is the color filter or search by image which works in a similar way, if you haven’t had a chance to play around with it, I highly recommend taking a closer look at it.