Как использовать, ОТСЕИВАЮТ алгоритм, чтобы вычислить, как подобные два изображения?

Сначала два результата поиска на Google для 'типов тестирования' выглядят всесторонними

Те, я думаю, являются самыми релевантными. Посмотрите здесь .

56
задан Cœur 15 March 2018 в 15:50
поделиться

4 ответа

Во-первых, разве вы не должны использовать vl_sift вместо sift?

Во-вторых, вы можете использовать сопоставление функций SIFT, чтобы найти соответствия в двух изображениях. Вот пример кода:

    I = imread('p1.jpg');
    J = imread('p2.jpg');

    I = single(rgb2gray(I)); % Conversion to single is recommended
    J = single(rgb2gray(J)); % in the documentation

    [F1 D1] = vl_sift(I);
    [F2 D2] = vl_sift(J);

    % Where 1.5 = ratio between euclidean distance of NN2/NN1
    [matches score] = vl_ubcmatch(D1,D2,1.5); 

    subplot(1,2,1);
    imshow(uint8(I));
    hold on;
    plot(F1(1,matches(1,:)),F1(2,matches(1,:)),'b*');

    subplot(1,2,2);
    imshow(uint8(J));
    hold on;
    plot(F2(1,matches(2,:)),F2(2,matches(2,:)),'r*');

vl_ubcmatch () по существу делает следующее:

Предположим, у вас есть точка P в F1, и вы хотите найти «лучшее» совпадение в F2. Один из способов сделать это - сравнить дескриптор P в F1 со всеми дескрипторами в D2. Под сравнением я подразумеваю найти евклидово расстояние (или L2-норму разности двух дескрипторов).

Затем я нахожу две точки в F2, скажем U и V, которые имеют наименьшее и второе наименьшее расстояние ( скажем, Du и Dv) от P.

Вот что рекомендовал Лоу: если Dv / Du> = threshold (я использовал 1.5 в примере кода), то это соответствие приемлемо; в противном случае это ' s неоднозначно совпадают и отклоняются как соответствие, и мы не сопоставляем ни одной точки в F2 с P. По сути, если есть большая разница между лучшим и вторым лучшим совпадением, вы можете ожидать, что это будет качественное совпадение.

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

Вы можете выполните сопоставление любым количеством способов ... вы можете сделать это самостоятельно с помощью MATLAB или ускорить его, используя KD-дерево или приближенный поиск ближайшего числа, например FLANN , который был реализован в OpenCV .

РЕДАКТИРОВАТЬ: Кроме того, в MATLAB .

есть несколько реализаций kd-tree. t сопоставить любую точку в F2 с P. По сути, если есть большая разница между лучшим и вторым лучшим совпадением, вы можете ожидать, что это будет качественное совпадение.

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

Вы можете выполните сопоставление любым количеством способов ... вы можете сделать это самостоятельно с помощью MATLAB или ускорить его, используя KD-дерево или приблизительный поиск ближайшего числа, например FLANN , который был реализован в OpenCV .

РЕДАКТИРОВАТЬ: Кроме того, в MATLAB .

есть несколько реализаций kd-tree. t сопоставить любую точку в F2 с P. По сути, если есть большая разница между лучшим и вторым лучшим совпадением, вы можете ожидать, что это будет качественное совпадение.

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

Вы можете выполните сопоставление любым количеством способов ... вы можете сделать это самостоятельно с помощью MATLAB или ускорить его, используя KD-дерево или приблизительный поиск ближайшего числа, например FLANN , который был реализован в OpenCV .

РЕДАКТИРОВАТЬ: Кроме того, в MATLAB .

есть несколько реализаций kd-tree. Поскольку разница между лучшим и вторым лучшим совпадением большая, вы можете ожидать, что это будет качественный матч.

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

Вы можете выполните сопоставление любым количеством способов ... вы можете сделать это самостоятельно с помощью MATLAB или ускорить его, используя KD-дерево или приблизительный поиск ближайшего числа, например FLANN , который был реализован в OpenCV .

РЕДАКТИРОВАТЬ: Кроме того, в MATLAB .

есть несколько реализаций kd-tree. Поскольку разница между лучшим и вторым лучшим совпадением большая, вы можете ожидать, что это будет качественный матч.

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

Вы можете выполните сопоставление любым количеством способов ... вы можете сделать это самостоятельно с помощью MATLAB или ускорить его, используя KD-дерево или приближенный поиск ближайшего числа, например FLANN , который был реализован в OpenCV .

РЕДАКТИРОВАТЬ: Кроме того, в MATLAB .

есть несколько реализаций kd-tree.
35
ответ дан 26 November 2019 в 17:31
поделиться

Вам следует прочитать статью Дэвида Лоу , в которой говорится о том, как именно это сделать. Этого должно быть достаточно, если вы хотите сравнить изображения одного и того же объекта. Если вы хотите сопоставить изображения различных объектов одной и той же категории (например, автомобилей или самолетов), вы можете посмотреть на Pyramid Match Kernel Граумана и Даррелла.

9
ответ дан 26 November 2019 в 17:31
поделиться

Попробуйте сравнить каждый дескриптор из первого изображения с дескрипторами из второго, расположенного в непосредственной близости (используя евклидово расстояние). Таким образом, вы присваиваете оценку каждому дескриптору из первого изображения на основе степени сходства между ним и наиболее похожим дескриптором соседа из второго изображения. Статистическая мера (сумма, среднее значение, дисперсия, средняя ошибка и т. Д.) Всех этих оценок дает вам оценку того, насколько похожи изображения. Поэкспериментируйте с различными комбинациями размеров окрестностей и статистических показателей, чтобы получить лучший ответ.

3
ответ дан 26 November 2019 в 17:31
поделиться

Если вы хотите просто сравнить увеличенное и повернутое изображение с известным центром вращения, вы можете использовать корреляцию фаз в логополярных координатах. По резкости пика и гистограмме фазовой корреляции можно судить, насколько близки изображения. Вы также можете использовать евклидово расстояние для абсолютного значения коэффициентов Фурье.

Если вы хотите сравнить дескриптор SIFT, помимо евклидова расстояния вы также можете использовать «диффузное расстояние» - получение дескриптора в более грубом масштабе и соединение их с исходным дескриптором. Таким образом, «крупномасштабное» сходство функций будет иметь больший вес.

2
ответ дан 26 November 2019 в 17:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: