Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Stab in the dark, if you are looking to circumvent meta-data and size related things:</p> <ol> <li>Edge Detection and scale-independent comparison</li> <li>Sampling and statistical analysis of grayscale/RGB values (average lum, averaged color map)</li> <li>FFT and other transforms (Good article <a href="http://cse.cnu.ac.kr/~cheonghee/papers/finger_jrl.pdf" rel="noreferrer">Classification of Fingerprints using FFT</a>)</li> </ol> <p>And numerous others.</p> <p>Basically:</p> <ol> <li>Convert JPG/PNG/GIF whatever into an RGB byte array which is independent of encoding</li> <li>Use a fuzzy pattern classification method to generate a 'hash of the pattern' in the image ... not a hash of the RGB array as some suggest</li> <li>Then you want a distributed method of fast hash comparison based on matching threshold on the encapsulated hash or encoding of the pattern. Erlang would be good for this :)</li> </ol> <p>Advantages are:</p> <ol> <li>Will, if you use any AI/Training, spot duplicates regardless of encoding, size, aspect, hue and lum modification, dynamic range/subsampling differences and in some cases perspective</li> </ol> <p>Disadvantages:</p> <ol> <li>Can be hard to code .. something like <a href="http://opencv.willowgarage.com/" rel="noreferrer">OpenCV</a> might help</li> <li>Probabilistic ... false positives are likely but can be reduced with neural networks and other AI</li> <li>Slow unless you can encapsulate pattern qualities and distribute the search (MapReduce style) </li> </ol> <p>Checkout image analysis books such as:</p> <ol> <li>Pattern Classification 2ed</li> <li>Image Processing Fundamentals</li> <li>Image Processing - Principles and Applications</li> </ol> <p>And others</p> <p>If you are scaling the image, then things are simpler. If not, then you have to contend with the fact that scaling is lossy in more ways than sample reduction.</p>
 

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