Note that there are some explanatory texts on larger screens.

plurals
  1. POMetric for finding similar images in a database
    primarykey
    data
    text
    <p>There's a lot of different algorithms for computing the similarity between two images, but I can't find anything on how you would store this information in a database such that you can find similar images quickly.</p> <p>By "similar" I mean exact duplicates that have been rotated (90 degree increments), color-adjusted, and/or re-saved (lossy jpeg compression).</p> <p>I'm trying to come up with a "<a href="http://www.tineye.com/faq#how" rel="nofollow noreferrer">fingerprint</a>" of the images such that I can look them up quickly. </p> <p>The best I've come up with so far is to <a href="http://pastebin.com/YSv0Afwr" rel="nofollow noreferrer">generate a grayscale histogram</a>. With 16 bins and 256 shades of gray, I can easily create a 16-byte fingerprint. This works reasonably well, but it's not quite as robust as I'd like.</p> <p>Another solution I tried was to resize the images, <a href="https://stackoverflow.com/q/10167183/65387">rotate them</a> so they're all oriented the same way, grayscale them, normalize the histograms, and then shrink them down to about 8x8, and reduce the colors to 16 shades of gray. Although the miniature images were very similar, they were usually off by a pixel or two, which means that exact matching can't work.</p> <p>Without exact-matching, I don't believe there's any efficient way to group similar photos (without comparing every photo to every other photo, i.e., O(n^2)).</p> <p>So, (1) How can I create I create a fingerprint/signature that is invariant to the requirements mentioned above? Or, (2) if that's not possible, what other metric can I use such that given a <em>single</em> image, I can find it's best matches in a database of thousands?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload