OP here, Thanks for the comments. It was a very interesting project to build. To add a little background, ColorHits is using the iTunes EPF data with about 3.6 million albums available to search.
it's very good fun, but I think it needs some tweaking. I tried finding albums by the colours I remember of their covers and failed miserably. So then tried checking the album covers on iTunes and picking the closest matching colours I could and still failed. For example Stereolab's Transient Random Noise Bursts With Announcements has a nice simple cover with very limited colours, but I couldn't get it to show up.
The color search mechanism is one that I am wanting to rehash. When the album update script is started, each album's color info is parsed and stored in the database. During the update, they are also assigned a color group which aligns with the color selection in the UI. In my implementation the nearest neighbor was trying to be determined when each album is parsed. Its an area that needs improved upon but that's basically how its setup.
Nice. Have you considered putting the extracted (H,S,V) color space points into a postgis database? Querying and ordering with a KNN gist index may be even faster than bare R-Trees.
This thing is just begging for a rainbow where you hover over various points of the rainbow and it pops up with a relevant album.
If you want to take this one step further, I'd love to see a Chrome plugin version of this: detect the primary colors of a given page and suggest a similarly-colored album.
It makes me happy when this sort of fun, simple app gets voted up to the front page of HN. It reminds me that my apps don't need to do a million different things but that only a couple fun/awesome functions can be elegant and useful.
19 comments
[ 3.5 ms ] story [ 51.1 ms ] threadhttp://colorhits.com/album/407270/This+Is+Spinal+Tap
Shameless plug: I helped write a library called colorific to do it: https://github.com/99designs/colorific
More about how it works here: http://99designs.com/tech-blog/blog/2012/05/11/color-analysi...
Clustering techniques can also work quite well: http://charlesleifer.com/blog/using-python-and-k-means-to-fi...
I built a similar search by color tool at 99designs and wrote a bit about how it works here: http://99designs.com/tech-blog/blog/2012/08/02/color-explore...
TL;DR I'm using R-trees to do fast perceptual nearest neighbour color search.
OP, how are you doing it in this?
The color search mechanism is one that I am wanting to rehash. When the album update script is started, each album's color info is parsed and stored in the database. During the update, they are also assigned a color group which aligns with the color selection in the UI. In my implementation the nearest neighbor was trying to be determined when each album is parsed. Its an area that needs improved upon but that's basically how its setup.
During the research phase, I referenced a php class for the color parsing, but ultimately modified it heavily for my use. http://www.phpclasses.org/package/5577-PHP-Get-the-most-used...
http://workshops.opengeo.org/postgis-intro/knn.html
could you up the amount of albums that show up per page?
or have an endless page option?
If you want to take this one step further, I'd love to see a Chrome plugin version of this: detect the primary colors of a given page and suggest a similarly-colored album.