2014-04-24 8 views
5

Ho circa 5000 immagini con segni d'acqua su di esse e 5000 immagini identiche senza filigrane. I nomi dei file di ciascuna serie di immagini non sono correlati tra loro in alcun modo. Sto cercando una API in Java preferibilmente che io possa usare per accoppiare ogni immagine contrassegnata con acqua con la sua coppia non contrassegnata con acqua.Java - Image Recognition

+1

probabilmente ci sono modi più intelligenti per affrontare questo problema, ma la prima cosa che proverei sarebbe usare JAI per sottrarre un'immagine da un'altra e provare a far corrispondere il risultato con la filigrana – Leo

+0

Se pubblichi immagini di esempio, potresti anche ottenere il codice per questo ... – kkuilla

risposta

2

Penso che questo sia più su prestazioni quindi circa il confronto immagine stessa e la risposta è scritto in maniera tale per cui se hai bisogno di aiuto con il confronto stessa mi commentare ...

  1. creare istogramma semplificato per ogni immagine

    let sa y 8 valori per ciascun canale limitando a 4 bit per ciascun livello di intensità. Che porterà ad 3*8*4=3*32 bit per immagine

  2. immagini sort

    take sopra istogramma e considerare come un unico numero e ordinare le immagini di A gruppo da esso non importa se crescente o decrescente

  3. corrispondenza A e B immagini raggruppate

    ora le immagini corrispondenti dovrebbero h vere istogrammi simili in modo da scattare l'immagine dal gruppo non ordinato B (filigranata), bin-search la corrispondenza più simile nel gruppo A (originale) e quindi confrontare più con metodi più robusti solo contro immagini selezionate invece di 5000.

  4. flag Aggiungi se l'immagine da A gruppo è già abbinato

    le immagini in modo da poter ignorare già abbinati a proiettile # 3 per ottenere più velocità

[Note]

ci sono altri modi per migliorare come usare Perceptual hash algorithms