Как использовать линейную корреляцию для сравнения изображений с помощью MATLAB - PullRequest
0 голосов
/ 29 марта 2012

В настоящее время меня просят сравнить определенные изображения друг с другом (используя вложенные циклы) и определить, какие изображения являются наиболее близкими друг к другу (НЕ особенно точно одинаковыми) и 2 изображения, которые наиболее различны, либо с помощью линейной корреляцииили конвульсия.

Поскольку все изображения представляют собой двумерные матрицы с одинаковыми размерами, единственное, что я могу сейчас придумать (если использовать корреляцию), сделать следующее:

a = imread('image_1.jpg');
b = imread('image_2.jpg');
c = corr2(a,b);          
if c==1
disp('The images are same')

Проблема в том, что вышеприведенное работает только при сравнении одного и того же изображения с самим собой, любые другие изображения, которые выглядят похожими, не работают.Как я могу решить эту проблему.Спасибо

Ответы [ 3 ]

3 голосов
/ 29 октября 2012

Вам необходимо использовать функцию *xcorr2.

1 голос
/ 29 марта 2012

corr2 - ваша корреляционная функция, которая даст значение. Чем больше значение, тем лучше будет совпадение. Вы можете сохранить значения c в отдельной матрице C и выбрать пару с наибольшим c, чтобы получить два изображения, которые находятся ближе всего друг к другу

0 голосов
/ 29 марта 2012

Нормализуйте изображение, затем используйте conv2 и найдите максимум.Это будет более щедрым к проблеме регистрации, которая может возникнуть.Если вы загрузите образцы изображений, которые вы считаете похожими и не похожими, мы можем помочь вам лучше.

...