I am working on a sketch search engine that correlates with someone drawing an image in a database (db now has only 40 photos). I do this mainly for pleasure, so I am not so good at computer image processing methods.
First of all, are there any rules of thumb on how to create histograms (sizes, range, etc.)? I use some histogram code found at http://www.scribd.com/doc/6194304/Histograms (but ported to JavaCV). Sometimes I get good results, sometimes I get bad results, most of the time I get "meh" results. I experimented with TON with box sizes and ranges, and I wonder if there might be a comparison of higher-dimensional histograms here.
Secondly, it seems that black makes a very strong presence in my current histogram setting (even a black dot shifts the whole set of results). Should this be expected? Or am I screwing something? Example:
And after the point:
Notice how I already receive the "earthrise" pictures as "close" matches.
I am also interested in what methods should I use for blob or function analysis. I think things like SURF can be overkill because I want to just compare blobs and not accurately display patterns. Is there a way to compare the edges after going through the Canny filter? (If possible, low complexity):

, , , "" , .
. , http://skrch.dvt.name/ ( , , - FF//Safari). , . , CV_COMP_BHATTACHARYYA (, , - ).