2010-08-03 3 views
0

Может ли кто-нибудь предложить алгоритм сравнения изображений?Алгоритм сравнения изображений

+1

Сравните, что именно? Пиксели? Метаданные? Как вы хотите получить результаты? Для чего вы его будете использовать? – thecoop

+1

Прочтите это сообщение http://stackoverflow.com/questions/1819124/image-comparison-algorithm – w69rdy

+1

И этот http://stackoverflow.com/questions/336067/detecting-if-two-images-are- визуально идентичные – w69rdy

ответ

0
bool compare(unsigned char* f, size_t fs, unsigned char* s, size_t ss) 
{ 
    if (fs != ss) 
    { 
     return false; 
    } 

    for (register int i=0; i < fs; i++) if (((f+i)*) != ((s+i)*)) 
    { 
     return false; 
    } 

    return true; 
} 
1

Если вы хотите сравнить изображение само по себе, я могу порекомендовать хорошо зарекомендовавшие показатели сравнения, как Peak signal-to-noise ratio (который очень широко используется), или, возможно, Structural Similarity Index (целью которого является более тесно моделировать вид разницей, что человеческий глаз замечает). Я бы рекомендовал повторно использовать существующие реализации, так как большие суммы, требуемые этими алгоритмами, трудно получить правильно (короче говоря, используйте BigInteger вместо длинных или двойных аккумуляторов).

Также обратите внимание, что два изображения могут кодировать одно и то же изображение с использованием разных цветовых пространств, поэтому вы, вероятно, захотите, чтобы оба изображения были преобразованы, чтобы использовать одно и то же цветовое пространство перед их сравнением. Конечно, если изображение смещено или каким-либо другим образом изменено, вам нужно будет использовать некоторую форму распознавания признаков - см. Сообщение Image comparison algorithm, на которое ссылается w69rdy.

Смежные вопросы