I normali algoritmi di hashing o di calcolo CRC non funzionano bene con i dati dell'immagine. La natura dimensionale delle informazioni deve essere presa in considerazione.
Se hai bisogno di impronte digitali estremamente robuste, in modo tale da tenere conto delle trasformazioni affini (ridimensionamento, rotazione, traslazione, capovolgimento), puoi utilizzare una trasformazione Radon sull'origine dell'immagine per produrre una mappatura normativa dei dati dell'immagine: memorizzala con ogni immagine e quindi confronta solo le impronte digitali. Questo è un algoritmo complesso e non per i deboli di cuore.
sono possibili alcune semplici soluzioni:
- Crea un istogramma di luminosità per l'immagine come un'impronta digitale
- Crea versioni ridotte di ciascuna immagine come impronta digitale
- Combina la tecnica (1) e (2) in un approccio ibrido per una migliore qualità di confronto
Un istogramma di luminosità (specialmente uno separato in componenti RGB) è un'impronta digitale ragionevole per un'immagine e può essere implementato in modo abbastanza efficiente. La sottrazione di un istogramma da un altro produrrà un nuovo storogramma che puoi elaborare per decidere quanto siano simili due immagini. Gli istogrammi, perché l'unico a valutare la distribuzione e l'occorrenza delle informazioni di luminosità / colore gestisce abbastanza bene le trasformazioni affini. Se quantizzi le informazioni sulla luminosità di ciascun componente del colore fino a un valore di 8 bit, 768 byte di memoria sono sufficienti per l'impronta digitale di un'immagine di quasi tutte le dimensioni ragionevoli. Gli istogrammi di luminosità producono falsi negativi quando vengono manipolate le informazioni sul colore in un'immagine. Se applichi trasformazioni come contrasto / luminosità, posterizzazione, cambio di colore, modifiche alle informazioni sulla luminosità.
L'utilizzo di immagini in scala è un altro modo per ridurre la densità delle informazioni dell'immagine a un livello più facile da confrontare. Le riduzioni al di sotto del 10% della dimensione dell'immagine originale generalmente perdono troppe informazioni per essere utili, quindi un'immagine da 800x800 pixel può essere ridimensionata fino a 80x80 e fornisce comunque informazioni sufficienti per eseguire un fingerprinting decente. A differenza dei dati dell'istogramma, è necessario eseguire il ridimensionamento anisotropo dei dati dell'immagine quando le risoluzioni della sorgente hanno proporzioni variabili. In altre parole, ridurre un'immagine 300x800 in una miniatura 80x80 provoca la deformazione dell'immagine, in modo tale che se confrontata con un'immagine 300x500 (che è molto simile) causerà falsi negativi. Le impronte digitali delle miniature spesso producono anche falsi negativi quando sono coinvolte trasformazioni affini. Se capovolgi o ruoti un'immagine,
La combinazione di entrambe le tecniche è un modo ragionevole per proteggere le tue scommesse e ridurre il verificarsi di falsi positivi e falsi negativi.